@ngx-formly/core 5.10.26 → 5.10.27
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/ngx-formly-core.umd.js +21 -14
- package/bundles/ngx-formly-core.umd.js.map +1 -1
- package/bundles/ngx-formly-core.umd.min.js +1 -1
- package/bundles/ngx-formly-core.umd.min.js.map +1 -1
- package/esm2015/lib/extensions/field-expression/field-expression.js +14 -14
- package/esm2015/lib/extensions/field-form/utils.js +11 -4
- package/esm5/lib/extensions/field-expression/field-expression.js +14 -14
- package/esm5/lib/extensions/field-form/utils.js +11 -4
- package/fesm2015/ngx-formly-core.js +23 -16
- package/fesm2015/ngx-formly-core.js.map +1 -1
- package/fesm5/ngx-formly-core.js +24 -17
- package/fesm5/ngx-formly-core.js.map +1 -1
- package/package.json +1 -1
|
@@ -319,6 +319,19 @@ export class FieldExpressionExtension {
|
|
|
319
319
|
* @return {?}
|
|
320
320
|
*/
|
|
321
321
|
toggleFormControl(field, hide, resetOnHide) {
|
|
322
|
+
if (field.fieldGroup) {
|
|
323
|
+
field.fieldGroup
|
|
324
|
+
.filter((/**
|
|
325
|
+
* @param {?} f
|
|
326
|
+
* @return {?}
|
|
327
|
+
*/
|
|
328
|
+
f => !f.hideExpression))
|
|
329
|
+
.forEach((/**
|
|
330
|
+
* @param {?} f
|
|
331
|
+
* @return {?}
|
|
332
|
+
*/
|
|
333
|
+
f => this.toggleFormControl(f, hide, resetOnHide)));
|
|
334
|
+
}
|
|
322
335
|
if (field.formControl && field.key) {
|
|
323
336
|
defineHiddenProp(field, '_hide', !!(hide || field.hide));
|
|
324
337
|
/** @type {?} */
|
|
@@ -352,19 +365,6 @@ export class FieldExpressionExtension {
|
|
|
352
365
|
}
|
|
353
366
|
}
|
|
354
367
|
}
|
|
355
|
-
if (field.fieldGroup) {
|
|
356
|
-
field.fieldGroup
|
|
357
|
-
.filter((/**
|
|
358
|
-
* @param {?} f
|
|
359
|
-
* @return {?}
|
|
360
|
-
*/
|
|
361
|
-
f => !f.hideExpression))
|
|
362
|
-
.forEach((/**
|
|
363
|
-
* @param {?} f
|
|
364
|
-
* @return {?}
|
|
365
|
-
*/
|
|
366
|
-
f => this.toggleFormControl(f, hide, resetOnHide)));
|
|
367
|
-
}
|
|
368
368
|
if (field.options.fieldChanges) {
|
|
369
369
|
field.options.fieldChanges.next((/** @type {?} */ ({ field, type: 'hidden', value: hide })));
|
|
370
370
|
}
|
|
@@ -437,4 +437,4 @@ export class FieldExpressionExtension {
|
|
|
437
437
|
});
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJsaWIvZXh0ZW5zaW9ucy9maWVsZC1leHByZXNzaW9uL2ZpZWxkLWV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25MLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRzNDLE1BQU0sT0FBTyx3QkFBd0I7Ozs7O0lBQ25DLFdBQVcsQ0FBQyxLQUE2QjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0MsT0FBTztTQUNSOztZQUVHLFdBQVcsR0FBRyxLQUFLO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVzs7Ozs7UUFBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQiw2QkFBNkIsQ0FDM0IsQ0FBQyxDQUFDLFdBQVc7OztnQkFDYixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFDdEMsQ0FBQztnQkFD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QUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzs7a0JBQ3ZDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFFL0YsSUFDRSxPQUFPO21CQUNKLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7bUJBQy9ELE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUMxQjtnQkFDQSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCO1NBQ0Y7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7Ozs7OztJQUVPLHFCQUFxQixDQUFDLEtBQTZCLEVBQUUsUUFBZ0IsRUFBRSxLQUFVO1FBQ3ZGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDOUIsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVE7WUFDUixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQsIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiwgZGVmaW5lSGlkZGVuUHJvcCwgd3JhcFByb3BlcnR5LCByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscywgZ2V0RmllbGRWYWx1ZSwgYXNzaWduRmllbGRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGV2YWxFeHByZXNzaW9uLCBldmFsU3RyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm1seS5jb25maWcnO1xuaW1wb3J0IHsgdW5yZWdpc3RlckNvbnRyb2wsIHJlZ2lzdGVyQ29udHJvbCwgdXBkYXRlVmFsaWRpdHkgfSBmcm9tICcuLi9maWVsZC1mb3JtL3V0aWxzJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEBleHBlcmltZW50YWwgKi9cbmV4cG9ydCBjbGFzcyBGaWVsZEV4cHJlc3Npb25FeHRlbnNpb24gaW1wbGVtZW50cyBGb3JtbHlFeHRlbnNpb24ge1xuICBwcmVQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZC5wYXJlbnQgfHwgZmllbGQub3B0aW9ucy5fY2hlY2tGaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjaGVja0xvY2tlZCA9IGZhbHNlO1xuICAgIGZpZWxkLm9wdGlvbnMuX2NoZWNrRmllbGQgPSAoZiwgaWdub3JlQ2FjaGUpID0+IHtcbiAgICAgIGlmICghY2hlY2tMb2NrZWQpIHtcbiAgICAgICAgY2hlY2tMb2NrZWQgPSB0cnVlO1xuICAgICAgICByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscyhcbiAgICAgICAgICBmLmZvcm1Db250cm9sLFxuICAgICAgICAgICgpID0+IHRoaXMuY2hlY2tGaWVsZChmLCBpZ25vcmVDYWNoZSksXG4gICAgICAgICk7XG4gICAgICAgIGNoZWNrTG9ja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHBvc3RQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmICghZmllbGQucGFyZW50IHx8IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhY2hlIGJ1aWx0IGV4cHJlc3Npb25cbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2V4cHJlc3Npb25Qcm9wZXJ0aWVzJywge30pO1xuXG4gICAgaWYgKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydHkgPSBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblByb3BlcnR5ID09PSAnc3RyaW5nJyB8fCBpc0Z1bmN0aW9uKGV4cHJlc3Npb25Qcm9wZXJ0eSkpIHtcbiAgICAgICAgICBmaWVsZC5fZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XSA9IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHRoaXMuX2V2YWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAga2V5ID09PSAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJyAmJiBmaWVsZC5wYXJlbnQuZXhwcmVzc2lvblByb3BlcnRpZXMgJiYgZmllbGQucGFyZW50LmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgID8gKCkgPT4gZmllbGQucGFyZW50LnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChrZXkgPT09ICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQuX2V4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0sICdleHByZXNzaW9uVmFsdWUnLCB7XG4gICAgICAgICAgICAgIGdldDogKCkgPT4gZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkLFxuICAgICAgICAgICAgICBzZXQ6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25Qcm9wZXJ0eSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSAoKSA9PiAoZXhwcmVzc2lvblByb3BlcnR5IGFzIE9ic2VydmFibGU8YW55PilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RXhwclZhbHVlKGZpZWxkLCBrZXksIHYpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2soZmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgIGNvbnN0IG9uSW5pdCA9IGZpZWxkLmhvb2tzLm9uSW5pdDtcbiAgICAgICAgICBmaWVsZC5ob29rcy5vbkluaXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uSW5pdCAmJiBvbkluaXQoZmllbGQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBvbkRlc3Ryb3kgPSBmaWVsZC5ob29rcy5vbkRlc3Ryb3k7XG4gICAgICAgICAgZmllbGQuaG9va3Mub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgb25EZXN0cm95ICYmIG9uRGVzdHJveShmaWVsZCk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuICAgICAgLy8gZGVsZXRlIGhpZGUgdmFsdWUgaW4gb3JkZXIgdG8gZm9yY2UgcmUtZXZhbHVhdGUgaXQgaW4gRm9ybWx5Rm9ybUV4cHJlc3Npb24uXG4gICAgICBkZWxldGUgZmllbGQuaGlkZTtcblxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24gPSB0aGlzLl9ldmFsRXhwcmVzc2lvbihcbiAgICAgICAgJ2hpZGUnLFxuICAgICAgICBmaWVsZC5oaWRlRXhwcmVzc2lvbixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGxldCByb290ID0gZmllbGQucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChyb290LnBhcmVudCAmJiAhcm9vdC5oaWRlKSB7XG4gICAgICAgICAgICByb290ID0gcm9vdC5wYXJlbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJvb3QuaGlkZTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBQcm9wZXJ0eShmaWVsZCwgJ2hpZGUnLCAoeyBjdXJyZW50VmFsdWUsIGZpcnN0Q2hhbmdlIH0pID0+IHtcbiAgICAgICAgZmllbGQuX2hpZGUgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbEV4cHJlc3Npb24ocHJvcDogc3RyaW5nLCBleHByZXNzaW9uLCBwYXJlbnRFeHByZXNzaW9uPykge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSBldmFsU3RyaW5nRXhwcmVzc2lvbihleHByZXNzaW9uLCBbJ21vZGVsJywgJ2Zvcm1TdGF0ZScsICdmaWVsZCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSAoKSA9PiAhIWV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHBhcmVudEV4cHJlc3Npb24gJiYgcGFyZW50RXhwcmVzc2lvbigpKSB8fCBleHByZXNzaW9uKC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGlnbm9yZUNhY2hlID0gZmFsc2UpIHtcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSB0aGlzLl9jaGVja0ZpZWxkKGZpZWxkLCBpZ25vcmVDYWNoZSk7XG5cbiAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVja1xuICAgICAgLnNvcnQoZiA9PiBmLmhpZGUgPyAtMSA6IDEpXG4gICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgISFmLmhpZGUsICFpZ25vcmVDYWNoZSkpO1xuXG4gICAgZmllbGQub3B0aW9ucy5faGlkZGVuRmllbGRzRm9yQ2hlY2sgPSBbXTtcbiAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoZWNrRmllbGQoZmllbGQpO1xuICAgICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9ucy5fbWFya0ZvckNoZWNrKSB7XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgaWdub3JlQ2FjaGUgPSBmYWxzZSkge1xuICAgIGxldCBmaWVsZENoYW5nZWQgPSBmYWxzZTtcbiAgICBmaWVsZC5maWVsZEdyb3VwLmZvckVhY2goZiA9PiB7XG4gICAgICBpZiAoIWYub3B0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tGaWVsZEV4cHJlc3Npb25DaGFuZ2UoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGYsIGlnbm9yZUNhY2hlKSkge1xuICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGYpO1xuICAgICAgICBmaWVsZENoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZi5maWVsZEdyb3VwICYmIGYuZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrRmllbGQoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWVsZENoYW5nZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRFeHByZXNzaW9uQ2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgIWZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBtYXJrRm9yQ2hlY2sgPSBmYWxzZTtcbiAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydGllcyA9IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcztcblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgZXhwcmVzc2lvblZhbHVlID0gZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uLCB7IGZpZWxkIH0sIFtmaWVsZC5tb2RlbCwgZmllbGQub3B0aW9ucy5mb3JtU3RhdGUsIGZpZWxkLCBpZ25vcmVDYWNoZV0pO1xuICAgICAgaWYgKGtleSA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcpIHtcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gISFleHByZXNzaW9uVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaWdub3JlQ2FjaGUgfHwgKFxuICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlICE9PSBleHByZXNzaW9uVmFsdWVcbiAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAhKGlzT2JqZWN0KGV4cHJlc3Npb25WYWx1ZSkgfHwgaXNGdW5jdGlvbihleHByZXNzaW9uVmFsdWUpKVxuICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgICAgJiYgKCcnICsgZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uVmFsdWUgIT09ICcnICsgZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfHwgaXNPYnNlcnZhYmxlKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgIHx8IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25WYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIG1hcmtGb3JDaGVjayA9IHRydWU7XG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlID0gZXhwcmVzc2lvblZhbHVlO1xuICAgICAgICB0aGlzLnNldEV4cHJWYWx1ZShmaWVsZCwga2V5LCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrRm9yQ2hlY2s7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgaXNOdWxsT3JVbmRlZmluZWQoZmllbGQuaGlkZUV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV4cHJlc3Npb25SZXN1bHQ6IGJvb2xlYW4gPSAhIWV2YWxFeHByZXNzaW9uKFxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24sXG4gICAgICB7IGZpZWxkIH0sXG4gICAgICBbZmllbGQubW9kZWwsIGZpZWxkLm9wdGlvbnMuZm9ybVN0YXRlLCBmaWVsZCwgaWdub3JlQ2FjaGVdLFxuICAgICk7XG4gICAgbGV0IG1hcmtGb3JDaGVjayA9IGZhbHNlO1xuICAgIGlmIChoaWRlRXhwcmVzc2lvblJlc3VsdCAhPT0gZmllbGQuaGlkZSB8fCBpZ25vcmVDYWNoZSkge1xuICAgICAgbWFya0ZvckNoZWNrID0gdHJ1ZTtcbiAgICAgIC8vIHRvZ2dsZSBoaWRlXG4gICAgICBmaWVsZC5oaWRlID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuaGlkZGVuID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmtGb3JDaGVjaztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzYWJsZWRTdGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIHx8ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSlcbiAgICAgICAgLmZvckVhY2goZiA9PiB0aGlzLnNldERpc2FibGVkU3RhdGUoZiwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCAhPT0gdmFsdWUpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9ybUNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGhpZGU6IGJvb2xlYW4sIHJlc2V0T25IaWRlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZvcm1Db250cm9sICYmIGZpZWxkLmtleSkge1xuICAgICAgZGVmaW5lSGlkZGVuUHJvcChmaWVsZCwgJ19oaWRlJywgISEoaGlkZSB8fCBmaWVsZC5oaWRlKSk7XG4gICAgICBjb25zdCBjID0gZmllbGQuZm9ybUNvbnRyb2w7XG4gICAgICBpZiAoY1snX2ZpZWxkcyddICYmIGNbJ19maWVsZHMnXS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHVwZGF0ZVZhbGlkaXR5KGMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGlkZSA9PT0gdHJ1ZSAmJiAoIWNbJ19maWVsZHMnXSB8fCBjWydfZmllbGRzJ10uZXZlcnkoZiA9PiAhIWYuX2hpZGUpKSkge1xuICAgICAgICB1bnJlZ2lzdGVyQ29udHJvbChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGlmIChyZXNldE9uSGlkZSAmJiBmaWVsZC5yZXNldE9uSGlkZSkge1xuICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnJlc2V0KHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZpZWxkLmZvcm1Db250cm9sLmRpc2FibGVkIH0pO1xuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgICBhc3NpZ25GaWVsZFZhbHVlKGZpZWxkLCB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRHcm91cC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChoaWRlID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZmllbGQucmVzZXRPbkhpZGUgJiYgZmllbGQucGFyZW50ICYmICFpc1VuZGVmaW5lZChmaWVsZC5kZWZhdWx0VmFsdWUpICYmIGlzVW5kZWZpbmVkKGdldEZpZWxkVmFsdWUoZmllbGQpKSkge1xuICAgICAgICAgIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQsIGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVnaXN0ZXJDb250cm9sKGZpZWxkLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICBpZiAoZmllbGQucmVzZXRPbkhpZGUgJiYgZmllbGQuZmllbGRBcnJheSAmJiAoZmllbGQuZmllbGRHcm91cCB8fCBbXSkubGVuZ3RoICE9PSAoZmllbGQubW9kZWwgfHwgW10pLmxlbmd0aCkge1xuICAgICAgICAgICg8YW55PiBmaWVsZC5vcHRpb25zKS5fYnVpbGRGb3JtKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmhpZGVFeHByZXNzaW9uKVxuICAgICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgaGlkZSwgcmVzZXRPbkhpZGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoPEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQ+IHsgZmllbGQsIHR5cGU6ICdoaWRkZW4nLCB2YWx1ZTogaGlkZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEV4cHJWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB0YXJnZXQgPSBmaWVsZDtcbiAgICAgIGNvbnN0IHBhdGhzID0gcHJvcC5pbmRleE9mKCdbJykgPT09IC0xXG4gICAgICAgID8gcHJvcC5zcGxpdCgnLicpXG4gICAgICAgIDogcHJvcFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCd8XFxcIi9nLCAnJylcbiAgICAgICAgICAuc3BsaXQoL1tbXFxdXXsxLDJ9LykgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMTk4MjA2XG4gICAgICAgICAgLmZpbHRlcih2ID0+IHYpXG4gICAgICA7XG4gICAgICBjb25zdCBsYXN0SW5kZXggPSBwYXRocy5sZW5ndGggLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcGF0aHNbaV1dO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRbcGF0aHNbbGFzdEluZGV4XV0gPSB2YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcgJiYgZmllbGQua2V5KSB7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcC5pbmRleE9mKCdtb2RlbC4nKSA9PT0gMCkge1xuICAgICAgY29uc3QgcGF0aCA9IHByb3AucmVwbGFjZSgvXm1vZGVsXFwuLywgJycpLFxuICAgICAgICBjb250cm9sID0gZmllbGQua2V5ICYmIHByb3AgPT09IHBhdGggPyBmaWVsZC5mb3JtQ29udHJvbCA6IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbC5nZXQocGF0aCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29udHJvbFxuICAgICAgICAmJiAhKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSlcbiAgICAgICAgJiYgY29udHJvbC52YWx1ZSAhPT0gdmFsdWVcbiAgICAgICkge1xuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEV4cHJlc3Npb25DaGFuZ2VzKGZpZWxkLCBwcm9wLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRFeHByZXNzaW9uQ2hhbmdlcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICghZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWVsZC5vcHRpb25zLmZpZWxkQ2hhbmdlcy5uZXh0KHtcbiAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgIHR5cGU6ICdleHByZXNzaW9uQ2hhbmdlcycsXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJsaWIvZXh0ZW5zaW9ucy9maWVsZC1leHByZXNzaW9uL2ZpZWxkLWV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25MLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRzNDLE1BQU0sT0FBTyx3QkFBd0I7Ozs7O0lBQ25DLFdBQVcsQ0FBQyxLQUE2QjtRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0MsT0FBTztTQUNSOztZQUVHLFdBQVcsR0FBRyxLQUFLO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVzs7Ozs7UUFBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQiw2QkFBNkIsQ0FDM0IsQ0FBQyxDQUFDLFdBQVc7OztnQkFDYixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFDdEMsQ0FBQztnQkFD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QUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzs7a0JBQ3ZDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFFL0YsSUFDRSxPQUFPO21CQUNKLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7bUJBQy9ELE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUMxQjtnQkFDQSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCO1NBQ0Y7UUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7Ozs7OztJQUVPLHFCQUFxQixDQUFDLEtBQTZCLEVBQUUsUUFBZ0IsRUFBRSxLQUFVO1FBQ3ZGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDOUIsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVE7WUFDUixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQsIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiwgZGVmaW5lSGlkZGVuUHJvcCwgd3JhcFByb3BlcnR5LCByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscywgZ2V0RmllbGRWYWx1ZSwgYXNzaWduRmllbGRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGV2YWxFeHByZXNzaW9uLCBldmFsU3RyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm1seS5jb25maWcnO1xuaW1wb3J0IHsgdW5yZWdpc3RlckNvbnRyb2wsIHJlZ2lzdGVyQ29udHJvbCwgdXBkYXRlVmFsaWRpdHkgfSBmcm9tICcuLi9maWVsZC1mb3JtL3V0aWxzJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEBleHBlcmltZW50YWwgKi9cbmV4cG9ydCBjbGFzcyBGaWVsZEV4cHJlc3Npb25FeHRlbnNpb24gaW1wbGVtZW50cyBGb3JtbHlFeHRlbnNpb24ge1xuICBwcmVQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZC5wYXJlbnQgfHwgZmllbGQub3B0aW9ucy5fY2hlY2tGaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjaGVja0xvY2tlZCA9IGZhbHNlO1xuICAgIGZpZWxkLm9wdGlvbnMuX2NoZWNrRmllbGQgPSAoZiwgaWdub3JlQ2FjaGUpID0+IHtcbiAgICAgIGlmICghY2hlY2tMb2NrZWQpIHtcbiAgICAgICAgY2hlY2tMb2NrZWQgPSB0cnVlO1xuICAgICAgICByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscyhcbiAgICAgICAgICBmLmZvcm1Db250cm9sLFxuICAgICAgICAgICgpID0+IHRoaXMuY2hlY2tGaWVsZChmLCBpZ25vcmVDYWNoZSksXG4gICAgICAgICk7XG4gICAgICAgIGNoZWNrTG9ja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHBvc3RQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmICghZmllbGQucGFyZW50IHx8IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhY2hlIGJ1aWx0IGV4cHJlc3Npb25cbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2V4cHJlc3Npb25Qcm9wZXJ0aWVzJywge30pO1xuXG4gICAgaWYgKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydHkgPSBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblByb3BlcnR5ID09PSAnc3RyaW5nJyB8fCBpc0Z1bmN0aW9uKGV4cHJlc3Npb25Qcm9wZXJ0eSkpIHtcbiAgICAgICAgICBmaWVsZC5fZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XSA9IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHRoaXMuX2V2YWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAga2V5ID09PSAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJyAmJiBmaWVsZC5wYXJlbnQuZXhwcmVzc2lvblByb3BlcnRpZXMgJiYgZmllbGQucGFyZW50LmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgID8gKCkgPT4gZmllbGQucGFyZW50LnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChrZXkgPT09ICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQuX2V4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0sICdleHByZXNzaW9uVmFsdWUnLCB7XG4gICAgICAgICAgICAgIGdldDogKCkgPT4gZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkLFxuICAgICAgICAgICAgICBzZXQ6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25Qcm9wZXJ0eSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSAoKSA9PiAoZXhwcmVzc2lvblByb3BlcnR5IGFzIE9ic2VydmFibGU8YW55PilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RXhwclZhbHVlKGZpZWxkLCBrZXksIHYpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2soZmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgIGNvbnN0IG9uSW5pdCA9IGZpZWxkLmhvb2tzLm9uSW5pdDtcbiAgICAgICAgICBmaWVsZC5ob29rcy5vbkluaXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uSW5pdCAmJiBvbkluaXQoZmllbGQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBvbkRlc3Ryb3kgPSBmaWVsZC5ob29rcy5vbkRlc3Ryb3k7XG4gICAgICAgICAgZmllbGQuaG9va3Mub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgb25EZXN0cm95ICYmIG9uRGVzdHJveShmaWVsZCk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuICAgICAgLy8gZGVsZXRlIGhpZGUgdmFsdWUgaW4gb3JkZXIgdG8gZm9yY2UgcmUtZXZhbHVhdGUgaXQgaW4gRm9ybWx5Rm9ybUV4cHJlc3Npb24uXG4gICAgICBkZWxldGUgZmllbGQuaGlkZTtcblxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24gPSB0aGlzLl9ldmFsRXhwcmVzc2lvbihcbiAgICAgICAgJ2hpZGUnLFxuICAgICAgICBmaWVsZC5oaWRlRXhwcmVzc2lvbixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGxldCByb290ID0gZmllbGQucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChyb290LnBhcmVudCAmJiAhcm9vdC5oaWRlKSB7XG4gICAgICAgICAgICByb290ID0gcm9vdC5wYXJlbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJvb3QuaGlkZTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBQcm9wZXJ0eShmaWVsZCwgJ2hpZGUnLCAoeyBjdXJyZW50VmFsdWUsIGZpcnN0Q2hhbmdlIH0pID0+IHtcbiAgICAgICAgZmllbGQuX2hpZGUgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbEV4cHJlc3Npb24ocHJvcDogc3RyaW5nLCBleHByZXNzaW9uLCBwYXJlbnRFeHByZXNzaW9uPykge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSBldmFsU3RyaW5nRXhwcmVzc2lvbihleHByZXNzaW9uLCBbJ21vZGVsJywgJ2Zvcm1TdGF0ZScsICdmaWVsZCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSAoKSA9PiAhIWV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHBhcmVudEV4cHJlc3Npb24gJiYgcGFyZW50RXhwcmVzc2lvbigpKSB8fCBleHByZXNzaW9uKC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGlnbm9yZUNhY2hlID0gZmFsc2UpIHtcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSB0aGlzLl9jaGVja0ZpZWxkKGZpZWxkLCBpZ25vcmVDYWNoZSk7XG5cbiAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVja1xuICAgICAgLnNvcnQoZiA9PiBmLmhpZGUgPyAtMSA6IDEpXG4gICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgISFmLmhpZGUsICFpZ25vcmVDYWNoZSkpO1xuXG4gICAgZmllbGQub3B0aW9ucy5faGlkZGVuRmllbGRzRm9yQ2hlY2sgPSBbXTtcbiAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoZWNrRmllbGQoZmllbGQpO1xuICAgICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9ucy5fbWFya0ZvckNoZWNrKSB7XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgaWdub3JlQ2FjaGUgPSBmYWxzZSkge1xuICAgIGxldCBmaWVsZENoYW5nZWQgPSBmYWxzZTtcbiAgICBmaWVsZC5maWVsZEdyb3VwLmZvckVhY2goZiA9PiB7XG4gICAgICBpZiAoIWYub3B0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tGaWVsZEV4cHJlc3Npb25DaGFuZ2UoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGYsIGlnbm9yZUNhY2hlKSkge1xuICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGYpO1xuICAgICAgICBmaWVsZENoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZi5maWVsZEdyb3VwICYmIGYuZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrRmllbGQoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWVsZENoYW5nZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRFeHByZXNzaW9uQ2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgIWZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBtYXJrRm9yQ2hlY2sgPSBmYWxzZTtcbiAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydGllcyA9IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcztcblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgZXhwcmVzc2lvblZhbHVlID0gZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uLCB7IGZpZWxkIH0sIFtmaWVsZC5tb2RlbCwgZmllbGQub3B0aW9ucy5mb3JtU3RhdGUsIGZpZWxkLCBpZ25vcmVDYWNoZV0pO1xuICAgICAgaWYgKGtleSA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcpIHtcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gISFleHByZXNzaW9uVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaWdub3JlQ2FjaGUgfHwgKFxuICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlICE9PSBleHByZXNzaW9uVmFsdWVcbiAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAhKGlzT2JqZWN0KGV4cHJlc3Npb25WYWx1ZSkgfHwgaXNGdW5jdGlvbihleHByZXNzaW9uVmFsdWUpKVxuICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgICAgJiYgKCcnICsgZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uVmFsdWUgIT09ICcnICsgZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfHwgaXNPYnNlcnZhYmxlKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgIHx8IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25WYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIG1hcmtGb3JDaGVjayA9IHRydWU7XG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlID0gZXhwcmVzc2lvblZhbHVlO1xuICAgICAgICB0aGlzLnNldEV4cHJWYWx1ZShmaWVsZCwga2V5LCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrRm9yQ2hlY2s7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgaXNOdWxsT3JVbmRlZmluZWQoZmllbGQuaGlkZUV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV4cHJlc3Npb25SZXN1bHQ6IGJvb2xlYW4gPSAhIWV2YWxFeHByZXNzaW9uKFxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24sXG4gICAgICB7IGZpZWxkIH0sXG4gICAgICBbZmllbGQubW9kZWwsIGZpZWxkLm9wdGlvbnMuZm9ybVN0YXRlLCBmaWVsZCwgaWdub3JlQ2FjaGVdLFxuICAgICk7XG4gICAgbGV0IG1hcmtGb3JDaGVjayA9IGZhbHNlO1xuICAgIGlmIChoaWRlRXhwcmVzc2lvblJlc3VsdCAhPT0gZmllbGQuaGlkZSB8fCBpZ25vcmVDYWNoZSkge1xuICAgICAgbWFya0ZvckNoZWNrID0gdHJ1ZTtcbiAgICAgIC8vIHRvZ2dsZSBoaWRlXG4gICAgICBmaWVsZC5oaWRlID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuaGlkZGVuID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmtGb3JDaGVjaztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzYWJsZWRTdGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIHx8ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSlcbiAgICAgICAgLmZvckVhY2goZiA9PiB0aGlzLnNldERpc2FibGVkU3RhdGUoZiwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCAhPT0gdmFsdWUpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9ybUNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGhpZGU6IGJvb2xlYW4sIHJlc2V0T25IaWRlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmhpZGVFeHByZXNzaW9uKVxuICAgICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgaGlkZSwgcmVzZXRPbkhpZGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgZmllbGQua2V5KSB7XG4gICAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2hpZGUnLCAhIShoaWRlIHx8IGZpZWxkLmhpZGUpKTtcbiAgICAgIGNvbnN0IGMgPSBmaWVsZC5mb3JtQ29udHJvbDtcbiAgICAgIGlmIChjWydfZmllbGRzJ10gJiYgY1snX2ZpZWxkcyddLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdXBkYXRlVmFsaWRpdHkoYyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoaWRlID09PSB0cnVlICYmICghY1snX2ZpZWxkcyddIHx8IGNbJ19maWVsZHMnXS5ldmVyeShmID0+ICEhZi5faGlkZSkpKSB7XG4gICAgICAgIHVucmVnaXN0ZXJDb250cm9sKGZpZWxkLCB0cnVlKTtcbiAgICAgICAgaWYgKHJlc2V0T25IaWRlICYmIGZpZWxkLnJlc2V0T25IaWRlKSB7XG4gICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucmVzZXQoeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmllbGQuZm9ybUNvbnRyb2wuZGlzYWJsZWQgfSk7XG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICAgIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGhpZGUgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChmaWVsZC5yZXNldE9uSGlkZSAmJiBmaWVsZC5wYXJlbnQgJiYgIWlzVW5kZWZpbmVkKGZpZWxkLmRlZmF1bHRWYWx1ZSkgJiYgaXNVbmRlZmluZWQoZ2V0RmllbGRWYWx1ZShmaWVsZCkpKSB7XG4gICAgICAgICAgYXNzaWduRmllbGRWYWx1ZShmaWVsZCwgZmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZWdpc3RlckNvbnRyb2woZmllbGQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIGlmIChmaWVsZC5yZXNldE9uSGlkZSAmJiBmaWVsZC5maWVsZEFycmF5ICYmIChmaWVsZC5maWVsZEdyb3VwIHx8IFtdKS5sZW5ndGggIT09IChmaWVsZC5tb2RlbCB8fCBbXSkubGVuZ3RoKSB7XG4gICAgICAgICAgKDxhbnk+IGZpZWxkLm9wdGlvbnMpLl9idWlsZEZvcm0odHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoPEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQ+IHsgZmllbGQsIHR5cGU6ICdoaWRkZW4nLCB2YWx1ZTogaGlkZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEV4cHJWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB0YXJnZXQgPSBmaWVsZDtcbiAgICAgIGNvbnN0IHBhdGhzID0gcHJvcC5pbmRleE9mKCdbJykgPT09IC0xXG4gICAgICAgID8gcHJvcC5zcGxpdCgnLicpXG4gICAgICAgIDogcHJvcFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCd8XFxcIi9nLCAnJylcbiAgICAgICAgICAuc3BsaXQoL1tbXFxdXXsxLDJ9LykgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMTk4MjA2XG4gICAgICAgICAgLmZpbHRlcih2ID0+IHYpXG4gICAgICA7XG4gICAgICBjb25zdCBsYXN0SW5kZXggPSBwYXRocy5sZW5ndGggLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcGF0aHNbaV1dO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRbcGF0aHNbbGFzdEluZGV4XV0gPSB2YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcgJiYgZmllbGQua2V5KSB7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcC5pbmRleE9mKCdtb2RlbC4nKSA9PT0gMCkge1xuICAgICAgY29uc3QgcGF0aCA9IHByb3AucmVwbGFjZSgvXm1vZGVsXFwuLywgJycpLFxuICAgICAgICBjb250cm9sID0gZmllbGQua2V5ICYmIHByb3AgPT09IHBhdGggPyBmaWVsZC5mb3JtQ29udHJvbCA6IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbC5nZXQocGF0aCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29udHJvbFxuICAgICAgICAmJiAhKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSlcbiAgICAgICAgJiYgY29udHJvbC52YWx1ZSAhPT0gdmFsdWVcbiAgICAgICkge1xuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEV4cHJlc3Npb25DaGFuZ2VzKGZpZWxkLCBwcm9wLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRFeHByZXNzaW9uQ2hhbmdlcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICghZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWVsZC5vcHRpb25zLmZpZWxkQ2hhbmdlcy5uZXh0KHtcbiAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgIHR5cGU6ICdleHByZXNzaW9uQ2hhbmdlcycsXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -11,13 +11,18 @@ import { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapPro
|
|
|
11
11
|
*/
|
|
12
12
|
export function unregisterControl(field, emitEvent = false) {
|
|
13
13
|
/** @type {?} */
|
|
14
|
-
const
|
|
14
|
+
const control = field.formControl;
|
|
15
|
+
/** @type {?} */
|
|
16
|
+
const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;
|
|
17
|
+
if (fieldIndex !== -1) {
|
|
18
|
+
control['_fields'].splice(fieldIndex, 1);
|
|
19
|
+
}
|
|
20
|
+
/** @type {?} */
|
|
21
|
+
const form = (/** @type {?} */ (control.parent));
|
|
15
22
|
if (!form) {
|
|
16
23
|
return;
|
|
17
24
|
}
|
|
18
25
|
/** @type {?} */
|
|
19
|
-
const control = field.formControl;
|
|
20
|
-
/** @type {?} */
|
|
21
26
|
const opts = { emitEvent };
|
|
22
27
|
if (form instanceof FormArray) {
|
|
23
28
|
/** @type {?} */
|
|
@@ -199,6 +204,8 @@ function updateControl(form, opts, action) {
|
|
|
199
204
|
*/
|
|
200
205
|
export function clearControl(form) {
|
|
201
206
|
form['_fields'] && delete form['_fields'];
|
|
207
|
+
form.setValidators(null);
|
|
208
|
+
form.setAsyncValidators(null);
|
|
202
209
|
if (form instanceof FormGroup || form instanceof FormArray) {
|
|
203
210
|
Object.keys(form.controls)
|
|
204
211
|
.forEach((/**
|
|
@@ -208,4 +215,4 @@ export function clearControl(form) {
|
|
|
208
215
|
(k) => clearControl(form.controls[k])));
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2V4dGVuc2lvbnMvZmllbGQtZm9ybS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBSTNHLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLFNBQVMsR0FBRyxLQUFLOztVQUNyRSxJQUFJLEdBQUcsbUJBQUEsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQXlCO0lBQzlELElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPO0tBQ1I7O1VBRUssT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXOztVQUMzQixJQUFJLEdBQUcsRUFBRSxTQUFTLEVBQUU7SUFDMUIsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFOztjQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFDO1FBQ3ZELElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJOzs7WUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7U0FDckQ7S0FDRjtTQUFNLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTs7Y0FDOUIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7O2NBQ3pCLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDbkMs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O1FBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQyxzQkFBc0IsbUJBQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLElBQUUsU0FBUyxFQUFFLEtBQUssSUFBRyxDQUFDO1FBQ2hFLENBQUMsQ0FBQSxDQUFDO0tBQ0g7SUFFRCxNQUFNLEVBQUUsQ0FBQztJQUVULElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0tBQ3REO0FBQ0gsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQXFCO0lBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksWUFBWSxTQUFTLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTtRQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDdkIsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7S0FDbkQ7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgZ2V0S2V5UGF0aCwgZ2V0RmllbGRWYWx1ZSwgaXNOdWxsT3JVbmRlZmluZWQsIGRlZmluZUhpZGRlblByb3AsIHdyYXBQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGVtaXRFdmVudCA9IGZhbHNlKSB7XG4gIGNvbnN0IGZvcm0gPSBmaWVsZC5mb3JtQ29udHJvbC5wYXJlbnQgYXMgRm9ybUFycmF5IHwgRm9ybUdyb3VwO1xuICBpZiAoIWZvcm0pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250cm9sID0gZmllbGQuZm9ybUNvbnRyb2w7XG4gIGNvbnN0IG9wdHMgPSB7IGVtaXRFdmVudCB9O1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIGNvbnN0IGtleSA9IGZvcm0uY29udHJvbHMuZmluZEluZGV4KGMgPT4gYyA9PT0gY29udHJvbCk7XG4gICAgaWYgKGtleSAhPT0gLTEpIHtcbiAgICAgIHVwZGF0ZUNvbnRyb2woZm9ybSwgb3B0cywgKCkgPT4gZm9ybS5yZW1vdmVBdChrZXkpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHBhdGhzID0gZ2V0S2V5UGF0aChmaWVsZCk7XG4gICAgY29uc3Qga2V5ID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG4gICAgaWYgKGZvcm0uZ2V0KFtrZXldKSA9PT0gY29udHJvbCkge1xuICAgICAgdXBkYXRlQ29udHJvbChmb3JtLCBvcHRzLCAoKSA9PiBmb3JtLnJlbW92ZUNvbnRyb2woa2V5KSk7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbC5zZXRQYXJlbnQobnVsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBpZiAoZmllbGQuZm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gZmllbGQuZm9ybUNvbnRyb2w7XG4gIH1cblxuICBpZiAoZmllbGRbJ3NoYXJlRm9ybUNvbnRyb2wnXSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGZvcm0gPSBmaWVsZC5wYXJlbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuXG4gIHJldHVybiBmb3JtID8gZm9ybS5nZXQoZ2V0S2V5UGF0aChmaWVsZCkpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgY29udHJvbD86IGFueSwgZW1pdEV2ZW50ID0gZmFsc2UpIHtcbiAgY29udHJvbCA9IGNvbnRyb2wgfHwgZmllbGQuZm9ybUNvbnRyb2w7XG4gIGlmICghY29udHJvbFsnX2ZpZWxkcyddKSB7XG4gICAgZGVmaW5lSGlkZGVuUHJvcChjb250cm9sLCAnX2ZpZWxkcycsIFtdKTtcbiAgfVxuICBpZiAoY29udHJvbFsnX2ZpZWxkcyddLmluZGV4T2YoZmllbGQpID09PSAtMSkge1xuICAgIGNvbnRyb2xbJ19maWVsZHMnXS5wdXNoKGZpZWxkKTtcbiAgfVxuXG4gIGlmICghZmllbGQuZm9ybUNvbnRyb2wgJiYgY29udHJvbCkge1xuICAgIGRlZmluZUhpZGRlblByb3AoZmllbGQsICdmb3JtQ29udHJvbCcsIGNvbnRyb2wpO1xuICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICBjb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhudWxsKTtcblxuICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9ICEhZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkO1xuICAgIHdyYXBQcm9wZXJ0eShmaWVsZC50ZW1wbGF0ZU9wdGlvbnMsICdkaXNhYmxlZCcsICh7IGZpcnN0Q2hhbmdlLCBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgaWYgKCFmaXJzdENoYW5nZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPyBmaWVsZC5mb3JtQ29udHJvbC5kaXNhYmxlKCkgOiBmaWVsZC5mb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UpIHtcbiAgICAgIGNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKFxuICAgICAgICAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnNbJ19fXyRkaXNhYmxlZCddID0gdmFsdWU7XG4gICAgICAgICAgLy8gVE9ETyByZW1vdmUgaW4gVjZcbiAgICAgICAgICBmaWVsZC5vcHRpb25zICYmIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwYXJlbnQgPSBmaWVsZC5wYXJlbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICBpZiAoIXBhcmVudCB8fCAhZmllbGQua2V5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aHMgPSBnZXRLZXlQYXRoKGZpZWxkKTtcbiAgY29uc3QgdmFsdWUgPSBnZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgaWYgKFxuICAgICEoaXNOdWxsT3JVbmRlZmluZWQoY29udHJvbC52YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKVxuICAgICYmIGNvbnRyb2wudmFsdWUgIT09IHZhbHVlXG4gICAgJiYgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sXG4gICkge1xuICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IChwYXRocy5sZW5ndGggLSAxKTsgaSsrKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGlmICghcGFyZW50LmdldChbcGF0aF0pKSB7XG4gICAgICB1cGRhdGVDb250cm9sKFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIHsgZW1pdEV2ZW50IH0sXG4gICAgICAgICgpID0+IHBhcmVudC5zZXRDb250cm9sKHBhdGgsIG5ldyBGb3JtR3JvdXAoe30pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcGFyZW50ID0gPEZvcm1Hcm91cD4gcGFyZW50LmdldChbcGF0aF0pO1xuICB9XG5cbiAgY29uc3Qga2V5ID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG4gIGlmICghZmllbGQuX2hpZGUgJiYgcGFyZW50LmdldChba2V5XSkgIT09IGNvbnRyb2wpIHtcbiAgICB1cGRhdGVDb250cm9sKFxuICAgICAgcGFyZW50LFxuICAgICAgeyBlbWl0RXZlbnQgfSxcbiAgICAgICgpID0+IHBhcmVudC5zZXRDb250cm9sKGtleSwgY29udHJvbCksXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsaWRpdHkoYzogQWJzdHJhY3RDb250cm9sKSB7XG4gIGNvbnN0IHN0YXR1cyA9IGMuc3RhdHVzO1xuICBjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICBpZiAoc3RhdHVzICE9PSBjLnN0YXR1cykge1xuICAgIChjLnN0YXR1c0NoYW5nZXMgYXMgRXZlbnRFbWl0dGVyPHN0cmluZz4pLmVtaXQoYy5zdGF0dXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbnRyb2woZm9ybTogRm9ybUdyb3VwfEZvcm1BcnJheSwgb3B0czogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSwgYWN0aW9uOiBGdW5jdGlvbikge1xuICAvKipcbiAgICogIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzI3Njc5XG4gICAqL1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCAmJiAhZm9ybVsnX19wYXRjaEZvckVhY2hDaGlsZCddKSB7XG4gICAgZGVmaW5lSGlkZGVuUHJvcChmb3JtLCAnX19wYXRjaEZvckVhY2hDaGlsZCcsIHRydWUpO1xuICAgIChmb3JtIGFzIGFueSkuX2ZvckVhY2hDaGlsZCA9IChjYjogRnVuY3Rpb24pID0+IHtcbiAgICAgIE9iamVjdFxuICAgICAgICAua2V5cyhmb3JtLmNvbnRyb2xzKVxuICAgICAgICAuZm9yRWFjaChrID0+IGZvcm0uY29udHJvbHNba10gJiYgY2IoZm9ybS5jb250cm9sc1trXSwgaykpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA0MzlcbiAgICovXG4gIGNvbnN0IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkuYmluZChmb3JtKTtcbiAgaWYgKG9wdHMuZW1pdEV2ZW50ID09PSBmYWxzZSkge1xuICAgIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IChvcHRzKSA9PiB7XG4gICAgICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgLi4uKG9wdHMgfHwge30pLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH07XG4gIH1cblxuICBhY3Rpb24oKTtcblxuICBpZiAob3B0cy5lbWl0RXZlbnQgPT09IGZhbHNlKSB7XG4gICAgZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJDb250cm9sKGZvcm06IEFic3RyYWN0Q29udHJvbCkge1xuICBmb3JtWydfZmllbGRzJ10gJiYgZGVsZXRlIGZvcm1bJ19maWVsZHMnXTtcbiAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgoaykgPT4gY2xlYXJDb250cm9sKGZvcm0uY29udHJvbHNba10pKTtcbiAgfVxufVxuIl19
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2V4dGVuc2lvbnMvZmllbGQtZm9ybS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBSTNHLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLFNBQVMsR0FBRyxLQUFLOztVQUNyRSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVc7O1VBQzNCLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNyQixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMxQzs7VUFFSyxJQUFJLEdBQUcsbUJBQUEsT0FBTyxDQUFDLE1BQU0sRUFBeUI7SUFDcEQsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU87S0FDUjs7VUFFSyxJQUFJLEdBQUcsRUFBRSxTQUFTLEVBQUU7SUFDMUIsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFOztjQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFDO1FBQ3ZELElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsYUFBYSxDQUFD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dXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgZ2V0S2V5UGF0aCwgZ2V0RmllbGRWYWx1ZSwgaXNOdWxsT3JVbmRlZmluZWQsIGRlZmluZUhpZGRlblByb3AsIHdyYXBQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGVtaXRFdmVudCA9IGZhbHNlKSB7XG4gIGNvbnN0IGNvbnRyb2wgPSBmaWVsZC5mb3JtQ29udHJvbDtcbiAgY29uc3QgZmllbGRJbmRleCA9IGNvbnRyb2xbJ19maWVsZHMnXSA/IGNvbnRyb2xbJ19maWVsZHMnXS5pbmRleE9mKGZpZWxkKSA6IC0xO1xuICBpZiAoZmllbGRJbmRleCAhPT0gLTEpIHtcbiAgICBjb250cm9sWydfZmllbGRzJ10uc3BsaWNlKGZpZWxkSW5kZXgsIDEpO1xuICB9XG5cbiAgY29uc3QgZm9ybSA9IGNvbnRyb2wucGFyZW50IGFzIEZvcm1BcnJheSB8IEZvcm1Hcm91cDtcbiAgaWYgKCFmb3JtKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IHsgZW1pdEV2ZW50IH07XG4gIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgY29uc3Qga2V5ID0gZm9ybS5jb250cm9scy5maW5kSW5kZXgoYyA9PiBjID09PSBjb250cm9sKTtcbiAgICBpZiAoa2V5ICE9PSAtMSkge1xuICAgICAgdXBkYXRlQ29udHJvbChmb3JtLCBvcHRzLCAoKSA9PiBmb3JtLnJlbW92ZUF0KGtleSkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgY29uc3QgcGF0aHMgPSBnZXRLZXlQYXRoKGZpZWxkKTtcbiAgICBjb25zdCBrZXkgPSBwYXRoc1twYXRocy5sZW5ndGggLSAxXTtcbiAgICBpZiAoZm9ybS5nZXQoW2tleV0pID09PSBjb250cm9sKSB7XG4gICAgICB1cGRhdGVDb250cm9sKGZvcm0sIG9wdHMsICgpID0+IGZvcm0ucmVtb3ZlQ29udHJvbChrZXkpKTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sLnNldFBhcmVudChudWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb250cm9sKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IEFic3RyYWN0Q29udHJvbCB7XG4gIGlmIChmaWVsZC5mb3JtQ29udHJvbCkge1xuICAgIHJldHVybiBmaWVsZC5mb3JtQ29udHJvbDtcbiAgfVxuXG4gIGlmIChmaWVsZFsnc2hhcmVGb3JtQ29udHJvbCddID09PSBmYWxzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZm9ybSA9IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbCBhcyBGb3JtR3JvdXA7XG5cbiAgcmV0dXJuIGZvcm0gPyBmb3JtLmdldChnZXRLZXlQYXRoKGZpZWxkKSkgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb250cm9sKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBjb250cm9sPzogYW55LCBlbWl0RXZlbnQgPSBmYWxzZSkge1xuICBjb250cm9sID0gY29udHJvbCB8fCBmaWVsZC5mb3JtQ29udHJvbDtcbiAgaWYgKCFjb250cm9sWydfZmllbGRzJ10pIHtcbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGNvbnRyb2wsICdfZmllbGRzJywgW10pO1xuICB9XG4gIGlmIChjb250cm9sWydfZmllbGRzJ10uaW5kZXhPZihmaWVsZCkgPT09IC0xKSB7XG4gICAgY29udHJvbFsnX2ZpZWxkcyddLnB1c2goZmllbGQpO1xuICB9XG5cbiAgaWYgKCFmaWVsZC5mb3JtQ29udHJvbCAmJiBjb250cm9sKSB7XG4gICAgZGVmaW5lSGlkZGVuUHJvcChmaWVsZCwgJ2Zvcm1Db250cm9sJywgY29udHJvbCk7XG4gICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKG51bGwpO1xuICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKG51bGwpO1xuXG4gICAgZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkID0gISFmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgd3JhcFByb3BlcnR5KGZpZWxkLnRlbXBsYXRlT3B0aW9ucywgJ2Rpc2FibGVkJywgKHsgZmlyc3RDaGFuZ2UsIGN1cnJlbnRWYWx1ZSB9KSA9PiB7XG4gICAgICBpZiAoIWZpcnN0Q2hhbmdlKSB7XG4gICAgICAgIGN1cnJlbnRWYWx1ZSA/IGZpZWxkLmZvcm1Db250cm9sLmRpc2FibGUoKSA6IGZpZWxkLmZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjb250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSkge1xuICAgICAgY29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoXG4gICAgICAgICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9uc1snX19fJGRpc2FibGVkJ10gPSB2YWx1ZTtcbiAgICAgICAgICAvLyBUT0RPIHJlbW92ZSBpbiBWNlxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9ucy5fbWFya0ZvckNoZWNrKGZpZWxkKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbGV0IHBhcmVudCA9IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbCBhcyBGb3JtR3JvdXA7XG4gIGlmICghcGFyZW50IHx8ICFmaWVsZC5rZXkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwYXRocyA9IGdldEtleVBhdGgoZmllbGQpO1xuICBjb25zdCB2YWx1ZSA9IGdldEZpZWxkVmFsdWUoZmllbGQpO1xuICBpZiAoXG4gICAgIShpc051bGxPclVuZGVmaW5lZChjb250cm9sLnZhbHVlKSAmJiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpXG4gICAgJiYgY29udHJvbC52YWx1ZSAhPT0gdmFsdWVcbiAgICAmJiBjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xcbiAgKSB7XG4gICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgKHBhdGhzLmxlbmd0aCAtIDEpOyBpKyspIHtcbiAgICBjb25zdCBwYXRoID0gcGF0aHNbaV07XG4gICAgaWYgKCFwYXJlbnQuZ2V0KFtwYXRoXSkpIHtcbiAgICAgIHVwZGF0ZUNvbnRyb2woXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgeyBlbWl0RXZlbnQgfSxcbiAgICAgICAgKCkgPT4gcGFyZW50LnNldENvbnRyb2wocGF0aCwgbmV3IEZvcm1Hcm91cCh7fSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwYXJlbnQgPSA8Rm9ybUdyb3VwPiBwYXJlbnQuZ2V0KFtwYXRoXSk7XG4gIH1cblxuICBjb25zdCBrZXkgPSBwYXRoc1twYXRocy5sZW5ndGggLSAxXTtcbiAgaWYgKCFmaWVsZC5faGlkZSAmJiBwYXJlbnQuZ2V0KFtrZXldKSAhPT0gY29udHJvbCkge1xuICAgIHVwZGF0ZUNvbnRyb2woXG4gICAgICBwYXJlbnQsXG4gICAgICB7IGVtaXRFdmVudCB9LFxuICAgICAgKCkgPT4gcGFyZW50LnNldENvbnRyb2woa2V5LCBjb250cm9sKSxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWYWxpZGl0eShjOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgY29uc3Qgc3RhdHVzID0gYy5zdGF0dXM7XG4gIGMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIGlmIChzdGF0dXMgIT09IGMuc3RhdHVzKSB7XG4gICAgKGMuc3RhdHVzQ2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8c3RyaW5nPikuZW1pdChjLnN0YXR1cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29udHJvbChmb3JtOiBGb3JtR3JvdXB8Rm9ybUFycmF5LCBvcHRzOiB7IGVtaXRFdmVudDogYm9vbGVhbiB9LCBhY3Rpb246IEZ1bmN0aW9uKSB7XG4gIC8qKlxuICAgKiAgd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjc2NzlcbiAgICovXG4gIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwICYmICFmb3JtWydfX3BhdGNoRm9yRWFjaENoaWxkJ10pIHtcbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZvcm0sICdfX3BhdGNoRm9yRWFjaENoaWxkJywgdHJ1ZSk7XG4gICAgKGZvcm0gYXMgYW55KS5fZm9yRWFjaENoaWxkID0gKGNiOiBGdW5jdGlvbikgPT4ge1xuICAgICAgT2JqZWN0XG4gICAgICAgIC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgICAgIC5mb3JFYWNoKGsgPT4gZm9ybS5jb250cm9sc1trXSAmJiBjYihmb3JtLmNvbnRyb2xzW2tdLCBrKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMDQzOVxuICAgKi9cbiAgY29uc3QgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eS5iaW5kKGZvcm0pO1xuICBpZiAob3B0cy5lbWl0RXZlbnQgPT09IGZhbHNlKSB7XG4gICAgZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gKG9wdHMpID0+IHtcbiAgICAgIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyAuLi4ob3B0cyB8fCB7fSksIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfTtcbiAgfVxuXG4gIGFjdGlvbigpO1xuXG4gIGlmIChvcHRzLmVtaXRFdmVudCA9PT0gZmFsc2UpIHtcbiAgICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNvbnRyb2woZm9ybTogQWJzdHJhY3RDb250cm9sKSB7XG4gIGZvcm1bJ19maWVsZHMnXSAmJiBkZWxldGUgZm9ybVsnX2ZpZWxkcyddO1xuICBmb3JtLnNldFZhbGlkYXRvcnMobnVsbCk7XG4gIGZvcm0uc2V0QXN5bmNWYWxpZGF0b3JzKG51bGwpO1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scylcbiAgICAgIC5mb3JFYWNoKChrKSA9PiBjbGVhckNvbnRyb2woZm9ybS5jb250cm9sc1trXSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -394,6 +394,19 @@ FieldExpressionExtension = /** @class */ (function () {
|
|
|
394
394
|
*/
|
|
395
395
|
function (field, hide, resetOnHide) {
|
|
396
396
|
var _this = this;
|
|
397
|
+
if (field.fieldGroup) {
|
|
398
|
+
field.fieldGroup
|
|
399
|
+
.filter((/**
|
|
400
|
+
* @param {?} f
|
|
401
|
+
* @return {?}
|
|
402
|
+
*/
|
|
403
|
+
function (f) { return !f.hideExpression; }))
|
|
404
|
+
.forEach((/**
|
|
405
|
+
* @param {?} f
|
|
406
|
+
* @return {?}
|
|
407
|
+
*/
|
|
408
|
+
function (f) { return _this.toggleFormControl(f, hide, resetOnHide); }));
|
|
409
|
+
}
|
|
397
410
|
if (field.formControl && field.key) {
|
|
398
411
|
defineHiddenProp(field, '_hide', !!(hide || field.hide));
|
|
399
412
|
/** @type {?} */
|
|
@@ -427,19 +440,6 @@ FieldExpressionExtension = /** @class */ (function () {
|
|
|
427
440
|
}
|
|
428
441
|
}
|
|
429
442
|
}
|
|
430
|
-
if (field.fieldGroup) {
|
|
431
|
-
field.fieldGroup
|
|
432
|
-
.filter((/**
|
|
433
|
-
* @param {?} f
|
|
434
|
-
* @return {?}
|
|
435
|
-
*/
|
|
436
|
-
function (f) { return !f.hideExpression; }))
|
|
437
|
-
.forEach((/**
|
|
438
|
-
* @param {?} f
|
|
439
|
-
* @return {?}
|
|
440
|
-
*/
|
|
441
|
-
function (f) { return _this.toggleFormControl(f, hide, resetOnHide); }));
|
|
442
|
-
}
|
|
443
443
|
if (field.options.fieldChanges) {
|
|
444
444
|
field.options.fieldChanges.next((/** @type {?} */ ({ field: field, type: 'hidden', value: hide })));
|
|
445
445
|
}
|
|
@@ -531,4 +531,4 @@ FieldExpressionExtension = /** @class */ (function () {
|
|
|
531
531
|
* \@experimental
|
|
532
532
|
*/
|
|
533
533
|
export { FieldExpressionExtension };
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJsaWIvZXh0ZW5zaW9ucy9maWVsZC1leHByZXNzaW9uL2ZpZWxkLWV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuTCxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUczQzs7OztJQUFBO0lBb1VBLENBQUM7Ozs7O0lBblVDLDhDQUFXOzs7O0lBQVgsVUFBWSxLQUE2QjtRQUF6QyxpQkFnQkM7UUFmQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0MsT0FBTztTQUNSOztZQUVHLFdBQVcsR0FBRyxLQUFLO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVzs7Ozs7UUFBRyxVQUFDLENBQUMsRUFBRSxXQUFXO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLDZCQUE2QixDQUMzQixDQUFDLENBQUMsV0FBVzs7O2dCQUNiLGNBQU0sT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBL0Is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QUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzlCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixRQUFRLFVBQUE7WUFDUixLQUFLLE9BQUE7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBcFVELElBb1VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQsIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiwgZGVmaW5lSGlkZGVuUHJvcCwgd3JhcFByb3BlcnR5LCByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscywgZ2V0RmllbGRWYWx1ZSwgYXNzaWduRmllbGRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGV2YWxFeHByZXNzaW9uLCBldmFsU3RyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm1seS5jb25maWcnO1xuaW1wb3J0IHsgdW5yZWdpc3RlckNvbnRyb2wsIHJlZ2lzdGVyQ29udHJvbCwgdXBkYXRlVmFsaWRpdHkgfSBmcm9tICcuLi9maWVsZC1mb3JtL3V0aWxzJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEBleHBlcmltZW50YWwgKi9cbmV4cG9ydCBjbGFzcyBGaWVsZEV4cHJlc3Npb25FeHRlbnNpb24gaW1wbGVtZW50cyBGb3JtbHlFeHRlbnNpb24ge1xuICBwcmVQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZC5wYXJlbnQgfHwgZmllbGQub3B0aW9ucy5fY2hlY2tGaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjaGVja0xvY2tlZCA9IGZhbHNlO1xuICAgIGZpZWxkLm9wdGlvbnMuX2NoZWNrRmllbGQgPSAoZiwgaWdub3JlQ2FjaGUpID0+IHtcbiAgICAgIGlmICghY2hlY2tMb2NrZWQpIHtcbiAgICAgICAgY2hlY2tMb2NrZWQgPSB0cnVlO1xuICAgICAgICByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscyhcbiAgICAgICAgICBmLmZvcm1Db250cm9sLFxuICAgICAgICAgICgpID0+IHRoaXMuY2hlY2tGaWVsZChmLCBpZ25vcmVDYWNoZSksXG4gICAgICAgICk7XG4gICAgICAgIGNoZWNrTG9ja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHBvc3RQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmICghZmllbGQucGFyZW50IHx8IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhY2hlIGJ1aWx0IGV4cHJlc3Npb25cbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2V4cHJlc3Npb25Qcm9wZXJ0aWVzJywge30pO1xuXG4gICAgaWYgKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydHkgPSBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblByb3BlcnR5ID09PSAnc3RyaW5nJyB8fCBpc0Z1bmN0aW9uKGV4cHJlc3Npb25Qcm9wZXJ0eSkpIHtcbiAgICAgICAgICBmaWVsZC5fZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XSA9IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHRoaXMuX2V2YWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAga2V5ID09PSAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJyAmJiBmaWVsZC5wYXJlbnQuZXhwcmVzc2lvblByb3BlcnRpZXMgJiYgZmllbGQucGFyZW50LmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgID8gKCkgPT4gZmllbGQucGFyZW50LnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChrZXkgPT09ICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQuX2V4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0sICdleHByZXNzaW9uVmFsdWUnLCB7XG4gICAgICAgICAgICAgIGdldDogKCkgPT4gZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkLFxuICAgICAgICAgICAgICBzZXQ6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25Qcm9wZXJ0eSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSAoKSA9PiAoZXhwcmVzc2lvblByb3BlcnR5IGFzIE9ic2VydmFibGU8YW55PilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RXhwclZhbHVlKGZpZWxkLCBrZXksIHYpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2soZmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgIGNvbnN0IG9uSW5pdCA9IGZpZWxkLmhvb2tzLm9uSW5pdDtcbiAgICAgICAgICBmaWVsZC5ob29rcy5vbkluaXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uSW5pdCAmJiBvbkluaXQoZmllbGQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBvbkRlc3Ryb3kgPSBmaWVsZC5ob29rcy5vbkRlc3Ryb3k7XG4gICAgICAgICAgZmllbGQuaG9va3Mub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgb25EZXN0cm95ICYmIG9uRGVzdHJveShmaWVsZCk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuICAgICAgLy8gZGVsZXRlIGhpZGUgdmFsdWUgaW4gb3JkZXIgdG8gZm9yY2UgcmUtZXZhbHVhdGUgaXQgaW4gRm9ybWx5Rm9ybUV4cHJlc3Npb24uXG4gICAgICBkZWxldGUgZmllbGQuaGlkZTtcblxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24gPSB0aGlzLl9ldmFsRXhwcmVzc2lvbihcbiAgICAgICAgJ2hpZGUnLFxuICAgICAgICBmaWVsZC5oaWRlRXhwcmVzc2lvbixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGxldCByb290ID0gZmllbGQucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChyb290LnBhcmVudCAmJiAhcm9vdC5oaWRlKSB7XG4gICAgICAgICAgICByb290ID0gcm9vdC5wYXJlbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJvb3QuaGlkZTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBQcm9wZXJ0eShmaWVsZCwgJ2hpZGUnLCAoeyBjdXJyZW50VmFsdWUsIGZpcnN0Q2hhbmdlIH0pID0+IHtcbiAgICAgICAgZmllbGQuX2hpZGUgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbEV4cHJlc3Npb24ocHJvcDogc3RyaW5nLCBleHByZXNzaW9uLCBwYXJlbnRFeHByZXNzaW9uPykge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSBldmFsU3RyaW5nRXhwcmVzc2lvbihleHByZXNzaW9uLCBbJ21vZGVsJywgJ2Zvcm1TdGF0ZScsICdmaWVsZCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSAoKSA9PiAhIWV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHBhcmVudEV4cHJlc3Npb24gJiYgcGFyZW50RXhwcmVzc2lvbigpKSB8fCBleHByZXNzaW9uKC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGlnbm9yZUNhY2hlID0gZmFsc2UpIHtcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSB0aGlzLl9jaGVja0ZpZWxkKGZpZWxkLCBpZ25vcmVDYWNoZSk7XG5cbiAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVja1xuICAgICAgLnNvcnQoZiA9PiBmLmhpZGUgPyAtMSA6IDEpXG4gICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgISFmLmhpZGUsICFpZ25vcmVDYWNoZSkpO1xuXG4gICAgZmllbGQub3B0aW9ucy5faGlkZGVuRmllbGRzRm9yQ2hlY2sgPSBbXTtcbiAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoZWNrRmllbGQoZmllbGQpO1xuICAgICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9ucy5fbWFya0ZvckNoZWNrKSB7XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgaWdub3JlQ2FjaGUgPSBmYWxzZSkge1xuICAgIGxldCBmaWVsZENoYW5nZWQgPSBmYWxzZTtcbiAgICBmaWVsZC5maWVsZEdyb3VwLmZvckVhY2goZiA9PiB7XG4gICAgICBpZiAoIWYub3B0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tGaWVsZEV4cHJlc3Npb25DaGFuZ2UoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGYsIGlnbm9yZUNhY2hlKSkge1xuICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGYpO1xuICAgICAgICBmaWVsZENoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZi5maWVsZEdyb3VwICYmIGYuZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrRmllbGQoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWVsZENoYW5nZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRFeHByZXNzaW9uQ2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgIWZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBtYXJrRm9yQ2hlY2sgPSBmYWxzZTtcbiAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydGllcyA9IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcztcblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgZXhwcmVzc2lvblZhbHVlID0gZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uLCB7IGZpZWxkIH0sIFtmaWVsZC5tb2RlbCwgZmllbGQub3B0aW9ucy5mb3JtU3RhdGUsIGZpZWxkLCBpZ25vcmVDYWNoZV0pO1xuICAgICAgaWYgKGtleSA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcpIHtcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gISFleHByZXNzaW9uVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaWdub3JlQ2FjaGUgfHwgKFxuICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlICE9PSBleHByZXNzaW9uVmFsdWVcbiAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAhKGlzT2JqZWN0KGV4cHJlc3Npb25WYWx1ZSkgfHwgaXNGdW5jdGlvbihleHByZXNzaW9uVmFsdWUpKVxuICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgICAgJiYgKCcnICsgZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uVmFsdWUgIT09ICcnICsgZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfHwgaXNPYnNlcnZhYmxlKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgIHx8IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25WYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIG1hcmtGb3JDaGVjayA9IHRydWU7XG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlID0gZXhwcmVzc2lvblZhbHVlO1xuICAgICAgICB0aGlzLnNldEV4cHJWYWx1ZShmaWVsZCwga2V5LCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrRm9yQ2hlY2s7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgaXNOdWxsT3JVbmRlZmluZWQoZmllbGQuaGlkZUV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV4cHJlc3Npb25SZXN1bHQ6IGJvb2xlYW4gPSAhIWV2YWxFeHByZXNzaW9uKFxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24sXG4gICAgICB7IGZpZWxkIH0sXG4gICAgICBbZmllbGQubW9kZWwsIGZpZWxkLm9wdGlvbnMuZm9ybVN0YXRlLCBmaWVsZCwgaWdub3JlQ2FjaGVdLFxuICAgICk7XG4gICAgbGV0IG1hcmtGb3JDaGVjayA9IGZhbHNlO1xuICAgIGlmIChoaWRlRXhwcmVzc2lvblJlc3VsdCAhPT0gZmllbGQuaGlkZSB8fCBpZ25vcmVDYWNoZSkge1xuICAgICAgbWFya0ZvckNoZWNrID0gdHJ1ZTtcbiAgICAgIC8vIHRvZ2dsZSBoaWRlXG4gICAgICBmaWVsZC5oaWRlID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuaGlkZGVuID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmtGb3JDaGVjaztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzYWJsZWRTdGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIHx8ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSlcbiAgICAgICAgLmZvckVhY2goZiA9PiB0aGlzLnNldERpc2FibGVkU3RhdGUoZiwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCAhPT0gdmFsdWUpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9ybUNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGhpZGU6IGJvb2xlYW4sIHJlc2V0T25IaWRlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZvcm1Db250cm9sICYmIGZpZWxkLmtleSkge1xuICAgICAgZGVmaW5lSGlkZGVuUHJvcChmaWVsZCwgJ19oaWRlJywgISEoaGlkZSB8fCBmaWVsZC5oaWRlKSk7XG4gICAgICBjb25zdCBjID0gZmllbGQuZm9ybUNvbnRyb2w7XG4gICAgICBpZiAoY1snX2ZpZWxkcyddICYmIGNbJ19maWVsZHMnXS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHVwZGF0ZVZhbGlkaXR5KGMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGlkZSA9PT0gdHJ1ZSAmJiAoIWNbJ19maWVsZHMnXSB8fCBjWydfZmllbGRzJ10uZXZlcnkoZiA9PiAhIWYuX2hpZGUpKSkge1xuICAgICAgICB1bnJlZ2lzdGVyQ29udHJvbChmaWVsZCwgdHJ1ZSk7XG4gICAgICAgIGlmIChyZXNldE9uSGlkZSAmJiBmaWVsZC5yZXNldE9uSGlkZSkge1xuICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnJlc2V0KHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZpZWxkLmZvcm1Db250cm9sLmRpc2FibGVkIH0pO1xuICAgICAgICAgIGlmIChmaWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgICBhc3NpZ25GaWVsZFZhbHVlKGZpZWxkLCB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRHcm91cC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChoaWRlID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZmllbGQucmVzZXRPbkhpZGUgJiYgZmllbGQucGFyZW50ICYmICFpc1VuZGVmaW5lZChmaWVsZC5kZWZhdWx0VmFsdWUpICYmIGlzVW5kZWZpbmVkKGdldEZpZWxkVmFsdWUoZmllbGQpKSkge1xuICAgICAgICAgIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQsIGZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVnaXN0ZXJDb250cm9sKGZpZWxkLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICBpZiAoZmllbGQucmVzZXRPbkhpZGUgJiYgZmllbGQuZmllbGRBcnJheSAmJiAoZmllbGQuZmllbGRHcm91cCB8fCBbXSkubGVuZ3RoICE9PSAoZmllbGQubW9kZWwgfHwgW10pLmxlbmd0aCkge1xuICAgICAgICAgICg8YW55PiBmaWVsZC5vcHRpb25zKS5fYnVpbGRGb3JtKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmhpZGVFeHByZXNzaW9uKVxuICAgICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgaGlkZSwgcmVzZXRPbkhpZGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoPEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQ+IHsgZmllbGQsIHR5cGU6ICdoaWRkZW4nLCB2YWx1ZTogaGlkZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEV4cHJWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB0YXJnZXQgPSBmaWVsZDtcbiAgICAgIGNvbnN0IHBhdGhzID0gcHJvcC5pbmRleE9mKCdbJykgPT09IC0xXG4gICAgICAgID8gcHJvcC5zcGxpdCgnLicpXG4gICAgICAgIDogcHJvcFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCd8XFxcIi9nLCAnJylcbiAgICAgICAgICAuc3BsaXQoL1tbXFxdXXsxLDJ9LykgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMTk4MjA2XG4gICAgICAgICAgLmZpbHRlcih2ID0+IHYpXG4gICAgICA7XG4gICAgICBjb25zdCBsYXN0SW5kZXggPSBwYXRocy5sZW5ndGggLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcGF0aHNbaV1dO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRbcGF0aHNbbGFzdEluZGV4XV0gPSB2YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcgJiYgZmllbGQua2V5KSB7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcC5pbmRleE9mKCdtb2RlbC4nKSA9PT0gMCkge1xuICAgICAgY29uc3QgcGF0aCA9IHByb3AucmVwbGFjZSgvXm1vZGVsXFwuLywgJycpLFxuICAgICAgICBjb250cm9sID0gZmllbGQua2V5ICYmIHByb3AgPT09IHBhdGggPyBmaWVsZC5mb3JtQ29udHJvbCA6IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbC5nZXQocGF0aCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29udHJvbFxuICAgICAgICAmJiAhKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSlcbiAgICAgICAgJiYgY29udHJvbC52YWx1ZSAhPT0gdmFsdWVcbiAgICAgICkge1xuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEV4cHJlc3Npb25DaGFuZ2VzKGZpZWxkLCBwcm9wLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRFeHByZXNzaW9uQ2hhbmdlcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICghZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWVsZC5vcHRpb25zLmZpZWxkQ2hhbmdlcy5uZXh0KHtcbiAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgIHR5cGU6ICdleHByZXNzaW9uQ2hhbmdlcycsXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJsaWIvZXh0ZW5zaW9ucy9maWVsZC1leHByZXNzaW9uL2ZpZWxkLWV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuTCxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUczQzs7OztJQUFBO0lBb1VBLENBQUM7Ozs7O0lBblVDLDhDQUFXOzs7O0lBQVgsVUFBWSxLQUE2QjtRQUF6QyxpQkFnQkM7UUFmQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0MsT0FBTztTQUNSOztZQUVHLFdBQVcsR0FBRyxLQUFLO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVzs7Ozs7UUFBRyxVQUFDLENBQUMsRUFBRSxXQUFXO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLDZCQUE2QixDQUMzQixDQUFDLENBQUMsV0FBVzs7O2dCQUNiLGNBQU0sT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBL0Is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QUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzlCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixRQUFRLFVBQUE7WUFDUixLQUFLLE9BQUE7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBcFVELElBb1VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQsIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Zvcm1seS5maWVsZC5jb25maWcnO1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiwgZGVmaW5lSGlkZGVuUHJvcCwgd3JhcFByb3BlcnR5LCByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscywgZ2V0RmllbGRWYWx1ZSwgYXNzaWduRmllbGRWYWx1ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGV2YWxFeHByZXNzaW9uLCBldmFsU3RyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUV4dGVuc2lvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm1seS5jb25maWcnO1xuaW1wb3J0IHsgdW5yZWdpc3RlckNvbnRyb2wsIHJlZ2lzdGVyQ29udHJvbCwgdXBkYXRlVmFsaWRpdHkgfSBmcm9tICcuLi9maWVsZC1mb3JtL3V0aWxzJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqIEBleHBlcmltZW50YWwgKi9cbmV4cG9ydCBjbGFzcyBGaWVsZEV4cHJlc3Npb25FeHRlbnNpb24gaW1wbGVtZW50cyBGb3JtbHlFeHRlbnNpb24ge1xuICBwcmVQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmIChmaWVsZC5wYXJlbnQgfHwgZmllbGQub3B0aW9ucy5fY2hlY2tGaWVsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjaGVja0xvY2tlZCA9IGZhbHNlO1xuICAgIGZpZWxkLm9wdGlvbnMuX2NoZWNrRmllbGQgPSAoZiwgaWdub3JlQ2FjaGUpID0+IHtcbiAgICAgIGlmICghY2hlY2tMb2NrZWQpIHtcbiAgICAgICAgY2hlY2tMb2NrZWQgPSB0cnVlO1xuICAgICAgICByZWR1Y2VGb3JtVXBkYXRlVmFsaWRpdHlDYWxscyhcbiAgICAgICAgICBmLmZvcm1Db250cm9sLFxuICAgICAgICAgICgpID0+IHRoaXMuY2hlY2tGaWVsZChmLCBpZ25vcmVDYWNoZSksXG4gICAgICAgICk7XG4gICAgICAgIGNoZWNrTG9ja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHBvc3RQb3B1bGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGlmICghZmllbGQucGFyZW50IHx8IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhY2hlIGJ1aWx0IGV4cHJlc3Npb25cbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2V4cHJlc3Npb25Qcm9wZXJ0aWVzJywge30pO1xuXG4gICAgaWYgKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydHkgPSBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblByb3BlcnR5ID09PSAnc3RyaW5nJyB8fCBpc0Z1bmN0aW9uKGV4cHJlc3Npb25Qcm9wZXJ0eSkpIHtcbiAgICAgICAgICBmaWVsZC5fZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XSA9IHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IHRoaXMuX2V2YWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0eSxcbiAgICAgICAgICAgICAga2V5ID09PSAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJyAmJiBmaWVsZC5wYXJlbnQuZXhwcmVzc2lvblByb3BlcnRpZXMgJiYgZmllbGQucGFyZW50LmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKVxuICAgICAgICAgICAgICAgID8gKCkgPT4gZmllbGQucGFyZW50LnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChrZXkgPT09ICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmllbGQuX2V4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0sICdleHByZXNzaW9uVmFsdWUnLCB7XG4gICAgICAgICAgICAgIGdldDogKCkgPT4gZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkLFxuICAgICAgICAgICAgICBzZXQ6ICgpID0+IHsgfSxcbiAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb25Qcm9wZXJ0eSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSAoKSA9PiAoZXhwcmVzc2lvblByb3BlcnR5IGFzIE9ic2VydmFibGU8YW55PilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RXhwclZhbHVlKGZpZWxkLCBrZXksIHYpO1xuICAgICAgICAgICAgICBpZiAoZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2soZmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGxldCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgIGNvbnN0IG9uSW5pdCA9IGZpZWxkLmhvb2tzLm9uSW5pdDtcbiAgICAgICAgICBmaWVsZC5ob29rcy5vbkluaXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uSW5pdCAmJiBvbkluaXQoZmllbGQpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBvbkRlc3Ryb3kgPSBmaWVsZC5ob29rcy5vbkRlc3Ryb3k7XG4gICAgICAgICAgZmllbGQuaG9va3Mub25EZXN0cm95ID0gKCkgPT4ge1xuICAgICAgICAgICAgb25EZXN0cm95ICYmIG9uRGVzdHJveShmaWVsZCk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuICAgICAgLy8gZGVsZXRlIGhpZGUgdmFsdWUgaW4gb3JkZXIgdG8gZm9yY2UgcmUtZXZhbHVhdGUgaXQgaW4gRm9ybWx5Rm9ybUV4cHJlc3Npb24uXG4gICAgICBkZWxldGUgZmllbGQuaGlkZTtcblxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24gPSB0aGlzLl9ldmFsRXhwcmVzc2lvbihcbiAgICAgICAgJ2hpZGUnLFxuICAgICAgICBmaWVsZC5oaWRlRXhwcmVzc2lvbixcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGxldCByb290ID0gZmllbGQucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChyb290LnBhcmVudCAmJiAhcm9vdC5oaWRlKSB7XG4gICAgICAgICAgICByb290ID0gcm9vdC5wYXJlbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJvb3QuaGlkZTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdyYXBQcm9wZXJ0eShmaWVsZCwgJ2hpZGUnLCAoeyBjdXJyZW50VmFsdWUsIGZpcnN0Q2hhbmdlIH0pID0+IHtcbiAgICAgICAgZmllbGQuX2hpZGUgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGlmICghZmlyc3RDaGFuZ2UgfHwgKGZpcnN0Q2hhbmdlICYmIGN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZXZhbEV4cHJlc3Npb24ocHJvcDogc3RyaW5nLCBleHByZXNzaW9uLCBwYXJlbnRFeHByZXNzaW9uPykge1xuICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSBldmFsU3RyaW5nRXhwcmVzc2lvbihleHByZXNzaW9uLCBbJ21vZGVsJywgJ2Zvcm1TdGF0ZScsICdmaWVsZCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGV4cHJlc3Npb24gPSAoKSA9PiAhIWV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHBhcmVudEV4cHJlc3Npb24gJiYgcGFyZW50RXhwcmVzc2lvbigpKSB8fCBleHByZXNzaW9uKC4uLmFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGQoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGlnbm9yZUNhY2hlID0gZmFsc2UpIHtcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSB0aGlzLl9jaGVja0ZpZWxkKGZpZWxkLCBpZ25vcmVDYWNoZSk7XG5cbiAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVja1xuICAgICAgLnNvcnQoZiA9PiBmLmhpZGUgPyAtMSA6IDEpXG4gICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgISFmLmhpZGUsICFpZ25vcmVDYWNoZSkpO1xuXG4gICAgZmllbGQub3B0aW9ucy5faGlkZGVuRmllbGRzRm9yQ2hlY2sgPSBbXTtcbiAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoZWNrRmllbGQoZmllbGQpO1xuICAgICAgaWYgKGZpZWxkLm9wdGlvbnMgJiYgZmllbGQub3B0aW9ucy5fbWFya0ZvckNoZWNrKSB7XG4gICAgICAgIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgaWdub3JlQ2FjaGUgPSBmYWxzZSkge1xuICAgIGxldCBmaWVsZENoYW5nZWQgPSBmYWxzZTtcbiAgICBmaWVsZC5maWVsZEdyb3VwLmZvckVhY2goZiA9PiB7XG4gICAgICBpZiAoIWYub3B0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tGaWVsZEV4cHJlc3Npb25DaGFuZ2UoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGYsIGlnbm9yZUNhY2hlKSkge1xuICAgICAgICBmaWVsZC5vcHRpb25zLl9oaWRkZW5GaWVsZHNGb3JDaGVjay5wdXNoKGYpO1xuICAgICAgICBmaWVsZENoYW5nZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZi5maWVsZEdyb3VwICYmIGYuZmllbGRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrRmllbGQoZiwgaWdub3JlQ2FjaGUpICYmIChmaWVsZENoYW5nZWQgPSB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWVsZENoYW5nZWQ7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRFeHByZXNzaW9uQ2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgIWZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBtYXJrRm9yQ2hlY2sgPSBmYWxzZTtcbiAgICBjb25zdCBleHByZXNzaW9uUHJvcGVydGllcyA9IGZpZWxkLl9leHByZXNzaW9uUHJvcGVydGllcztcblxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgZXhwcmVzc2lvblZhbHVlID0gZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uLCB7IGZpZWxkIH0sIFtmaWVsZC5tb2RlbCwgZmllbGQub3B0aW9ucy5mb3JtU3RhdGUsIGZpZWxkLCBpZ25vcmVDYWNoZV0pO1xuICAgICAgaWYgKGtleSA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcpIHtcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gISFleHByZXNzaW9uVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaWdub3JlQ2FjaGUgfHwgKFxuICAgICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlICE9PSBleHByZXNzaW9uVmFsdWVcbiAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAhKGlzT2JqZWN0KGV4cHJlc3Npb25WYWx1ZSkgfHwgaXNGdW5jdGlvbihleHByZXNzaW9uVmFsdWUpKVxuICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgICAgJiYgKCcnICsgZXhwcmVzc2lvblByb3BlcnRpZXNba2V5XS5leHByZXNzaW9uVmFsdWUgIT09ICcnICsgZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgfHwgaXNPYnNlcnZhYmxlKGV4cHJlc3Npb25WYWx1ZSlcbiAgICAgICAgICAgIHx8IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25WYWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIG1hcmtGb3JDaGVjayA9IHRydWU7XG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzW2tleV0uZXhwcmVzc2lvblZhbHVlID0gZXhwcmVzc2lvblZhbHVlO1xuICAgICAgICB0aGlzLnNldEV4cHJWYWx1ZShmaWVsZCwga2V5LCBleHByZXNzaW9uVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrRm9yQ2hlY2s7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRmllbGRWaXNpYmlsaXR5Q2hhbmdlKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlLCBpZ25vcmVDYWNoZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZmllbGQgfHwgaXNOdWxsT3JVbmRlZmluZWQoZmllbGQuaGlkZUV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV4cHJlc3Npb25SZXN1bHQ6IGJvb2xlYW4gPSAhIWV2YWxFeHByZXNzaW9uKFxuICAgICAgZmllbGQuaGlkZUV4cHJlc3Npb24sXG4gICAgICB7IGZpZWxkIH0sXG4gICAgICBbZmllbGQubW9kZWwsIGZpZWxkLm9wdGlvbnMuZm9ybVN0YXRlLCBmaWVsZCwgaWdub3JlQ2FjaGVdLFxuICAgICk7XG4gICAgbGV0IG1hcmtGb3JDaGVjayA9IGZhbHNlO1xuICAgIGlmIChoaWRlRXhwcmVzc2lvblJlc3VsdCAhPT0gZmllbGQuaGlkZSB8fCBpZ25vcmVDYWNoZSkge1xuICAgICAgbWFya0ZvckNoZWNrID0gdHJ1ZTtcbiAgICAgIC8vIHRvZ2dsZSBoaWRlXG4gICAgICBmaWVsZC5oaWRlID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuaGlkZGVuID0gaGlkZUV4cHJlc3Npb25SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmtGb3JDaGVjaztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzYWJsZWRTdGF0ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIHx8ICFmLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KCd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnKSlcbiAgICAgICAgLmZvckVhY2goZiA9PiB0aGlzLnNldERpc2FibGVkU3RhdGUoZiwgdmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCAhPT0gdmFsdWUpIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRm9ybUNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGhpZGU6IGJvb2xlYW4sIHJlc2V0T25IaWRlOiBib29sZWFuKSB7XG4gICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgICAgLmZpbHRlcihmID0+ICFmLmhpZGVFeHByZXNzaW9uKVxuICAgICAgICAuZm9yRWFjaChmID0+IHRoaXMudG9nZ2xlRm9ybUNvbnRyb2woZiwgaGlkZSwgcmVzZXRPbkhpZGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgZmllbGQua2V5KSB7XG4gICAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnX2hpZGUnLCAhIShoaWRlIHx8IGZpZWxkLmhpZGUpKTtcbiAgICAgIGNvbnN0IGMgPSBmaWVsZC5mb3JtQ29udHJvbDtcbiAgICAgIGlmIChjWydfZmllbGRzJ10gJiYgY1snX2ZpZWxkcyddLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdXBkYXRlVmFsaWRpdHkoYyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoaWRlID09PSB0cnVlICYmICghY1snX2ZpZWxkcyddIHx8IGNbJ19maWVsZHMnXS5ldmVyeShmID0+ICEhZi5faGlkZSkpKSB7XG4gICAgICAgIHVucmVnaXN0ZXJDb250cm9sKGZpZWxkLCB0cnVlKTtcbiAgICAgICAgaWYgKHJlc2V0T25IaWRlICYmIGZpZWxkLnJlc2V0T25IaWRlKSB7XG4gICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucmVzZXQoeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmllbGQuZm9ybUNvbnRyb2wuZGlzYWJsZWQgfSk7XG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICAgIGFzc2lnbkZpZWxkVmFsdWUoZmllbGQsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgICAgICBmaWVsZC5maWVsZEdyb3VwLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGhpZGUgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChmaWVsZC5yZXNldE9uSGlkZSAmJiBmaWVsZC5wYXJlbnQgJiYgIWlzVW5kZWZpbmVkKGZpZWxkLmRlZmF1bHRWYWx1ZSkgJiYgaXNVbmRlZmluZWQoZ2V0RmllbGRWYWx1ZShmaWVsZCkpKSB7XG4gICAgICAgICAgYXNzaWduRmllbGRWYWx1ZShmaWVsZCwgZmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZWdpc3RlckNvbnRyb2woZmllbGQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIGlmIChmaWVsZC5yZXNldE9uSGlkZSAmJiBmaWVsZC5maWVsZEFycmF5ICYmIChmaWVsZC5maWVsZEdyb3VwIHx8IFtdKS5sZW5ndGggIT09IChmaWVsZC5tb2RlbCB8fCBbXSkubGVuZ3RoKSB7XG4gICAgICAgICAgKDxhbnk+IGZpZWxkLm9wdGlvbnMpLl9idWlsZEZvcm0odHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLm5leHQoPEZvcm1seVZhbHVlQ2hhbmdlRXZlbnQ+IHsgZmllbGQsIHR5cGU6ICdoaWRkZW4nLCB2YWx1ZTogaGlkZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEV4cHJWYWx1ZShmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB0YXJnZXQgPSBmaWVsZDtcbiAgICAgIGNvbnN0IHBhdGhzID0gcHJvcC5pbmRleE9mKCdbJykgPT09IC0xXG4gICAgICAgID8gcHJvcC5zcGxpdCgnLicpXG4gICAgICAgIDogcHJvcFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCd8XFxcIi9nLCAnJylcbiAgICAgICAgICAuc3BsaXQoL1tbXFxdXXsxLDJ9LykgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMTk4MjA2XG4gICAgICAgICAgLmZpbHRlcih2ID0+IHYpXG4gICAgICA7XG4gICAgICBjb25zdCBsYXN0SW5kZXggPSBwYXRocy5sZW5ndGggLSAxO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXN0SW5kZXg7IGkrKykge1xuICAgICAgICB0YXJnZXQgPSB0YXJnZXRbcGF0aHNbaV1dO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRbcGF0aHNbbGFzdEluZGV4XV0gPSB2YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBbRm9ybWx5IEVycm9yXSBbRXhwcmVzc2lvbiBcIiR7cHJvcH1cIl0gJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCcgJiYgZmllbGQua2V5KSB7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcC5pbmRleE9mKCdtb2RlbC4nKSA9PT0gMCkge1xuICAgICAgY29uc3QgcGF0aCA9IHByb3AucmVwbGFjZSgvXm1vZGVsXFwuLywgJycpLFxuICAgICAgICBjb250cm9sID0gZmllbGQua2V5ICYmIHByb3AgPT09IHBhdGggPyBmaWVsZC5mb3JtQ29udHJvbCA6IGZpZWxkLnBhcmVudC5mb3JtQ29udHJvbC5nZXQocGF0aCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29udHJvbFxuICAgICAgICAmJiAhKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSlcbiAgICAgICAgJiYgY29udHJvbC52YWx1ZSAhPT0gdmFsdWVcbiAgICAgICkge1xuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZW1pdEV4cHJlc3Npb25DaGFuZ2VzKGZpZWxkLCBwcm9wLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRFeHByZXNzaW9uQ2hhbmdlcyhmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICghZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWVsZC5vcHRpb25zLmZpZWxkQ2hhbmdlcy5uZXh0KHtcbiAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgIHR5cGU6ICdleHByZXNzaW9uQ2hhbmdlcycsXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -13,13 +13,18 @@ import { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapPro
|
|
|
13
13
|
export function unregisterControl(field, emitEvent) {
|
|
14
14
|
if (emitEvent === void 0) { emitEvent = false; }
|
|
15
15
|
/** @type {?} */
|
|
16
|
-
var
|
|
16
|
+
var control = field.formControl;
|
|
17
|
+
/** @type {?} */
|
|
18
|
+
var fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;
|
|
19
|
+
if (fieldIndex !== -1) {
|
|
20
|
+
control['_fields'].splice(fieldIndex, 1);
|
|
21
|
+
}
|
|
22
|
+
/** @type {?} */
|
|
23
|
+
var form = (/** @type {?} */ (control.parent));
|
|
17
24
|
if (!form) {
|
|
18
25
|
return;
|
|
19
26
|
}
|
|
20
27
|
/** @type {?} */
|
|
21
|
-
var control = field.formControl;
|
|
22
|
-
/** @type {?} */
|
|
23
28
|
var opts = { emitEvent: emitEvent };
|
|
24
29
|
if (form instanceof FormArray) {
|
|
25
30
|
/** @type {?} */
|
|
@@ -206,6 +211,8 @@ function updateControl(form, opts, action) {
|
|
|
206
211
|
*/
|
|
207
212
|
export function clearControl(form) {
|
|
208
213
|
form['_fields'] && delete form['_fields'];
|
|
214
|
+
form.setValidators(null);
|
|
215
|
+
form.setAsyncValidators(null);
|
|
209
216
|
if (form instanceof FormGroup || form instanceof FormArray) {
|
|
210
217
|
Object.keys(form.controls)
|
|
211
218
|
.forEach((/**
|
|
@@ -215,4 +222,4 @@ export function clearControl(form) {
|
|
|
215
222
|
function (k) { return clearControl(form.controls[k]); }));
|
|
216
223
|
}
|
|
217
224
|
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2V4dGVuc2lvbnMvZmllbGQtZm9ybS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUkzRyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBd0IsRUFBRSxTQUFpQjtJQUFqQiwwQkFBQSxFQUFBLGlCQUFpQjs7UUFDckUsSUFBSSxHQUFHLG1CQUFBLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF5QjtJQUM5RCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsT0FBTztLQUNSOztRQUVLLE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVzs7UUFDM0IsSUFBSSxHQUFHLEVBQUUsU0FBUyxXQUFBLEVBQUU7SUFDMUIsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFOztZQUN2QixLQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEtBQUssT0FBTyxFQUFiLENBQWEsRUFBQztRQUN2RCxJQUFJLEtBQUcsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNkLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSTs7O1lBQUUsY0FBTSxPQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBRyxDQUFDLEVBQWxCLENBQWtCLEVBQUMsQ0FBQztTQUNyRDtLQUNGO1NBQU0sSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFOztZQUM5QixLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQzs7WUFDekIsS0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRTtZQUMvQixhQUFhLENBQUMsSUFBSSxFQUFFLElBQUk7OztZQUFFLGNBQU0sT0FBQSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUcsQ0FBQyxFQUF2QixDQUF1QixFQUFDLENBQUM7U0FDMUQ7S0FDRjtJQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXdCO0lBQ2xELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtRQUNyQixPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUM7S0FDMUI7SUFFRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQztLQUNiOztRQUVLLElBQUksR0FBRyxtQkFBQSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBYTtJQUVsRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ25ELENBQUM7Ozs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQTZCLEVBQUUsT0FBYSxFQUFFLFNBQWlCO0lBQWpCLDBCQUFBLEVBQUEsaUJBQWlCO0lBQzdGLE9BQU8sR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3ZCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDMUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDNUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLE9BQU8sRUFBRTtRQUNqQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztRQUNsRSxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVOzs7O1FBQUUsVUFBQyxFQUE2QjtnQkFBM0IsNEJBQVcsRUFBRSw4QkFBWTtZQUMxRSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDekU7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksT0FBTyxDQUFDLHdCQUF3QixFQUFFO1lBQ3BDLE9BQU8sQ0FBQyx3QkFBd0I7Ozs7WUFDOUIsVUFBQyxLQUFjO2dCQUNiLEtBQUssQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM5QyxvQkFBb0I7Z0JBQ3BCLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxFQUNGLENBQUM7U0FDSDtLQUNGOztRQUVHLE1BQU0sR0FBRyxtQkFBQSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBYTtJQUNsRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUN6QixPQUFPO0tBQ1I7O1FBRUssS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7O1FBQ3pCLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLElBQ0UsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztXQUM1RCxPQUFPLENBQUMsS0FBSyxLQUFLLEtBQUs7V0FDdkIsT0FBTyxZQUFZLFdBQVcsRUFDakM7UUFDQSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzNCOzRCQUVRLENBQUM7O1lBQ0YsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLGFBQWEsQ0FDWCxNQUFNLEVBQ04sRUFBRSxTQUFTLFdBQUEsRUFBRTs7O1lBQ2IsY0FBTSxPQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQTFDLENBQTBDLEVBQ2pELENBQUM7U0FDSDtRQUVELE1BQU0sR0FBRyxtQkFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQSxDQUFDOztJQVYxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFBbEMsQ0FBQztLQVdUOztRQUVLLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFO1FBQ2pELGFBQWEsQ0FDWCxNQUFNLEVBQ04sRUFBRSxTQUFTLFdBQUEsRUFBRTs7O1FBQ2IsY0FBTSxPQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUEvQixDQUErQixFQUN0QyxDQUFDO0tBQ0g7QUFDSCxDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0I7O1FBQ3pDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTTtJQUN2QixDQUFDLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3ZCLENBQUMsbUJBQUEsQ0FBQyxDQUFDLGFBQWEsRUFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDMUQ7QUFDSCxDQUFDOzs7Ozs7O0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBeUIsRUFBRSxJQUE0QixFQUFFLE1BQWdCO0lBQzlGOztPQUVHO0lBQ0gsSUFBSSxJQUFJLFlBQVksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7UUFDN0QsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUMsbUJBQUEsSUFBSSxFQUFPLENBQUMsQ0FBQyxhQUFhOzs7O1FBQUcsVUFBQyxFQUFZO1lBQ3pDLE1BQU07aUJBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7aUJBQ25CLE9BQU87Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQTNDLENBQTJDLEVBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUEsQ0FBQztLQUNIOzs7OztRQUtLLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JFLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQjs7OztRQUFHLFVBQUMsSUFBSTtZQUNqQyxzQkFBc0Isc0JBQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLElBQUUsU0FBUyxFQUFFLEtBQUssSUFBRyxDQUFDO1FBQ2hFLENBQUMsQ0FBQSxDQUFDO0tBQ0g7SUFFRCxNQUFNLEVBQUUsQ0FBQztJQUVULElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0tBQ3REO0FBQ0gsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQXFCO0lBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksWUFBWSxTQUFTLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRTtRQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDdkIsT0FBTzs7OztRQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBOUIsQ0FBOEIsRUFBQyxDQUFDO0tBQ25EO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IGdldEtleVBhdGgsIGdldEZpZWxkVmFsdWUsIGlzTnVsbE9yVW5kZWZpbmVkLCBkZWZpbmVIaWRkZW5Qcm9wLCB3cmFwUHJvcGVydHkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9mb3JtbHkuZmllbGQuY29uZmlnJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlckNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBlbWl0RXZlbnQgPSBmYWxzZSkge1xuICBjb25zdCBmb3JtID0gZmllbGQuZm9ybUNvbnRyb2wucGFyZW50IGFzIEZvcm1BcnJheSB8IEZvcm1Hcm91cDtcbiAgaWYgKCFmb3JtKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29udHJvbCA9IGZpZWxkLmZvcm1Db250cm9sO1xuICBjb25zdCBvcHRzID0geyBlbWl0RXZlbnQgfTtcbiAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICBjb25zdCBrZXkgPSBmb3JtLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IGMgPT09IGNvbnRyb2wpO1xuICAgIGlmIChrZXkgIT09IC0xKSB7XG4gICAgICB1cGRhdGVDb250cm9sKGZvcm0sIG9wdHMsICgpID0+IGZvcm0ucmVtb3ZlQXQoa2V5KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICBjb25zdCBwYXRocyA9IGdldEtleVBhdGgoZmllbGQpO1xuICAgIGNvbnN0IGtleSA9IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChmb3JtLmdldChba2V5XSkgPT09IGNvbnRyb2wpIHtcbiAgICAgIHVwZGF0ZUNvbnRyb2woZm9ybSwgb3B0cywgKCkgPT4gZm9ybS5yZW1vdmVDb250cm9sKGtleSkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2wuc2V0UGFyZW50KG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKTogQWJzdHJhY3RDb250cm9sIHtcbiAgaWYgKGZpZWxkLmZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIGZpZWxkLmZvcm1Db250cm9sO1xuICB9XG5cbiAgaWYgKGZpZWxkWydzaGFyZUZvcm1Db250cm9sJ10gPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb3JtID0gZmllbGQucGFyZW50LmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cDtcblxuICByZXR1cm4gZm9ybSA/IGZvcm0uZ2V0KGdldEtleVBhdGgoZmllbGQpKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUsIGNvbnRyb2w/OiBhbnksIGVtaXRFdmVudCA9IGZhbHNlKSB7XG4gIGNvbnRyb2wgPSBjb250cm9sIHx8IGZpZWxkLmZvcm1Db250cm9sO1xuICBpZiAoIWNvbnRyb2xbJ19maWVsZHMnXSkge1xuICAgIGRlZmluZUhpZGRlblByb3AoY29udHJvbCwgJ19maWVsZHMnLCBbXSk7XG4gIH1cbiAgaWYgKGNvbnRyb2xbJ19maWVsZHMnXS5pbmRleE9mKGZpZWxkKSA9PT0gLTEpIHtcbiAgICBjb250cm9sWydfZmllbGRzJ10ucHVzaChmaWVsZCk7XG4gIH1cblxuICBpZiAoIWZpZWxkLmZvcm1Db250cm9sICYmIGNvbnRyb2wpIHtcbiAgICBkZWZpbmVIaWRkZW5Qcm9wKGZpZWxkLCAnZm9ybUNvbnRyb2wnLCBjb250cm9sKTtcbiAgICBjb250cm9sLnNldFZhbGlkYXRvcnMobnVsbCk7XG4gICAgY29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMobnVsbCk7XG5cbiAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQgPSAhIWZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZDtcbiAgICB3cmFwUHJvcGVydHkoZmllbGQudGVtcGxhdGVPcHRpb25zLCAnZGlzYWJsZWQnLCAoeyBmaXJzdENoYW5nZSwgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgIGlmICghZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgY3VycmVudFZhbHVlID8gZmllbGQuZm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogZmllbGQuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKSB7XG4gICAgICBjb250cm9sLnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShcbiAgICAgICAgKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zWydfX18kZGlzYWJsZWQnXSA9IHZhbHVlO1xuICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIGluIFY2XG4gICAgICAgICAgZmllbGQub3B0aW9ucyAmJiBmaWVsZC5vcHRpb25zLl9tYXJrRm9yQ2hlY2soZmllbGQpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgcGFyZW50ID0gZmllbGQucGFyZW50LmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cDtcbiAgaWYgKCFwYXJlbnQgfHwgIWZpZWxkLmtleSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGhzID0gZ2V0S2V5UGF0aChmaWVsZCk7XG4gIGNvbnN0IHZhbHVlID0gZ2V0RmllbGRWYWx1ZShmaWVsZCk7XG4gIGlmIChcbiAgICAhKGlzTnVsbE9yVW5kZWZpbmVkKGNvbnRyb2wudmFsdWUpICYmIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSlcbiAgICAmJiBjb250cm9sLnZhbHVlICE9PSB2YWx1ZVxuICAgICYmIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbFxuICApIHtcbiAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAocGF0aHMubGVuZ3RoIC0gMSk7IGkrKykge1xuICAgIGNvbnN0IHBhdGggPSBwYXRoc1tpXTtcbiAgICBpZiAoIXBhcmVudC5nZXQoW3BhdGhdKSkge1xuICAgICAgdXBkYXRlQ29udHJvbChcbiAgICAgICAgcGFyZW50LFxuICAgICAgICB7IGVtaXRFdmVudCB9LFxuICAgICAgICAoKSA9PiBwYXJlbnQuc2V0Q29udHJvbChwYXRoLCBuZXcgRm9ybUdyb3VwKHt9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHBhcmVudCA9IDxGb3JtR3JvdXA+IHBhcmVudC5nZXQoW3BhdGhdKTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdO1xuICBpZiAoIWZpZWxkLl9oaWRlICYmIHBhcmVudC5nZXQoW2tleV0pICE9PSBjb250cm9sKSB7XG4gICAgdXBkYXRlQ29udHJvbChcbiAgICAgIHBhcmVudCxcbiAgICAgIHsgZW1pdEV2ZW50IH0sXG4gICAgICAoKSA9PiBwYXJlbnQuc2V0Q29udHJvbChrZXksIGNvbnRyb2wpLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZhbGlkaXR5KGM6IEFic3RyYWN0Q29udHJvbCkge1xuICBjb25zdCBzdGF0dXMgPSBjLnN0YXR1cztcbiAgYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgaWYgKHN0YXR1cyAhPT0gYy5zdGF0dXMpIHtcbiAgICAoYy5zdGF0dXNDaGFuZ2VzIGFzIEV2ZW50RW1pdHRlcjxzdHJpbmc+KS5lbWl0KGMuc3RhdHVzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDb250cm9sKGZvcm06IEZvcm1Hcm91cHxGb3JtQXJyYXksIG9wdHM6IHsgZW1pdEV2ZW50OiBib29sZWFuIH0sIGFjdGlvbjogRnVuY3Rpb24pIHtcbiAgLyoqXG4gICAqICB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yNzY3OVxuICAgKi9cbiAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiYgIWZvcm1bJ19fcGF0Y2hGb3JFYWNoQ2hpbGQnXSkge1xuICAgIGRlZmluZUhpZGRlblByb3AoZm9ybSwgJ19fcGF0Y2hGb3JFYWNoQ2hpbGQnLCB0cnVlKTtcbiAgICAoZm9ybSBhcyBhbnkpLl9mb3JFYWNoQ2hpbGQgPSAoY2I6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBPYmplY3RcbiAgICAgICAgLmtleXMoZm9ybS5jb250cm9scylcbiAgICAgICAgLmZvckVhY2goayA9PiBmb3JtLmNvbnRyb2xzW2tdICYmIGNiKGZvcm0uY29udHJvbHNba10sIGspKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIwNDM5XG4gICAqL1xuICBjb25zdCB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5LmJpbmQoZm9ybSk7XG4gIGlmIChvcHRzLmVtaXRFdmVudCA9PT0gZmFsc2UpIHtcbiAgICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAob3B0cykgPT4ge1xuICAgICAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IC4uLihvcHRzIHx8IHt9KSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9O1xuICB9XG5cbiAgYWN0aW9uKCk7XG5cbiAgaWYgKG9wdHMuZW1pdEV2ZW50ID09PSBmYWxzZSkge1xuICAgIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29udHJvbChmb3JtOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgZm9ybVsnX2ZpZWxkcyddICYmIGRlbGV0ZSBmb3JtWydfZmllbGRzJ107XG4gIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKVxuICAgICAgLmZvckVhY2goKGspID0+IGNsZWFyQ29udHJvbChmb3JtLmNvbnRyb2xzW2tdKSk7XG4gIH1cbn1cbiJdfQ==
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LWZvcm1seS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2V4dGVuc2lvbnMvZmllbGQtZm9ybS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUkzRyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBd0IsRUFBRSxTQUFpQjtJQUFqQiwwQkFBQSxFQUFBLGlCQUFpQjs7UUFDckUsT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXOztRQUMzQixVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDMUM7O1FBRUssSUFBSSxHQUFHLG1CQUFBLE9BQU8sQ0FBQyxNQUFNLEVBQXlCO0lBQ3BELElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPO0tBQ1I7O1FBRUssSUFBSSxHQUFHLEVBQUUsU0FBUyxXQUFBLEVBQUU7SUFDMUIsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFOztZQUN2QixLQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEtBQUssT0FBTyxFQUFiLENBQWEsRUFBQztRQUN2RCxJQUFJLEtBQUcsS0FB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RUFBOUIsQ0FBOEIsRUFBQyxDQUFDO0tBQ25EO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IGdldEtleVBhdGgsIGdldEZpZWxkVmFsdWUsIGlzTnVsbE9yVW5kZWZpbmVkLCBkZWZpbmVIaWRkZW5Qcm9wLCB3cmFwUHJvcGVydHkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9mb3JtbHkuZmllbGQuY29uZmlnJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5yZWdpc3RlckNvbnRyb2woZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnLCBlbWl0RXZlbnQgPSBmYWxzZSkge1xuICBjb25zdCBjb250cm9sID0gZmllbGQuZm9ybUNvbnRyb2w7XG4gIGNvbnN0IGZpZWxkSW5kZXggPSBjb250cm9sWydfZmllbGRzJ10gPyBjb250cm9sWydfZmllbGRzJ10uaW5kZXhPZihmaWVsZCkgOiAtMTtcbiAgaWYgKGZpZWxkSW5kZXggIT09IC0xKSB7XG4gICAgY29udHJvbFsnX2ZpZWxkcyddLnNwbGljZShmaWVsZEluZGV4LCAxKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm0gPSBjb250cm9sLnBhcmVudCBhcyBGb3JtQXJyYXkgfCBGb3JtR3JvdXA7XG4gIGlmICghZm9ybSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSB7IGVtaXRFdmVudCB9O1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIGNvbnN0IGtleSA9IGZvcm0uY29udHJvbHMuZmluZEluZGV4KGMgPT4gYyA9PT0gY29udHJvbCk7XG4gICAgaWYgKGtleSAhPT0gLTEpIHtcbiAgICAgIHVwZGF0ZUNvbnRyb2woZm9ybSwgb3B0cywgKCkgPT4gZm9ybS5yZW1vdmVBdChrZXkpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHBhdGhzID0gZ2V0S2V5UGF0aChmaWVsZCk7XG4gICAgY29uc3Qga2V5ID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG4gICAgaWYgKGZvcm0uZ2V0KFtrZXldKSA9PT0gY29udHJvbCkge1xuICAgICAgdXBkYXRlQ29udHJvbChmb3JtLCBvcHRzLCAoKSA9PiBmb3JtLnJlbW92ZUNvbnRyb2woa2V5KSk7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbC5zZXRQYXJlbnQobnVsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBpZiAoZmllbGQuZm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gZmllbGQuZm9ybUNvbnRyb2w7XG4gIH1cblxuICBpZiAoZmllbGRbJ3NoYXJlRm9ybUNvbnRyb2wnXSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGZvcm0gPSBmaWVsZC5wYXJlbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuXG4gIHJldHVybiBmb3JtID8gZm9ybS5nZXQoZ2V0S2V5UGF0aChmaWVsZCkpIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29udHJvbChmaWVsZDogRm9ybWx5RmllbGRDb25maWdDYWNoZSwgY29udHJvbD86IGFueSwgZW1pdEV2ZW50ID0gZmFsc2UpIHtcbiAgY29udHJvbCA9IGNvbnRyb2wgfHwgZmllbGQuZm9ybUNvbnRyb2w7XG4gIGlmICghY29udHJvbFsnX2ZpZWxkcyddKSB7XG4gICAgZGVmaW5lSGlkZGVuUHJvcChjb250cm9sLCAnX2ZpZWxkcycsIFtdKTtcbiAgfVxuICBpZiAoY29udHJvbFsnX2ZpZWxkcyddLmluZGV4T2YoZmllbGQpID09PSAtMSkge1xuICAgIGNvbnRyb2xbJ19maWVsZHMnXS5wdXNoKGZpZWxkKTtcbiAgfVxuXG4gIGlmICghZmllbGQuZm9ybUNvbnRyb2wgJiYgY29udHJvbCkge1xuICAgIGRlZmluZUhpZGRlblByb3AoZmllbGQsICdmb3JtQ29udHJvbCcsIGNvbnRyb2wpO1xuICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICBjb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhudWxsKTtcblxuICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCA9ICEhZmllbGQudGVtcGxhdGVPcHRpb25zLmRpc2FibGVkO1xuICAgIHdyYXBQcm9wZXJ0eShmaWVsZC50ZW1wbGF0ZU9wdGlvbnMsICdkaXNhYmxlZCcsICh7IGZpcnN0Q2hhbmdlLCBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgaWYgKCFmaXJzdENoYW5nZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPyBmaWVsZC5mb3JtQ29udHJvbC5kaXNhYmxlKCkgOiBmaWVsZC5mb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY29udHJvbC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UpIHtcbiAgICAgIGNvbnRyb2wucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKFxuICAgICAgICAodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnNbJ19fXyRkaXNhYmxlZCddID0gdmFsdWU7XG4gICAgICAgICAgLy8gVE9ETyByZW1vdmUgaW4gVjZcbiAgICAgICAgICBmaWVsZC5vcHRpb25zICYmIGZpZWxkLm9wdGlvbnMuX21hcmtGb3JDaGVjayhmaWVsZCk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwYXJlbnQgPSBmaWVsZC5wYXJlbnQuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICBpZiAoIXBhcmVudCB8fCAhZmllbGQua2V5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aHMgPSBnZXRLZXlQYXRoKGZpZWxkKTtcbiAgY29uc3QgdmFsdWUgPSBnZXRGaWVsZFZhbHVlKGZpZWxkKTtcbiAgaWYgKFxuICAgICEoaXNOdWxsT3JVbmRlZmluZWQoY29udHJvbC52YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKVxuICAgICYmIGNvbnRyb2wudmFsdWUgIT09IHZhbHVlXG4gICAgJiYgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sXG4gICkge1xuICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IChwYXRocy5sZW5ndGggLSAxKTsgaSsrKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGlmICghcGFyZW50LmdldChbcGF0aF0pKSB7XG4gICAgICB1cGRhdGVDb250cm9sKFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIHsgZW1pdEV2ZW50IH0sXG4gICAgICAgICgpID0+IHBhcmVudC5zZXRDb250cm9sKHBhdGgsIG5ldyBGb3JtR3JvdXAoe30pKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcGFyZW50ID0gPEZvcm1Hcm91cD4gcGFyZW50LmdldChbcGF0aF0pO1xuICB9XG5cbiAgY29uc3Qga2V5ID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG4gIGlmICghZmllbGQuX2hpZGUgJiYgcGFyZW50LmdldChba2V5XSkgIT09IGNvbnRyb2wpIHtcbiAgICB1cGRhdGVDb250cm9sKFxuICAgICAgcGFyZW50LFxuICAgICAgeyBlbWl0RXZlbnQgfSxcbiAgICAgICgpID0+IHBhcmVudC5zZXRDb250cm9sKGtleSwgY29udHJvbCksXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsaWRpdHkoYzogQWJzdHJhY3RDb250cm9sKSB7XG4gIGNvbnN0IHN0YXR1cyA9IGMuc3RhdHVzO1xuICBjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICBpZiAoc3RhdHVzICE9PSBjLnN0YXR1cykge1xuICAgIChjLnN0YXR1c0NoYW5nZXMgYXMgRXZlbnRFbWl0dGVyPHN0cmluZz4pLmVtaXQoYy5zdGF0dXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbnRyb2woZm9ybTogRm9ybUdyb3VwfEZvcm1BcnJheSwgb3B0czogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSwgYWN0aW9uOiBGdW5jdGlvbikge1xuICAvKipcbiAgICogIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzI3Njc5XG4gICAqL1xuICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCAmJiAhZm9ybVsnX19wYXRjaEZvckVhY2hDaGlsZCddKSB7XG4gICAgZGVmaW5lSGlkZGVuUHJvcChmb3JtLCAnX19wYXRjaEZvckVhY2hDaGlsZCcsIHRydWUpO1xuICAgIChmb3JtIGFzIGFueSkuX2ZvckVhY2hDaGlsZCA9IChjYjogRnVuY3Rpb24pID0+IHtcbiAgICAgIE9iamVjdFxuICAgICAgICAua2V5cyhmb3JtLmNvbnRyb2xzKVxuICAgICAgICAuZm9yRWFjaChrID0+IGZvcm0uY29udHJvbHNba10gJiYgY2IoZm9ybS5jb250cm9sc1trXSwgaykpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogd29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA0MzlcbiAgICovXG4gIGNvbnN0IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkuYmluZChmb3JtKTtcbiAgaWYgKG9wdHMuZW1pdEV2ZW50ID09PSBmYWxzZSkge1xuICAgIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IChvcHRzKSA9PiB7XG4gICAgICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgLi4uKG9wdHMgfHwge30pLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH07XG4gIH1cblxuICBhY3Rpb24oKTtcblxuICBpZiAob3B0cy5lbWl0RXZlbnQgPT09IGZhbHNlKSB7XG4gICAgZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJDb250cm9sKGZvcm06IEFic3RyYWN0Q29udHJvbCkge1xuICBmb3JtWydfZmllbGRzJ10gJiYgZGVsZXRlIGZvcm1bJ19maWVsZHMnXTtcbiAgZm9ybS5zZXRWYWxpZGF0b3JzKG51bGwpO1xuICBmb3JtLnNldEFzeW5jVmFsaWRhdG9ycyhudWxsKTtcbiAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgoaykgPT4gY2xlYXJDb250cm9sKGZvcm0uY29udHJvbHNba10pKTtcbiAgfVxufVxuIl19
|