@seniorsistemas/angular-components 17.12.0 → 17.12.1

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.
@@ -356,6 +356,9 @@ var CustomFieldsComponent = /** @class */ (function () {
356
356
  scale: 0,
357
357
  };
358
358
  break;
359
+ case CustomFieldType.Any:
360
+ field.type = FieldType.String;
361
+ break;
359
362
  }
360
363
  return new FormField(__assign({ name: field.id, label: field.customization.label, tooltip: field.customization.tooltip, infoSign: field.customization.infoSign, type: field.type, mask: field.customization.mask, required: function () { return field.customization.mandatory; }, calendarOptions: localeOptions.calendar, currencyOptions: localeOptions.number }, parameters));
361
364
  };
@@ -640,4 +643,4 @@ function isUploading(file) {
640
643
  function errorOnUpload(file) {
641
644
  return function () { return (file.error ? { uploadError: true } : null); };
642
645
  }
643
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jdXN0b20tZmllbGRzL2N1c3RvbS1maWVsZHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxFQUlMLFFBQVEsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQStCLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLHlFQUF5RTtBQWtCakc7SUFtREksK0JBQ3FCLG1CQUF3QyxFQUN4QyxhQUE0QixFQUM1QixTQUF1QixFQUN2QixnQkFBa0MsRUFDL0IsZ0JBQWtDO1FBSnJDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE3Q25ELHNCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQU0vRix5QkFBb0IsR0FBRyxnREFBZ0QsQ0FBQztRQUd4RSx5QkFBb0IsR0FBRyxvREFBb0QsQ0FBQztRQUc1RSwwQkFBcUIsR0FBRyxvREFBb0QsQ0FBQztRQVM3RSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFRcEMsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFFeEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUlkLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFXakQsQ0FBQzs4QkF6REsscUJBQXFCO0lBMkQ5QixzQkFBVyxrREFBZTthQUExQjs7WUFDSSxPQUFPLENBQUMsUUFBQyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxNQUFNLENBQUEsQ0FBQztRQUNqQyxDQUFDOzs7T0FBQTtJQUVELHNCQUFXLDZDQUFVO2FBQXJCO1lBQ0ksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBb0IsQ0FBQztRQUN0RCxDQUFDOzs7T0FBQTtJQUVELHNCQUFXLGdEQUFhO2FBQXhCO1lBQ0ksT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQWdCLENBQUM7UUFDeEQsQ0FBQzs7O09BQUE7SUFFTSx3Q0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sK0NBQWUsR0FBdEI7UUFBQSxpQkFJQztRQUhHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLG1DQUFNLEtBQUksQ0FBQyxRQUFRLCtDQUFiLEtBQUksRUFBWSxLQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLDJDQUFXLEdBQWxCLFVBQW1CLE9BQXNCO1FBQ3JDLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNsRTtJQUNMLENBQUM7SUFFTSwyQ0FBVyxHQUFsQjtRQUNJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0RBQWdCLEdBQXZCLFVBQXdCLEVBQVk7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLGlEQUFpQixHQUF4QixVQUF5QixFQUFZO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSwwQ0FBVSxHQUFqQixVQUFrQixLQUFVO1FBQ3hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztTQUM5QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVNLGdEQUFnQixHQUF2QixVQUF3QixVQUFtQjtRQUN2QyxJQUFJLFVBQVU7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSwrQ0FBZSxHQUF0QjtRQUNJLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUNoRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVNLHdDQUFRLEdBQWY7UUFBQSxpQkFPQztRQU5HLElBQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSztZQUN2QyxJQUFBLGlEQUFxQixDQUErQjtZQUM1RCxJQUFJLGFBQWE7Z0JBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTSwyQ0FBVyxHQUFsQjtRQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLHFEQUFxQixHQUE3QixVQUE4QixRQUFpQjs7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTztTQUNWOztZQUVELEtBQTBCLElBQUEsS0FBQSxTQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtnQkFBeEQsSUFBTSxXQUFXLFdBQUE7Z0JBQ2xCLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ25HOzs7Ozs7Ozs7SUFDTCxDQUFDO0lBRU8sK0NBQWUsR0FBdkI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sMkNBQVcsR0FBbkI7UUFBQSxpQkE2RUM7UUE1RUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkUsUUFBUSxDQUFDLFdBQVcsQ0FBQzthQUNoQixJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsUUFBUSxDQUFDOztZQUNMLEtBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsTUFBQSxLQUFJLENBQUMsYUFBYSwwQ0FBRSxjQUFjLEdBQUc7WUFFckMsSUFBSSxLQUFJLENBQUMsTUFBTTtnQkFBRSxLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxVQUFDLFFBQWU7WUFDakIsSUFBQSx3QkFBZ0QsRUFBL0MsNEJBQW9CLEVBQUUscUJBQXlCLENBQUM7WUFDdkQsSUFBTSxRQUFRLEdBQVEsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDNUQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN2RCxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFDN0QsSUFBQSxpQ0FBaUQsRUFBL0Msa0JBQU0sRUFBRSxrQkFBdUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXBCLE1BQU07aUJBQ0QsTUFBTSxDQUFDLFVBQUMsS0FBVSxJQUFLLE9BQUEsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUF2RSxDQUF1RSxDQUFDO2lCQUMvRixPQUFPLENBQUMsVUFBQyxLQUFVOztnQkFDaEIsSUFBTSxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBRTFELElBQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBRTdCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsSUFBSSxJQUFJLEtBQUksQ0FBQyxLQUFLLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUMvRSxLQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRW5DLElBQUEscURBQWUsQ0FBeUI7Z0JBRWhELElBQU0sU0FBUyxHQUFHO29CQUNkLGVBQWUsQ0FBQyxPQUFPO29CQUN2QixlQUFlLENBQUMsS0FBSztvQkFDckIsZUFBZSxDQUFDLElBQUk7b0JBQ3BCLGVBQWUsQ0FBQyxRQUFRO29CQUN4QixlQUFlLENBQUMsYUFBYTtvQkFDN0IsZUFBZSxDQUFDLElBQUk7aUJBQ3ZCLENBQUM7Z0JBRUYsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2dCQUM1RyxJQUFJLFNBQVMsS0FBSyxlQUFlLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7b0JBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBRTlHLFVBQUksU0FBUyxDQUFDLFFBQVEsK0NBQWxCLFNBQVMsR0FBZTtvQkFDeEIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3hDO2dCQUVELElBQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUMzQixFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUM5RSxVQUFVLENBQ2IsQ0FBQztnQkFFRixLQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVuRCxLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUVQLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxLQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakUsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sb0RBQW9CLEdBQTVCLFVBQTZCLE1BQVc7UUFDcEMsSUFBTSxZQUFZLGdCQUFRLE1BQU0sQ0FBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSztZQUNkLElBQUEsaUJBQUksRUFBRSxpQkFBSSxDQUFXO1lBQzdCLElBQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFckM7Ozs7ZUFJRztZQUNILElBQUksSUFBSSxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQzVCLElBQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztnQkFDM0MsSUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO2dCQUN6RCxJQUFJLFFBQVEsRUFBRTtvQkFDVixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDSCxtRUFBbUU7b0JBQ25FLElBQUksUUFBUSxFQUFFO3dCQUNWLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztxQkFDeEQ7eUJBQU07d0JBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDOUI7aUJBQ0o7YUFDSjtZQUVELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFFbkIsUUFBUSxJQUFJLEVBQUU7Z0JBQ1YsS0FBSyxTQUFTLENBQUMsSUFBSTtvQkFDZixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QyxNQUFNO2dCQUNWLEtBQUssU0FBUyxDQUFDLFFBQVE7b0JBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1YsS0FBSyxTQUFTLENBQUMsYUFBYTtvQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekUsTUFBTTtnQkFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO29CQUNmLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN4RCxNQUFNO2FBQ2I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssbUVBQW1DLEdBQTNDO1FBQUEsaUJBUUM7UUFQRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTTtpQkFDTixNQUFNLENBQUMsVUFBQyxLQUFnQixJQUFLLE9BQUEsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUE3QixDQUE2QixDQUFDO2lCQUMzRCxPQUFPLENBQUMsVUFBQyxLQUFLO2dCQUNYLElBQUksS0FBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7b0JBQUUsS0FBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7SUFDTCxDQUFDO0lBRU8saURBQWlCLEdBQXpCO1FBQUEsaUJBb0NDO1FBbkNHLElBQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUs7WUFDZCxJQUFBLGlCQUFJLEVBQUUsaUJBQUksRUFBRSxpQkFBSSxFQUFFLG1CQUFLLENBQVc7WUFDMUMsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBRTNDLElBQUksS0FBSyxFQUFFO2dCQUNQLFFBQVEsSUFBSSxFQUFFO29CQUNWLEtBQUssU0FBUyxDQUFDLE1BQU07d0JBQ2pCLElBQUksSUFBSTs0QkFBRSxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUMzRSxNQUFNO29CQUNWLEtBQUssU0FBUyxDQUFDLElBQUk7d0JBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzNDLE1BQU07b0JBQ1YsS0FBSyxTQUFTLENBQUMsUUFBUTt3QkFDbkIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDL0IsTUFBTTtvQkFDVixLQUFLLFNBQVMsQ0FBQyxhQUFhO3dCQUN4QixLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNO29CQUNWLEtBQUssU0FBUyxDQUFDLElBQUk7d0JBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pDLE1BQU07aUJBQ2I7YUFDSjtZQUVELElBQUksS0FBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDbkQ7aUJBQU07Z0JBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUM5QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RHLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxrREFBa0IsR0FBMUIsVUFBMkIsSUFBZTtRQUN0QyxJQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sNENBQVksR0FBcEIsVUFBcUIsS0FBVSxFQUFFLGFBQTRCOztRQUN6RCxJQUFJLFVBQVUsQ0FBQztRQUVmLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUNyQixVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RDLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxPQUFPO2dCQUN4QixVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pDLE1BQU07WUFDVixLQUFLLGFBQWEsQ0FBQztZQUNuQixLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUNyQixLQUFLLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxLQUFLO2dCQUN0QixVQUFVLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNO29CQUN0Qix5QkFBeUIsRUFBRSxvQkFBb0I7b0JBQy9DLGdCQUFnQixFQUFFLFdBQVc7b0JBQzdCLFNBQVMsRUFBRSxFQUFFO29CQUNiLEtBQUssRUFBRSxDQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDUCxLQUFLLGNBQUUsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLE1BQU0sMENBQUUsY0FBYyxtQ0FBSSxJQUFJO3FCQUN2RDtpQkFDSixDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxNQUFNO2dCQUN2QixVQUFVLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNO29CQUN0Qix5QkFBeUIsRUFBRSxvQkFBb0I7b0JBQy9DLGdCQUFnQixFQUFFLFdBQVc7b0JBQzdCLFNBQVMsRUFBRSxFQUFFO29CQUNiLEtBQUssRUFBRSxDQUFDO2lCQUNYLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLE9BQU87Z0JBQ3hCLFVBQVUsR0FBRztvQkFDVCxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07b0JBQ3RCLHlCQUF5QixFQUFFLG9CQUFvQjtvQkFDL0MsZ0JBQWdCLEVBQUUsV0FBVztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLENBQUM7aUJBQ1gsQ0FBQztnQkFDRixNQUFNO1NBQ2I7UUFFRCxPQUFPLElBQUksU0FBUyxZQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQ2hDLE9BQU8sRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUM5QixRQUFRLEVBQUUsY0FBTSxPQUFBLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUE3QixDQUE2QixFQUM3QyxlQUFlLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxNQUFNLElBQ2xDLFVBQVUsRUFDZixDQUFDO0lBQ1AsQ0FBQztJQUVPLGlEQUFpQixHQUF6QixVQUEwQixLQUFVO1FBQ2hDLE9BQU87WUFDSCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7WUFDeEQsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFDLENBQU0sSUFBSyxPQUFBLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQWxDLENBQWtDLENBQUM7U0FDNUcsQ0FBQztJQUNOLENBQUM7SUFFTyxvREFBb0IsR0FBNUI7UUFDSSxPQUFPO1lBQ0gsWUFBWSxFQUFFO2dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO2dCQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztnQkFDNUMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7YUFDL0M7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVPLGlEQUFpQixHQUF6QjtRQUFBLGlCQTZCQztRQTVCRyxPQUFPO1lBQ0gsSUFBSSxFQUFFO2dCQUNGLEVBQUUsRUFBRSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFO2FBQ1Q7WUFDRCxNQUFNLEVBQUUsZ0NBQWdDO1lBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQ25ELGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUM7WUFDekQsUUFBUSxFQUFFLEtBQUs7WUFDZixZQUFZLEVBQUUsVUFBQyxLQUEyQixFQUFFLFNBQW9CO2dCQUM1RCxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELFlBQVksRUFBRSxVQUFDLEtBQXdCLEVBQUUsU0FBb0I7Z0JBQ3pELEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFDRCxjQUFjLEVBQUUsVUFBQyxLQUFhLEVBQUUsU0FBb0I7Z0JBQ2hELEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCxjQUFjLEVBQUUsVUFBQyxLQUE0QyxFQUFFLFNBQW9CO2dCQUMvRSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0Qsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM5QyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNLLHdEQUF3QixHQUFoQyxVQUFpQyxNQUFhO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQyxLQUFVLElBQUssT0FBQSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQW5DLENBQW1DLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQ3JCLG9CQUFvQixFQUNwQixJQUFJLFNBQVMsQ0FBQztnQkFDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDcEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3RDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUNwQyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDekQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQzVELENBQUM7YUFDTCxDQUFDLENBQ0wsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVPLHNEQUFzQixHQUE5QixVQUErQixLQUFnQjtRQUMzQyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEcsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQU0sSUFBSSxHQUFxQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxVQUFBLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFlLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sNENBQVksR0FBcEIsVUFBcUIsS0FBNEMsRUFBRSxLQUFnQjtRQUFuRixpQkEwQkM7UUF6QlcsSUFBQSxtQkFBSyxFQUFFLHFCQUFNLENBQVc7UUFDaEMsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQzthQUFNO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQjtpQkFDbkIsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2lCQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDbEMsU0FBUyxDQUFDLFVBQUMsSUFBdUM7Z0JBQ3ZDLElBQUEsd0JBQVEsRUFBRSxjQUFHLENBQVU7Z0JBQy9CLEtBQUksQ0FBQyxtQkFBbUI7cUJBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUM7cUJBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQ2xDLFNBQVMsQ0FBQyxVQUFDLElBQVM7b0JBQ2pCLElBQU0sT0FBTyxHQUFZLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ3BELE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDL0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMvQyxPQUFPLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7b0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDN0IsS0FBSyxDQUFDLEtBQUssWUFBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9CLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUFFTywwQ0FBVSxHQUFsQixVQUFtQixLQUEyQixFQUFFLFNBQWM7UUFBOUQsaUJBcUVDO1FBcEVXLElBQUEsbUJBQUssQ0FBVztRQUN4QixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQWlCLElBQUssT0FBQSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQTlCLENBQThCLENBQUMsQ0FBQztRQUV0RixnR0FBZ0c7UUFDaEcsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0NBRVgsQ0FBQztZQUNOLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixPQUFLLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsT0FBSyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUN4RCxPQUFLLG1CQUFtQjtxQkFDbkIsa0JBQWtCLENBQ2Y7b0JBQ0ksTUFBTSxFQUFFLE9BQUssTUFBTTtvQkFDbkIsT0FBTyxFQUFFLE9BQUssT0FBTztvQkFDckIsVUFBVSxFQUFFLE9BQUssTUFBTTtvQkFDdkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ3RCLEVBQ0QsT0FBSyxvQkFBb0IsQ0FDNUI7cUJBQ0EsSUFBSSxDQUNELFNBQVMsQ0FBQyxPQUFLLFlBQVksQ0FBQyxFQUM1QixVQUFVLENBQUMsVUFBQyxHQUFzQixJQUFLLE9BQUEsRUFBRSxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQXhDLENBQXdDLENBQUMsQ0FDbkY7cUJBQ0EsU0FBUyxDQUFDLFVBQUMsSUFBUztvQkFDVCxJQUFBLHdCQUFRLEVBQUUsc0JBQU8sRUFBRSx3QkFBUSxDQUFVO29CQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUksQ0FBQyxtQkFBbUI7eUJBQzdDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO3lCQUM5QixJQUFJLENBQ0QsU0FBUyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsRUFDNUIsVUFBVSxDQUFDLFVBQUMsR0FBc0IsSUFBSyxPQUFBLEVBQUUsQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUF4QyxDQUF3QyxDQUFDLEVBQ2hGLFFBQVEsQ0FBQzt3QkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLENBQ0w7eUJBQ0EsU0FBUyxDQUFDLFVBQUMsUUFBYTs7d0JBQ2IsSUFBQSxvQkFBSSxDQUFjO3dCQUMxQixJQUFJLENBQUMsS0FBSSxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0NBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7aUNBQ2xFLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0NBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0NBRWxGLElBQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxVQUFBLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDbkUsSUFBTSxRQUFRLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dDQUM1RSxLQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLHlCQUNuRCxRQUFRLGdCQUNWLEtBQUssQ0FBQyxJQUFJLElBQUcsS0FBSyxNQUN0QixDQUFDO2dDQUNGLEtBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUksSUFBSSxDQUFDLFFBQVEsU0FBSSxJQUFJLENBQUMsSUFBTSxDQUFDLENBQUM7Z0NBQ3pFLEtBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQ0FDakQsS0FBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0NBQ3hELEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDeEI7eUJBQ0o7NkJBQU0sSUFBSSxLQUFJLENBQUMsY0FBYyxJQUFJLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUTs0QkFBRSxLQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDbkcsQ0FBQyxDQUFDLENBQUM7b0JBQ1AsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQzthQUNWOzs7UUF6REwsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29CQUE1QixDQUFDO1NBMERUO0lBQ0wsQ0FBQztJQUVPLDBDQUFVLEdBQWxCLFVBQW1CLEtBQXdCLEVBQUUsU0FBYzs7UUFDL0MsSUFBQSxpQkFBSSxDQUFXO1FBQ3ZCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQUMsTUFBaUIsSUFBSyxPQUFBLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksRUFBOUIsQ0FBOEIsQ0FBQyxDQUFDO1FBQ3RGLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLDBFQUEwRTtZQUMxRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFHLElBQUksQ0FBQyxRQUFVLENBQUMsQ0FBQyxDQUFJLElBQUksQ0FBQyxRQUFRLFNBQUksSUFBSSxDQUFDLElBQU0sQ0FBQztZQUNwRixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEseUJBQ25ELFFBQVEsZ0JBQ1YsS0FBSyxDQUFDLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUUsS0FBSyxRQUN4RCxDQUFDO1NBQ0w7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8sNENBQVksR0FBcEIsVUFBcUIsS0FBYSxFQUFFLFNBQWM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBQyxNQUFpQixJQUFLLE9BQUEsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUE5QixDQUE4QixDQUFDLENBQUM7UUFDdEYsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BELEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8sZ0RBQWdCLEdBQXhCLFVBQXlCLEtBQWdCLEVBQUUsR0FBc0IsRUFBRSxLQUFhO1FBQ3BFLElBQUEsbUJBQUssQ0FBVztRQUN4QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUNqQyxLQUFLLENBQUMsS0FBSyxZQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hELE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGlDQUFpQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTyxpREFBaUIsR0FBekIsVUFBMEIsS0FBYTtRQUNuQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUksSUFBSSxDQUFDLE1BQU0sU0FBSSxJQUFJLENBQUMsT0FBTyxTQUFJLEtBQU8sQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTyw4REFBOEIsR0FBdEM7UUFBQSxpQkFJQztRQUhHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSztZQUN0QixLQUFLLENBQUMsbUJBQW1CLEdBQUcsS0FBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O2dCQS9qQnlDLG1CQUFtQjtnQkFDekIsYUFBYTtnQkFDakIsWUFBWTtnQkFDTCxnQkFBZ0I7Z0JBQ2IsZ0JBQWdCLHVCQUFyRCxRQUFROztJQXREYjtRQURDLEtBQUssRUFBRTt5REFDYztJQUd0QjtRQURDLEtBQUssRUFBRTswREFDZTtJQUd2QjtRQURDLEtBQUssRUFBRTt5REFDYztJQUd0QjtRQURDLEtBQUssRUFBRTtvRUFDOEY7SUFHdEc7UUFEQyxLQUFLLEVBQUU7K0RBQ2lCO0lBR3pCO1FBREMsS0FBSyxFQUFFO3VFQUN1RTtJQUcvRTtRQURDLEtBQUssRUFBRTt1RUFDMkU7SUFHbkY7UUFEQyxLQUFLLEVBQUU7d0VBQzRFO0lBR3BGO1FBREMsS0FBSyxFQUFFO3VFQUM0QjtJQUdwQztRQURDLEtBQUssRUFBRTtzRUFDMkI7SUFHbkM7UUFEQyxLQUFLLEVBQUU7cUVBQ21DO0lBRzNDO1FBREMsS0FBSyxFQUFFO3lEQUNnQztJQUd4QztRQURDLEtBQUssRUFBRTtnRUFDc0I7SUF0Q3JCLHFCQUFxQjtRQWhCakMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixzTUFBNkM7WUFDN0MsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSx1QkFBcUI7b0JBQ2xDLEtBQUssRUFBRSxJQUFJO2lCQUNkO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxhQUFhO29CQUN0QixXQUFXLEVBQUUsdUJBQXFCO29CQUNsQyxLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1NBQ0osQ0FBQztRQXlETyxXQUFBLFFBQVEsRUFBRSxDQUFBO09BeEROLHFCQUFxQixDQW9uQmpDO0lBQUQsNEJBQUM7Q0FBQSxBQXBuQkQsSUFvbkJDO1NBcG5CWSxxQkFBcUI7QUFzbkJsQyxTQUFTLFdBQVcsQ0FBQyxJQUFhO0lBQzlCLE9BQU8sY0FBTSxPQUFBLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFqRCxDQUFpRCxDQUFDO0FBQ25FLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFhO0lBQ2hDLE9BQU8sY0FBTSxPQUFBLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUEzQyxDQUEyQyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gICAgQ29udHJvbENvbnRhaW5lcixcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQXJyYXksXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvckZuLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gXCIuLi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9maWVsZHNcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybUZpZWxkLCBOdW1iZXJGaWVsZCB9IGZyb20gXCIuLi9keW5hbWljLWZvcm0vaW5kZXhcIjtcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi4vZmlsZS11cGxvYWQvaW5kZXhcIjtcbmltcG9ydCB7IExvY2FsZU9wdGlvbnMgfSBmcm9tIFwiLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRzU2VydmljZSB9IGZyb20gXCIuL2N1c3RvbS1maWVsZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRUeXBlIH0gZnJvbSBcIi4vbW9kZWxzL2N1c3RvbS1maWVsZC10eXBlXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87IC8vIEBIQUNLIE5lY2Vzc2FyeSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2xsdXAvcm9sbHVwL2lzc3Vlcy82NzBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1jdXN0b20tZmllbGRzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jdXN0b20tZmllbGRzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRvbWFpbjogc3RyaW5nO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlcnZpY2U6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbnRpdHk6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnZhbGlkRXJyb3JMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwicGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmludmFsaWRfdmFsdWVcIik7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW50aXR5T2JqZWN0OiBhbnk7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tRmllbGRzRW5kcG9pbnQgPSBcInBsYXRmb3JtL2ZpZWxkX2N1c3RvbWl6YXRpb24vcXVlcmllcy9nZXRFbnRpdHlcIjtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlTG9jYXRpb25FbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9hY3Rpb25zL3JlcXVlc3RVcGxvYWRcIjtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXF1ZXN0QWNjZXNzRW5kcG9pbnQgPSBcInBsYXRmb3JtL2ZpZWxkX2N1c3RvbWl6YXRpb24vYWN0aW9ucy9yZXF1ZXN0QWNjZXNzXCI7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5VGltZUluZm9TaWduOiBudW1iZXI7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZHkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZUZpZWxkczogYm9vbGVhbjtcbiAgICBcbiAgICBwdWJsaWMgZmllbGRzOiBGb3JtRmllbGRbXSA9IFtdO1xuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIHJlYWR5ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogYW55O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiBhbnk7XG4gICAgcHJpdmF0ZSB2YWx1ZTogYW55O1xuICAgIHByaXZhdGUgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHVwbG9hZENhbmNlbGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgaGFzQmxvYjogYm9vbGVhbjtcbiAgICBwcml2YXRlIGhhc1VwbG9hZGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tRmllbGRzU2VydmljZTogQ3VzdG9tRmllbGRzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXQgaGFzQ3VzdG9tRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpZWxkcz8ubGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50Rm9ybSgpOiBGb3JtR3JvdXAge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm0uZ2V0KFwiY3VzdG9tXCIpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybSgpO1xuICAgICAgICB0aGlzLmFkZERpc3BsYXlUaW1lSW5mb1NpZ25Ub0ZpZWxkcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5hYmxlT3JEaXNhYmxlRmllbGRzKHRoaXMuZGlzYWJsZUZpZWxkcyk7XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlPy4odGhpcy5wYXJzZUZpZWxkc1ZhbHVlcygpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzYWJsZUZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVPckRpc2FibGVGaWVsZHMoY2hhbmdlcy5kaXNhYmxlRmllbGRzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZXNGb3JGaWVsZHModmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbGVzSWZTZXRGb3JtVmFsdWVzQWZ0ZXJJbml0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlIHx8IHt9KTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICBlbHNlIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1c3RvbUZpZWxkcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlPYmplY3QgJiYgdGhpcy5lbnRpdHlPYmplY3QuZW50aXR5Xykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZW50aXR5T2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlLmdldEN1c3RvbUZpZWxkcyh0aGlzLmRvbWFpbiwgdGhpcy5zZXJ2aWNlLCB0aGlzLmVudGl0eSwgdGhpcy5jdXN0b21GaWVsZHNFbmRwb2ludCk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgICAgICBjb25zdCBlcnJvcnM6IGFueSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzOiBjb250cm9sRXJyb3JzIH0gPSB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xFcnJvcnMpIGVycm9yc1tmaWVsZF0gPSBjb250cm9sRXJyb3JzO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYW5GaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVPckRpc2FibGVGaWVsZHMoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGRpc2FibGVkID8gdGhpcy5mb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lKS5kaXNhYmxlKCkgOiB0aGlzLmZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb21haW4pIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgZG9tYWluIVwiKTtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgc2VydmljZSFcIik7XG4gICAgICAgIGlmICghdGhpcy5lbnRpdHkpIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgZW50aXR5IVwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFt0aGlzLmdldEN1c3RvbUZpZWxkcygpLCB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0KCldO1xuICAgICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVXN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2w/Lm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHkkKSB0aGlzLnJlYWR5JC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbY3VzdG9tRmllbGRzUmVzcG9uc2UsIGxvY2FsZU9wdGlvbnNdID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdHM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5TdHJpbmddID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW5dID0geyBkZWZhdWx0VmFsdWU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkludGVnZXJdID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRvdWJsZV0gPSB7IGRlZmF1bHRNYXNrOiBcIlwiIH07XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLk1vbmV5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuTG9jYWxEYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmxvYl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRW51bV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmluYXJ5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5BbnldID0ge307XG5cbiAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbUZpZWxkc1Jlc3BvbnNlIHx8ICFjdXN0b21GaWVsZHNSZXNwb25zZS5lbnRpdHlfKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhY3RpdmUsIGZpZWxkcyB9ID0gY3VzdG9tRmllbGRzUmVzcG9uc2UuZW50aXR5XztcbiAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmN1c3RvbWl6YWJsZSAmJiBmaWVsZC5jdXN0b21pemF0aW9uICYmIGZpZWxkLmN1c3RvbWl6YXRpb24uYWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5nZXRGb3JtRmllbGQoZmllbGQsIGxvY2FsZU9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkJsb2IgJiYgdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW2Zvcm1GaWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZm9ybUZpZWxkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uUmVnZXggfSA9IGZpZWxkLmN1c3RvbWl6YXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzSXNUeXBlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuQm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5UaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25SZWdleCAmJiAhYXNJc1R5cGVzLmluY2x1ZGVzKGZpZWxkVHlwZSkpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdGlvblJlZ2V4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRUeXBlID09PSBDdXN0b21GaWVsZFR5cGUuSW50ZWdlciAmJiAhZm9ybUZpZWxkLm1hc2spIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15cXC0/XFxkKiQvKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRmllbGQucmVxdWlyZWQ/LigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IGRlZmF1bHRzW2ZpZWxkVHlwZV0uZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5mb3JtR3JvdXAuZGlzYWJsZWQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKGZvcm1GaWVsZC5uYW1lLCBjb250cm9sKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZHMucHVzaChmb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRmllbGRDdXN0b21pemF0aW9uKGZpZWxkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLnBhcnNlVmFsdWVzRm9yRmllbGRzKHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VWYWx1ZXNGb3JGaWVsZHModmFsdWVzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWVzID0geyAuLi52YWx1ZXMgfTtcblxuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzICYmIHZhbHVlc1tuYW1lXTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmF0YW1lbnRvIGV4Y2x1c2l2byBwYXJhIGNhbXBvcyBib29sZWFuIHF1ZSB0ZW0gbyBzdGF0dXMgRW1wdHlcbiAgICAgICAgICAgICAqIEVzc2EgY29uZGljaW9uYWwgbmVjZXNzaXRhIGVzdGFyIGFudGVzIGRvIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgICAqIFBvaXMgZWxhIHRlbSB1bSBzdGF0dXMgcXVlIHVzYSBudWxsIG5vIHZhbG9yIGRvIGNhbXBvIHJhZGlvIGJvb2xlYW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Cb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90VmFsaWQgPSAhaXNTdHJpbmcgJiYgdHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgICBpZiAobm90VmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25kaWNpb25hbCBwYXJhIGNhbXBvcyBxdWUgcmV0b3JuYW0gc3RyaW5nIGRlIGJvb2xlbiBkbyBiYWNrYW5kXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSwgXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUsIFwiSEg6bW06c3NcIikudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsZ3VtYXMgZXF1aXBlcyBzw7Mgc2V0YW0gdmFsb3Igbm8gZm9ybXVsw6FyaW8sIGFww7NzIG8gY2FycmVnYW1lbnRvIGRhIHRlbGFcbiAgICAgKiBDb21vIMOpIGJlbSBwYWRyw6NvIGlzc28sIGZvaSBuZWNlc3PDoXJpbyBjcmlhciBlc3NlIG3DqXRvZG8gcGFyYSBnZXJhciBvIGZpbGVcbiAgICAgKiBhcMOzcyBzZXRhciBvIHZhbG9yIG5vIGZvcm11bMOhcmlvXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1VwbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBGb3JtRmllbGQpID0+IGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5CbG9iKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlKSB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZpZWxkc1ZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWVzOiBhbnkgPSB7fTtcblxuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lLCBtYXNrLCBzY2FsZSB9ID0gZmllbGQ7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQobmFtZSkudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFzaykgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKHZhbHVlKS50b0ZpeGVkKHNjYWxlIGFzIG51bWJlcikudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVHlwZU51bWJlck9yRW51bSh0eXBlKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IGZpZWxkLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQmxvYikgcGFyc2VkVmFsdWVzW1wiZmllbGRDdXN0b21pemF0aW9uXCJdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlO1xuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUeXBlTnVtYmVyT3JFbnVtKHR5cGU6IEZpZWxkVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBudW1iZXJPckVudW0gPSBbRmllbGRUeXBlLk51bWJlciwgRmllbGRUeXBlLkVudW1dO1xuICAgICAgICByZXR1cm4gbnVtYmVyT3JFbnVtLmluY2x1ZGVzKHR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybUZpZWxkKGZpZWxkOiBhbnksIGxvY2FsZU9wdGlvbnM6IExvY2FsZU9wdGlvbnMpOiBGb3JtRmllbGQge1xuICAgICAgICBsZXQgcGFyYW1ldGVycztcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJsb2I6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0QmxvYlBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJFbnVtZXJhdGlvblwiOlxuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuRW51bTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gRmllbGRUeXBlLkVudW07XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0RW51bVBhcmFtZXRlcnMoZmllbGQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuTW9uZXk6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkN1c3RvbSxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDb21wb25lbnRDbGFzczogTnVtYmVyRmllbGRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkQ2xhc3M6IE51bWJlckZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgbGVmdEFkZG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbG9jYWxlT3B0aW9ucz8ubnVtYmVyPy5jdXJyZW5jeVN5bWJvbCA/PyBcIlIkXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuQ3VzdG9tLFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENvbXBvbmVudENsYXNzOiBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDbGFzczogTnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEN1c3RvbUZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DdXN0b20sXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkQ29tcG9uZW50Q2xhc3M6IE51bWJlckZpZWxkQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENsYXNzOiBOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLmlkLFxuICAgICAgICAgICAgbGFiZWw6IGZpZWxkLmN1c3RvbWl6YXRpb24ubGFiZWwsXG4gICAgICAgICAgICB0b29sdGlwOiBmaWVsZC5jdXN0b21pemF0aW9uLnRvb2x0aXAsXG4gICAgICAgICAgICBpbmZvU2lnbjogZmllbGQuY3VzdG9taXphdGlvbi5pbmZvU2lnbixcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICBtYXNrOiBmaWVsZC5jdXN0b21pemF0aW9uLm1hc2ssXG4gICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmllbGQuY3VzdG9taXphdGlvbi5tYW5kYXRvcnksXG4gICAgICAgICAgICBjYWxlbmRhck9wdGlvbnM6IGxvY2FsZU9wdGlvbnMuY2FsZW5kYXIsXG4gICAgICAgICAgICBjdXJyZW5jeU9wdGlvbnM6IGxvY2FsZU9wdGlvbnMubnVtYmVyLFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbnVtUGFyYW1ldGVycyhmaWVsZDogYW55KTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmaWVsZC5jdXN0b21pemF0aW9uLmN1c3RvbUVudW1lcmF0aW9uLm11bHRpcGxlLFxuICAgICAgICAgICAgb3B0aW9uczogZmllbGQuY3VzdG9taXphdGlvbi5jdXN0b21FbnVtZXJhdGlvbi52YWx1ZXMubWFwKChlOiBhbnkpID0+ICh7IGxhYmVsOiBlLnZhbHVlLCB2YWx1ZTogZS5rZXkgfSkpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wdGlvbnNMYWJlbDoge1xuICAgICAgICAgICAgICAgIHRydWU6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYHRydWVfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBmYWxzZTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZmFsc2VfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBlbXB0eTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZW1wdHlfbGFiZWxgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9iUGFyYW1ldGVycygpOiBvYmplY3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2l6ZToge1xuICAgICAgICAgICAgICAgIHNtOiAxMixcbiAgICAgICAgICAgICAgICBtZDogMTIsXG4gICAgICAgICAgICAgICAgbGc6IDEyLFxuICAgICAgICAgICAgICAgIHhsOiAxMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY2NlcHQ6IFwiaW1hZ2UvKiwgYXBwbGljYXRpb24vKiwgdGV4dC8qXCIsXG4gICAgICAgICAgICBjaG9vc2VMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2hvb3NlX2xhYmVsYCksXG4gICAgICAgICAgICByZW1vdmVMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgcmVtb3ZlX2xhYmVsYCksXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2FuY2VsX2xhYmVsYCksXG4gICAgICAgICAgICBzdWNjZXNzVG9vbHRpcDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgc3VjY2Vzc190b29sdGlwYCksXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBvblVwbG9hZEZpbGU6IChldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uUmVtb3ZlRmlsZTogKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybWZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DYW5jZWxVcGxvYWQ6IChldmVudDogbnVtYmVyLCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRG93bmxvYWRGaWxlOiAoZXZlbnQ6IHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd0ZpbGVVcGxvYWREYXRlOiB0aGlzLnNob3dGaWxlVXBsb2FkRGF0ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDDiSBuZWNlc3PDoXJpbyBjcmlhciBvIGZpZWxkQ3VzdG9taXphdGlvbiBxdWFuZG8gaMOhIHVtIEJsb2IgbmEgZW50aWRhZGUgcGFyYSBnZXJhciBvXG4gICAgICogY29tIG9zIGZpZWxkcyBpbnNlcmlkb3MgZSBkZWxldGFkb3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Jsb2IgPSAhIWZpZWxkcy5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnR5cGUgPT09IEN1c3RvbUZpZWxkVHlwZS5CbG9iKS5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLmhhc0Jsb2IpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgXCJmaWVsZEN1c3RvbWl6YXRpb25cIixcbiAgICAgICAgICAgICAgICBuZXcgRm9ybUFycmF5KFtcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRvbWFpbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZXJ2aWNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogbmV3IEZvcm1Db250cm9sKHRoaXMuZW50aXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGVsZXRlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvSW5zZXJ0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBvYmplY3RJZCA9IHRoaXMudmFsdWVbZmllbGQubmFtZV0gPyB0aGlzLnZhbHVlW2ZpZWxkLm5hbWVdIDogdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9iamVjdElkLnN1YnN0cmluZyhvYmplY3RJZC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICAgICAgY29uc3QgZmlsZTogUGFydGlhbDxGaWxlRHRvPiA9IHsgbmFtZTogZmlsZU5hbWUsIG9iamVjdElkLCBzYXZlZEZpbGU6IHRydWUgfTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZSBhcyBGaWxlRHRvXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvd25sb2FkRmlsZShldmVudDogeyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfSwgZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBhbmNob3IgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsZSA9IGZpZWxkLmZpbGVzW2luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRGaWxlLm9iamVjdFVSTCkge1xuICAgICAgICAgICAgYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgIC5yZXF1ZXN0QWNjZXNzKGN1cnJlbnRGaWxlLm9iamVjdElkLCB0aGlzLnJlcXVlc3RBY2Nlc3NFbmRwb2ludClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgZmlsZU5hbWU6IHN0cmluZzsgdXJpOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVOYW1lLCB1cmkgfSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZpbGUodXJpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGJsb2I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSA8RmlsZUR0bz5uZXcgRmlsZShbYmxvYl0sIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHVyaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmlsZS5vYmplY3RJZCA9IGN1cnJlbnRGaWxlLm9iamVjdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUuc2F2ZWRGaWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5maWxlc1tpbmRleF0gPSBuZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpZWxkLmZpbGVzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZEZpbGUoZXZlbnQ6IHsgZmlsZXM6IEZpbGVEdG9bXSB9LCBmb3JtRmllbGQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcblxuICAgICAgICAvLyBTZSBvY29ycmVyIHVtIHVwbG9hZCwgasOhIGV4aXN0aW5kbyB1bSBhcnF1aXZvIGNvbSB1cGxvYWQgZmVpdG8uIMOJIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgbyBtZXNtby5cbiAgICAgICAgaWYgKGZpZWxkLmZpbGVzICYmIGZpZWxkLmZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlKHsgZmlsZTogZmllbGQuZmlsZXNbMF0gfSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLmZpbGVzID0gZmlsZXM7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzW2ldO1xuICAgICAgICAgICAgaWYgKCFmaWxlLnNhdmVkRmlsZSAmJiAhZmlsZS5wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIGZpbGUuaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWxpZGF0b3JzKGlzVXBsb2FkaW5nKGZpbGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmlsZUxvY2F0aW9uVXJsKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21haW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTG9jYXRpb25FbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHRoaXMuZGVmYWx0Q2F0Y2hFcnJvcihmaWVsZCwgZXJyLCBpKSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxvY2F0aW9uLCB2ZXJzaW9uLCBvYmplY3RJZCB9ID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm9iamVjdElkID0gb2JqZWN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlW1widXBsb2FkU3Vic2NyaWJlXCJdID0gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZFRlbXBGaWxlKGxvY2F0aW9uLCBmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih0aGlzLmRlZmFsdENhdGNoRXJyb3IoZmllbGQsIGVyciwgaSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGxvYWRDYW5jZWxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQocmVzcG9uc2UubG9hZGVkIC8gcmVzcG9uc2UudG90YWwpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0geyBvYmplY3RJZCwgbmFtZTogZmlsZS5uYW1lLCB2ZXJzaW9uOiBmaWxlLnZlcnNpb24gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0luc2VydCA9IHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWVbMF0udG9JbnNlcnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRvSW5zZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbHVlKGAke2ZpbGUub2JqZWN0SWR9LyR7ZmlsZS5uYW1lfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gW2ZpbGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXBsb2FkQ2FuY2VsZWQgJiYgdHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkgdGhpcy51cGxvYWRDYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVGaWxlKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWxlIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbXTtcbiAgICAgICAgaWYgKGZpbGUub2JqZWN0SWQpIHtcbiAgICAgICAgICAgIC8vIFF1YW5kbyDDqSB1bSBhcnF1aXZvIGrDoSBzYWx2byBvIG9iamVjdElkIGrDoSDDqSBubyBmb3JtYXRvIFwib2JqZWN0SWQvbmFtZVwiXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbGUuc2F2ZWRGaWxlID8gYCR7ZmlsZS5vYmplY3RJZH1gIDogYCR7ZmlsZS5vYmplY3RJZH0vJHtmaWxlLm5hbWV9YDtcbiAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvRGVsZXRlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydFtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0RlbGV0ZSA9IHtcbiAgICAgICAgICAgICAgICAuLi50b0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IFsuLi4odG9EZWxldGVbZmllbGQubmFtZV0gfHwgW10pLCB2YWx1ZV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsdWUoXCJcIik7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlciwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRDYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgocmVjb3JkOiBGb3JtRmllbGQpID0+IHJlY29yZC5uYW1lID09PSBmb3JtRmllbGQubmFtZSk7XG4gICAgICAgIGZpZWxkLmZpbGVzW2luZGV4XVtcInVwbG9hZFN1YnNjcmliZVwiXS51bnN1YnNjcmliZSgpO1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtdO1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvSW5zZXJ0W2ZpZWxkLm5hbWVdO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmFsdENhdGNoRXJyb3IoZmllbGQ6IEZvcm1GaWVsZCwgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gZmllbGQ7XG4gICAgICAgIGZpbGVzW2luZGV4XS5lcnJvciA9IGVycjtcbiAgICAgICAgZmlsZXNbaW5kZXhdLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpbGVzXTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbGlkYXRvcnMoW2Vycm9yT25VcGxvYWQoZmlsZXNbaW5kZXhdKV0pO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoXCJlcnJvciBpbiB1cGxvYWQgZmlsZS4gRGV0YWlsczogXCIgKyBlcnIubWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRlTGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHt0aGlzLmRvbWFpbn0uJHt0aGlzLnNlcnZpY2V9LiR7bGFiZWx9YCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGREaXNwbGF5VGltZUluZm9TaWduVG9GaWVsZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5kaXNwbGF5VGltZUluZm9TaWduID0gdGhpcy5kaXNwbGF5VGltZUluZm9TaWduO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzVXBsb2FkaW5nKGZpbGU6IEZpbGVEdG8pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpID0+IChmaWxlLmlzVXBsb2FkaW5nID8geyBpc1VwbG9hZGluZzogdHJ1ZSB9IDogbnVsbCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yT25VcGxvYWQoZmlsZTogRmlsZUR0byk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCkgPT4gKGZpbGUuZXJyb3IgPyB7IHVwbG9hZEVycm9yOiB0cnVlIH0gOiBudWxsKTtcbn1cbiJdfQ==
646
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jdXN0b20tZmllbGRzL2N1c3RvbS1maWVsZHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxFQUlMLFFBQVEsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQStCLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1C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TSxPQUFBLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFqRCxDQUFpRCxDQUFDO0FBQ25FLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFhO0lBQ2hDLE9BQU8sY0FBTSxPQUFBLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUEzQyxDQUEyQyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gICAgQ29udHJvbENvbnRhaW5lcixcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQXJyYXksXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvckZuLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gXCIuLi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9maWVsZHNcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybUZpZWxkLCBOdW1iZXJGaWVsZCB9IGZyb20gXCIuLi9keW5hbWljLWZvcm0vaW5kZXhcIjtcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi4vZmlsZS11cGxvYWQvaW5kZXhcIjtcbmltcG9ydCB7IExvY2FsZU9wdGlvbnMgfSBmcm9tIFwiLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSBcIi4uL2xvY2FsZS9sb2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRzU2VydmljZSB9IGZyb20gXCIuL2N1c3RvbS1maWVsZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRUeXBlIH0gZnJvbSBcIi4vbW9kZWxzL2N1c3RvbS1maWVsZC10eXBlXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87IC8vIEBIQUNLIE5lY2Vzc2FyeSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9yb2xsdXAvcm9sbHVwL2lzc3Vlcy82NzBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1jdXN0b20tZmllbGRzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jdXN0b20tZmllbGRzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbUZpZWxkc0NvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbUZpZWxkc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRvbWFpbjogc3RyaW5nO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlcnZpY2U6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbnRpdHk6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnZhbGlkRXJyb3JMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwicGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmludmFsaWRfdmFsdWVcIik7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW50aXR5T2JqZWN0OiBhbnk7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY3VzdG9tRmllbGRzRW5kcG9pbnQgPSBcInBsYXRmb3JtL2ZpZWxkX2N1c3RvbWl6YXRpb24vcXVlcmllcy9nZXRFbnRpdHlcIjtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlTG9jYXRpb25FbmRwb2ludCA9IFwicGxhdGZvcm0vZmllbGRfY3VzdG9taXphdGlvbi9hY3Rpb25zL3JlcXVlc3RVcGxvYWRcIjtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXF1ZXN0QWNjZXNzRW5kcG9pbnQgPSBcInBsYXRmb3JtL2ZpZWxkX2N1c3RvbWl6YXRpb24vYWN0aW9ucy9yZXF1ZXN0QWNjZXNzXCI7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5VGltZUluZm9TaWduOiBudW1iZXI7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0ZpbGVVcGxvYWREYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZHkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZUZpZWxkczogYm9vbGVhbjtcbiAgICBcbiAgICBwdWJsaWMgZmllbGRzOiBGb3JtRmllbGRbXSA9IFtdO1xuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBwcml2YXRlIHJlYWR5ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogYW55O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiBhbnk7XG4gICAgcHJpdmF0ZSB2YWx1ZTogYW55O1xuICAgIHByaXZhdGUgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIHVwbG9hZENhbmNlbGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgaGFzQmxvYjogYm9vbGVhbjtcbiAgICBwcml2YXRlIGhhc1VwbG9hZGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tRmllbGRzU2VydmljZTogQ3VzdG9tRmllbGRzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXQgaGFzQ3VzdG9tRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmZpZWxkcz8ubGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50Rm9ybSgpOiBGb3JtR3JvdXAge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudEZvcm0uZ2V0KFwiY3VzdG9tXCIpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybSgpO1xuICAgICAgICB0aGlzLmFkZERpc3BsYXlUaW1lSW5mb1NpZ25Ub0ZpZWxkcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5hYmxlT3JEaXNhYmxlRmllbGRzKHRoaXMuZGlzYWJsZUZpZWxkcyk7XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlPy4odGhpcy5wYXJzZUZpZWxkc1ZhbHVlcygpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZGlzYWJsZUZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVPckRpc2FibGVGaWVsZHMoY2hhbmdlcy5kaXNhYmxlRmllbGRzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1VzdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZXNGb3JGaWVsZHModmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbGVzSWZTZXRGb3JtVmFsdWVzQWZ0ZXJJbml0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlIHx8IHt9KTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICBlbHNlIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1c3RvbUZpZWxkcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlPYmplY3QgJiYgdGhpcy5lbnRpdHlPYmplY3QuZW50aXR5Xykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZW50aXR5T2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlLmdldEN1c3RvbUZpZWxkcyh0aGlzLmRvbWFpbiwgdGhpcy5zZXJ2aWNlLCB0aGlzLmVudGl0eSwgdGhpcy5jdXN0b21GaWVsZHNFbmRwb2ludCk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgICAgICBjb25zdCBlcnJvcnM6IGFueSA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzOiBjb250cm9sRXJyb3JzIH0gPSB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xFcnJvcnMpIGVycm9yc1tmaWVsZF0gPSBjb250cm9sRXJyb3JzO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYW5GaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVPckRpc2FibGVGaWVsZHMoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Hcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGRpc2FibGVkID8gdGhpcy5mb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lKS5kaXNhYmxlKCkgOiB0aGlzLmZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb21haW4pIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgZG9tYWluIVwiKTtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgc2VydmljZSFcIik7XG4gICAgICAgIGlmICghdGhpcy5lbnRpdHkpIHRocm93IG5ldyBFcnJvcihcIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGN1c3RvbS1maWVsZHMgZW50aXR5IVwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFt0aGlzLmdldEN1c3RvbUZpZWxkcygpLCB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0KCldO1xuICAgICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVXN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2w/Lm1hcmtBc1ByaXN0aW5lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVhZHkkKSB0aGlzLnJlYWR5JC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55W10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBbY3VzdG9tRmllbGRzUmVzcG9uc2UsIGxvY2FsZU9wdGlvbnNdID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdHM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5TdHJpbmddID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW5dID0geyBkZWZhdWx0VmFsdWU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkludGVnZXJdID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLkRvdWJsZV0gPSB7IGRlZmF1bHRNYXNrOiBcIlwiIH07XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLk1vbmV5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuTG9jYWxEYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmxvYl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRW51bV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmluYXJ5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5BbnldID0ge307XG5cbiAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbUZpZWxkc1Jlc3BvbnNlIHx8ICFjdXN0b21GaWVsZHNSZXNwb25zZS5lbnRpdHlfKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhY3RpdmUsIGZpZWxkcyB9ID0gY3VzdG9tRmllbGRzUmVzcG9uc2UuZW50aXR5XztcbiAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmN1c3RvbWl6YWJsZSAmJiBmaWVsZC5jdXN0b21pemF0aW9uICYmIGZpZWxkLmN1c3RvbWl6YXRpb24uYWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5nZXRGb3JtRmllbGQoZmllbGQsIGxvY2FsZU9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gQ3VzdG9tRmllbGRUeXBlLkJsb2IgJiYgdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW2Zvcm1GaWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZm9ybUZpZWxkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uUmVnZXggfSA9IGZpZWxkLmN1c3RvbWl6YXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzSXNUeXBlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuQm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkRhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5UaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25SZWdleCAmJiAhYXNJc1R5cGVzLmluY2x1ZGVzKGZpZWxkVHlwZSkpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdGlvblJlZ2V4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRUeXBlID09PSBDdXN0b21GaWVsZFR5cGUuSW50ZWdlciAmJiAhZm9ybUZpZWxkLm1hc2spIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15cXC0/XFxkKiQvKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRmllbGQucmVxdWlyZWQ/LigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IGRlZmF1bHRzW2ZpZWxkVHlwZV0uZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5mb3JtR3JvdXAuZGlzYWJsZWQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKGZvcm1GaWVsZC5uYW1lLCBjb250cm9sKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZHMucHVzaChmb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRmllbGRDdXN0b21pemF0aW9uKGZpZWxkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLnBhcnNlVmFsdWVzRm9yRmllbGRzKHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VWYWx1ZXNGb3JGaWVsZHModmFsdWVzOiBhbnkpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWVzID0geyAuLi52YWx1ZXMgfTtcblxuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzICYmIHZhbHVlc1tuYW1lXTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmF0YW1lbnRvIGV4Y2x1c2l2byBwYXJhIGNhbXBvcyBib29sZWFuIHF1ZSB0ZW0gbyBzdGF0dXMgRW1wdHlcbiAgICAgICAgICAgICAqIEVzc2EgY29uZGljaW9uYWwgbmVjZXNzaXRhIGVzdGFyIGFudGVzIGRvIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgICAqIFBvaXMgZWxhIHRlbSB1bSBzdGF0dXMgcXVlIHVzYSBudWxsIG5vIHZhbG9yIGRvIGNhbXBvIHJhZGlvIGJvb2xlYW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Cb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90VmFsaWQgPSAhaXNTdHJpbmcgJiYgdHlwZW9mIHZhbHVlICE9PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgICBpZiAobm90VmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25kaWNpb25hbCBwYXJhIGNhbXBvcyBxdWUgcmV0b3JuYW0gc3RyaW5nIGRlIGJvb2xlbiBkbyBiYWNrYW5kXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IG1vbWVudCh2YWx1ZSwgXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUsIFwiSEg6bW06c3NcIikudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsZ3VtYXMgZXF1aXBlcyBzw7Mgc2V0YW0gdmFsb3Igbm8gZm9ybXVsw6FyaW8sIGFww7NzIG8gY2FycmVnYW1lbnRvIGRhIHRlbGFcbiAgICAgKiBDb21vIMOpIGJlbSBwYWRyw6NvIGlzc28sIGZvaSBuZWNlc3PDoXJpbyBjcmlhciBlc3NlIG3DqXRvZG8gcGFyYSBnZXJhciBvIGZpbGVcbiAgICAgKiBhcMOzcyBzZXRhciBvIHZhbG9yIG5vIGZvcm11bMOhcmlvXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1VwbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBGb3JtRmllbGQpID0+IGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5CbG9iKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlKSB0aGlzLmNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZpZWxkc1ZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVmFsdWVzOiBhbnkgPSB7fTtcblxuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBuYW1lLCBtYXNrLCBzY2FsZSB9ID0gZmllbGQ7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQobmFtZSkudmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFzaykgdmFsdWUgPSBuZXcgQmlnTnVtYmVyKHZhbHVlKS50b0ZpeGVkKHNjYWxlIGFzIG51bWJlcikudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVHlwZU51bWJlck9yRW51bSh0eXBlKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IGZpZWxkLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQmxvYikgcGFyc2VkVmFsdWVzW1wiZmllbGRDdXN0b21pemF0aW9uXCJdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlO1xuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUeXBlTnVtYmVyT3JFbnVtKHR5cGU6IEZpZWxkVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBudW1iZXJPckVudW0gPSBbRmllbGRUeXBlLk51bWJlciwgRmllbGRUeXBlLkVudW1dO1xuICAgICAgICByZXR1cm4gbnVtYmVyT3JFbnVtLmluY2x1ZGVzKHR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybUZpZWxkKGZpZWxkOiBhbnksIGxvY2FsZU9wdGlvbnM6IExvY2FsZU9wdGlvbnMpOiBGb3JtRmllbGQge1xuICAgICAgICBsZXQgcGFyYW1ldGVycztcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJsb2I6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0QmxvYlBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJFbnVtZXJhdGlvblwiOlxuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuRW51bTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gRmllbGRUeXBlLkVudW07XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0RW51bVBhcmFtZXRlcnMoZmllbGQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuTW9uZXk6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkN1c3RvbSxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDb21wb25lbnRDbGFzczogTnVtYmVyRmllbGRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkQ2xhc3M6IE51bWJlckZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgbGVmdEFkZG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbG9jYWxlT3B0aW9ucz8ubnVtYmVyPy5jdXJyZW5jeVN5bWJvbCA/PyBcIlIkXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuQ3VzdG9tLFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENvbXBvbmVudENsYXNzOiBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDbGFzczogTnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEN1c3RvbUZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DdXN0b20sXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkQ29tcG9uZW50Q2xhc3M6IE51bWJlckZpZWxkQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENsYXNzOiBOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkFueTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gRmllbGRUeXBlLlN0cmluZztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgIG5hbWU6IGZpZWxkLmlkLFxuICAgICAgICAgICAgbGFiZWw6IGZpZWxkLmN1c3RvbWl6YXRpb24ubGFiZWwsXG4gICAgICAgICAgICB0b29sdGlwOiBmaWVsZC5jdXN0b21pemF0aW9uLnRvb2x0aXAsXG4gICAgICAgICAgICBpbmZvU2lnbjogZmllbGQuY3VzdG9taXphdGlvbi5pbmZvU2lnbixcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgICBtYXNrOiBmaWVsZC5jdXN0b21pemF0aW9uLm1hc2ssXG4gICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmllbGQuY3VzdG9taXphdGlvbi5tYW5kYXRvcnksXG4gICAgICAgICAgICBjYWxlbmRhck9wdGlvbnM6IGxvY2FsZU9wdGlvbnMuY2FsZW5kYXIsXG4gICAgICAgICAgICBjdXJyZW5jeU9wdGlvbnM6IGxvY2FsZU9wdGlvbnMubnVtYmVyLFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVycyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFbnVtUGFyYW1ldGVycyhmaWVsZDogYW55KTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmaWVsZC5jdXN0b21pemF0aW9uLmN1c3RvbUVudW1lcmF0aW9uLm11bHRpcGxlLFxuICAgICAgICAgICAgb3B0aW9uczogZmllbGQuY3VzdG9taXphdGlvbi5jdXN0b21FbnVtZXJhdGlvbi52YWx1ZXMubWFwKChlOiBhbnkpID0+ICh7IGxhYmVsOiBlLnZhbHVlLCB2YWx1ZTogZS5rZXkgfSkpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wdGlvbnNMYWJlbDoge1xuICAgICAgICAgICAgICAgIHRydWU6IHRoaXMuZ2V0VHJhbnNsYXRlTGFiZWwoYHRydWVfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBmYWxzZTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZmFsc2VfbGFiZWxgKSxcbiAgICAgICAgICAgICAgICBlbXB0eTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgZW1wdHlfbGFiZWxgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCbG9iUGFyYW1ldGVycygpOiBvYmplY3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2l6ZToge1xuICAgICAgICAgICAgICAgIHNtOiAxMixcbiAgICAgICAgICAgICAgICBtZDogMTIsXG4gICAgICAgICAgICAgICAgbGc6IDEyLFxuICAgICAgICAgICAgICAgIHhsOiAxMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY2NlcHQ6IFwiaW1hZ2UvKiwgYXBwbGljYXRpb24vKiwgdGV4dC8qXCIsXG4gICAgICAgICAgICBjaG9vc2VMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2hvb3NlX2xhYmVsYCksXG4gICAgICAgICAgICByZW1vdmVMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgcmVtb3ZlX2xhYmVsYCksXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2FuY2VsX2xhYmVsYCksXG4gICAgICAgICAgICBzdWNjZXNzVG9vbHRpcDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgc3VjY2Vzc190b29sdGlwYCksXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBvblVwbG9hZEZpbGU6IChldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uUmVtb3ZlRmlsZTogKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybWZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DYW5jZWxVcGxvYWQ6IChldmVudDogbnVtYmVyLCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRG93bmxvYWRGaWxlOiAoZXZlbnQ6IHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd0ZpbGVVcGxvYWREYXRlOiB0aGlzLnNob3dGaWxlVXBsb2FkRGF0ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDDiSBuZWNlc3PDoXJpbyBjcmlhciBvIGZpZWxkQ3VzdG9taXphdGlvbiBxdWFuZG8gaMOhIHVtIEJsb2IgbmEgZW50aWRhZGUgcGFyYSBnZXJhciBvXG4gICAgICogY29tIG9zIGZpZWxkcyBpbnNlcmlkb3MgZSBkZWxldGFkb3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Jsb2IgPSAhIWZpZWxkcy5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnR5cGUgPT09IEN1c3RvbUZpZWxkVHlwZS5CbG9iKS5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLmhhc0Jsb2IpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgXCJmaWVsZEN1c3RvbWl6YXRpb25cIixcbiAgICAgICAgICAgICAgICBuZXcgRm9ybUFycmF5KFtcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRvbWFpbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZXJ2aWNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogbmV3IEZvcm1Db250cm9sKHRoaXMuZW50aXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGVsZXRlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvSW5zZXJ0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZToge30sIGRpc2FibGVkOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJsb2JUb0ZpbGVVcGxvYWQoZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBvYmplY3RJZCA9IHRoaXMudmFsdWVbZmllbGQubmFtZV0gPyB0aGlzLnZhbHVlW2ZpZWxkLm5hbWVdIDogdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnZhbHVlO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG9iamVjdElkLnN1YnN0cmluZyhvYmplY3RJZC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICAgICAgY29uc3QgZmlsZTogUGFydGlhbDxGaWxlRHRvPiA9IHsgbmFtZTogZmlsZU5hbWUsIG9iamVjdElkLCBzYXZlZEZpbGU6IHRydWUgfTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZSBhcyBGaWxlRHRvXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvd25sb2FkRmlsZShldmVudDogeyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfSwgZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBhbmNob3IgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50RmlsZSA9IGZpZWxkLmZpbGVzW2luZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRGaWxlLm9iamVjdFVSTCkge1xuICAgICAgICAgICAgYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgIC5yZXF1ZXN0QWNjZXNzKGN1cnJlbnRGaWxlLm9iamVjdElkLCB0aGlzLnJlcXVlc3RBY2Nlc3NFbmRwb2ludClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgZmlsZU5hbWU6IHN0cmluZzsgdXJpOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVOYW1lLCB1cmkgfSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZpbGUodXJpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGJsb2I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSA8RmlsZUR0bz5uZXcgRmlsZShbYmxvYl0sIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGaWxlLm9iamVjdFVSTCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHVyaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmlsZS5vYmplY3RJZCA9IGN1cnJlbnRGaWxlLm9iamVjdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUuc2F2ZWRGaWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5maWxlc1tpbmRleF0gPSBuZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpZWxkLmZpbGVzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwbG9hZEZpbGUoZXZlbnQ6IHsgZmlsZXM6IEZpbGVEdG9bXSB9LCBmb3JtRmllbGQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcblxuICAgICAgICAvLyBTZSBvY29ycmVyIHVtIHVwbG9hZCwgasOhIGV4aXN0aW5kbyB1bSBhcnF1aXZvIGNvbSB1cGxvYWQgZmVpdG8uIMOJIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgbyBtZXNtby5cbiAgICAgICAgaWYgKGZpZWxkLmZpbGVzICYmIGZpZWxkLmZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlKHsgZmlsZTogZmllbGQuZmlsZXNbMF0gfSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkLmZpbGVzID0gZmlsZXM7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzW2ldO1xuICAgICAgICAgICAgaWYgKCFmaWxlLnNhdmVkRmlsZSAmJiAhZmlsZS5wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIGZpbGUuaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWxpZGF0b3JzKGlzVXBsb2FkaW5nKGZpbGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmlsZUxvY2F0aW9uVXJsKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21haW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTG9jYXRpb25FbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHRoaXMuZGVmYWx0Q2F0Y2hFcnJvcihmaWVsZCwgZXJyLCBpKSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxvY2F0aW9uLCB2ZXJzaW9uLCBvYmplY3RJZCB9ID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm9iamVjdElkID0gb2JqZWN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlW1widXBsb2FkU3Vic2NyaWJlXCJdID0gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZFRlbXBGaWxlKGxvY2F0aW9uLCBmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih0aGlzLmRlZmFsdENhdGNoRXJyb3IoZmllbGQsIGVyciwgaSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGxvYWRDYW5jZWxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQocmVzcG9uc2UubG9hZGVkIC8gcmVzcG9uc2UudG90YWwpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0geyBvYmplY3RJZCwgbmFtZTogZmlsZS5uYW1lLCB2ZXJzaW9uOiBmaWxlLnZlcnNpb24gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0luc2VydCA9IHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoXCJmaWVsZEN1c3RvbWl6YXRpb25cIikudmFsdWVbMF0udG9JbnNlcnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRvSW5zZXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbHVlKGAke2ZpbGUub2JqZWN0SWR9LyR7ZmlsZS5uYW1lfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gW2ZpbGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXBsb2FkQ2FuY2VsZWQgJiYgdHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkgdGhpcy51cGxvYWRDYW5jZWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVGaWxlKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWxlIH0gPSBldmVudDtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKChyZWNvcmQ6IEZvcm1GaWVsZCkgPT4gcmVjb3JkLm5hbWUgPT09IGZvcm1GaWVsZC5uYW1lKTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbXTtcbiAgICAgICAgaWYgKGZpbGUub2JqZWN0SWQpIHtcbiAgICAgICAgICAgIC8vIFF1YW5kbyDDqSB1bSBhcnF1aXZvIGrDoSBzYWx2byBvIG9iamVjdElkIGrDoSDDqSBubyBmb3JtYXRvIFwib2JqZWN0SWQvbmFtZVwiXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbGUuc2F2ZWRGaWxlID8gYCR7ZmlsZS5vYmplY3RJZH1gIDogYCR7ZmlsZS5vYmplY3RJZH0vJHtmaWxlLm5hbWV9YDtcbiAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvRGVsZXRlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0luc2VydFtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChcImZpZWxkQ3VzdG9taXphdGlvblwiKS52YWx1ZVswXS50b0RlbGV0ZSA9IHtcbiAgICAgICAgICAgICAgICAuLi50b0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBbZmllbGQubmFtZV06IFsuLi4odG9EZWxldGVbZmllbGQubmFtZV0gfHwgW10pLCB2YWx1ZV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuc2V0VmFsdWUoXCJcIik7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5jZWxVcGxvYWQoaW5kZXg6IG51bWJlciwgZm9ybUZpZWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRDYW5jZWxlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgocmVjb3JkOiBGb3JtRmllbGQpID0+IHJlY29yZC5uYW1lID09PSBmb3JtRmllbGQubmFtZSk7XG4gICAgICAgIGZpZWxkLmZpbGVzW2luZGV4XVtcInVwbG9hZFN1YnNjcmliZVwiXS51bnN1YnNjcmliZSgpO1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtdO1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtR3JvdXAuZ2V0KFwiZmllbGRDdXN0b21pemF0aW9uXCIpLnZhbHVlWzBdLnRvSW5zZXJ0W2ZpZWxkLm5hbWVdO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKS5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmFsdENhdGNoRXJyb3IoZmllbGQ6IEZvcm1GaWVsZCwgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gZmllbGQ7XG4gICAgICAgIGZpbGVzW2luZGV4XS5lcnJvciA9IGVycjtcbiAgICAgICAgZmlsZXNbaW5kZXhdLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGZpZWxkLmZpbGVzID0gWy4uLmZpbGVzXTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpLnNldFZhbGlkYXRvcnMoW2Vycm9yT25VcGxvYWQoZmlsZXNbaW5kZXhdKV0pO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihuZXcgRXJyb3IoXCJlcnJvciBpbiB1cGxvYWQgZmlsZS4gRGV0YWlsczogXCIgKyBlcnIubWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRlTGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHt0aGlzLmRvbWFpbn0uJHt0aGlzLnNlcnZpY2V9LiR7bGFiZWx9YCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGREaXNwbGF5VGltZUluZm9TaWduVG9GaWVsZHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5kaXNwbGF5VGltZUluZm9TaWduID0gdGhpcy5kaXNwbGF5VGltZUluZm9TaWduO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzVXBsb2FkaW5nKGZpbGU6IEZpbGVEdG8pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpID0+IChmaWxlLmlzVXBsb2FkaW5nID8geyBpc1VwbG9hZGluZzogdHJ1ZSB9IDogbnVsbCk7XG59XG5cbmZ1bmN0aW9uIGVycm9yT25VcGxvYWQoZmlsZTogRmlsZUR0byk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCkgPT4gKGZpbGUuZXJyb3IgPyB7IHVwbG9hZEVycm9yOiB0cnVlIH0gOiBudWxsKTtcbn1cbiJdfQ==
@@ -12162,6 +12162,9 @@ let CustomFieldsComponent = CustomFieldsComponent_1 = class CustomFieldsComponen
12162
12162
  scale: 0,
12163
12163
  };
12164
12164
  break;
12165
+ case CustomFieldType.Any:
12166
+ field.type = FieldType.String;
12167
+ break;
12165
12168
  }
12166
12169
  return new FormField(Object.assign({ name: field.id, label: field.customization.label, tooltip: field.customization.tooltip, infoSign: field.customization.infoSign, type: field.type, mask: field.customization.mask, required: () => field.customization.mandatory, calendarOptions: localeOptions.calendar, currencyOptions: localeOptions.number }, parameters));
12167
12170
  }