@ksremp/ngx-ksremp-app-lib 1.0.25 → 1.0.26

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.
@@ -2006,8 +2006,10 @@ export class DynamicFormQuestionComponent {
2006
2006
  const error = control.errors;
2007
2007
  this.wcEmployerGrid?.submit();
2008
2008
  control.markAsDirty();
2009
+ this.logger?.info('[WC_UI_VALIDATION] control=' + this.question.name + ', errors=' + JSON.stringify(error ?? {}));
2009
2010
  //Required (no employers validation)
2010
2011
  if (error?.wcOneEmployerValidation) {
2012
+ this.logger?.warn('[WC_UI_VALIDATION] wcOneEmployerValidation triggered', { errors: error });
2011
2013
  if (localStorage.getItem("language") === "es") {
2012
2014
  message = 'Debe ingresar al menos un empleador.';
2013
2015
  }
@@ -2017,6 +2019,7 @@ export class DynamicFormQuestionComponent {
2017
2019
  return message;
2018
2020
  }
2019
2021
  if (error?.wcEmployerValidation) {
2022
+ this.logger?.warn('[WC_UI_VALIDATION] wcEmployerValidation triggered', { errors: error });
2020
2023
  if (localStorage.getItem("language") === "es") {
2021
2024
  this.wcEmployerValidationMsg = 'El último día trabajado que figura en su solicitud corresponde a esta semana; por lo tanto, debe seleccionar "sí" en la pregunta "¿Realizó algún trabajo durante la semana?"';
2022
2025
  }
@@ -2027,6 +2030,7 @@ export class DynamicFormQuestionComponent {
2027
2030
  return message;
2028
2031
  }
2029
2032
  if (error?.required) {
2033
+ this.logger?.warn('[WC_UI_VALIDATION] required triggered', { errors: error });
2030
2034
  message = "required";
2031
2035
  return message;
2032
2036
  }
@@ -2598,4 +2602,4 @@ export class DynamicFormQuestionComponent {
2598
2602
  args: ['pCalendar']
2599
2603
  }] }); })();
2600
2604
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormQuestionComponent, { className: "DynamicFormQuestionComponent", filePath: "lib\\components\\questionnaire\\dynamic-form-question.component.ts", lineNumber: 62 }); })();
2601
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUF3QixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWxMLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVU3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUt2RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDYnJFLHNDQUFrSDtJQUFuQixnTkFBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUMvRyxZQUNGO0lBQUEsaUJBQWE7OztJQURYLGVBQ0Y7SUFERSwyREFDRjs7OztJQUVBLHNDQUFpSDtJQUFuQixnTkFBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUM5RyxZQUNGO0lBQUEsaUJBQWE7OztJQURYLGVBQ0Y7SUFERSw0REFDRjs7O0lBTkEscUhBRWEsd0dBQUE7OztJQUZjLGlEQUF3QjtJQUl4QixlQUF5QjtJQUF6QixrREFBeUI7Ozs7OztJQWR4RCxtQ0FFdUk7SUFGckcsNFBBQTZCO0lBSTdELDhCQUFxQztJQUNuQyxZQUNGO0lBQUEsaUJBQUs7SUFDTCx5QkFBRztJQUFBLFlBQ0g7SUFBQSxpQkFBSTtJQUNKLHlHQVNjO0lBQ2hCLGlCQUFXOzs7SUFsQmdHLDBDQUF5QjtJQURsRyxnREFBNkIsNkJBQUEsZUFBQSw0Q0FBQSxvQkFBQSxvQkFBQSxvQkFBQTtJQUVxQyxtREFBa0M7SUFHbEksZUFDRjtJQURFLG1EQUNGO0lBQ0csZUFDSDtJQURHLGdEQUNIOzs7SUFhQSw2QkFBNEk7SUFDMUksMkJBQXNGOzs7SUFDeEYsaUJBQVE7OztJQUZELDRDQUEwQjtJQUN6QixlQUF3RTtJQUF4RSx1SUFBd0U7OztJQUZsRiwrQkFBOEY7SUFDNUYsdUZBRVE7SUFDVixpQkFBTTs7O0lBSkQsaUVBQXFDO0lBQ0wsZUFBdUc7SUFBdkcsNEpBQXVHOzs7SUFLNUksK0JBQ3dPLFlBQUE7SUFFdE8sMkJBQXNGOzs7SUFDeEYsaUJBQVEsRUFBQTs7O0lBSkgsaUVBQXFDO0lBRWpDLGVBQTBCO0lBQTFCLDJDQUEwQjtJQUMzQixlQUF3RTtJQUF4RSxxSUFBd0U7OztJQUloRiwrQkFDbVUsWUFBQTtJQUVqVSwyQkFBc0Y7OztJQUN4RixpQkFBUSxFQUFBOzs7SUFKSCxpRUFBcUM7SUFFakMsZUFBMEI7SUFBMUIsMkNBQTBCO0lBQzNCLGVBQXdFO0lBQXhFLHFJQUF3RTs7O0lBSWhGLCtCQUNpUSxZQUFBO0lBRS9QLDJCQUFzRjs7O0lBQ3hGLGlCQUFRLEVBQUE7OztJQUpILGlFQUFxQztJQUVqQyxlQUEwQjtJQUExQiwyQ0FBMEI7SUFDM0IsZUFBd0U7SUFBeEUscUlBQXdFOzs7O0lBSzlFLDZDQUMrRjtJQUF4QywrTkFBZ0IsZUFBQSw4QkFBc0IsQ0FBQSxJQUFDO0lBQUMsaUJBQW9COzs7SUFEaEcsdURBQWlDLHNCQUFBLHNDQUFBOzs7O0lBRXBELGdEQUMrRztJQUFwRSw2TkFBWSxlQUFBLDBCQUFrQixDQUFBLElBQUM7SUFDMUUsaUJBQXVCOzs7SUFEckIsOERBQXdDLDhCQUFBLHNCQUFBOzs7SUFFMUMsK0JBQTZFOzs7SUFDN0Usa0NBQTRHOzs7SUFBL0YsdURBQWlDOzs7SUFFOUMsd0NBQ29COzs7SUFERCx1REFBaUM7OztJQUVwRCxzQ0FDOEg7OztJQURqSCx1REFBaUMsb0JBQUEsd0JBQUEsa0NBQUEsbUNBQUE7OztJQUU5QywyQ0FDbUI7OztJQURELHVEQUFpQzs7O0lBRW5ELHlEQUVxQzs7O0lBRHJDLHVEQUFpQyxpREFBQSxzQkFBQTs7O0lBRWpDLHlDQUFpSTs7O0lBQTdHLHVEQUFpQzs7O0lBQ3JELHdEQUE4Tjs7O0lBQS9LLG1EQUE2QiwwQ0FBQSxzQkFBQTs7O0lBQzVFLDZEQUFpUDs7O0lBQXpMLG1EQUE2QiwwQ0FBQSxzQkFBQTs7OztJQUNyRiwrQ0FDbUY7SUFEZCwwTkFBVyxlQUFBLDJCQUFtQixDQUFBLElBQUMsdU1BQ3pGLGVBQUEsdUJBQWUsQ0FBQSxJQUQwRTtJQUNqQixpQkFBc0I7OztJQURwRix1REFBaUM7OztJQUV0RCwwQ0FBcUk7OztJQUFoSCx1REFBaUM7OztJQUN0RCxzQ0FBOEo7OztJQUE3SSwyREFBcUMsMENBQUE7OztJQUN0RCwrQkFBcVA7OztJQUEzTyx3REFBa0MsMENBQUEsbUZBQUEsaUZBQUEsaUdBQUE7OztJQUM1QyxtQ0FBNEs7OztJQUE5Six3REFBa0MsMENBQUEsa0NBQUE7OztJQUNoRCx3Q0FBcUk7OztJQUF0SCxzRUFBd0M7OztJQTNCekQsMkJBQXNIO0lBQ3BILGdIQUNtSCx5R0FBQSx3RkFBQSx1RkFBQSxtR0FBQSx1RkFBQSxpR0FBQSxxSUFBQSxxR0FBQSw2SEFBQSx1SUFBQSx5R0FBQSx5R0FBQSxpR0FBQSxtRkFBQSwyRkFBQSw2RkFBQTtJQTBCckgsaUJBQU07OztJQTFCRCxlQUFrRDtJQUFsRCw0RUFBa0Q7SUFDOUIsZUFBcUQ7SUFBckQsK0VBQXFEO0lBRzdELGVBQTZDO0lBQTdDLHVFQUE2QztJQUNaLGVBQTRDO0lBQTVDLHNFQUE0QztJQUV0QyxlQUFrRDtJQUFsRCw0RUFBa0Q7SUFHckcsZUFBNEM7SUFBNUMsc0VBQTRDO0lBQ00sZUFBaUQ7SUFBakQsMkVBQWlEO0lBRWpFLGVBQW1FO0lBQW5FLDZGQUFtRTtJQUdqRCxlQUFtRDtJQUFuRCw2RUFBbUQ7SUFDb0IsZUFBOEQ7SUFBOUQsd0ZBQThEO0lBQ3JELGVBQW1FO0lBQW5FLDZGQUFtRTtJQUU3SyxlQUFvRDtJQUFwRCw4RUFBb0Q7SUFDekIsZUFBb0Q7SUFBcEQsOEVBQW9EO0lBQ2xCLGVBQWdEO0lBQWhELDBFQUFnRDtJQUMxRCxlQUF5QztJQUF6QyxtRUFBeUM7SUFDckMsZUFBNkM7SUFBN0MsdUVBQTZDO0lBQ3ZFLGVBQThDO0lBQTlDLHdFQUE4Qzs7O0lBRzFHLCtCQUF1SztJQUNySywyQkFBc0Y7OztJQUN4RixpQkFBTTs7O0lBRjJILGlFQUFxQztJQUM5SixlQUF3RTtJQUF4RSxxSUFBd0U7OztJQU85RSwrQkFBOEU7SUFDNUUsdUNBQTBHOztJQUM1RyxpQkFBTTs7O0lBRGMsZUFBb0U7SUFBcEUsc0dBQW9FOzs7SUFMMUYsK0JBQTJEO0lBQ3pELDBCQUVNOzs7SUFDTixvRkFFTTtJQUNSLGlCQUFNOzs7SUFORSxlQUF1RTtJQUF2RSxvSUFBdUU7SUFHdkUsZUFBMEI7SUFBMUIsa0RBQTBCOzs7O0lBUTVCLDJCQUF3RyxrQkFBQSxxQkFBQTtJQUtsRyxrTUFBVSxlQUFBLGtDQUFrQixDQUFBLElBQUMseUxBQWEsZUFBQSxrQ0FBa0IsQ0FBQSxJQUEvQiw2TEFDbEIsZUFBQSx5QkFBaUIsQ0FBQSxJQURDO0lBRS9CLGlCQUFhLEVBQUEsRUFBQTs7O0lBTlYsZUFBcUM7SUFBckMsbUVBQXFDO0lBQzVCLGVBQWlDO0lBQWpDLHVEQUFpQyxrQ0FBQSx3QkFBQSx1QkFBQSxrQkFBQSx5REFBQSx5REFBQSxzQkFBQSx5Q0FBQTs7OztJQVNqRCwyQkFBeUcsa0JBQUEscUJBQUE7SUFLbkcsa01BQVUsZUFBQSxpQ0FBaUIsQ0FBQSxJQUFDLHlMQUFhLGVBQUEsa0NBQWtCLENBQUEsSUFBL0IsNkxBQ2pCLGVBQUEseUJBQWlCLENBQUEsSUFEQTtJQUU5QixpQkFBYSxFQUFBLEVBQUE7OztJQU5WLGVBQXFDO0lBQXJDLG1FQUFxQztJQUM1QixlQUFpQztJQUFqQyx1REFBaUMsa0NBQUEsd0JBQUEsdUJBQUEsa0JBQUEsK0JBQUEsK0JBQUEsc0JBQUEseUNBQUE7Ozs7SUFTakQsK0JBRXdDLHNCQUFBO0lBRVYsMk1BQWMsZUFBQSxrQ0FBa0IsQ0FBQSxJQUFDLDhMQUFZLGVBQUEsc0JBQWMsQ0FBQSxJQUExQiw0TEFBc0MsZUFBQSxvQkFBWSxDQUFBLElBQWxEO0lBQzdELGlCQUFjLEVBQUE7OztJQUhkLG1FQUFxQztJQUNKLGVBQWdDO0lBQWhDLGlEQUFnQztJQUFvQiwrQ0FBeUIsMENBQUE7SUFDRyxvREFBa0M7Ozs7SUFJckosK0JBRXdDLHNCQUFBO0lBRWdCLDRNQUFjLGVBQUEsa0NBQWtCLENBQUEsSUFBQztJQUN2RixpQkFBYyxFQUFBOzs7SUFIZCxtRUFBcUM7SUFDaUIsZUFBeUI7SUFBekIsK0NBQXlCLDBDQUFBLDJCQUFBOzs7SUFLakYsK0JBRXdDO0lBQ3RDLG9DQUN1RTtJQUN6RSxpQkFBTTs7O0lBSEosbUVBQXFDO0lBQ3RCLGVBQXlCO0lBQXpCLCtDQUF5QiwwQ0FBQSx3QkFBQSxxQ0FBQTs7O0lBT3hDLDRCQUV3RTs7OztJQURyQyxnRkFBK0M7SUFBaEYsdURBQWdDLDhCQUFBLDJDQUFBO0lBQ0UscURBQWtDOzs7SUFDdEUsNEJBQ3dHOzs7O0lBRHZDLGdGQUErQztJQUM5RywyQ0FBb0IsMkNBQUE7SUFBOEMscURBQWtDOzs7SUFDdEcsNEJBQ3NIOzs7O0lBQXBILGdGQUErQztJQURlLHVEQUFnQyw4QkFBQSwyQ0FBQTs7O0lBRWhHLDRCQUN3SDs7OztJQUFwRixnRkFBK0M7SUFEbEIsMkNBQW9CLDJDQUFBO0lBQ0QscURBQWtDOzs7SUFYeEgsK0JBRXdDO0lBQ3RDLHdHQUV3RSwyRkFBQSwyRkFBQSwyRkFBQTtJQU8xRSxpQkFBTTs7O0lBVkosbUVBQXFDO0lBQ2pCLGVBQXlDO0lBQXpDLDBFQUF5QztJQUd6QyxlQUEwQztJQUExQywyRUFBMEM7SUFFMUMsZUFBMEM7SUFBMUMsMkVBQTBDO0lBRTFDLGVBQTJDO0lBQTNDLDRFQUEyQzs7O0lBTy9ELDRCQUVvRTs7O0lBRGxFLHVEQUFnQyw4QkFBQSwyQ0FBQSxtRkFBQTtJQUFtRSxxREFBa0M7OztJQUV2SSw0QkFDb0o7OztJQURuRiwyQ0FBb0IsMkNBQUEsbUZBQUE7SUFDdEMscURBQWtDOzs7SUFDakYsNEJBQ3lLOzs7SUFEekcsdURBQWdDLDhCQUFBLDJDQUFBLG1GQUFBO0lBQzVCLHFEQUFrQzs7O0lBQ3RHLDRCQUN5STs7O0lBRHhFLDJDQUFvQiwyQ0FBQSxtRkFBQTtJQUNqRCxxREFBa0M7OztJQVZ4RSwrQkFDd0M7SUFDdEMsd0dBRW9FLDJGQUFBLDJGQUFBLDJGQUFBO0lBT3RFLGlCQUFNOzs7SUFWSixtRUFBcUM7SUFDakIsZUFBeUM7SUFBekMsMEVBQXlDO0lBR3pDLGVBQTBDO0lBQTFDLDJFQUEwQztJQUUxQyxlQUEwQztJQUExQywyRUFBMEM7SUFFMUMsZUFBMkM7SUFBM0MsNEVBQTJDOzs7SUFNakUsNEJBQ29POzs7SUFBbE8sdURBQWdDLDhCQUFBLDJDQUFBLHFDQUFBLCtHQUFBO0lBQW1FLHFEQUFrQzs7O0lBQ3ZJLDRCQUMrRzs7O0lBRDlDLDJDQUFvQiwyQ0FBQSxxQ0FBQTtJQUN0QyxxREFBa0M7OztJQUNqRiw0QkFDb0k7OztJQURwRSx1REFBZ0MsOEJBQUEsMkNBQUEscUNBQUE7SUFDNUIscURBQWtDOzs7SUFDdEcsNEJBQ3FHOzs7SUFEcEMsMkNBQW9CLDJDQUFBLHFDQUFBO0lBQ2hELHFEQUFrQzs7O0lBVHZFLCtCQUNzQztJQUN0Qyx3R0FDb08sMkZBQUEsMkZBQUEsMkZBQUE7SUFPdE8saUJBQU07OztJQVRKLG1FQUFxQztJQUNqQixlQUF5QztJQUF6QywwRUFBeUM7SUFFekMsZUFBMEM7SUFBMUMsMkVBQTBDO0lBRTFDLGVBQTBDO0lBQTFDLDJFQUEwQztJQUUxQyxlQUEyQztJQUEzQyw0RUFBMkM7OztJQUlqRSwyQkFFbUcsY0FBQTtJQUU3Riw0QkFBOEw7SUFDaE0saUJBQU0sRUFBQTs7O0lBRkQsZUFBcUM7SUFBckMsbUVBQXFDO0lBQ3JCLGVBQWdDO0lBQWhDLHNEQUFnQyw2QkFBQSwwQ0FBQTtJQUFzQixvREFBa0Msc0NBQUE7OztJQUcvRywyQkFFOEYsY0FBQTtJQUU1Riw0QkFBK0w7SUFDak0saUJBQU0sRUFBQTs7O0lBRkQsZUFBcUM7SUFBckMsbUVBQXFDO0lBQ3BCLGVBQWdDO0lBQWhDLHNEQUFnQyw2QkFBQSwwQ0FBQTtJQUFzQixvREFBa0Msc0NBQUE7Ozs7SUFJOUcsK0JBQzRGO0lBQzFGLDRCQUEwTDtJQUM1TCxpQkFBTTs7O0lBRkosa0ZBQW1ELHNEQUFBO0lBQ2hDLGVBQW9CO0lBQXBCLDBDQUFvQiwwQ0FBQSxpRkFBQTtJQUE4QyxvREFBa0M7Ozs7SUFJdkgsdUNBRXNJO0lBQTFFLDBOQUFVLGVBQUEsb0NBQTJCLENBQUEsSUFBQzs7SUFDbEcsaUJBQWM7OztJQUh1QyxnREFBeUIsMkNBQUEsd0dBQUE7SUFFcUIscURBQWtDOzs7SUFIdkksMkJBQTRGO0lBQzFGLHFIQUdjO0lBQ2hCLGlCQUFNOzs7SUFGRCxlQUF1RDtJQUF2RCwwRkFBdUQ7Ozs7SUFJMUQsdUNBRXNJO0lBQTFFLDBOQUFVLGVBQUEsb0NBQTJCLENBQUEsSUFBQzs7SUFDbEcsaUJBQWM7OztJQUh1QyxnREFBeUIsMkNBQUEsd0dBQUE7SUFFcUIscURBQWtDOzs7SUFIdkksMkJBQTBGO0lBQ3hGLHFIQUdjO0lBQ2hCLGlCQUFNOzs7SUFGRCxlQUF1RDtJQUF2RCwwRkFBdUQ7OztJQVN0RCw0QkFBdUI7SUFDdkIsNkJBQTBDO0lBQUEsWUFBOEM7O0lBQUEsaUJBQUk7SUFDNUYsOEJBQThCLGFBQUE7SUFDd0IsWUFBK0M7O0lBQUEsaUJBQUs7SUFDdEcsOEJBQWtEO0lBQUEsWUFBK0M7O0lBQUEsaUJBQUs7SUFDdEcsK0JBQWtEO0lBQUEsYUFBNEM7O0lBQUEsaUJBQUs7SUFDbkcsK0JBQWtEO0lBQUEsYUFBcUQ7O0lBQUEsMEJBQUc7SUFBQSw4QkFBaUI7SUFBQSxpQkFBSSxFQUFBO0lBQy9ILCtCQUFrRDtJQUFBLGFBQStDOztJQUFBLGlCQUFLLEVBQUE7SUFFMUcsNkJBQXVCO0lBQ3ZCLDhCQUEwQztJQUFBLGFBQW1EOztJQUFBLGlCQUFJO0lBQ2pHLCtCQUE4QixjQUFBO0lBQ3NCLGFBQTZEOztJQUFBLGlCQUFLO0lBQ3BILCtCQUFrRDtJQUFBLGFBQTREOztJQUFBLGlCQUFLO0lBQ25ILCtCQUFrRDtJQUFBLGFBQTJEOztJQUFBLGlCQUFLLEVBQUE7O0lBYjFFLGVBQThDO0lBQTlDLDJFQUE4QztJQUVsQyxlQUErQztJQUEvQyw0RUFBK0M7SUFDL0MsZUFBK0M7SUFBL0MsNkVBQStDO0lBQy9DLGVBQTRDO0lBQTVDLDBFQUE0QztJQUM1QyxlQUFxRDtJQUFyRCw0RkFBcUQ7SUFDckQsZUFBK0M7SUFBL0MsNkVBQStDO0lBRzNELGVBQW1EO0lBQW5ELGlGQUFtRDtJQUV6QyxlQUE2RDtJQUE3RCwyRkFBNkQ7SUFDN0QsZUFBNEQ7SUFBNUQsMEZBQTREO0lBQzVELGVBQTJEO0lBQTNELHlGQUEyRDs7O0lBbkJySCwyQkFBMkUscUJBQUE7Ozs7O0lBSXpFLHVIQWlCYztJQUNkLGlCQUFhLEVBQUE7OztJQXJCZ0gsZUFBa0Q7SUFBbEQsbUZBQWtEO0lBQy9LLHVGQUFzRDtJQUFDLHNGQUFvRDtJQUFDLHdGQUFzRDtJQUR0SiwrQ0FBeUIsMENBQUEsb0JBQUEseUNBQUEscUNBQUE7OztJQXdCdkMsMkJBQTZFO0lBQzNFLHdDQUVvQjtJQUN0QixpQkFBTTs7O0lBSGUsZUFBNEM7SUFBNUMsa0VBQTRDLDBDQUFBLDBDQUFBLHVDQUFBLGlEQUFBO0lBQzZDLG9EQUFrQzs7OztJQUtoSiwyQkFHbU8sY0FBQSxnQkFBQTtJQUcvTixrTUFBUSxlQUFBLG9DQUEyQixDQUFBLElBQUM7SUFEcEMsaUJBQzBJLEVBQUEsRUFBQTs7O0lBRnZJLGVBQXFDO0lBQXJDLG1FQUFxQztJQUNyQixlQUFvQjtJQUFwQiwwQ0FBb0IsMENBQUEsa0JBQUEsaUZBQUE7SUFBQyxvREFBa0Msc0NBQUE7Ozs7SUFLNUUsMkJBRytKLGNBQUEsZ0JBQUE7SUFFbkMsa01BQVEsZUFBQSxvQ0FBMkIsQ0FBQSxJQUFDO0lBQTVKLGlCQUFpTSxFQUFBLEVBQUE7OztJQUQ5TCxlQUFxQztJQUFyQyxtRUFBcUM7SUFDckIsZUFBb0I7SUFBcEIsMENBQW9CLDBDQUFBO0lBQUMsb0RBQWtDLHNDQUFBOzs7SUFNOUUsNEJBQ3lJOzs7SUFEdEgsMkNBQW9CLDJDQUFBLG1GQUFBO0lBQ0gscURBQWtDOzs7SUFDdEUsNEJBQ3FHOzs7SUFEbEYsMkNBQW9CLDJDQUFBLG1GQUFBO0lBQ3ZDLHFEQUFrQzs7O0lBSnBDLCtCQUE4RjtJQUM1Rix5R0FDeUksNEZBQUE7SUFHM0ksaUJBQU07OztJQUxrRCxtRUFBcUM7SUFDbEQsZUFBbUI7SUFBbkIsNENBQW1CO0lBRW5CLGVBQW9CO0lBQXBCLDZDQUFvQjs7O0lBUS9ELCtCQUFtRztJQUNqRyx1Q0FBMEc7O0lBQzVHLGlCQUFNOzs7SUFEYyxlQUFvRTtJQUFwRSxzR0FBb0U7OztJQXhMNUYsNkJBQXFDO0lBQ25DLCtCQUE4QztJQUM1Qyw4RkFTTSxpRkFBQSxnRkFBQSxnRkFBQSxnRkFBQSxnRkFBQSxnRkFBQSxnRkFBQSxrRkFBQSxrRkFBQSxrRkFBQSxrRkFBQSxrRkFBQSxtRkFBQSxrRkFBQSxrRkFBQTtJQXNKTiw0QkFBSztJQUNILCtGQU9NO0lBQ1IsaUJBQU07SUFFTiwrRkFLTSxtRkFBQTtJQVNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQXpMTCxlQUFnRztJQUFoRyxpSkFBZ0c7SUFXaEcsZUFBaUc7SUFBakcsa0pBQWlHO0lBWXBHLGVBQTJHO0lBQTNHLDRKQUEyRztJQVEzRyxlQUEyRztJQUEzRyw0SkFBMkc7SUFRM0csZUFBOEc7SUFBOUcsK0pBQThHO0lBTzlHLGVBQTZJO0lBQTdJLG1NQUE2STtJQWMxSSxlQUF5SDtJQUF6SCw4S0FBeUg7SUFhekgsZUFBdUg7SUFBdkgsNktBQXVIO0lBYTFILGVBQzBGO0lBRDFGLGlNQUMwRjtJQU01RixlQUN5RjtJQUR6RixnTUFDeUY7SUFNcEYsZUFBeUY7SUFBekYsOEhBQXlGO0lBS3pGLGVBQW9GO0lBQXBGLHlIQUFvRjtJQU1wRixlQUFrRjtJQUFsRix3SEFBa0Y7SUFPbEYsZUFBbUU7SUFBbkUsa0dBQW1FO0lBeUJuRSxlQUFxRTtJQUFyRSxvR0FBcUU7SUFReEUsZUFFNE47SUFGNU4sdWdCQUU0TjtJQVExTixlQUV3SjtJQUZ4SixpYkFFd0o7SUFPdkosZUFBZ0Q7SUFBaEQsK0VBQWdEO0lBVzFCLGVBQTBCO0lBQTFCLGtEQUEwQjs7O0lBYXBELGlDQUEyRDtJQUFBLFlBQXdCO0lBQUEsaUJBQVE7OztJQUFoQyxlQUF3QjtJQUF4QixtREFBd0I7OztJQU52RiwrQkFBc0U7SUFDcEUsK0JBRThFO0lBQzlFLDJCQUFLO0lBRUgsd0dBQTJGO0lBQzdGLGlCQUFNLEVBQUE7OztJQVBILHFFQUFxQztJQUM5QixlQUFvQjtJQUFwQiwyQ0FBb0IsMkNBQUEsMENBQUEsV0FBQSxZQUFBLG1GQUFBO0lBQzRCLHFEQUFrQztJQUkzRCxlQUEwQjtJQUExQixvREFBMEI7OztJQVN6RCxpQ0FBMkQ7SUFBQSxZQUF3QjtJQUFBLGlCQUFROzs7SUFBaEMsZUFBd0I7SUFBeEIsbURBQXdCOzs7SUFMdkYsK0JBQXVFO0lBQ3JFLCtCQUM2SDtJQUM3SCwyQkFBSztJQUVILHdHQUEyRjtJQUM3RixpQkFBTSxFQUFBOzs7SUFOSCxxRUFBcUM7SUFDOUIsZUFBb0I7SUFBcEIsMkNBQW9CLDJDQUFBLFdBQUEsWUFBQSxtRkFBQTtJQUNoQixxREFBa0M7SUFHZixlQUEwQjtJQUExQixvREFBMEI7OztJQWhCL0QsNkJBQXdDO0lBQ3RDLDZGQVFNLGdGQUFBO0lBVVIsMEJBQWU7OztJQWxCK0IsZUFBd0I7SUFBeEIsZ0RBQXdCO0lBVXhCLGVBQXlCO0lBQXpCLGlEQUF5Qjs7O0lBaUI3RCwyQkFBSyxVQUFBO0lBQ0UsWUFBYztJQUFBLGlCQUFNLEVBQUE7OztJQUFwQixlQUFjO0lBQWQscUNBQWM7Ozs7SUFMekIsMENBRStGO0lBRDdGLHlPQUFrQixlQUFBLCtDQUE0QixDQUFBLElBQUMsZ05BQ1gsZUFBQSxpREFBOEIsQ0FBQSxJQURuQjtJQUUvQywrSEFJYztJQUNoQixpQkFBaUI7OztJQVJhLHdEQUFpQyxzQ0FBQSxrQkFBQSx3QkFBQSx5QkFBQTs7O0lBYWpFLCtCQUFtRztJQUNqRyx1Q0FBMEc7O0lBRTVHLGlCQUFNOzs7SUFGYyxlQUFvRTtJQUFwRSx3R0FBb0U7Ozs7SUFqQjVGLDZCQUF5QztJQUN2QywrQkFBOEMsY0FBQTtJQUUxQyxvSEFRaUI7SUFDakIsd0NBRTZCO0lBRDdCLHlNQUFZLGVBQUEsaURBQThCLENBQUEsSUFBQywwTEFBdUMsZUFBQSwrQ0FBNEIsQ0FBQSxJQUFuRTtJQUNkLGlCQUFlLEVBQUE7SUFFOUMsOEZBR007SUFDUixpQkFBTTtJQUNSLDBCQUFlOzs7SUFuQk4sZUFBcUM7SUFBckMsbUVBQXFDO0lBQ3ZCLGVBQVc7SUFBWCw0QkFBVztJQVNkLGVBQXdCO0lBQXhCLDhDQUF3QiwwQ0FBQSwyQkFBQSxrQ0FBQSxxQ0FBQTtJQUlaLGVBQTBCO0lBQTFCLG1EQUEwQjs7O0lBcUJsRCwyQkFBbUM7SUFDakMsdUNBQTBHOztJQUM1RyxpQkFBTTs7O0lBRGMsZUFBb0U7SUFBcEUsd0dBQW9FOzs7OztJQVoxRiwrQkFBK0UsY0FBQSx5QkFBQTtJQUdyRCw0TkFBaUIsZUFBQSxzREFBbUMsQ0FBQSxJQUFDLCtMQUM3RCxlQUFBLDhDQUE0QixDQUFBLElBRGlDO0lBTXBFLGlCQUFpQixFQUFBO0lBRTFCLG1HQUVNO0lBQ1IsaUJBQU07OztJQWJDLGVBQXFDO0lBQXJDLHFFQUFxQztJQUN4QixlQUE0QjtJQUE1QixtREFBNEIsMkNBQUEseVpBQUE7SUFTeEMsZUFBMEI7SUFBMUIsb0RBQTBCOzs7O0lBVWhDLHFDQUErSTtJQUEzQyxxUUFBZSxrTUFBWSxlQUFBLHVCQUFjLENBQUEsSUFBMUI7SUFBNEIsaUJBQVc7OztJQUF0SCxvREFBNkIsMkNBQUEsdUJBQUE7OztJQUNqRSwrQkFBbUc7SUFDakcsdUNBQTBHOztJQUM1RyxpQkFBTTs7O0lBRGMsZUFBb0U7SUFBcEUsd0dBQW9FOzs7O0lBUDFGLDJCQUE2RCxjQUFBLHlCQUFBO0lBR25DLDROQUFpQixlQUFBLDZEQUEwQyxDQUFBLElBQUM7SUFBQyxpQkFBaUIsRUFBQTtJQUV0Ryw4R0FBMEosdUZBQUE7SUFJOUosaUJBQU07OztJQVJHLGVBQXFDO0lBQXJDLHFFQUFxQztJQUN4QixlQUE0QjtJQUE1QixtREFBNEIsMkNBQUE7SUFHbkMsZUFBdUI7SUFBdkIsaURBQXVCO0lBQ04sZUFBMEI7SUFBMUIsb0RBQTBCOzs7SUF6QjlELDZCQUEyQztJQUV6QywrQkFBdUI7SUFDbkIsOEZBY00sZ0ZBQUE7SUFZVixpQkFBTTtJQUNSLDBCQUFlOzs7SUEzQmdCLGVBQW9EO0lBQXBELHVGQUFvRDtJQWdCdkUsZUFBcUQ7SUFBckQsd0ZBQXFEOzs7SUFxQjdELCtCQUFtRztJQUNqRyx1Q0FBMEc7O0lBQzVHLGlCQUFNOzs7SUFEYyxlQUFvRTtJQUFwRSx3R0FBb0U7OztJQVQ1Riw2QkFBdUM7SUFDckMsK0JBQThDLGNBQUE7SUFFMUMscUNBR2lGO0lBQ25GLGlCQUFNO0lBQ04sOEZBRU07SUFDUixpQkFBTTtJQUNSLDBCQUFlOzs7SUFWTixlQUFxQztJQUFyQyxtRUFBcUM7SUFDekIsZUFBbUM7SUFBbkMsa0VBQW1DO0lBQWdCLCtDQUF5QixzQkFBQSx5QkFBQSx5QkFBQSw4REFBQSw2RUFBQSxxQ0FBQSxpRkFBQTtJQUtqRSxlQUEwQjtJQUExQixtREFBMEI7OztJQWN0RCwrQkFBbUc7SUFDakcsdUNBQTBHOztJQUM1RyxpQkFBTTs7O0lBRGMsZUFBb0U7SUFBcEUsd0dBQW9FOzs7SUFUNUYsNkJBQXdDO0lBQ3RDLCtCQUE4QyxjQUFBO0lBRTFDLHFDQUdpRjtJQUNuRixpQkFBTTtJQUNOLDhGQUVNO0lBQ1IsaUJBQU07SUFDUiwwQkFBZTs7O0lBVk4sZUFBcUM7SUFBckMsbUVBQXFDO0lBQ3pCLGVBQW1DO0lBQW5DLGtFQUFtQztJQUFnQiwrQ0FBeUIsc0JBQUEsd0JBQUEsd0JBQUEseUJBQUEseUJBQUEsOERBQUEsNkVBQUEscUNBQUEsaUZBQUE7SUFLakUsZUFBMEI7SUFBMUIsbURBQTBCOzs7SUFjdEQsK0JBQW1HO0lBQ2pHLHVDQUEwRzs7SUFDNUcsaUJBQU07OztJQURjLGVBQW9FO0lBQXBFLHdHQUFvRTs7O0lBVDVGLDZCQUF5QztJQUN2QywrQkFBOEMsY0FBQTtJQUUxQyxxQ0FHOEc7SUFDaEgsaUJBQU07SUFDTiw4RkFFTTtJQUNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQVZOLGVBQXFDO0lBQXJDLG1FQUFxQztJQUN6QixlQUFtQztJQUFuQyxrRUFBbUM7SUFBaUIsK0NBQXlCLHNCQUFBLHdCQUFBLHdCQUFBLHlCQUFBLHlCQUFBLDhEQUFBLDZFQUFBLHFDQUFBLGlGQUFBO0lBS2xFLGVBQTBCO0lBQTFCLG1EQUEwQjs7O0lBU2xELGtDQUU2SDs7OztJQUZqSCx3REFBaUMsNEJBQUEsMkJBQUEsK0RBQUEsNkRBQUE7SUFFZ0MscURBQWtDOzs7SUFFbkgsK0JBQW1HO0lBQ2pHLHVDQUEwRzs7SUFFNUcsaUJBQU07OztJQUZjLGVBQW9FO0lBQXBFLHdHQUFvRTs7O0lBUjVGLDZCQUF5QztJQUN2QywrQkFBOEMsZUFBQTtJQUV4Qyw2R0FFNkg7SUFDakksaUJBQU07SUFDTiw4RkFHTTtJQUNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQVZOLGVBQXFDO0lBQXJDLG1FQUFxQztJQUVLLGVBQW1CO0lBQW5CLGtEQUFtQjtJQUd0QyxlQUEwQjtJQUExQixtREFBMEI7OztJQVVsRCxrQ0FFNkg7Ozs7SUFGakgsd0RBQWlDLDRCQUFBLDJCQUFBLCtEQUFBLDZEQUFBO0lBRWdDLHFEQUFrQzs7O0lBRW5ILCtCQUFtRztJQUNqRyx1Q0FBMEc7O0lBRTVHLGlCQUFNOzs7SUFGYyxlQUFvRTtJQUFwRSx3R0FBb0U7OztJQVI1Riw2QkFBOEM7SUFDNUMsK0JBQThDLGNBQUE7SUFFeEMsNkdBRTZIO0lBQ2pJLGlCQUFNO0lBQ04sOEZBR007SUFDUixpQkFBTTtJQUNSLDBCQUFlOzs7SUFWTixlQUFxQztJQUFyQyxtRUFBcUM7SUFFSyxlQUFtQjtJQUFuQixrREFBbUI7SUFHdEMsZUFBMEI7SUFBMUIsbURBQTBCOzs7SUFhdEQsK0JBQW1HO0lBQ2pHLHVDQUEwRzs7SUFFNUcsaUJBQU07OztJQUZjLGVBQW9FO0lBQXBFLHdHQUFvRTs7O0lBUDVGLDZCQUFxRDtJQUNuRCwrQkFBOEMsY0FBQTtJQUUxQyxzQ0FDNkY7SUFDL0YsaUJBQU07SUFDTiw4RkFHTTtJQUNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQVROLGVBQXFDO0lBQXJDLG1FQUFxQztJQUNKLGVBQTRCO0lBQTVCLGtEQUE0QiwwQ0FBQSxtQkFBQTtJQUN2QixvREFBa0M7SUFFakQsZUFBMEI7SUFBMUIsbURBQTBCOzs7SUFhdEQsK0JBQW9HO0lBQ2xHLHVDQUEwRzs7SUFFNUcsaUJBQU07OztJQUZjLGVBQW9FO0lBQXBFLHdHQUFvRTs7O0lBUDVGLDZCQUErQztJQUM3QywrQkFBOEMsZUFBQTtJQUUxQyxrQ0FBNkg7SUFDN0gsa0NBQW9CO0lBQUEsWUFBa0I7SUFBQSxpQkFBUSxFQUFBO0lBRWhELCtGQUdNO0lBQ1IsaUJBQU07SUFDUiwwQkFBZTs7O0lBUmtDLGVBQWlDO0lBQWpDLHVEQUFpQztJQUFDLG9EQUFrQztJQUMzRixlQUFrQjtJQUFsQiw0Q0FBa0I7SUFFWixlQUEwQjtJQUExQixtREFBMEI7OztJQVd0RCxnQ0FBa0Y7SUFDaEYsdUNBQTBHOztJQUU1RyxpQkFBTTs7O0lBRmMsZUFBb0U7SUFBcEUsd0dBQW9FOzs7SUFMNUYsNkJBQW1EO0lBQ2pELCtCQUE4QyxZQUFBO0lBQ3JDLFlBQStDO0lBQUEsaUJBQVE7SUFDOUQsNkJBQTJGO0lBQzNGLCtGQUdNO0lBQ1IsaUJBQU07SUFDUiwwQkFBZTs7O0lBUEosZUFBK0M7SUFBL0MseUZBQStDO0lBQ2pDLGVBQWlDO0lBQWpDLHVEQUFpQztJQUFDLG9EQUFrQztJQUM3RCxlQUEwQjtJQUExQixtREFBMEI7OztJQVV0RCxnQ0FBa0Y7SUFDaEYsdUNBQTBHOztJQUM1RyxpQkFBTTs7O0lBRGMsZUFBb0U7SUFBcEUsd0dBQW9FOzs7SUFKNUYsNkJBQXNDO0lBQ3BDLCtCQUE4QyxZQUFBO0lBQ3JDLFlBQWtCO0lBQUEsaUJBQVE7SUFDakMsK0ZBRU07SUFDUixpQkFBTTtJQUNSLDBCQUFlOzs7SUFMSixlQUFrQjtJQUFsQiw0Q0FBa0I7SUFDRyxlQUEwQjtJQUExQixtREFBMEI7OztJQUsxRCw2QkFBbUQ7SUFDakQsK0JBQThDO0lBQzVDLHdDQUFrSzs7SUFDcEssaUJBQU07SUFDUiwwQkFBZTs7O0lBRk8sZUFBOEI7SUFBOUIsb0RBQThCLHlGQUFBLHdCQUFBOzs7SUFHcEQsNkJBQWdEO0lBQzlDLCtCQUE4QztJQUM1Qyx3Q0FBa007O0lBQ3BNLGlCQUFNO0lBQ1IsMEJBQWU7OztJQUZPLGVBQThCO0lBQTlCLG9EQUE4QiwwQ0FBQSx5RkFBQSx1QkFBQTs7O0lBR3BELDZCQUFpRDtJQUMvQywrQkFBOEM7SUFDNUMsd0NBQXFNOztJQUN2TSxpQkFBTTtJQUNSLDBCQUFlOzs7SUFGTyxlQUE4QjtJQUE5QixvREFBOEIsMENBQUEsNEZBQUEsdUJBQUE7OztJQVMxQyxvQ0FFd0Q7SUFDdEQsb0NBQ2U7SUFDakIsaUJBQVU7Ozs7SUFKUiw0Q0FBeUIsK0JBQUEsK0JBQUEsbUNBQUE7SUFFWCxlQUFvQjtJQUFwQix1Q0FBb0IsdUJBQUEsMkRBQUE7OztJQUp0Qyw2QkFBd0Q7SUFDdEQsc0hBS1U7SUFDWiwwQkFBZTs7OztJQU5ILGVBQThFO0lBQTlFLDBIQUE4RTs7O0lBWXhGLG9DQUVnQztJQUM5QixvQ0FDZTtJQUNqQixpQkFBVTs7OztJQUpSLDRDQUF5QiwrQkFBQSwrQkFBQSxtQ0FBQTtJQUVYLGVBQW9CO0lBQXBCLHVDQUFvQix1QkFBQSwyREFBQTs7O0lBSnRDLDZCQUF3RDtJQUN0RCxzSEFLVTtJQUNaLDBCQUFlOzs7O0lBTkgsZUFBOEU7SUFBOUUsMEhBQThFOzs7SUFqQmxHLGtDQUF5RDtJQUN2RCwrQkFBUyxjQUFBLGNBQUE7SUFHSCxpSEFPZTtJQUNqQixpQkFBVSxFQUFBO0lBRVosK0JBQVMsY0FBQTtJQUVMLGlIQU9lO0lBQ2pCLGlCQUFVLEVBQUEsRUFBQTtJQUdoQiwwQkFBZTs7O0lBdkIyQixlQUFvQjtJQUFwQixtREFBb0I7SUFZcEIsZUFBb0I7SUFBcEIsbURBQW9COzs7SUFjOUQsa0NBQTZFO0lBQUEsWUFBMkM7O0lBQUEsaUJBQVE7OztJQUFyRiwrQ0FBaUM7SUFBQyxlQUEyQztJQUEzQyxtRkFBMkM7OztJQUQxSCwrQkFBMEU7SUFDeEUsMEZBQWdJO0lBQ2xJLGlCQUFNOzs7SUFGRCxtRUFBcUM7SUFDaEIsZUFBaUI7SUFBakIsNENBQWlCOztBRHpjN0MsTUFBTSxPQUFPLDRCQUE0QjtJQTBEdkMsWUFDVSxHQUEyQixFQUM1QixPQUF3QixFQUN2QixTQUEyQixFQUM1QixpQkFBb0MsRUFDcEMsSUFBaUIsRUFDakIsYUFBNEIsRUFDM0IsTUFBcUIsRUFDdEIsZUFBZ0MsRUFDaEMsaUJBQXNDLEVBQ3JDLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLEVBQWdCO1FBWGhCLFFBQUcsR0FBSCxHQUFHLENBQXdCO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3JDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFjO1FBOURoQix5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUl2RSxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUU5QixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQU9wQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV2Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDNUMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQzVCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBR3hDLHNCQUFpQixHQUE4QixFQUFFLENBQUM7UUFFbEQsZUFBVSxHQUFTLElBQUksSUFBSSxDQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsRUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FDekIsQ0FBQztRQUNGLGVBQVUsR0FBUyxJQUFJLElBQUksQ0FDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEVBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQ3pCLENBQUM7SUF1QkMsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUMzQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksU0FBUyxHQUFZLEtBQUssQ0FBQztRQUMvQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxJQUFJLEdBQWEsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxTQUFTO2dCQUNQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNwQixTQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLFNBQVMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlEO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDcEIsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUQ7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixNQUFNLGlFQUFpRSxDQUFDO2FBQ3pFO1NBQ0Y7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsSUFBSSxJQUFJLEdBQWEsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxTQUFTO2dCQUNQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNwQixTQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLFNBQVMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlEO1lBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDcEIsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUQ7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixNQUFNLGlFQUFpRSxDQUFDO2FBQ3pFO1NBQ0Y7UUFFRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFjO1FBQ2xDLElBQUksVUFBb0IsQ0FBQztRQUN6QixJQUFJLGNBQXVCLENBQUM7UUFDNUIsSUFBSSxLQUFLLEdBQVcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO2FBQU07WUFDTCxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxRQUFRLEdBQVcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksUUFBUSxHQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdDQUF3QztRQUN0RyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDcEUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxJQUFJLG9CQUFvQixDQUFDO1lBRXpCLElBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSztnQkFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUN0RDtnQkFDQSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDM0Q7WUFFRCxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFDckQ7Z0JBQ0Esb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsSUFBSSxRQUFRLEtBQUssTUFBTSxJQUFJLGNBQWMsSUFBSSxvQkFBb0IsRUFBRTtnQkFDakUsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUNuRSxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBRXBFLElBQ0UsUUFBUSxJQUFJLE1BQU07Z0JBQ2xCLENBQUMsY0FBYztnQkFDZixvQkFBb0IsS0FBSyxRQUFRLEVBQ2pDO2dCQUNBLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUNFLFFBQVEsSUFBSSxNQUFNO2dCQUNsQixjQUFjO2dCQUNkLG9CQUFvQixJQUFJLFFBQVEsRUFDaEM7Z0JBQ0EsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLHdGQUF3RjtRQUN4RixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxFQUFDO1lBQ3hHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLG1CQUFtQixFQUFFO1lBQy9DLHFEQUFxRDtZQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQztJQUNILENBQUM7SUFDRCxrQ0FBa0M7SUFDbEMsK0JBQStCO0lBQy9CLElBQUk7SUFFSixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNDLHlDQUF5QztTQUMxQztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFDLHdDQUF3QztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2Qsb0RBQW9EO1FBQ3BELElBQ0UsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLO1lBQzNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSztZQUMzQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDcEI7U0FDRDthQUFNO1lBQ0wsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzdDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM3QyxzREFBc0Q7WUFDdEQsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBRyxXQUFXLElBQUksSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDM0UsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDSixJQUFHLENBQUMsSUFBRSxJQUFJLEVBQUM7d0JBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQzlDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLFFBQVEsRUFBRTs0QkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7eUJBQ2xDO3dCQUNELCtEQUErRDs2QkFDM0Q7NEJBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7eUJBQ2xDO3FCQUNGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7cUJBQ2pDO2dCQUNILENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNOLElBQUcsR0FBRyxDQUFDLFNBQVMsS0FBRyxLQUFLLEVBQUM7cUJBRTFCO3lCQUFJO3dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUM3QjtnQkFFRCxDQUFDLENBQ0YsQ0FBQzthQUNIO1NBRUY7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxpQkFBaUI7aUJBQ25CLG9CQUFvQixFQUFFO2lCQUN0QixTQUFTLENBQUMsQ0FBQyxHQUEyQixFQUFFLEVBQUU7Z0JBQ3pDLElBQUksR0FBRyxDQUFDLHFCQUFxQixLQUFLLEdBQUcsRUFBRTtvQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUNsRCxDQUFDLE9BQXdCLEVBQUUsRUFBRTt3QkFDM0IsT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUN2RSxDQUFDLENBQ0YsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDdkQsSUFBSSxFQUFFLENBQUMsSUFBK0IsRUFBRyxFQUFFO29CQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksVUFBVSxFQUFFO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYTtZQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1QsT0FBTyxVQUFVLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFDakM7WUFDQSxJQUFJLFdBQVcsR0FBcUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNULElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2lCQUN0QztnQkFDRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztpQkFDdEM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRTtZQUN0QyxJQUFJLFdBQVcsR0FBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNULElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtnQkFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFDRCxTQUFTLENBQUMsT0FBZSxFQUFFLElBQVk7UUFDckMsSUFBSSxPQUFPLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUM3QixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxPQUFPLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRTtZQUM3QixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFeEQsSUFBSSxRQUFRLEdBQUc7WUFDYixjQUFjLEVBQUUsT0FBTztTQUN4QixDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFHO1lBQ2IsY0FBYyxFQUFFLEdBQUc7U0FDcEIsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlDLElBQ0UsTUFBTSxLQUFLLFlBQVk7WUFDdkIsT0FBTyxLQUFLLFlBQVk7WUFDeEIsYUFBYSxLQUFLLFlBQVk7WUFDOUIsb0JBQW9CLEtBQUssWUFBWTtZQUNyQyxDQUFDLFFBQVEsS0FBSyxZQUFZO2dCQUN4QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksY0FBYztnQkFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDO1lBQzVDLG9CQUFvQixLQUFLLFlBQVksRUFDckM7WUFDQSxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVE7WUFDdkQsQ0FDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUMvQztRQUNELG1EQUFtRDtVQUNuRDtZQUNBLHdEQUF3RDtZQUN4RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7U0FDeEM7UUFDRCxJQUNFLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ2xCLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUztZQUN4RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDN0MsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLFNBQVMsRUFBRTtvQkFDYixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7d0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDckQsT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUM7cUJBQ25CO3lCQUFNO3dCQUNMLE9BQU8sR0FBRyxFQUFFLENBQUM7cUJBQ2Q7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU87WUFDdEQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQ2pEO1lBQ0EscURBQXFEO1lBQ3JELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUVyQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xDLHVEQUF1RDtnQkFDdkQsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTt3QkFDOUIsdURBQXVEO3dCQUN2RCxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDckQsU0FBUyxHQUFHLEtBQUssQ0FBQztxQkFDbkI7eUJBQU07d0JBQ0wsT0FBTyxHQUFHLEVBQUUsQ0FBQztxQkFDZDtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFDRCxJQUNFLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ2xCLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsZUFBZTtZQUM5RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1lBQ3pCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsbUVBQW1FO29CQUNuRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO3dCQUNuQyx3REFBd0Q7d0JBQ3hELE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUN6QixTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO3FCQUN0RDt5QkFBTTt3QkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDO3FCQUNkO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTO1lBQ3hELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNqRDtZQUNBLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7WUFDekIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLFNBQVMsRUFBRTtvQkFDYiwwREFBMEQ7b0JBQzFELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7d0JBQzdCLGdEQUFnRDt3QkFDaEQsT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3JELFNBQVMsR0FBRyxLQUFLLENBQUM7cUJBQ25CO3lCQUFNO3dCQUNMLE9BQU8sR0FBRyxFQUFFLENBQUM7cUJBQ2Q7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLG1CQUFtQjtZQUNsRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO1lBQ3pCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsNkRBQTZEO29CQUM3RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO3dCQUNuQyxrREFBa0Q7d0JBQ2xELE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNyRCxTQUFTLEdBQUcsS0FBSyxDQUFDO3FCQUNuQjt5QkFBTTt3QkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDO3FCQUNkO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVO1lBQ3pELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNqRDtZQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztTQUM1QztRQUVELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXO1lBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFDOUM7WUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxPQUFlLENBQUM7WUFDcEIsSUFBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBQztnQkFDM0MsT0FBTyxHQUFHLHdEQUF3RCxDQUFDO2FBQ3BFO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxnREFBZ0QsQ0FBQzthQUM1RDtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckQsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUNFLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ2xCLElBQUksQ0FBQyxJQUFJO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO2dCQUMzQyxFQUFFLDRCQUE0QjtZQUNoQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLG9CQUFvQjtZQUNuRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLG9CQUFvQjtZQUNuRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1NBQzVDO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtZQUNoRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDakQ7WUFDQSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxPQUFPLEdBQVcsaUNBQWlDLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUI7WUFDcEUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQ2pEO1lBQ0EsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU07Z0JBQzNDLEVBQUUseUJBQXlCO1lBQzdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNqRDtZQUNBLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQiw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JELE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFDRSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsSUFBSTtZQUNULENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CO2dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQzlDO1lBQ0EsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV0QixvQ0FBb0M7WUFDcEMsSUFBSSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQ2xDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQzdDLE9BQU8sR0FBRyxzQ0FBc0MsQ0FBQztpQkFDbEQ7cUJBQU07b0JBQ0wsT0FBTyxHQUFHLHFDQUFxQyxDQUFDO2lCQUNqRDtnQkFDRCxPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUVELElBQUksS0FBSyxFQUFFLG9CQUFvQixFQUFFO2dCQUMvQixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUM3QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsOEtBQThLLENBQUM7aUJBQy9NO3FCQUFNO29CQUNMLElBQUksQ0FBQyx1QkFBdUIsR0FBRywwSUFBMEksQ0FBQztpQkFDM0s7Z0JBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztnQkFDdkMsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFFRCxJQUFHLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ2xCLE9BQU8sR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLE9BQU8sT0FBTyxDQUFDO2FBQ2Q7U0FDRjtRQUVBLElBQ0MsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSx3QkFBd0I7O2dCQUV2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQzlDO1lBQ0EsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXRCLElBQUcsS0FBSyxFQUFFLHdCQUF3QixFQUFFO2dCQUNsQyxJQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFDO29CQUMzQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsaUdBQWlHLENBQUM7aUJBQ3RJO3FCQUFNO29CQUNMLElBQUksQ0FBQywyQkFBMkIsR0FBRyxxRUFBcUUsQ0FBQztpQkFDMUc7Z0JBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0MsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFFRCxJQUFHLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ2xCLE9BQU8sR0FBRyxVQUFVLENBQUM7Z0JBQ3ZCLE9BQU8sT0FBTyxDQUFDO2FBQ2Q7U0FDRjtRQUVELElBQ0UsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEIsSUFBSSxDQUFDLElBQUk7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTO1lBQ3hELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNqRDtZQUNBLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7WUFDekIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLFNBQVMsRUFBRTtvQkFDYixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7d0JBQ3pDLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNyRCxTQUFTLEdBQUcsS0FBSyxDQUFDO3FCQUNuQjt5QkFBTTt3QkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDO3FCQUNkO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELDREQUE0RDtRQUM1RCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWU7UUFDeEIsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUErQjtRQUNqRCxvREFBb0Q7SUFDdEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxZQUFxQjtRQUNsQyxrREFBa0Q7SUFDcEQsQ0FBQztJQUVELDZCQUE2QixDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtZQUN4RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNoQyxPQUFPO1NBQ1I7UUFDRCxnQ0FBZ0M7UUFDakMsd0RBQXdEO1FBQ3ZELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFakYsZUFBZTtRQUNmLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1lBRWhELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osNkJBQTZCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQzVFLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztnQkFDL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUssRUFBRSxPQUFzQjtRQUM5QyxJQUFHLE9BQU8sRUFBRSxJQUFJLEtBQUssaUJBQWlCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLEVBQUM7WUFDakYsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFeEIsSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssT0FBTyxFQUFFO1lBQzFELElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDOUMsSUFBSSxXQUFXLEdBQVcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQ2hDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLElBQUksZUFBZSxLQUFLLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDN0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDTixJQUFJLE1BQU0sR0FBK0IsR0FBRyxDQUFDO29CQUM3QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO3dCQUMxQixvREFBb0Q7d0JBQ3BELHdDQUF3Qzt3QkFDeEMsSUFDRSxNQUFNLENBQUMsaUJBQWlCOzRCQUN4QixNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBVzs0QkFDcEMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsS0FBSyxPQUFPLEVBQ2hEOzRCQUNBLElBQUkscUJBQXFCLEdBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUM7NEJBQzNDLElBQUksaUJBQWlCLEdBQ25CLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7NEJBQ3ZDLElBQUkscUJBQXFCLEtBQUssS0FBSyxFQUFFO2dDQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dDQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDMUQsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQ0FDUCxJQUFJLFdBQVcsR0FBZ0IsSUFBSSxDQUFDO29DQUNwQyxxREFBcUQ7b0NBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29DQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dDQUN6QixDQUFDLEVBQ0QsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQ0FDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29DQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUNoQixPQUFPLENBQUMsSUFBSSxDQUNiLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztvQ0FDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQy9CLENBQUMsQ0FDRixDQUFDOzZCQUNIO3lCQUNGO3dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7cUJBQ3hCO2dCQUNILENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixDQUFDLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQUk7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUMvQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFzQjtRQUN2QywwQ0FBMEM7UUFFMUMsSUFBSSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRXhCLElBQUksUUFBUSxHQUFVLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXhCLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLE9BQU8sRUFBRTtZQUMxRCxJQUFJLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLG1CQUFtQjtZQUNwRSxJQUFJLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTztZQUN0RCxJQUFJLFdBQVcsR0FBVyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsZ0NBQWdDO1lBQy9FLElBQUksa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1lBRXBELElBQUksZUFBZSxLQUFLLEtBQUssRUFBRTtnQkFDN0IsbUNBQW1DO2dCQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQ3BELENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztvQkFDeEIsMkJBQTJCO29CQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDdkMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4QixvSEFBb0g7d0JBQ3BILG9FQUFvRTt3QkFDcEUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekIsR0FBRztxQkFDSjtvQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqRSxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxDQUNGLENBQUM7YUFDSDtTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixxRUFBcUU7Z0JBQ3JFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUc7YUFDSjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBaUIsSUFBRyxDQUFDO0lBRXJDLG1EQUFtRDtJQUNuRCxRQUFRLENBQUMsT0FBc0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBRUQsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssT0FBTyxFQUFFO1lBQ25DLE9BQU87U0FDUjtRQUVELElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsbUJBQW1CO1FBQ3BFLElBQUksZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPO1FBQ3RELElBQUksV0FBVyxHQUFXLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDL0UsSUFBSSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFDcEQsSUFBSSxlQUFlLEdBQVksSUFBSSxDQUFDO1FBQ3BDLDJEQUEyRDtRQUMzRCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLElBQUksUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxJQUFJLFFBQVEsR0FBYSxFQUFFLENBQUM7WUFDNUIsSUFBSSxRQUFRLEdBQWEsRUFBRSxDQUFDO1lBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN4QywyQkFBMkI7Z0JBQzNCLGtFQUFrRTtnQkFDbEUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7b0JBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3REO3FCQUFNO29CQUNMLGVBQWUsR0FBRyxLQUFLLENBQUM7aUJBQ3pCO2FBQ0Y7WUFDRCwyRkFBMkY7WUFFM0YsSUFBSSxLQUFLLEdBQW9CLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUMzQixLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztZQUM1Qiw2RUFBNkU7WUFDN0UsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLElBQUksZUFBZSxLQUFLLE1BQU0sRUFBRTtvQkFDOUIsbUNBQW1DO29CQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUM1RCxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO3dCQUN2QixJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTs0QkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUN2Qzs0QkFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzs0QkFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7NEJBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7NEJBQzVDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDOzRCQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDL0Q7d0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMzRCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUNGLENBQUM7aUJBQ0g7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFzQjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxVQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQW9CLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzVELEtBQUssSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUN4QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDM0M7WUFDRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FDaEMsQ0FBQztZQUNGLHdIQUF3SDtZQUN4SCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDMUQsV0FBVyxFQUFFLE1BQU07YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBQ0QsSUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLEVBQ3BEO1lBQ0EsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDN0IsT0FBTztTQUNSO2FBQU07WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDcEU7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUNuRDtZQUNBLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQzlCO2FBQU07WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUN2QyxDQUFDLEVBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBTyxJQUFHLENBQUM7SUFFdEIsY0FBYyxDQUFDLEdBQVcsRUFBRSxZQUFpQjtRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFFRCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFcEIsSUFBSSxLQUFvQixDQUFDO1FBQ3pCLElBQUksTUFBdUIsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxHQUFHLFlBQVksQ0FBQztZQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3JCLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxLQUFLLEdBQUcsWUFBWSxDQUFDO1lBQ3JCLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksZ0JBQWdCLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFNO1FBQ1osT0FBTyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxZQUFZLEdBQVcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDbEQsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDN0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsWUFBWSxHQUFHLEdBQUcsQ0FBQzthQUN6QztZQUNELElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQzdELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLFlBQVksR0FBRyxHQUFHLENBQUM7YUFDekM7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFLO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQThCLElBQUksQ0FBQyxLQUFLLENBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM1QixDQUFDO1lBQ0YsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdEMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ3hFLElBQUksbUJBQW1CLEdBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUN0RCxRQUFRLENBQUMsbUJBQW1CLENBQzdCLENBQUM7WUFDRixtQkFBbUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7b0JBQ3ZCLEtBQUssRUFBRSxZQUFZO2lCQUNwQixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO2FBQ3REO1lBQ0QsSUFBSSxZQUFZLElBQUksYUFBYSxFQUFFO2dCQUNqQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25EO2lCQUFNO2dCQUNMLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNyQztZQUNELG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9DO1FBQzlDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQStCLElBQUksQ0FBQyxLQUFLLENBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM1QixDQUFDO1lBQ0YsSUFBSSxTQUFTLEdBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM1QyxRQUFRLENBQUMsc0JBQXNCLENBQ2hDLENBQUM7WUFDRixJQUFJLE9BQU8sR0FBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQzFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FDbkMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDakIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztnQkFDakIsYUFBYSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUI7Z0JBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQStCLElBQUksQ0FBQyxLQUFLLENBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM1QixDQUFDO1lBQ0YsSUFBSSxTQUFTLEdBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM1QyxRQUFRLENBQUMsc0JBQXNCLENBQ2hDLENBQUM7WUFDRixJQUFJLE9BQU8sR0FBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQzFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FDbkMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDakIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLEtBQUssRUFBRSxJQUFJO2dCQUNYLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsSUFBSTthQUNYLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFdBQVcsRUFBRSxZQUFZO1FBQzNDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQzlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFO2dCQUNwQyxNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDbEQsSUFBSSxVQUFVLEdBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEUsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNyRDtTQUNGO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDaEUsNEJBQTRCLENBQzdCLENBQUM7UUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBeUIsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFDO1lBQzNDLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxPQUFPLFVBQVUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsV0FBbUI7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs2RkF2d0NVLDRCQUE0QjtvRUFBNUIsNEJBQTRCOzs7Ozs7Ozs7Ozs7OztZQzdEekMsOEJBQStEO1lBQzdELHdGQW1CVyxnRUFBQSxnRUFBQSxnRUFBQSxnRUFBQSxrRUFBQSxnRUFBQSxnRUFBQTtZQXVFWCw4QkFBZ0M7WUFDOUIsbUdBMkxlLG9GQUFBLG9GQUFBLG9GQUFBLHFGQUFBLHFGQUFBLHFGQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBLG9GQUFBO1lBNk9qQixpQkFBTTtZQUNOLCtFQUVNO1lBQ1IsaUJBQU07O1lBeGdCRCxvQ0FBa0IsMkNBQUE7WUFDVixlQUFxQjtZQUFyQiwwQ0FBcUI7WUFvQlksZUFBNkI7WUFBN0Isa0RBQTZCO1lBT3RFLGVBQW1PO1lBQW5PLGdTQUFtTztZQU9uTyxlQUE4VDtZQUE5VCx1WUFBOFQ7WUFPOVQsZUFBNFA7WUFBNVAsNFRBQTRQO1lBTXpQLGVBQThHO1lBQTlHLG1KQUE4RztZQThCOUcsZUFBc0c7WUFBdEcsK0lBQXNHO1lBSXRHLGVBQTRCO1lBQTVCLG1EQUE0QjtZQVM3QixlQUEwQjtZQUExQiw0Q0FBMEI7WUFDZCxlQUFvQjtZQUFwQixxQ0FBb0I7WUE2THBCLGVBQXVCO1lBQXZCLHdDQUF1QjtZQXFCdkIsZUFBd0I7WUFBeEIseUNBQXdCO1lBdUJ4QixlQUEwQjtZQUExQiwyQ0FBMEI7WUFnQzFCLGVBQXNCO1lBQXRCLHVDQUFzQjtZQWN0QixlQUF1QjtZQUF2Qix3Q0FBdUI7WUFjdkIsZUFBd0I7WUFBeEIseUNBQXdCO1lBY3hCLGVBQXdCO1lBQXhCLHlDQUF3QjtZQWN4QixlQUE2QjtZQUE3Qiw4Q0FBNkI7WUFjN0IsZUFBb0M7WUFBcEMscURBQW9DO1lBYXBDLGVBQThCO1lBQTlCLCtDQUE4QjtZQWE5QixlQUFrQztZQUFsQyxtREFBa0M7WUFXbEMsZUFBcUI7WUFBckIsc0NBQXFCO1lBUXJCLGVBQWtDO1lBQWxDLG1EQUFrQztZQUtsQyxlQUErQjtZQUEvQixnREFBK0I7WUFLL0IsZUFBZ0M7WUFBaEMsaURBQWdDO1lBTWIsZUFBcUI7WUFBckIsc0NBQXFCO1lBNkJiLGVBQTRCO1lBQTVCLG1EQUE0QjttaEJEeGM3RCw0QkFBNEIscThDQUYzQixDQUFDLG1CQUFtQixDQUFDOztpRkFFdEIsNEJBQTRCO2NBUHhDLFNBQVM7MkJBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxPQUFPLGNBQ3BDLENBQUMsbUJBQW1CLENBQUM7bVhBR3hCLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVJLG9CQUFvQjtrQkFBN0IsTUFBTTtZQTBDZ0IsUUFBUTtrQkFBOUIsU0FBUzttQkFBQyxVQUFVO1lBQ0ksU0FBUztrQkFBakMsWUFBWTttQkFBQyxTQUFTO1lBQ00sY0FBYztrQkFBMUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFDTSxrQkFBa0I7a0JBQWxELFNBQVM7bUJBQUMsb0JBQW9CO1lBQ1AsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXOztrRkF0RFgsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRWxlbWVudHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VsZW1lbnRzTW9kZWwnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvS2V5VmFsdWVNb2RlbCc7XHJcbmltcG9ydCB7IFNlcnZpY2VBY3Rpb25SZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU2VydmljZUFjdGlvblJlc3BvbnNlTW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9WYWxpZGF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaG9pY2VzLCBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9xdWVzdGlvbi1jb250cm9sLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuL3F1ZXN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0xvYWRlck1vZGVsJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYW5rRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2JhbmstZGV0YWlscy9iYW5rLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW1wbG95ZXJEZXRhaWxTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCc7XHJcbmltcG9ydCB7IHJvd0V4cGFuc2lvblRyaWdnZXIgfSBmcm9tICcuLi8uLi9hbm5pbWF0aW9ucy9hcHAtYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRFbXBsb3llckdyaWRDb21wb25lbnQgfSBmcm9tICcuLi93ZWVrbHktY2VydC1lbXBsb3llci1ncmlkL3dlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydFdycHRFbXBsb3llckdyaWRDb21wb25lbnQgfSBmcm9tICcuLi93ZWVrbHktY2VydC13cnB0LWVtcGxveWVyLWdyaWQvd2Vla2x5LWNlcnQtd3JwdC1lbXBsb3llci1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XHJcbmltcG9ydCB7V2Vla2x5Q2VydFNlcnZpY2VWMn0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7UGFydGlhbEVtcGxveW1lbnRNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhcnRpYWxFbXBsb3ltZW50TW9kZWwnO1xyXG5pbXBvcnQge1BhcnRUaW1lRW1wbG95bWVudE1vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFydFRpbWVFbXBsb3ltZW50TW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBWYWx1ZUNoYW5nZUNvbXBvbmVudE1vZGVsIHtcclxuICBvcmlnaW5hbFZhbHVlQ29udHJvbDogc3RyaW5nO1xyXG4gIGZvcm1Db250cm9sVG9VcGRhdGU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIEVtcGxveWVyQWRkcmVzc1VwZGF0ZU1vZGVsIHtcclxuICBhZGRyZXNzRm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcbiAgZW1wbG95ZXJJZEZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluTWF4RGF0ZU1vZGVsIHtcclxuICBtaW5EYXRlS2V5OiBzdHJpbmc7XHJcbiAgbWF4RGF0ZUtleTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluTWF4VmFsdWVNb2RlbCB7XHJcbiAgbWluVmFsdWU6IHN0cmluZztcclxuICBtYXhWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGlua0NvbXBvbmVudE1vZGVsIHtcclxuICB1cmk6IHN0cmluZztcclxuICBleHRlcm5hbFVybDogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBhbmltYXRpb25zOiBbcm93RXhwYW5zaW9uVHJpZ2dlcl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVF1ZXN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBxdWVzdGlvbjogRWxlbWVudHNNb2RlbDtcclxuICBASW5wdXQoKSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGluZGV4TnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9yU2NyZWVuUXVlc3Rpb25uYWlyZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkeW5hbWljUGFyYW06IGFueTtcclxuICBASW5wdXQoKSBwb3RlbnRpYWxJc3N1ZUlkOiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkR5bmFtaWNQYXJhbVVwZGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZpbHRlclJlc3VsdDogYW55W107XHJcbiAgbWluRGF0ZTogRGF0ZTtcclxuICBsZWdhbEFjY2VwdGVkOiBib29sZWFuID0gbnVsbDtcclxuICBtYXhEYXRlOiBEYXRlO1xyXG4gIGluZGV4OiBudW1iZXIgPSAxO1xyXG4gIHJldHVybk1vZGVsID0gbmV3IFZhbGlkYXRpb25Nb2RlbCgpO1xyXG4gIGRpc3BsYXlQb3NpdGlvbjogYm9vbGVhbjtcclxuICBwb3NpdGlvbjogc3RyaW5nO1xyXG4gIHBvcFVwSGVhZGVyOiBzdHJpbmc7XHJcbiAgcG9wVXBUZXh0OiBzdHJpbmc7XHJcbiAgcG9wVXBZZXNBY3Rpb25MYWJlbDogc3RyaW5nO1xyXG4gIHBvcFVwTm9BY3Rpb25MYWJlbDogc3RyaW5nO1xyXG4gIG1hc2tDbGFzcyA9IHRydWU7XHJcbiAgc2hvd01pbkRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93TWF4RGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1pblZhbHVlID0gbnVsbDtcclxuICBtYXhWYWx1ZSA9IG51bGw7XHJcbiAgdG9EYXlEYXRlID0gbmV3IERhdGUoKTtcclxuICBjdXJyZW50Zmxvd2tleTogc3RyaW5nO1xyXG4gIHJlZ2lzdGVyQ2xhaW1hbnRGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNGaWVsZERpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBwYXJ0RW1wTW9kZWwgPSBuZXcgUGFydGlhbEVtcGxveW1lbnRNb2RlbCgpO1xyXG4gIGlzT3RwTW9kYWxFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzUmV0dXJuaW5nVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdjRW1wbG95ZXJWYWxpZGF0aW9uTXNnOiBzdHJpbmc7XHJcbiAgd3JwdFdjRW1wbG95ZXJWYWxpZGF0aW9uTXNnOiBzdHJpbmc7XHJcbiAgcGFydFRpbWVFbXBsb3llcnM6IFBhcnRUaW1lRW1wbG95bWVudE1vZGVsW10gPSBbXTtcclxuXHJcbiAgbWluRGF0ZURPQjogRGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0RnVsbFllYXIoKSAtIDEwMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG4gIG1heERhdGVET0I6IERhdGUgPSBuZXcgRGF0ZShcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldEZ1bGxZZWFyKCkgLSAxMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG5cclxuICBAVmlld0NoaWxkKCdiYW5rZHRscycpIGJhbmtkdGxzOiBCYW5rRGV0YWlsc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkcmVuKCdhZGRyZXNzJykgYWRkcmVzc2VzOiBRdWVyeUxpc3Q8QWRkcmVzc0NvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZCgnd2NFbXBsb3llckdyaWQnKSB3Y0VtcGxveWVyR3JpZDogV2Vla2x5Q2VydEVtcGxveWVyR3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd3Y1dycHRFbXBsb3llckdyaWQnKSB3Y1dycHRFbXBsb3llckdyaWQ6IFdlZWtseUNlcnRXcnB0RW1wbG95ZXJHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BDYWxlbmRhcicpIHBDYWxlbmRhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgbGlua0NvbXBvbmVudERhdGE6IExpbmtDb21wb25lbnRNb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHFjczogUXVlc3Rpb25Db250cm9sU2VydmljZSxcclxuICAgIHB1YmxpYyBzZXJ2aWNlOiBRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNsYWltYW50U2VydmljZTogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHdlZWtseWNlcnRTZXJ2aWNlOiBXZWVrbHlDZXJ0U2VydmljZVYyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBsczogTG9naW5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wQ2FsZW5kYXIpIHtcclxuICAgICAgdGhpcy5tb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZpc2libGVJZihzdHJFeHA6IHN0cmluZywgZWxlbWVudE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFzdHJFeHApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKHN0ckV4cC5pbmNsdWRlcygnJiYnKSkge1xyXG4gICAgICBsZXQgZXhwcjogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJyYmJyk7XHJcbiAgICAgIGlzVmlzaWJsZSA9XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclswXSkgJiZcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzFdKTtcclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDMpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsyXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDQpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclszXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID09IDUpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwcls0XSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID4gNSkge1xyXG4gICAgICAgIHRocm93IFwiQXBwVmFsaWRhdG9ycyA6IE1vcmUgdGhhbiA1ICcmJicgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdHJFeHAuaW5jbHVkZXMoJ3x8JykpIHtcclxuICAgICAgbGV0IGV4cHI6IHN0cmluZ1tdID0gc3RyRXhwLnNwbGl0KCd8fCcpO1xyXG4gICAgICBpc1Zpc2libGUgPVxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0pIHx8XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsxXSk7XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMl0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSA0KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbM10pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA9PSA1KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbNF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+IDUpIHtcclxuICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnfHwnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZShlbGVtZW50TmFtZSwgbnVsbCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVPcGVyYW5kVmFsdWUoc3RyRXhwOiBzdHJpbmcpIHtcclxuICAgIHZhciBzcGxpdEFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBpc0RvZXNOb3RFcXVhbDogYm9vbGVhbjtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gc3RyRXhwLmluZGV4T2YoJyE9Jyk7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHNwbGl0QXJyYXkgPSBzdHJFeHAuc3BsaXQoJz09Jyk7XHJcbiAgICAgIGlzRG9lc05vdEVxdWFsID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzcGxpdEFycmF5ID0gc3RyRXhwLnNwbGl0KCchPScpO1xyXG4gICAgICBpc0RvZXNOb3RFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgb3BlcmFuZDE6IHN0cmluZyA9IHNwbGl0QXJyYXlbMF07XHJcbiAgICBsZXQgb3BlcmFuZDI6IHN0cmluZyA9IHNwbGl0QXJyYXlbMV07XHJcbiAgICBvcGVyYW5kMSA9IG9wZXJhbmQxLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS50cmltKCk7IC8vY2xhaW1hbnRQcmlvclBheTEwMiBkaWZmbWFpbGFkZHJlc3MzMTVcclxuICAgIG9wZXJhbmQyID0gb3BlcmFuZDIucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRyaW0oKTsgLy9udWxsXHJcbiAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXSkge1xyXG4gICAgICB2YXIgdmFsdWVPZkNucnRybFRvQ2hlY2s7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZSAmJlxyXG4gICAgICAgIHR5cGVvZiB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlID09PSAnc3RyaW5nJ1xyXG4gICAgICApIHtcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9IHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlICYmXHJcbiAgICAgICAgdHlwZW9mIHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWUgIT0gJ3N0cmluZydcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmFsdWVPZkNucnRybFRvQ2hlY2sgPSB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlWyd2YWx1ZSddO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3BlcmFuZDIgPT09ICdudWxsJyAmJiBpc0RvZXNOb3RFcXVhbCAmJiB2YWx1ZU9mQ25ydHJsVG9DaGVjaykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcGVyYW5kMiA9PT0gJ251bGwnICYmICFpc0RvZXNOb3RFcXVhbCAmJiAhdmFsdWVPZkNucnRybFRvQ2hlY2spIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBvcGVyYW5kMiA9IG9wZXJhbmQyLnJlcGxhY2UoXCInXCIsICcnKS5yZXBsYWNlKFwiJ1wiLCAnJykudHJpbSgpOyAvL251bGxcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICAhaXNEb2VzTm90RXF1YWwgJiZcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9PT0gb3BlcmFuZDJcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICBpc0RvZXNOb3RFcXVhbCAmJlxyXG4gICAgICAgIHZhbHVlT2ZDbnJ0cmxUb0NoZWNrICE9IG9wZXJhbmQyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzIER5bmFtaWNGb3JtUXVlc3Rpb25Db21wb25lbnQgbmdPbkluaXQgY2FsbGVkJywgdGhpcy5xdWVzdGlvbilcclxuICAgIHRoaXMuZ2V0UGFydGlhbEVtcGxveW1lbnRJbmZvKCk7XHJcbiAgICB0aGlzLmdldFBhcnRUaW1lRW1wbG95ZXJzSW5mbygpO1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHQgPSB0aGlzLnF1ZXN0aW9uLmNob2ljZXM7XHJcbiAgICB0aGlzLnNldE1pbk1heERhdGUoKTtcclxuICAgIHRoaXMuc2V0TWluTWF4VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICB0aGlzLnNldExpbmtDb21wb25lbnREYXRhKCk7XHJcbiAgICBsZXQgY3VycmVudFFlcyA9IHRoaXMuc2VydmljZS5zZWFyY2hCcy5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50Zmxvd2tleSA9IGN1cnJlbnRRZXMuZmxvd0tleTtcclxuICAgIGlmKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGlzYWJsZUZpZWxkc09uU2lnbnVwJykgPT09ICd0cnVlJykgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmbG93S2V5XCIpID09ICczNDUnKXtcclxuICAgICAgdGhpcy5kaXNhYmxlRmllbGRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoZWNrRmxvd0tleSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRmbG93a2V5ID09PSAncmVnaXN0ZXItY2xhaW1hbnQnKSB7XHJcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiY3VycmVudGZsb3drZXkgXCIsdGhpcy5jdXJyZW50Zmxvd2tleSlcclxuICAgICAgcmV0dXJuICh0aGlzLnJlZ2lzdGVyQ2xhaW1hbnRGbGFnID0gdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RlckNsYWltYW50RmxhZztcclxuICAgIH1cclxuICB9XHJcbiAgLy8gcGhvbmVOdW1iZXJWZXJpZmllZCgpOiBib29sZWFue1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucGhvbmVWZXJpZmllZCxcclxuICAvLyB9XHJcblxyXG4gIGRpc2FibGVGaWVsZHMoKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja0Zsb3dLZXkoKSkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwaG9uZScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnZW1haWwnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdyZXNBZHJlc3MnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2RpZmZtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgICAgLy90aGlzLmZvcm0uZ2V0KCdtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZUZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCd1c2VybmFtZScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncmVzQWRyZXNzJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdkaWZmbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICAgIC8vdGhpcy5mb3JtLmdldCgnbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZVc2VyRXhpc3QoKSB7XHJcbiAgICAvLyBjb25zb2xlLmluZm8oXCJkb2IgXCIsIHRoaXMuZm9ybS5nZXQoXCJkb2JcIikudmFsdWUpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5mb3JtLmdldCgnc3NuJykudmFsdWUgJiZcclxuICAgICAgIXRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlICYmXHJcbiAgICAgICF0aGlzLmNoZWNrRmxvd0tleSgpXHJcbiAgICApIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzc25mcm9tdXNlciA9IHRoaXMuZm9ybS5nZXQoJ3NzbicpLnZhbHVlO1xyXG4gICAgICBsZXQgZGF0ZU9mYmlydGggPSB0aGlzLmZvcm0uZ2V0KCdkb2InKS52YWx1ZTtcclxuICAgICAgLy9jb25zb2xlLmluZm8oXCJ0ZXN0IHdpdGggc3NuZnJvbXVzZXIgXCIsIHNzbmZyb211c2VyKTtcclxuICAgICAgbGV0IGZvcm1hdGVkRCA9IGRhdGVPZmJpcnRoLnJlcGxhY2UoL1xcLy9nLFwiLVwiKTtcclxuICAgICAgaWYoZGF0ZU9mYmlydGggIT0gbnVsbCAmJiBzc25mcm9tdXNlciAhPSBudWxsKXtcclxuICAgICAgICB0aGlzLmNsYWltYW50U2VydmljZS5jaGVja0lmVXNlckFscmVhZHlFeGlzdChzc25mcm9tdXNlcixmb3JtYXRlZEQpLnN1YnNjcmliZShcclxuICAgICAgICAgICh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHghPW51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuc2V0VmFsdWUoeC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICBpZiAod2luZG93W1wiZW52XCJdW1wiZW52aXJvbm1lbnRcIl0gPT09IFwia3Nwcm9kXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvKipEZWxldGUgdGhlIGVsc2UgYmxvY2sgYWZ0ZXIgdGhlIHdvcmtzaGFyZSB0ZXN0aW5nIGlzIGRvbmUgKi9cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7IFxyXG4gICAgICAgICAgICBpZihlcnIuZXJyb3JDb2RlPT09XCI0MDRcIil7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcnRpYWxFbXBsb3ltZW50SW5mbygpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLm5hbWUgPT09ICd3b3JrUGVyZm9ybWVkJykge1xyXG4gICAgICB0aGlzLndlZWtseWNlcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldFBhcnRpYWxFbXBsb3ltZW50KClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFBhcnRpYWxFbXBsb3ltZW50TW9kZWwpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucGFydGlhbEVtcGxveW1lbnRGbGFnID09PSAnMScpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlW3RoaXMucXVlc3Rpb24ubmFtZV0gPSAnWSc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmFkZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgIT09ICdZJyA/IHsgd2NFbXBsb3llclZhbGlkYXRpb246IHRydWUgfSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIGdldFBhcnRUaW1lRW1wbG95ZXJzSW5mbygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLm5hbWUgPT09ICd3b3JrUGVyZm9ybWVkJykge1xyXG4gICAgICB0aGlzLndlZWtseWNlcnRTZXJ2aWNlLmdldFBhcnRUaW1lRW1wbG95bWVudCgpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGE6IFBhcnRUaW1lRW1wbG95bWVudE1vZGVsW10gKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBhcnRUaW1lRW1wbG95ZXJzID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlua0NvbXBvbmVudERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lID09ICdhcHAtbGluaycpIHtcclxuICAgICAgdGhpcy5saW5rQ29tcG9uZW50RGF0YSA9IHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkge1xyXG4gICAgbGV0IHBhcnNlZERhdGEgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgOiBudWxsO1xyXG4gICAgcmV0dXJuIHBhcnNlZERhdGE/LnNob3dMYWJlbCA9PSAnWSc7XHJcbiAgfVxyXG5cclxuICBzZXRNaW5NYXhWYWx1ZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbi50eXBlID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdkZWNpbWFsJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdjdXJyZW5jeSdcclxuICAgICkge1xyXG4gICAgICBsZXQgbWluTWF4TW9kZWw6IE1pbk1heFZhbHVlTW9kZWwgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgICAgaWYgKG1pbk1heE1vZGVsKSB7XHJcbiAgICAgICAgaWYgKG1pbk1heE1vZGVsLm1pblZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLm1pblZhbHVlID0gbWluTWF4TW9kZWwubWluVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtaW5NYXhNb2RlbC5tYXhWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9IG1pbk1heE1vZGVsLm1heFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWluTWF4RGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGxldCBtaW5NYXhNb2RlbDogTWluTWF4RGF0ZU1vZGVsID0gdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgICA6IG51bGw7XHJcbiAgICAgIGlmIChtaW5NYXhNb2RlbCAmJiAobWluTWF4TW9kZWwubWF4RGF0ZUtleSB8fCBtaW5NYXhNb2RlbC5taW5EYXRlS2V5KSkge1xyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYXJhbVttaW5NYXhNb2RlbC5taW5EYXRlS2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWluRGF0ZUtleV0sICdtaW4nKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01pbkRhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWF4RGF0ZUtleV0pIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VEYXRlKHRoaXMuZHluYW1pY1BhcmFtW21pbk1heE1vZGVsLm1heERhdGVLZXldLCAnbWF4Jyk7XHJcbiAgICAgICAgICB0aGlzLnNob3dNYXhEYXRlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24ubWluKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLnF1ZXN0aW9uLm1pbiwgJ21pbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWluRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLm1heCkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5xdWVzdGlvbi5tYXgsICdtYXgnKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01heERhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwYXJzZURhdGUoc3RyRGF0ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtYXgnKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtaW4nKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5taW5EYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoaW5kZW50OiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IHBhZGRpbmcgPSBpbmRlbnQgPD0gMSA/ICcwIHB4JyA6IGluZGVudCAqIDEwICsgJ3B4JztcclxuXHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdwYWRkaW5nLWxlZnQnOiBwYWRkaW5nLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW4obWFyZ2luOiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IG1hciA9IG1hcmdpbiArICdweCc7XHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdtYXJnaW4tcmlnaHQnOiBtYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkKCkge1xyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgbGV0IHF1ZXN0aW9uVHlwZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi50eXBlO1xyXG4gICAgaWYgKFxyXG4gICAgICAnaHRtbCcgPT09IHF1ZXN0aW9uVHlwZSB8fFxyXG4gICAgICAnbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgJ3NpbXBsZUxhYmVsJyA9PT0gcXVlc3Rpb25UeXBlIHx8XHJcbiAgICAgICdkaXNwbGF5dGV4dGFzbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgKCdidXR0b24nID09PSBxdWVzdGlvblR5cGUgJiZcclxuICAgICAgICAhdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtc2lnbi1zc24nICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtbGluaycpIHx8XHJcbiAgICAgICdsYWJlbC13aXRoLW92ZXJsYXknID09PSBxdWVzdGlvblR5cGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkICYmXHJcbiAgICAgIChcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQgXHJcbiAgICAgIClcclxuICAgICAgLy8gfHwgIXRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnZhbHVlXHJcbiAgICApIHtcclxuICAgICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb24ucmVxdWlyZWRFcnJvclRleHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1heGxlbmd0aCAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlcnJvcnM/Lm1heExlbmd0aCcsIHRoaXMucXVlc3Rpb24pO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnR5cGUgJywgdmFsaWRhdG9yLnR5cGUpO1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5tYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnBhdHRlcm4gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZXJyb3JzPy5wYXR0ZXJuJyx0aGlzLnF1ZXN0aW9uKVxyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcblxyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZSAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdyZWdleCcpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5kYXRlQ29tcGFyaXNpb24gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAvLyAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubWlubGVuZ3RoICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAndGV4dCcpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5wYXNzd29yZENvbXBhcmlzaW9uICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkSWYgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlKCk7ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5icEVtcGxyRmxhZyAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgbWVzc2FnZSA9ICdDb25maXJtYXIgbyBlbGltaW5hciBjYWRhIGVtcGxlYWRvcihlcykgcGFyYSBjb250aW51YXInO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1lc3NhZ2UgPSAnQ29uZmlybSBvciBEZWxldGUgZWFjaCBlbXBsb3llcihzKSB0byBjb250aW51ZSc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5zaW1wbGVDaGVja0JveFZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmNwYXRjaHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnVwbG9hZHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmJwRW1wbHJMZW5ndGhGbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnQWRkIHByZXZpb3VzIGVtcGxveW1lbnQgZGV0YWlscyc7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5hZGRyZXNzVmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgLy9sZXQgbWVzc2FnZTogc3RyaW5nID0gXCJQbGVhc2UgcHJvdmlkZSB2YWxpZCBhZGRyZXNzLlwiO1xyXG4gICAgICB0aGlzLmFkZHJlc3Nlcy5mb3JFYWNoKChhZGRyZXNzKSA9PiBhZGRyZXNzLnN1Ym1pdCgpKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5iYW5rRGV0YWlsc1ZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIC8vbGV0IG1lc3NhZ2U6IHN0cmluZyA9IFwiUGxlYXNlIHByb3ZpZGUgdmFsaWQgYmFuayBkZXRhaWxzLlwiO1xyXG4gICAgICB0aGlzLmJhbmtkdGxzPy5zdWJtaXQoKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ud2NFbXBsb3llclZhbGlkYXRpb24gfHxcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy53Y09uZUVtcGxveWVyVmFsaWRhdGlvbikgJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZFxyXG4gICAgKSB7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV07XHJcbiAgICAgIGNvbnN0IGVycm9yID0gY29udHJvbC5lcnJvcnM7ICAgICAgXHJcbiAgICAgIHRoaXMud2NFbXBsb3llckdyaWQ/LnN1Ym1pdCgpO1xyXG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblxyXG4gICAgICAvL1JlcXVpcmVkIChubyBlbXBsb3llcnMgdmFsaWRhdGlvbilcclxuICAgICAgaWYgKGVycm9yPy53Y09uZUVtcGxveWVyVmFsaWRhdGlvbikge1xyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpIHtcclxuICAgICAgICAgIG1lc3NhZ2UgPSAnRGViZSBpbmdyZXNhciBhbCBtZW5vcyB1biBlbXBsZWFkb3IuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbWVzc2FnZSA9ICdZb3UgbXVzdCBhZGQgYXQgbGVhc3Qgb25lIGVtcGxveWVyLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3I/LndjRW1wbG95ZXJWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIikge1xyXG4gICAgICAgICAgdGhpcy53Y0VtcGxveWVyVmFsaWRhdGlvbk1zZyA9ICdFbCDDumx0aW1vIGTDrWEgdHJhYmFqYWRvIHF1ZSBmaWd1cmEgZW4gc3Ugc29saWNpdHVkIGNvcnJlc3BvbmRlIGEgZXN0YSBzZW1hbmE7IHBvciBsbyB0YW50bywgZGViZSBzZWxlY2Npb25hciBcInPDrVwiIGVuIGxhIHByZWd1bnRhIFwiwr9SZWFsaXrDsyBhbGfDum4gdHJhYmFqbyBkdXJhbnRlIGxhIHNlbWFuYT9cIic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnVGhlIGxhc3QgZGF5IHdvcmtlZCByZXBvcnRlZCBvbiB5b3VyIGNsYWltIGZhbGxzIHdpdGhpbiB0aGlzIHdlZWssIHlvdSBtdXN0IHNlbGVjdCBcInllc1wiIGZvciBcIkRpZCB5b3UgcGVyZm9ybSBhbnkgd29yayBkdXJpbmcgdGhlIHdlZWs/XCInO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXNzYWdlID0gdGhpcy53Y0VtcGxveWVyVmFsaWRhdGlvbk1zZztcclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoZXJyb3I/LnJlcXVpcmVkKSB7XHJcbiAgICAgICAgbWVzc2FnZSA9IFwicmVxdWlyZWRcIjtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25cclxuICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5ICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWRcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdO1xyXG4gICAgICBjb25zdCBlcnJvciA9IGNvbnRyb2wuZXJyb3JzOyAgICAgIFxyXG4gICAgICB0aGlzLndjV3JwdEVtcGxveWVyR3JpZD8uc3VibWl0KCk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHJcbiAgICAgIGlmKGVycm9yPy53cnB0V2NFbXBsb3llclZhbGlkYXRpb24pIHtcclxuICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgdGhpcy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnTm8gc2UgcHVlZGUgc2VsZWNjaW9uYXIgbGEgb3BjacOzbiBkZSB0cmFiYWphciBhIHRpZW1wbyBwYXJjaWFsIHNpIG5vIGhhcyB0cmFiYWphZG8gZXN0YSBzZW1hbmEuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnV29ya2luZyBwYXJ0IHRpbWUgY2Fubm90IGJlIHNlbGVjdGVkIGlmIHlvdSBkaWQgbm90IHdvcmsgdGhpcyB3ZWVrLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLndycHRXY0VtcGxveWVyVmFsaWRhdGlvbk1zZztcclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoZXJyb3I/LnJlcXVpcmVkKSB7XHJcbiAgICAgICAgbWVzc2FnZSA9IFwicmVxdWlyZWRcIjtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm5vdEVxdWFscyAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2N1c3RvbXZhbGlkYXRpb24nKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnbWVzc2FnZSBmcm9tIHBhbmVsIG91dGVyLS0gJyxtZXNzYWdlKTtcclxuICAgIHJldHVybiBtZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRlZChhZ3JlZWQ6IGJvb2xlYW4pIHtcclxuICAgIC8vY29uc29sZS5sb2coJ29uQWNjZXB0ZWQgY2FsbGVkJyxhZ3JlZWQpO1xyXG4gICAgdGhpcy5sZWdhbEFjY2VwdGVkID0gYWdyZWVkO1xyXG4gIH1cclxuXHJcbiAgb25Db21wbGV0ZVJlcXVhbGlmeShyZXF1YWxpZnlEYXRhOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwib25Db21wbGV0ZVJlcXVhbGlmeVwiLCByZXF1YWxpZnlEYXRhKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZWxEaXNwbGF5KG1vZGVsRGlzcGxheTogYm9vbGVhbikge1xyXG4gICAgLy9jb25zb2xlLmxvZygnbW9kZWxEaXNwbGF5IGNhbGxlZCcsbW9kZWxEaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKGV2ZW50LCBmb3JtKSB7XHJcbiAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gZmFsc2U7XHJcbiAgICBpZiAoZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSA9PSBudWxsIHx8IGZvcm0udmFsdWUudmVyaWZpY2F0aW9uID09IG51bGwpIHtcclxuICAgICAgdGhpcy5pc090cE1vZGFsRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkZpZWxkcyBhcmUgbnVsbC5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIFJlbW92ZSBub24tbnVtZXJpYyBjaGFyYWN0ZXJzXHJcbiAgIC8vIGxldCB2YWxpZFBob25lID0gZm9ybS52YWx1ZS5waG9uZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgbGV0IHZhbGlkUGhvbmUgPSBmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlLnJlcGxhY2VBbGwoXCItXCIsXCJcIikucmVwbGFjZUFsbChcIiBcIixcIlwiKTtcclxuICAgICAgXHJcbiAgICAvLyBDb3VudCBkaWdpdHNcclxuICAgIGxldCBwaG9uZUxlbmd0aCA9IHZhbGlkUGhvbmUubGVuZ3RoO1xyXG4gICAgY29uc29sZS5sb2coXCJQaG9uZSBudW1iZXIgbGVuZ3RoXCIsIHBob25lTGVuZ3RoKTtcclxuICAgIGlmIChwaG9uZUxlbmd0aCAhPSAxMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlBob25lIG51bWJlciBtdXN0IGJlIG9mIGxlbmd0aCAxMFwiKVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1cclxuICAgIHRoaXMubHNcclxuICAgICAgLmdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUsIGV2ZW50Lm9wdGlvbi52YWx1ZSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuJyk7XHJcbiAgICAgICAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGdlbmVyYXRlIHRoZSBhdXRoZW50aWNhdGlvbiBPVFAgY29kZS4nKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTsgXHJcbiAgfVxyXG5cclxuICBvblJhZGlvT3B0aW9uQ2xpY2soZXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIGlmKGVsZW1lbnQ/Lm5hbWUgPT09IFwiZGlmZm1haWxhZGRyZXNzXCIgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmbG93S2V5XCIpID09ICczNDUnKXtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rpc2FibGVGaWVsZHNPblNpZ251cCcsICdmYWxzZScpO1xyXG4gICAgfVxyXG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUgJiYgZWxlbWVudC5zZXJ2aWNlVHlwZSA9PT0gJ0ZFVENIJykge1xyXG4gICAgICBsZXQgc2VydmljZUNhbGxUeXBlID0gZWxlbWVudC5zZXJ2aWNlQ2FsbFR5cGU7XHJcbiAgICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IGV2ZW50Lm9wdGlvbi52YWx1ZVxyXG4gICAgICAgID8geyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdzZWxlY3Rpb24nLCBldmVudC5vcHRpb24udmFsdWUpIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiBTZXJ2aWNlQWN0aW9uUmVzcG9uc2VNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgaWYgKHZhbHVlcy5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcy5zZXJ2aWNlVHlwZSk7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcyAmJlxyXG4gICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VUeXBlICYmXHJcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZVR5cGUgPT09ICdGRVRDSCdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGVJblRydWUgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZUNhbGxUeXBlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcnZpY2VOYW1lSW5UcnVlOiBzdHJpbmcgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZU5hbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VydmljZUNhbGxUeXBlSW5UcnVlID09PSAnR0VUJykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldChgJHtzZXJ2aWNlTmFtZUluVHJ1ZX1gKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2FkZXJNb2RlbDogTG9hZGVyTW9kZWwgPSByZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgdmFsdWUgZnJvbSBsb2FkZXIgPSBcIiwgbG9hZGVyTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKGxvYWRlck1vZGVsLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0/LnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50Lm5hbWVdPy5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbHVlcyhkYXRhKSB7XHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgbGV0IHZhbHVlVG9TZXQgPSBkYXRhW2tleV07XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVJbkZvcm1Db250cm9sKGtleSwgdmFsdWVUb1NldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlSW5Gb3JtQ29udHJvbChuYW1lLCB2YWx1ZSkge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gZm9ybSBjb250cm9sIHByZXNlbnQgd2l0aCBuYW1lICcsIG5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyVmFsdWUoZXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2VzLS0nLGNob2ljZXMpO1xyXG5cclxuICAgIGxldCBjaG9pY2VzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG5cclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICYmIGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdGRVRDSCcpIHtcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VDYWxsUGFyYW07IC8vc3NuMzIwLGxzdG5hbWUzMjBcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgICAgbGV0IHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBlbGVtZW50LnNlcnZpY2VOYW1lOyAvLy9zZWN1cml0eS1zZXJ2aWNlL3ZhbGlkYXRlU1NOL1xyXG4gICAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcblxyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgR0VUJyk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncmVzLS0nLCByZXMsICcgLSByZXNbMF0ubGVuZ3RoIC0nLCByZXMpO1xyXG4gICAgICAgICAgICBjaG9pY2VzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcbiAgICAgICAgICAgIC8vbGV0IGZpbHRlcmVkOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgY2hvaWNlID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2UgLSAnLCBjaG9pY2UsICdjaG9pY2UudGV4dC0tJywgY2hvaWNlLnRleHQsICdxdWVyeS50b0xvd2VyQ2FzZSgpJywgcXVlcnk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgIC8vaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2VbMF0pO1xyXG4gICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd0aGlzLmZpbHRlclJlc3VsdDEyMy0tJywgdGhpcy5maWx0ZXJSZXN1bHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNob2ljZXMgPSBlbGVtZW50LmNob2ljZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb3VudHJ5ID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAvL2lmIChjb3VudHJ5LnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNvdW50cnkpO1xyXG4gICAgICAgIC8vfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdChldmVudCwgY250cmxOYW1lOiBzdHJpbmcpIHt9XHJcblxyXG4gIC8vVGhpcyBzaG91ZCBiZSBzaW1pbGlyYSB0byBtZXRob2QgcHJlc2VudCBpbiBwYW5lbFxyXG4gIHZhbGlkYXRlKGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIGlmICghZWxlbWVudC5zZXJ2aWNlTmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlcnZpY2VUeXBlID0gZWxlbWVudC5zZXJ2aWNlVHlwZTtcclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlID09PSAnRkVUQ0gnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VydmljZUNhbGxQYXJhbSA9IGVsZW1lbnQuc2VydmljZUNhbGxQYXJhbTsgLy9zc24zMjAsbHN0bmFtZTMyMFxyXG4gICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTsgLy8vc2VjdXJpdHktc2VydmljZS92YWxpZGF0ZVNTTi9cclxuICAgIGxldCBzZXJ2aWNlVXBkYXRlUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VVcGRhdGVQYXJhbTtcclxuICAgIGxldCBhbGxWYWx1ZVByZXNlbnQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdzZXJ2aWNlQ2FsbFBhcmFtJyxzZXJ2aWNlQ2FsbFBhcmFtKTtcclxuICAgIGlmIChzZXJ2aWNlQ2FsbFBhcmFtKSB7XHJcbiAgICAgIHZhciBzcGxpdHRlZCA9IHNlcnZpY2VDYWxsUGFyYW0uc3BsaXQoJywnKTtcclxuICAgICAgbGV0IHZhbHVlQXJyOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgcGFyYW1BcnI6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXR0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvL3VzZSBpIGluc3RlYWQgb2YgMCBkb2IzMjBcclxuICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZG9iMzIwJyx0aGlzLmZvcm0uY29udHJvbHNbJ2RvYjMyMCddLnZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW3NwbGl0dGVkW2ldXS52YWx1ZSkge1xyXG4gICAgICAgICAgcGFyYW1BcnIucHVzaChzcGxpdHRlZFtpXSk7XHJcbiAgICAgICAgICB2YWx1ZUFyci5wdXNoKHRoaXMuZm9ybS5jb250cm9sc1tzcGxpdHRlZFtpXV0udmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhbGxWYWx1ZVByZXNlbnQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbHVlQXJyMTInLCB2YWx1ZUFyciwgJ3BhcmFtQXJyMTEgJywgcGFyYW1BcnIsICcgZWxlbWVudCcsIGVsZW1lbnQpO1xyXG5cclxuICAgICAgdmFyIG1vZGVsOiBWYWxpZGF0aW9uTW9kZWwgPSB7fTtcclxuICAgICAgbW9kZWwucGFyYW1OYW1lID0gcGFyYW1BcnI7XHJcbiAgICAgIG1vZGVsLnBhcmFtVmFsdWUgPSB2YWx1ZUFycjtcclxuICAgICAgLy8gcmV0dXJuIHRoaXMucG9zdChgcXVlc3Rpb25uYWlyZS9zY3JlZW4tcXVlc3Rpb25uYWlyZWAsIHF1ZXN0aW9ubmFpcmVEYXRhKTtcclxuICAgICAgaWYgKGFsbFZhbHVlUHJlc2VudCkge1xyXG4gICAgICAgIGlmIChzZXJ2aWNlQ2FsbFR5cGUgPT09ICdQT1NUJykge1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBHRVQnKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UucG9zdChgJHtzZXJ2aWNlTmFtZX1gLCBtb2RlbCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXR1cm5Nb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVybk1vZGVsLnJldHVyblR5cGUgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuTW9kZWwucmV0dXJuVHlwZSA9PT0gJ1BPUFVQJ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UG9zaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcEhlYWRlciA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBIZWFkZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcFVwVGV4dCA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBUZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcFllc0FjdGlvbkxhYmVsID0gdGhpcy5yZXR1cm5Nb2RlbC5wb3BVcFllc0J1dHRvbkxhYmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcE5vQWN0aW9uTGFiZWwgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwTm9CdXR0b25MYWJlbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3RoaXMucmV0dXJuTW9kZWwgJywgdGhpcy5yZXR1cm5Nb2RlbCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYmx1ckRPQihlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKGVsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGVja0lmVXNlckV4aXN0KCk7XHJcbiAgfVxyXG4gIGFjY2VwdCgpIHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBQYXJhbXNbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcikge1xyXG4gICAgICBsZXQgbW9kZWxBcnI6IEtleVZhbHVlTW9kZWxbXSA9IHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcjtcclxuICAgICAgZm9yICh2YXIgdmFsIG9mIG1vZGVsQXJyKSB7XHJcbiAgICAgICAgcGFyYW1BcnJheS5wdXNoKHsgW3ZhbC5rZXldOiB2YWwudmFsdWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1BcnJheS5yZWR1Y2UoKGFyck9iaiwgaXRlbSkgPT5cclxuICAgICAgICBPYmplY3QuYXNzaWduKGFyck9iaiwgaXRlbSwge30pXHJcbiAgICAgICk7XHJcbiAgICAgIC8vdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSwgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24sIHBhcmFtcywgdGhpcy5uYXZDb250cm9sbGVyKVxyXG4gICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24uc3Vic3RyaW5nKDAsIDQpICE9ICcvY3AvJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgICAgIHRoaXMuZGlzcGxheVBvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCAnX3NlbGYnKTtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgfVxyXG5cclxuICByZWplY3QoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbi5zdWJzdHJpbmcoMCwgNCkgIT0gJy9jcC8nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbl0pO1xyXG4gICAgICB0aGlzLmRpc3BsYXlQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luICsgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbiwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0Um9vdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKFxyXG4gICAgICAwLFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignLycsIDIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZShldjogYW55KSB7fVxyXG5cclxuICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgZHluYW1pY1BhcmFtOiBhbnkpIHtcclxuICAgIGlmICghZHluYW1pY1BhcmFtKSB7XHJcbiAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGR5bmFtaWNPYmogPSB7fTtcclxuXHJcbiAgICBsZXQgcGFyYW06IEtleVZhbHVlTW9kZWw7XHJcbiAgICBsZXQgcGFyYW1zOiBLZXlWYWx1ZU1vZGVsW107XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHluYW1pY1BhcmFtKSkge1xyXG4gICAgICBwYXJhbXMgPSBkeW5hbWljUGFyYW07XHJcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwcm0pID0+IHtcclxuICAgICAgICBkeW5hbWljT2JqW3BybS5rZXldID0gcHJtLnZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmFtID0gZHluYW1pY1BhcmFtO1xyXG4gICAgICBkeW5hbWljT2JqW3BhcmFtLmtleV0gPSBwYXJhbS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UoJ2VuJyk7XHJcbiAgICBsZXQgdHJhbnNsYXRlZFN0cmluZzogU3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXQoa2V5LCBrZXkpO1xyXG4gICAgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBPYmplY3QuYXNzaWduKGR5bmFtaWNPYmopKTtcclxuICAgIHJldHVybiB0cmFuc2xhdGVkU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dChvYmplY3QpIHtcclxuICAgIHJldHVybiBvYmplY3Q/LnRleHQgPyBvYmplY3Q/LnRleHQgOiBvYmplY3Q7XHJcbiAgfVxyXG5cclxuICB1bm1hc2soZXZlbnQpIHtcclxuICAgIHRoaXMubWFza0NsYXNzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtYXNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLm1hc2tDbGFzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkYXRlSW5wdXQoZXZlbnQpIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XHJcbiAgICBpZiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDIgJiYgY3VycmVudFZhbHVlLmNoYXJBdCgyKSAhPSAnLycpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyAnLyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPT0gNSAmJiBjdXJyZW50VmFsdWUuY2hhckF0KDUpICE9ICcvJykge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGN1cnJlbnRWYWx1ZSArICcvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JWYWx1ZUNoYW5nZShldmVudCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IFZhbHVlQ2hhbmdlQ29tcG9uZW50TW9kZWwgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgY3VycmVudFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoY29tcERhdGEub3JpZ2luYWxWYWx1ZUNvbnRyb2wpPy52YWx1ZTtcclxuICAgICAgbGV0IGZvcm1Db250cm9sVG9VcGRhdGU6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuZm9ybUNvbnRyb2xUb1VwZGF0ZVxyXG4gICAgICApO1xyXG4gICAgICBmb3JtQ29udHJvbFRvVXBkYXRlLnBhdGNoVmFsdWUoJ04nKTtcclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0gdGhpcy5keW5hbWljUGFyYW0gPyB0aGlzLmR5bmFtaWNQYXJhbSA6IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmR5bmFtaWNQYXJhbSkpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5wdXNoKHtcclxuICAgICAgICAgIGtleTogdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbVt0aGlzLnF1ZXN0aW9uLm5hbWVdID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT0gb3JpZ2luYWxWYWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUucGF0Y2hWYWx1ZSgnWScpO1xyXG4gICAgICAgIHRoaXMub25EeW5hbWljUGFyYW1VcGRhdGUuZW1pdCh0aGlzLmR5bmFtaWNQYXJhbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS5wYXRjaFZhbHVlKCdOJyk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFbXBsb3llcihlbXBsb3llcjogRW1wbG95ZXJEZXRhaWxTZWFyY2hSZXN1bHQpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpIHtcclxuICAgICAgbGV0IGNvbXBEYXRhOiBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBhZGRyZXNzRmM6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuYWRkcmVzc0Zvcm1Db250cm9sTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZW1wSWRGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5lbXBsb3llcklkRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGVtcElkRmMuc2V0VmFsdWUoZW1wbG95ZXIuZW1wbG95ZXJJZCA/IGVtcGxveWVyLmVtcGxveWVySWQgOiAnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBlbXBsb3llci5jb3VudHJ5LFxyXG4gICAgICAgIGNpdHk6IGVtcGxveWVyLmNpdHksXHJcbiAgICAgICAgemlwOiBlbXBsb3llci56aXAsXHJcbiAgICAgICAgc3RyZWV0QWRkcmVzczogZW1wbG95ZXIuYWRkcmVzc0Rpc3BsYXlWYWwsXHJcbiAgICAgICAgc3RhdGU6IGVtcGxveWVyLnN0YXRlLFxyXG4gICAgICAgIG9wdGlvbmFsQWRkcmVzczogbnVsbCxcclxuICAgICAgICBjb3VudHk6IG51bGwsXHJcbiAgICAgICAgdG93bjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEVtcGxveWVyKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IEVtcGxveWVyQWRkcmVzc1VwZGF0ZU1vZGVsID0gSlNPTi5wYXJzZShcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgKTtcclxuICAgICAgbGV0IGFkZHJlc3NGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5hZGRyZXNzRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBlbXBJZEZjOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KFxyXG4gICAgICAgIGNvbXBEYXRhLmVtcGxveWVySWRGb3JtQ29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgZW1wSWRGYy5zZXRWYWx1ZSgnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBudWxsLFxyXG4gICAgICAgIGNpdHk6IG51bGwsXHJcbiAgICAgICAgemlwOiBudWxsLFxyXG4gICAgICAgIHN0cmVldEFkZHJlc3M6IG51bGwsXHJcbiAgICAgICAgc3RhdGU6IG51bGwsXHJcbiAgICAgICAgb3B0aW9uYWxBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIGNvdW50eTogbnVsbCxcclxuICAgICAgICB0b3duOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZvcm1Db250cm9sVmFsdWUoZWxlbWVudE5hbWUsIGVsZW1lbnRWYWx1ZSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50TmFtZV0pIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnROYW1lXS5wYXRjaFZhbHVlKGVsZW1lbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLnR5cGUgPT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdmFyIGpzb25PYmplY3Q6IENob2ljZXMgPSBKU09OLnBhcnNlKGNob2ljZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoYykgPT4gYy52YWx1ZSA9PSBqc29uT2JqZWN0LnZhbHVlKVswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHRoaXMucXVlc3Rpb24ubmFtZSwgdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLnBDYWxlbmRhci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICdwLWNhbGVuZGFyIFthcmlhLWNvbnRyb2xzXSdcclxuICAgICk7XHJcbiAgICBpbnB1dEVsZW1lbnQuZm9yRWFjaCgoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnYXJpYS1jb250cm9scycsIHRoaXMucXVlc3Rpb24ubmFtZSk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKXtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHJldHVybiAncmVxdWVyaWRvJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAncmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SYWRpb0NoYW5nZShjb250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sTmFtZSk7XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtpZF09XCIncXVlc3Rpb24tZGl2LScgKyBxdWVzdGlvbi5uYW1lXCI+XHJcbiAgPHAtZGlhbG9nICpuZ0lmPVwiZGlzcGxheVBvc2l0aW9uXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5UG9zaXRpb25cIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxyXG4gICAgW21vZGFsXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieycxMjAwcHgnOiAnNjYwcHgnLCAnOTkycHgnOiAnNjYwcHgnLCAnNzY4cHgnOiAnNjYwcHgnLCAnNTc2cHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc0NXZ3J31cIlxyXG4gICAgW2Jhc2VaSW5kZXhdPVwiNTAwMFwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCIgY2xvc2VPbkVzY2FwZT1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG5cclxuICAgIDxoNCBjbGFzcz1cImhlYWRpbmcgaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICB7e3BvcFVwSGVhZGVyfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8cD57e3BvcFVwVGV4dH19XHJcbiAgICA8L3A+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAqbmdJZj1cInBvcFVwTm9BY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWplY3QoKVwiPlxyXG4gICAgICAgIHt7cG9wVXBOb0FjdGlvbkxhYmVsfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiICpuZ0lmPVwicG9wVXBZZXNBY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiYWNjZXB0KClcIj5cclxuICAgICAgICB7e3BvcFVwWWVzQWN0aW9uTGFiZWx9fVxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtZGlhbG9nPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICpuZ0lmPVwiIWZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uaW5kZW50PT09MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbicgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJ1wiPlxyXG4gICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmIHF1ZXN0aW9uLmRlc2NyaXB0aW9uICYmIHF1ZXN0aW9uLnR5cGUhPSdzaW1wbGVjaGVja2JveCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwtd2l0aC1vdmVybGF5J1wiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJxdWVzdGlvbi5uYW1lXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCJcclxuICAgICpuZ0lmPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2NvbXBvbmVudCcgfHwgKHF1ZXN0aW9uLmN1c3RvbVRhZz09J2NvbXBvbmVudCcgJiYgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkpKSAmJiBxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0naGlkZGVuJyAmJiAhcXVlc3Rpb24uZGVzY3JpcHRpb24gJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnXCI+XHJcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInF1ZXN0aW9uLm5hbWVcIj5cclxuICAgIDxzcGFuIFtpbm5lckh0bWxdPVwicXVlc3Rpb24udGl0bGUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmICFxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvbiAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsLXdpdGgtb3ZlcmxheSdcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiPlxyXG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi50aXRsZSB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCI+PC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnPT09J2NvbXBvbmVudCcgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvblwiPlxyXG4gICAgPGFwcC1lbXBsb3llci1ncmlkIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtXT1cImZvcm1cIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiXHJcbiAgICAgICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtZW1wbG95ZXItZ3JpZCdcIiAobW9kZWxEaXNwbGF5KT1cIm9uTW9kZWxEaXNwbGF5KCRldmVudClcIj48L2FwcC1lbXBsb3llci1ncmlkPlxyXG4gICAgPGFwcC1sZWdhbC1kaXNjbGFpbWFyICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtbGVnYWwtZGlzY2xhaW1hcidcIlxyXG4gICAgICBbY29tcG9uZW50RGF0YV09XCJxdWVzdGlvbi5jb21wb25lbnREYXRhXCIgKGFjY2VwdGVkKT1cIm9uQWNjZXB0ZWQoJGV2ZW50KVwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtXT1cImZvcm1cIj5cclxuICAgIDwvYXBwLWxlZ2FsLWRpc2NsYWltYXI+XHJcbiAgICA8bW9uZXktZXhwZWN0ICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdtb25leS1leHBlY3QnXCI+PC9tb25leS1leHBlY3Q+XHJcbiAgICA8YXBwLWNhcHRjaGEgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1jYXB0Y2hhJ1wiPjwvYXBwLWNhcHRjaGE+XHJcblxyXG4gICAgPGFwcC1maWxlLXVwbG9hZGVyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtZmlsZS11cGxvYWRlcidcIj5cclxuICAgIDwvYXBwLWZpbGUtdXBsb2FkZXI+XHJcbiAgICA8YXBwLWFkZHJlc3MgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Zyb21Qb3B1cF09XCJmYWxzZVwiIFtjb3VudHlSZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGRyZXNzJ1wiICNhZGRyZXNzIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZmxvd0tleV09XCJjdXJyZW50Zmxvd2tleVwiPiA8L2FwcC1hZGRyZXNzPlxyXG4gICAgPGFwcC1iYW5rLWRldGFpbHMgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1iYW5rLWRldGFpbHMnXCIgI2JhbmtkdGxzPlxyXG4gICAgPC9hcHAtYmFuay1kZXRhaWxzPlxyXG4gICAgPGFwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMnXCJcclxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtjb21wb25lbnREYXRhXT1cInF1ZXN0aW9uLmNvbXBvbmVudERhdGFcIiBbZm9ybV09XCJmb3JtXCIgPlxyXG4gICAgPC9hcHAtcmVxdWFsaWZ5LWxpZnQtcHJldmlvdXMtaXNzdWVzPiBcclxuICAgIDxhcHAtZGVwZW5kZW50LWdyaWQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1kZXBlbmRlbnQtZ3JpZCdcIj48L2FwcC1kZXBlbmRlbnQtZ3JpZD5cclxuICAgIDxhcHAtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZCAjd2NFbXBsb3llckdyaWQgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybV09XCJmb3JtXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC13ZWVrbHktY2VydC1lbXBsb3llci1ncmlkJ1wiPjwvYXBwLXdlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQ+XHJcbiAgICA8YXBwLXdycHQtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZCAjd2NXcnB0RW1wbG95ZXJHcmlkIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1dPVwiZm9ybVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtd3JwdC13ZWVrbHktY2VydC1lbXBsb3llci1ncmlkJ1wiPjwvYXBwLXdycHQtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZD5cclxuICAgIDxhcHAtc2VhcmNoLWVtcGxveWVyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIGVtcFR5cGU9XCJSRUdcIiAob25Gb3VuZCk9XCJzZXRFbXBsb3llcigkZXZlbnQpXCIgXHJcbiAgICAob25FbXB0eSk9XCJyZXNldEVtcGxveWVyKClcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNlYXJjaC1lbXBsb3llcidcIj48L2FwcC1zZWFyY2gtZW1wbG95ZXI+XHJcbiAgICA8YXBwLWFkZC1wYXJ0aWNpcGFudCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWFkZC1wYXJ0aWNpcGFudCdcIj4gPC9hcHAtYWRkLXBhcnRpY2lwYW50PlxyXG4gICAgPGFwcC1hZGQtcGF5bWVudCBbcG90ZW50aWFsSXNzdWVJZF09XCJwb3RlbnRpYWxJc3N1ZUlkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGQtcGF5bWVudCdcIj48L2FwcC1hZGQtcGF5bWVudD5cclxuICAgIDxhcHAtbGluayBbaXNSZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1saW5rJ1wiIFt0ZXh0XT1cImxpbmtDb21wb25lbnREYXRhPy50ZXh0XCIgW3VyaV09XCJsaW5rQ29tcG9uZW50RGF0YT8udXJpXCIgW2V4dGVybmFsVXJsXT1cImxpbmtDb21wb25lbnREYXRhPy5leHRlcm5hbFVybFwiPjwvYXBwLWxpbms+XHJcbiAgICA8YXBwLXNpZ24tc3NuIFtpc1JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNpZ24tc3NuJ1wiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIj48L2FwcC1zaWduLXNzbj5cclxuICAgIDxhcHAtam9iLXRpdGxlIFtjb250cm9sXT1cImZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV1cIiAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1qb2ItdGl0bGUnXCIgI2pvYlRpdGxlPiA8L2FwcC1qb2ItdGl0bGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbmRlbnQhPTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbidcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT09J2h0bWwnXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgPGRpdiAgW2lubmVySFRNTF09XCJxdWVzdGlvbi5odG1sIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIlxyXG4gICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1tZWRpdW0tZ3JheSk7IHBhZGRpbmctdG9wOiAyMHB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDoxM3B4XCI+XHJcbiAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGRpdiBbbmdTd2l0Y2hdPVwicXVlc3Rpb24udHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0nZGF0ZScgJiYgcXVlc3Rpb24ubmFtZSAmJiBxdWVzdGlvbi5uYW1lIT0nZG9iJ1wiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgI3BDYWxlbmRhcj5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDk5XCIgW3Nob3dJY29uXT1cInRydWVcIiBbbWluRGF0ZV09XCJzaG93TWluRGF0ZSA/IG1pbkRhdGUgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJzaG93TWF4RGF0ZSA/IG1heERhdGUgOiBudWxsXCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCIgYXBwZW5kVG89XCJib2R5XCIgZGF0YVR5cGU9XCJzdHJpbmdcIlxyXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwidmFsaWRhdGUocXVlc3Rpb24pXCIgKG9uU2VsZWN0KT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIFxyXG4gICAgICAgICAgICAgIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCIgW2ljb25BcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj5cclxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmIHF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSdkb2InXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAjcENhbGVuZGFyPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pbkRhdGVET0JcIlxyXG4gICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVET0JcIiBkYXRlRm9ybWF0PVwibW0vZGQveXlcIiBhcHBlbmRUbz1cImJvZHlcIiBkYXRhVHlwZT1cInN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJibHVyRE9CKHF1ZXN0aW9uKVwiIChvblNlbGVjdCk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiBcclxuICAgICAgICAgICAgICAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIFtpY29uQXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdzc24nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgW2NsYXNzLmhpZGUtY29udGVudF09XCJtYXNrQ2xhc3NcIiBtYXNrPVwiOTk5LTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OTktOTktOTk5OVwiIChvbkNvbXBsZXRlKT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIChvbkZvY3VzKT1cInVubWFzaygkZXZlbnQpXCIgKG9uQmx1cik9XCJtYXNrKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdlYW4nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgbWFzaz1cIjk5LTk5OTk5LTktOTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OS05OTk5OS05LTk5XCIgW3ZhbHVlXT1cIjgxLTAwNTg2LTAtMDFcIiAob25Db21wbGV0ZSk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIj5cclxuICAgICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnPT09J2R1ZWFtdCdcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIG1vZGU9XCJkZWNpbWFsXCIgbG9jYWxlPVwiZW4tVVNcIlxyXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiAoIXF1ZXN0aW9uLmN1c3RvbVRhZyAgfHwgIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdPcHRpb25hbCcpICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBwbGFjZWhvbGRlcj0ne3tcImNvbW1vbi5vcHRpb25hbFwiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICAgIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIC8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgcGxhY2Vob2xkZXI9J3t7XCJjb21tb24ub3B0aW9uYWxcIiB8IHRyYW5zbGF0ZX19JyBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tVXNlciBOYW1lLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgIXF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICAmJiAhY2hlY2tGbG93S2V5KClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmICFxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBjaGVja0Zsb3dLZXkoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIiBbYXV0b2NvbXBsZXRlXT1cInF1ZXN0aW9uPy5uYW1lLmluY2x1ZGVzKCdzZWNBbnMnKT8nb2ZmJzogJ29uJ1wiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIi8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IFxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlyc3ROYW1lJykgJiYgY2hlY2tGbG93S2V5KCkgXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnbGFzdE5hbWUnKSAmJiBjaGVja0Zsb3dLZXkoKSBcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgICFxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJylcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydwYWRkaW5nLWxlZnQucHgnOiBxdWVzdGlvbi5pbmRlbnQqMTB9XCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygncGhvbmUnKSAgJiYgIWNoZWNrRmxvd0tleSgpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIG1hc2s9XCI5OTktOTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5pc1JlcXVpcmVkID8gJzk5OS05OTktOTk5OScgOiAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXCIgKG9uQmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwaG9uZScpICYmIGNoZWNrRmxvd0tleSgpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIG1hc2s9XCI5OTkgOTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5pc1JlcXVpcmVkID8gJzk5OSA5OTktOTk5OScgOiAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXCIgKG9uQmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bhc3N3b3JkJylcIj5cclxuICAgICAgICAgIDxwLXBhc3N3b3JkIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbdG9nZ2xlTWFza109XCJ0cnVlXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiB3ZWFrTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQud2Vha1wiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICBwcm9tcHRMYWJlbD0gJ3t7XCJjb21tb24uZW50ZXIucGFzc3dvcmRcIiB8IHRyYW5zbGF0ZX19JyBtZWRpdW1MYWJlbD0ne3tcImNvbW1vbi5wYXNzd29yZC53ZWFrXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQuc3Ryb25nXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nUmVnZXg9XCJeKD89LipbYS16XSkoPz0uKltBLVpdKSg/PS4qWzAtOV0pKD89Lns4LH0pKD89LipbX0AqJCEjLl0pXCIgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm11c3QuaW5jbHVkZVwiIHwgdHJhbnNsYXRlfX08L3A+XHJcbiAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibGluZS1oZWlnaHQ6IDEuMjVcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQub25lLnVwcGVyY2FzZVwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5vbmUubG93ZXJjYXNlXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm9uZS5udW1iZXJcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQudHdvLm1lbnRpb25lZC5jaGFyXCIgfCB0cmFuc2xhdGV9fSA8Yj5fICYjNjQ7ICogJCAhICMgLjwvYj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5mb3J0ZWVuLmNoYXJzXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLnN1Z2dlc3Rpb24uaGVhZGVyXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4yNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLmVtYWlsLnBob25lXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5zdWdnZXN0aW9uLmtpZC5wYXJ0bmVyLnBldFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLm9yLnVzZXJpZFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLXBhc3N3b3JkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlsZXVwbG9hZCcpXCI+XHJcbiAgICAgICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgW2FsbG93ZWRGaWxlVHlwZV09XCJxdWVzdGlvbi5hbGxvd2VkRmlsZVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgICBbbWF4U2l6ZUluTUJdPVwicXVlc3Rpb24uc2l6ZUluTUJcIiBbbXVsdGlwbGVdPVwicXVlc3Rpb24ubXVsdGlwbGVcIiBbbm9PZkZpbGVzVG9VcGxvYWRdPVwicXVlc3Rpb24ubm9PRkZpbGVzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUVtYWlsIEFkZHJlc3MtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGhvbmUnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpcnN0TmFtZScgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nbGFzdE5hbWUnICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdlYW4nICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdkdWVhbXQnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3Bhc3N3b3JkJykgJiYgY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tGb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdwaG9uZScgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2VhbicgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2R1ZWFtdCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGFzc3dvcmQnKSAmJiAhY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAoYmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnXCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemVcIiAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sIHNpemU9XCIxXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy10b3A6IDEycHhcIj5cclxuICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PiAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb21tZW50J1wiPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cInF1ZXN0aW9uLm1heExlbmd0aFwiPlxyXG4gICAgICAgIDx0ZXh0YXJlYSBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIGF1dG9SZXNpemU9XCJ0cnVlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW3Jvd3NdPVwiM1wiIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8ZGl2PlxyXG5cclxuICAgICAgICAgIDxzbWFsbCBzdHlsZUNsYXNzPVwicC1kLWJsb2NrXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPnt7cXVlc3Rpb24uZGVzY3JpcHRpb259fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgKm5nSWY9XCIhcXVlc3Rpb24ubWF4TGVuZ3RoXCI+XHJcbiAgICAgICAgPHRleHRhcmVhIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgYXV0b1Jlc2l6ZT1cInRydWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbcm93c109XCIzXCJcclxuICAgICAgICAgIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgPHNtYWxsIHN0eWxlQ2xhc3M9XCJwLWQtYmxvY2tcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+e3txdWVzdGlvbi5kZXNjcmlwdGlvbn19PC9zbWFsbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1hdXRvQ29tcGxldGUgKm5nSWY9XCJmYWxzZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtzdWdnZXN0aW9uc109XCJmaWx0ZXJSZXN1bHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwiZmlsdGVyVmFsdWUoJGV2ZW50LHF1ZXN0aW9uKVwiIGZpZWxkPVwidGV4dFwiIFtkcm9wZG93bl09XCJ0cnVlXCIgbWluTGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCIgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudCxxdWVzdGlvbi5uYW1lKVwiIFtjb21wbGV0ZU9uRm9jdXNdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57e3ZhbHVlLnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZmlsdGVyUmVzdWx0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQscXVlc3Rpb24ubmFtZSlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIChvbkNsaWNrKT1cImZpbHRlclZhbHVlKCRldmVudCxxdWVzdGlvbilcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFkaW9ncm91cCdcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlZC1yb3dcIiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZSE9J3ZlcmlmaWNhdGlvbidcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChvbk9wdGlvbkNsaWNrKT1cIm9uUmFkaW9PcHRpb25DbGljaygkZXZlbnQscXVlc3Rpb24pXCJcclxuICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHF1ZXN0aW9uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ25nLWludmFsaWQgbmctZGlydHknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LnRvdWNoZWQgfHwgZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uZGlydHkpXHJcbiAgICAgICAgICAgICAgICAgIH1cIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSd2ZXJpZmljYXRpb24nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiAob25PcHRpb25DbGljayk9XCJnZW5lcmF0ZU90cEZvck5ld1VzZXJDcmVhdGlvbigkZXZlbnQsZm9ybSlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1tZmEyICpuZ0lmPVwiaXNPdHBNb2RhbEVuYWJsZWRcIiBbZGlzcGxheV09XCJpc090cE1vZGFsRW5hYmxlZFwiIFtyZXR1cm5pbmdVc2VyXT1cImlzUmV0dXJuaW5nVXNlclwiIFsoZm9ybSldPVwiZm9ybVwiIChzdWNjZXNzKT1cImVuYWJsZUZpZWxkcygpXCI+PC9hcHAtbWZhMj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE51bWJlciBmb3JtQ29udHJvbE5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiIG1vZGU9XCJkZWNpbWFsXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFt1c2VHcm91cGluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplID8gcXVlc3Rpb24uc2l6ZSA6IG51bGxcIiBbbWF4bGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aCA/IHF1ZXN0aW9uLm1heExlbmd0aCA6IG51bGxcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGVjaW1hbCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGZvcm1Db250cm9sTmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgbW9kZT1cImRlY2ltYWxcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgXHJcbiAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCIyXCIgW21pbl09XCJtaW5WYWx1ZVwiIFxyXG4gICAgICAgICAgW21heF09XCJtYXhWYWx1ZVwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemUgPyBxdWVzdGlvbi5zaXplIDogbnVsbFwiICBbbWF4bGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aCA/IHF1ZXN0aW9uLm1heExlbmd0aCA6IG51bGxcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE51bWJlciBmb3JtQ29udHJvbE5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiIG1vZGU9XCJjdXJyZW5jeVwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIiBcclxuICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIiBjdXJyZW5jeT1cIlVTRFwiIFttaW5dPVwibWluVmFsdWVcIiBcclxuICAgICAgICAgIFttYXhdPVwibWF4VmFsdWVcIiBbc2l6ZV09XCJxdWVzdGlvbi5zaXplID8gcXVlc3Rpb24uc2l6ZSA6IG51bGxcIiAgW21heGxlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGggPyBxdWVzdGlvbi5tYXhMZW5ndGggOiBudWxsXCIgXHJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm1ncm91cC1pbmxpbmVcIj5cclxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW25hbWVdPVwicXVlc3Rpb24ubmFtZSArICctZ3JvdXAnXCIgW3ZhbHVlXT1cImNob2ljZS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjaG9pY2UudGV4dFwiICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2YgcXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwiYXBwLXAtY2hlY2tib3hcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lICsgJy0nICsgY2hvaWNlLnZhbHVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGljaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW25hbWVdPVwicXVlc3Rpb24ubmFtZSArICctZ3JvdXAnXCIgW3ZhbHVlXT1cImNob2ljZS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjaG9pY2UudGV4dFwiICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2YgcXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwiYXBwLXAtY2hlY2tib3hcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lICsgJy0nICsgY2hvaWNlLnZhbHVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2luZ2xlc2VsZWN0Y2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gdW5zZWxlY3RhYmxlPVwidHJ1ZVwiIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbbXVsdGlwbGVdPWZhbHNlXHJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2ltcGxlY2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICA8cC1jaGVja2JveCBiaW5hcnk9XCJ0cnVlXCIgaW5wdXRJZD1cImJpbmFyeVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmluYXJ5XCI+e3txdWVzdGlvbi50aXRsZX19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDogM3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Rpc3BsYXl0ZXh0YXNsYWJlbCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8bGFiZWw+e3tnZXRUZXh0KGZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0udmFsdWUpfX08L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiLz5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxsYWJlbD57e3F1ZXN0aW9uLnRpdGxlfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsLXdpdGgtb3ZlcmxheSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbZGlzcGxheVRleHRdPVwicXVlc3Rpb24udGl0bGVcIiAgW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbZGlzcGxheUFzTGFiZWxdPVwidHJ1ZVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYWJlbC13aXRoLWxpbmsnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW2Rpc3BsYXlUZXh0XT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbbGFiZWxXaXRoTGlua109XCJ0cnVlXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsLXdpdGgtcG9wdXAnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW2Rpc3BsYXlUZXh0XT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2xhYmVsV2l0aFBvcHVwXT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbbGFiZWxXaXRoTGlua109XCJ0cnVlXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyIGNsYXNzPVwicmVzcG9uc2l2ZVwiICpuZ1N3aXRjaENhc2U9XCIncGFuZWwnXCI+XHJcbiAgICAgIDxpb24tcm93PlxyXG4gICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb24uZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wxJyAmJiB2aXNpYmxlSWYoZWxlbWVudC52aXNpYmxlSWYsZWxlbWVudC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZVhsXT1cImVsZW1lbnQuc2l6ZVhMXCIgW3NpemVMZ109XCJlbGVtZW50LnNpemVMR1wiIFtzaXplTWRdPVwiZWxlbWVudC5zaXplTURcIlxyXG4gICAgICAgICAgICAgICAgW29mZnNldE1kXT1cImVsZW1lbnQub2ZmU2V0TURcIiBjbGFzcz1cImNvbC1maXQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbiBbcXVlc3Rpb25dPVwiZWxlbWVudFwiIFtmb3JtXT1cImZvcm1cIiBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1xdWVzdGlvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHF1ZXN0aW9uLmVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LmNvbEVsZW1lbnQ9PT0nQ09MMicgJiYgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLGVsZW1lbnQubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgW3NpemVYbF09XCJlbGVtZW50LnNpemVYTFwiIFtzaXplTGddPVwiZWxlbWVudC5zaXplTEdcIiBbc2l6ZU1kXT1cImVsZW1lbnQuc2l6ZU1EXCJcclxuICAgICAgICAgICAgICAgIFtvZmZzZXRNZF09XCJlbGVtZW50Lm9mZlNldE1EXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXF1ZXN0aW9uIFtxdWVzdGlvbl09XCJlbGVtZW50XCIgW2Zvcm1dPVwiZm9ybVwiIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnR5cGUhPSdwYW5lbCdcIj5cclxuICAgIDxzbWFsbCBjbGFzcz1cInAtZXJyb3JcIiAqbmdJZj1cImlzVmFsaWQhPScnXCIgW0Byb3dFeHBhbnNpb25UcmlnZ2VyXT1cIidhY3RpdmUnXCI+e3tpc1ZhbGlkIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW19fTwvc21hbGw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
2605
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUF3QixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWxMLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVU3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUt2RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDYnJFLHNDQUFrSDtJQUFuQixnTkFBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUMvRyxZQUNGO0lBQUEsaUJBQWE7OztJQURYLGVBQ0Y7SUFERSwyREFDRjs7OztJQUVBLHNDQUFpSDtJQUFuQixnTkFBUyxlQUFBLGdCQUFRLENBQUEsSUFBQztJQUM5RyxZQUNGO0lBQUEsaUJBQWE7OztJQURYLGVBQ0Y7SUFERSw0REFDRjs7O0lBTkEscUhBRWEsd0dBQUE7OztJQUZjLGlEQUF3QjtJQUl4QixlQUF5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WUFXbEMsZUFBcUI7WUFBckIsc0NBQXFCO1lBUXJCLGVBQWtDO1lBQWxDLG1EQUFrQztZQUtsQyxlQUErQjtZQUEvQixnREFBK0I7WUFLL0IsZUFBZ0M7WUFBaEMsaURBQWdDO1lBTWIsZUFBcUI7WUFBckIsc0NBQXFCO1lBNkJiLGVBQTRCO1lBQTVCLG1EQUE0QjttaEJEeGM3RCw0QkFBNEIscThDQUYzQixDQUFDLG1CQUFtQixDQUFDOztpRkFFdEIsNEJBQTRCO2NBUHhDLFNBQVM7MkJBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxPQUFPLGNBQ3BDLENBQUMsbUJBQW1CLENBQUM7bVhBR3hCLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVJLG9CQUFvQjtrQkFBN0IsTUFBTTtZQTBDZ0IsUUFBUTtrQkFBOUIsU0FBUzttQkFBQyxVQUFVO1lBQ0ksU0FBUztrQkFBakMsWUFBWTttQkFBQyxTQUFTO1lBQ00sY0FBYztrQkFBMUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFDTSxrQkFBa0I7a0JBQWxELFNBQVM7bUJBQUMsb0JBQW9CO1lBQ1AsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXOztrRkF0RFgsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRWxlbWVudHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VsZW1lbnRzTW9kZWwnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvS2V5VmFsdWVNb2RlbCc7XHJcbmltcG9ydCB7IFNlcnZpY2VBY3Rpb25SZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU2VydmljZUFjdGlvblJlc3BvbnNlTW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9WYWxpZGF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaG9pY2VzLCBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9xdWVzdGlvbi1jb250cm9sLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuL3F1ZXN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0xvYWRlck1vZGVsJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZHJlc3MvYWRkcmVzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYW5rRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2JhbmstZGV0YWlscy9iYW5rLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW1wbG95ZXJEZXRhaWxTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCc7XHJcbmltcG9ydCB7IHJvd0V4cGFuc2lvblRyaWdnZXIgfSBmcm9tICcuLi8uLi9hbm5pbWF0aW9ucy9hcHAtYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRFbXBsb3llckdyaWRDb21wb25lbnQgfSBmcm9tICcuLi93ZWVrbHktY2VydC1lbXBsb3llci1ncmlkL3dlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydFdycHRFbXBsb3llckdyaWRDb21wb25lbnQgfSBmcm9tICcuLi93ZWVrbHktY2VydC13cnB0LWVtcGxveWVyLWdyaWQvd2Vla2x5LWNlcnQtd3JwdC1lbXBsb3llci1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsYWltYW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LXNlcnZpY2UvY2xhaW1hbnQuc2VydmljZSc7XHJcbmltcG9ydCB7V2Vla2x5Q2VydFNlcnZpY2VWMn0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7UGFydGlhbEVtcGxveW1lbnRNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWxzL1BhcnRpYWxFbXBsb3ltZW50TW9kZWwnO1xyXG5pbXBvcnQge1BhcnRUaW1lRW1wbG95bWVudE1vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFydFRpbWVFbXBsb3ltZW50TW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBWYWx1ZUNoYW5nZUNvbXBvbmVudE1vZGVsIHtcclxuICBvcmlnaW5hbFZhbHVlQ29udHJvbDogc3RyaW5nO1xyXG4gIGZvcm1Db250cm9sVG9VcGRhdGU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIEVtcGxveWVyQWRkcmVzc1VwZGF0ZU1vZGVsIHtcclxuICBhZGRyZXNzRm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcbiAgZW1wbG95ZXJJZEZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluTWF4RGF0ZU1vZGVsIHtcclxuICBtaW5EYXRlS2V5OiBzdHJpbmc7XHJcbiAgbWF4RGF0ZUtleTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluTWF4VmFsdWVNb2RlbCB7XHJcbiAgbWluVmFsdWU6IHN0cmluZztcclxuICBtYXhWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGlua0NvbXBvbmVudE1vZGVsIHtcclxuICB1cmk6IHN0cmluZztcclxuICBleHRlcm5hbFVybDogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBhbmltYXRpb25zOiBbcm93RXhwYW5zaW9uVHJpZ2dlcl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVF1ZXN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBxdWVzdGlvbjogRWxlbWVudHNNb2RlbDtcclxuICBASW5wdXQoKSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGluZGV4TnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9yU2NyZWVuUXVlc3Rpb25uYWlyZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkeW5hbWljUGFyYW06IGFueTtcclxuICBASW5wdXQoKSBwb3RlbnRpYWxJc3N1ZUlkOiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkR5bmFtaWNQYXJhbVVwZGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZpbHRlclJlc3VsdDogYW55W107XHJcbiAgbWluRGF0ZTogRGF0ZTtcclxuICBsZWdhbEFjY2VwdGVkOiBib29sZWFuID0gbnVsbDtcclxuICBtYXhEYXRlOiBEYXRlO1xyXG4gIGluZGV4OiBudW1iZXIgPSAxO1xyXG4gIHJldHVybk1vZGVsID0gbmV3IFZhbGlkYXRpb25Nb2RlbCgpO1xyXG4gIGRpc3BsYXlQb3NpdGlvbjogYm9vbGVhbjtcclxuICBwb3NpdGlvbjogc3RyaW5nO1xyXG4gIHBvcFVwSGVhZGVyOiBzdHJpbmc7XHJcbiAgcG9wVXBUZXh0OiBzdHJpbmc7XHJcbiAgcG9wVXBZZXNBY3Rpb25MYWJlbDogc3RyaW5nO1xyXG4gIHBvcFVwTm9BY3Rpb25MYWJlbDogc3RyaW5nO1xyXG4gIG1hc2tDbGFzcyA9IHRydWU7XHJcbiAgc2hvd01pbkRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93TWF4RGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1pblZhbHVlID0gbnVsbDtcclxuICBtYXhWYWx1ZSA9IG51bGw7XHJcbiAgdG9EYXlEYXRlID0gbmV3IERhdGUoKTtcclxuICBjdXJyZW50Zmxvd2tleTogc3RyaW5nO1xyXG4gIHJlZ2lzdGVyQ2xhaW1hbnRGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNGaWVsZERpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBwYXJ0RW1wTW9kZWwgPSBuZXcgUGFydGlhbEVtcGxveW1lbnRNb2RlbCgpO1xyXG4gIGlzT3RwTW9kYWxFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzUmV0dXJuaW5nVXNlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdjRW1wbG95ZXJWYWxpZGF0aW9uTXNnOiBzdHJpbmc7XHJcbiAgd3JwdFdjRW1wbG95ZXJWYWxpZGF0aW9uTXNnOiBzdHJpbmc7XHJcbiAgcGFydFRpbWVFbXBsb3llcnM6IFBhcnRUaW1lRW1wbG95bWVudE1vZGVsW10gPSBbXTtcclxuXHJcbiAgbWluRGF0ZURPQjogRGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0RnVsbFllYXIoKSAtIDEwMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG4gIG1heERhdGVET0I6IERhdGUgPSBuZXcgRGF0ZShcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldEZ1bGxZZWFyKCkgLSAxMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG5cclxuICBAVmlld0NoaWxkKCdiYW5rZHRscycpIGJhbmtkdGxzOiBCYW5rRGV0YWlsc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkcmVuKCdhZGRyZXNzJykgYWRkcmVzc2VzOiBRdWVyeUxpc3Q8QWRkcmVzc0NvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZCgnd2NFbXBsb3llckdyaWQnKSB3Y0VtcGxveWVyR3JpZDogV2Vla2x5Q2VydEVtcGxveWVyR3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd3Y1dycHRFbXBsb3llckdyaWQnKSB3Y1dycHRFbXBsb3llckdyaWQ6IFdlZWtseUNlcnRXcnB0RW1wbG95ZXJHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BDYWxlbmRhcicpIHBDYWxlbmRhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgbGlua0NvbXBvbmVudERhdGE6IExpbmtDb21wb25lbnRNb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHFjczogUXVlc3Rpb25Db250cm9sU2VydmljZSxcclxuICAgIHB1YmxpYyBzZXJ2aWNlOiBRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNsYWltYW50U2VydmljZTogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHdlZWtseWNlcnRTZXJ2aWNlOiBXZWVrbHlDZXJ0U2VydmljZVYyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBsczogTG9naW5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wQ2FsZW5kYXIpIHtcclxuICAgICAgdGhpcy5tb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZpc2libGVJZihzdHJFeHA6IHN0cmluZywgZWxlbWVudE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFzdHJFeHApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKHN0ckV4cC5pbmNsdWRlcygnJiYnKSkge1xyXG4gICAgICBsZXQgZXhwcjogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJyYmJyk7XHJcbiAgICAgIGlzVmlzaWJsZSA9XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclswXSkgJiZcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzFdKTtcclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDMpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsyXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDQpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclszXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID09IDUpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwcls0XSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID4gNSkge1xyXG4gICAgICAgIHRocm93IFwiQXBwVmFsaWRhdG9ycyA6IE1vcmUgdGhhbiA1ICcmJicgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdHJFeHAuaW5jbHVkZXMoJ3x8JykpIHtcclxuICAgICAgbGV0IGV4cHI6IHN0cmluZ1tdID0gc3RyRXhwLnNwbGl0KCd8fCcpO1xyXG4gICAgICBpc1Zpc2libGUgPVxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0pIHx8XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsxXSk7XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMl0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSA0KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbM10pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA9PSA1KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbNF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+IDUpIHtcclxuICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnfHwnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZShlbGVtZW50TmFtZSwgbnVsbCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVPcGVyYW5kVmFsdWUoc3RyRXhwOiBzdHJpbmcpIHtcclxuICAgIHZhciBzcGxpdEFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBpc0RvZXNOb3RFcXVhbDogYm9vbGVhbjtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gc3RyRXhwLmluZGV4T2YoJyE9Jyk7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHNwbGl0QXJyYXkgPSBzdHJFeHAuc3BsaXQoJz09Jyk7XHJcbiAgICAgIGlzRG9lc05vdEVxdWFsID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzcGxpdEFycmF5ID0gc3RyRXhwLnNwbGl0KCchPScpO1xyXG4gICAgICBpc0RvZXNOb3RFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgb3BlcmFuZDE6IHN0cmluZyA9IHNwbGl0QXJyYXlbMF07XHJcbiAgICBsZXQgb3BlcmFuZDI6IHN0cmluZyA9IHNwbGl0QXJyYXlbMV07XHJcbiAgICBvcGVyYW5kMSA9IG9wZXJhbmQxLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS50cmltKCk7IC8vY2xhaW1hbnRQcmlvclBheTEwMiBkaWZmbWFpbGFkZHJlc3MzMTVcclxuICAgIG9wZXJhbmQyID0gb3BlcmFuZDIucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRyaW0oKTsgLy9udWxsXHJcbiAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXSkge1xyXG4gICAgICB2YXIgdmFsdWVPZkNucnRybFRvQ2hlY2s7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZSAmJlxyXG4gICAgICAgIHR5cGVvZiB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlID09PSAnc3RyaW5nJ1xyXG4gICAgICApIHtcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9IHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlICYmXHJcbiAgICAgICAgdHlwZW9mIHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWUgIT0gJ3N0cmluZydcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmFsdWVPZkNucnRybFRvQ2hlY2sgPSB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlWyd2YWx1ZSddO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3BlcmFuZDIgPT09ICdudWxsJyAmJiBpc0RvZXNOb3RFcXVhbCAmJiB2YWx1ZU9mQ25ydHJsVG9DaGVjaykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcGVyYW5kMiA9PT0gJ251bGwnICYmICFpc0RvZXNOb3RFcXVhbCAmJiAhdmFsdWVPZkNucnRybFRvQ2hlY2spIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBvcGVyYW5kMiA9IG9wZXJhbmQyLnJlcGxhY2UoXCInXCIsICcnKS5yZXBsYWNlKFwiJ1wiLCAnJykudHJpbSgpOyAvL251bGxcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICAhaXNEb2VzTm90RXF1YWwgJiZcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9PT0gb3BlcmFuZDJcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICBpc0RvZXNOb3RFcXVhbCAmJlxyXG4gICAgICAgIHZhbHVlT2ZDbnJ0cmxUb0NoZWNrICE9IG9wZXJhbmQyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzIER5bmFtaWNGb3JtUXVlc3Rpb25Db21wb25lbnQgbmdPbkluaXQgY2FsbGVkJywgdGhpcy5xdWVzdGlvbilcclxuICAgIHRoaXMuZ2V0UGFydGlhbEVtcGxveW1lbnRJbmZvKCk7XHJcbiAgICB0aGlzLmdldFBhcnRUaW1lRW1wbG95ZXJzSW5mbygpO1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHQgPSB0aGlzLnF1ZXN0aW9uLmNob2ljZXM7XHJcbiAgICB0aGlzLnNldE1pbk1heERhdGUoKTtcclxuICAgIHRoaXMuc2V0TWluTWF4VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICB0aGlzLnNldExpbmtDb21wb25lbnREYXRhKCk7XHJcbiAgICBsZXQgY3VycmVudFFlcyA9IHRoaXMuc2VydmljZS5zZWFyY2hCcy5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50Zmxvd2tleSA9IGN1cnJlbnRRZXMuZmxvd0tleTtcclxuICAgIGlmKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGlzYWJsZUZpZWxkc09uU2lnbnVwJykgPT09ICd0cnVlJykgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmbG93S2V5XCIpID09ICczNDUnKXtcclxuICAgICAgdGhpcy5kaXNhYmxlRmllbGRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoZWNrRmxvd0tleSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRmbG93a2V5ID09PSAncmVnaXN0ZXItY2xhaW1hbnQnKSB7XHJcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiY3VycmVudGZsb3drZXkgXCIsdGhpcy5jdXJyZW50Zmxvd2tleSlcclxuICAgICAgcmV0dXJuICh0aGlzLnJlZ2lzdGVyQ2xhaW1hbnRGbGFnID0gdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RlckNsYWltYW50RmxhZztcclxuICAgIH1cclxuICB9XHJcbiAgLy8gcGhvbmVOdW1iZXJWZXJpZmllZCgpOiBib29sZWFue1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucGhvbmVWZXJpZmllZCxcclxuICAvLyB9XHJcblxyXG4gIGRpc2FibGVGaWVsZHMoKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja0Zsb3dLZXkoKSkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwaG9uZScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnZW1haWwnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdyZXNBZHJlc3MnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2RpZmZtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgICAgLy90aGlzLmZvcm0uZ2V0KCdtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZUZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCd1c2VybmFtZScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncmVzQWRyZXNzJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdkaWZmbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICAgIC8vdGhpcy5mb3JtLmdldCgnbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZVc2VyRXhpc3QoKSB7XHJcbiAgICAvLyBjb25zb2xlLmluZm8oXCJkb2IgXCIsIHRoaXMuZm9ybS5nZXQoXCJkb2JcIikudmFsdWUpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5mb3JtLmdldCgnc3NuJykudmFsdWUgJiZcclxuICAgICAgIXRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlICYmXHJcbiAgICAgICF0aGlzLmNoZWNrRmxvd0tleSgpXHJcbiAgICApIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzc25mcm9tdXNlciA9IHRoaXMuZm9ybS5nZXQoJ3NzbicpLnZhbHVlO1xyXG4gICAgICBsZXQgZGF0ZU9mYmlydGggPSB0aGlzLmZvcm0uZ2V0KCdkb2InKS52YWx1ZTtcclxuICAgICAgLy9jb25zb2xlLmluZm8oXCJ0ZXN0IHdpdGggc3NuZnJvbXVzZXIgXCIsIHNzbmZyb211c2VyKTtcclxuICAgICAgbGV0IGZvcm1hdGVkRCA9IGRhdGVPZmJpcnRoLnJlcGxhY2UoL1xcLy9nLFwiLVwiKTtcclxuICAgICAgaWYoZGF0ZU9mYmlydGggIT0gbnVsbCAmJiBzc25mcm9tdXNlciAhPSBudWxsKXtcclxuICAgICAgICB0aGlzLmNsYWltYW50U2VydmljZS5jaGVja0lmVXNlckFscmVhZHlFeGlzdChzc25mcm9tdXNlcixmb3JtYXRlZEQpLnN1YnNjcmliZShcclxuICAgICAgICAgICh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHghPW51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuc2V0VmFsdWUoeC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICBpZiAod2luZG93W1wiZW52XCJdW1wiZW52aXJvbm1lbnRcIl0gPT09IFwia3Nwcm9kXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvKipEZWxldGUgdGhlIGVsc2UgYmxvY2sgYWZ0ZXIgdGhlIHdvcmtzaGFyZSB0ZXN0aW5nIGlzIGRvbmUgKi9cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7IFxyXG4gICAgICAgICAgICBpZihlcnIuZXJyb3JDb2RlPT09XCI0MDRcIil7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcnRpYWxFbXBsb3ltZW50SW5mbygpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLm5hbWUgPT09ICd3b3JrUGVyZm9ybWVkJykge1xyXG4gICAgICB0aGlzLndlZWtseWNlcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldFBhcnRpYWxFbXBsb3ltZW50KClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFBhcnRpYWxFbXBsb3ltZW50TW9kZWwpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucGFydGlhbEVtcGxveW1lbnRGbGFnID09PSAnMScpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlW3RoaXMucXVlc3Rpb24ubmFtZV0gPSAnWSc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmFkZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgIT09ICdZJyA/IHsgd2NFbXBsb3llclZhbGlkYXRpb246IHRydWUgfSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIGdldFBhcnRUaW1lRW1wbG95ZXJzSW5mbygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLm5hbWUgPT09ICd3b3JrUGVyZm9ybWVkJykge1xyXG4gICAgICB0aGlzLndlZWtseWNlcnRTZXJ2aWNlLmdldFBhcnRUaW1lRW1wbG95bWVudCgpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGE6IFBhcnRUaW1lRW1wbG95bWVudE1vZGVsW10gKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBhcnRUaW1lRW1wbG95ZXJzID0gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlua0NvbXBvbmVudERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lID09ICdhcHAtbGluaycpIHtcclxuICAgICAgdGhpcy5saW5rQ29tcG9uZW50RGF0YSA9IHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkge1xyXG4gICAgbGV0IHBhcnNlZERhdGEgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgOiBudWxsO1xyXG4gICAgcmV0dXJuIHBhcnNlZERhdGE/LnNob3dMYWJlbCA9PSAnWSc7XHJcbiAgfVxyXG5cclxuICBzZXRNaW5NYXhWYWx1ZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbi50eXBlID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdkZWNpbWFsJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdjdXJyZW5jeSdcclxuICAgICkge1xyXG4gICAgICBsZXQgbWluTWF4TW9kZWw6IE1pbk1heFZhbHVlTW9kZWwgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgICAgaWYgKG1pbk1heE1vZGVsKSB7XHJcbiAgICAgICAgaWYgKG1pbk1heE1vZGVsLm1pblZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLm1pblZhbHVlID0gbWluTWF4TW9kZWwubWluVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtaW5NYXhNb2RlbC5tYXhWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9IG1pbk1heE1vZGVsLm1heFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWluTWF4RGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGxldCBtaW5NYXhNb2RlbDogTWluTWF4RGF0ZU1vZGVsID0gdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgICA6IG51bGw7XHJcbiAgICAgIGlmIChtaW5NYXhNb2RlbCAmJiAobWluTWF4TW9kZWwubWF4RGF0ZUtleSB8fCBtaW5NYXhNb2RlbC5taW5EYXRlS2V5KSkge1xyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYXJhbVttaW5NYXhNb2RlbC5taW5EYXRlS2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWluRGF0ZUtleV0sICdtaW4nKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01pbkRhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWF4RGF0ZUtleV0pIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VEYXRlKHRoaXMuZHluYW1pY1BhcmFtW21pbk1heE1vZGVsLm1heERhdGVLZXldLCAnbWF4Jyk7XHJcbiAgICAgICAgICB0aGlzLnNob3dNYXhEYXRlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24ubWluKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLnF1ZXN0aW9uLm1pbiwgJ21pbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWluRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLm1heCkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5xdWVzdGlvbi5tYXgsICdtYXgnKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01heERhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwYXJzZURhdGUoc3RyRGF0ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtYXgnKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtaW4nKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5taW5EYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoaW5kZW50OiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IHBhZGRpbmcgPSBpbmRlbnQgPD0gMSA/ICcwIHB4JyA6IGluZGVudCAqIDEwICsgJ3B4JztcclxuXHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdwYWRkaW5nLWxlZnQnOiBwYWRkaW5nLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW4obWFyZ2luOiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IG1hciA9IG1hcmdpbiArICdweCc7XHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdtYXJnaW4tcmlnaHQnOiBtYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkKCkge1xyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgbGV0IHF1ZXN0aW9uVHlwZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi50eXBlO1xyXG4gICAgaWYgKFxyXG4gICAgICAnaHRtbCcgPT09IHF1ZXN0aW9uVHlwZSB8fFxyXG4gICAgICAnbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgJ3NpbXBsZUxhYmVsJyA9PT0gcXVlc3Rpb25UeXBlIHx8XHJcbiAgICAgICdkaXNwbGF5dGV4dGFzbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgKCdidXR0b24nID09PSBxdWVzdGlvblR5cGUgJiZcclxuICAgICAgICAhdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtc2lnbi1zc24nICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtbGluaycpIHx8XHJcbiAgICAgICdsYWJlbC13aXRoLW92ZXJsYXknID09PSBxdWVzdGlvblR5cGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkICYmXHJcbiAgICAgIChcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQgXHJcbiAgICAgIClcclxuICAgICAgLy8gfHwgIXRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnZhbHVlXHJcbiAgICApIHtcclxuICAgICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb24ucmVxdWlyZWRFcnJvclRleHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1heGxlbmd0aCAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlcnJvcnM/Lm1heExlbmd0aCcsIHRoaXMucXVlc3Rpb24pO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnR5cGUgJywgdmFsaWRhdG9yLnR5cGUpO1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5tYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnBhdHRlcm4gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZXJyb3JzPy5wYXR0ZXJuJyx0aGlzLnF1ZXN0aW9uKVxyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcblxyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZSAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdyZWdleCcpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5kYXRlQ29tcGFyaXNpb24gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAvLyAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubWlubGVuZ3RoICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAndGV4dCcpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5wYXNzd29yZENvbXBhcmlzaW9uICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkSWYgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlKCk7ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5icEVtcGxyRmxhZyAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgbWVzc2FnZSA9ICdDb25maXJtYXIgbyBlbGltaW5hciBjYWRhIGVtcGxlYWRvcihlcykgcGFyYSBjb250aW51YXInO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1lc3NhZ2UgPSAnQ29uZmlybSBvciBEZWxldGUgZWFjaCBlbXBsb3llcihzKSB0byBjb250aW51ZSc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5zaW1wbGVDaGVja0JveFZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmNwYXRjaHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnVwbG9hZHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmJwRW1wbHJMZW5ndGhGbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnQWRkIHByZXZpb3VzIGVtcGxveW1lbnQgZGV0YWlscyc7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5hZGRyZXNzVmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgLy9sZXQgbWVzc2FnZTogc3RyaW5nID0gXCJQbGVhc2UgcHJvdmlkZSB2YWxpZCBhZGRyZXNzLlwiO1xyXG4gICAgICB0aGlzLmFkZHJlc3Nlcy5mb3JFYWNoKChhZGRyZXNzKSA9PiBhZGRyZXNzLnN1Ym1pdCgpKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5iYW5rRGV0YWlsc1ZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIC8vbGV0IG1lc3NhZ2U6IHN0cmluZyA9IFwiUGxlYXNlIHByb3ZpZGUgdmFsaWQgYmFuayBkZXRhaWxzLlwiO1xyXG4gICAgICB0aGlzLmJhbmtkdGxzPy5zdWJtaXQoKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ud2NFbXBsb3llclZhbGlkYXRpb24gfHxcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy53Y09uZUVtcGxveWVyVmFsaWRhdGlvbikgJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZFxyXG4gICAgKSB7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV07XHJcbiAgICAgIGNvbnN0IGVycm9yID0gY29udHJvbC5lcnJvcnM7ICAgICAgXHJcbiAgICAgIHRoaXMud2NFbXBsb3llckdyaWQ/LnN1Ym1pdCgpO1xyXG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblxyXG4gICAgICAgdGhpcy5sb2dnZXI/LmluZm8oJ1tXQ19VSV9WQUxJREFUSU9OXSBjb250cm9sPScgKyB0aGlzLnF1ZXN0aW9uLm5hbWUgKyAnLCBlcnJvcnM9JyArIEpTT04uc3RyaW5naWZ5KGVycm9yID8/IHt9KSk7XHJcbiAgXHJcbiAgICAgIC8vUmVxdWlyZWQgKG5vIGVtcGxveWVycyB2YWxpZGF0aW9uKVxyXG4gICAgICBpZiAoZXJyb3I/LndjT25lRW1wbG95ZXJWYWxpZGF0aW9uKSB7XHJcblxyXG4gICAgICAgIHRoaXMubG9nZ2VyPy53YXJuKCdbV0NfVUlfVkFMSURBVElPTl0gd2NPbmVFbXBsb3llclZhbGlkYXRpb24gdHJpZ2dlcmVkJywgeyBlcnJvcnM6IGVycm9yfSk7XHJcblxyXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpIHtcclxuICAgICAgICAgIG1lc3NhZ2UgPSAnRGViZSBpbmdyZXNhciBhbCBtZW5vcyB1biBlbXBsZWFkb3IuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbWVzc2FnZSA9ICdZb3UgbXVzdCBhZGQgYXQgbGVhc3Qgb25lIGVtcGxveWVyLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3I/LndjRW1wbG95ZXJWYWxpZGF0aW9uKSB7XHJcblxyXG4gICAgICAgIHRoaXMubG9nZ2VyPy53YXJuKCdbV0NfVUlfVkFMSURBVElPTl0gd2NFbXBsb3llclZhbGlkYXRpb24gdHJpZ2dlcmVkJywge2Vycm9yczogZXJyb3J9KTtcclxuXHJcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIikge1xyXG4gICAgICAgICAgdGhpcy53Y0VtcGxveWVyVmFsaWRhdGlvbk1zZyA9ICdFbCDDumx0aW1vIGTDrWEgdHJhYmFqYWRvIHF1ZSBmaWd1cmEgZW4gc3Ugc29saWNpdHVkIGNvcnJlc3BvbmRlIGEgZXN0YSBzZW1hbmE7IHBvciBsbyB0YW50bywgZGViZSBzZWxlY2Npb25hciBcInPDrVwiIGVuIGxhIHByZWd1bnRhIFwiwr9SZWFsaXrDsyBhbGfDum4gdHJhYmFqbyBkdXJhbnRlIGxhIHNlbWFuYT9cIic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnVGhlIGxhc3QgZGF5IHdvcmtlZCByZXBvcnRlZCBvbiB5b3VyIGNsYWltIGZhbGxzIHdpdGhpbiB0aGlzIHdlZWssIHlvdSBtdXN0IHNlbGVjdCBcInllc1wiIGZvciBcIkRpZCB5b3UgcGVyZm9ybSBhbnkgd29yayBkdXJpbmcgdGhlIHdlZWs/XCInO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXNzYWdlID0gdGhpcy53Y0VtcGxveWVyVmFsaWRhdGlvbk1zZztcclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoZXJyb3I/LnJlcXVpcmVkKSB7XHJcblxyXG4gICAgICAgIHRoaXMubG9nZ2VyPy53YXJuKCdbV0NfVUlfVkFMSURBVElPTl0gcmVxdWlyZWQgdHJpZ2dlcmVkJywge2Vycm9yczogZXJyb3J9KTtcclxuXHJcbiAgICAgICAgbWVzc2FnZSA9IFwicmVxdWlyZWRcIjtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25cclxuICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5ICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWRcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdO1xyXG4gICAgICBjb25zdCBlcnJvciA9IGNvbnRyb2wuZXJyb3JzOyAgICAgIFxyXG4gICAgICB0aGlzLndjV3JwdEVtcGxveWVyR3JpZD8uc3VibWl0KCk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHJcbiAgICAgIGlmKGVycm9yPy53cnB0V2NFbXBsb3llclZhbGlkYXRpb24pIHtcclxuICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgdGhpcy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnTm8gc2UgcHVlZGUgc2VsZWNjaW9uYXIgbGEgb3BjacOzbiBkZSB0cmFiYWphciBhIHRpZW1wbyBwYXJjaWFsIHNpIG5vIGhhcyB0cmFiYWphZG8gZXN0YSBzZW1hbmEuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53cnB0V2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnV29ya2luZyBwYXJ0IHRpbWUgY2Fubm90IGJlIHNlbGVjdGVkIGlmIHlvdSBkaWQgbm90IHdvcmsgdGhpcyB3ZWVrLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLndycHRXY0VtcGxveWVyVmFsaWRhdGlvbk1zZztcclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoZXJyb3I/LnJlcXVpcmVkKSB7XHJcbiAgICAgICAgbWVzc2FnZSA9IFwicmVxdWlyZWRcIjtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm5vdEVxdWFscyAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2N1c3RvbXZhbGlkYXRpb24nKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnbWVzc2FnZSBmcm9tIHBhbmVsIG91dGVyLS0gJyxtZXNzYWdlKTtcclxuICAgIHJldHVybiBtZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRlZChhZ3JlZWQ6IGJvb2xlYW4pIHtcclxuICAgIC8vY29uc29sZS5sb2coJ29uQWNjZXB0ZWQgY2FsbGVkJyxhZ3JlZWQpO1xyXG4gICAgdGhpcy5sZWdhbEFjY2VwdGVkID0gYWdyZWVkO1xyXG4gIH1cclxuXHJcbiAgb25Db21wbGV0ZVJlcXVhbGlmeShyZXF1YWxpZnlEYXRhOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwib25Db21wbGV0ZVJlcXVhbGlmeVwiLCByZXF1YWxpZnlEYXRhKTtcclxuICB9XHJcblxyXG4gIG9uTW9kZWxEaXNwbGF5KG1vZGVsRGlzcGxheTogYm9vbGVhbikge1xyXG4gICAgLy9jb25zb2xlLmxvZygnbW9kZWxEaXNwbGF5IGNhbGxlZCcsbW9kZWxEaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKGV2ZW50LCBmb3JtKSB7XHJcbiAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gZmFsc2U7XHJcbiAgICBpZiAoZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSA9PSBudWxsIHx8IGZvcm0udmFsdWUudmVyaWZpY2F0aW9uID09IG51bGwpIHtcclxuICAgICAgdGhpcy5pc090cE1vZGFsRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkZpZWxkcyBhcmUgbnVsbC5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIFJlbW92ZSBub24tbnVtZXJpYyBjaGFyYWN0ZXJzXHJcbiAgIC8vIGxldCB2YWxpZFBob25lID0gZm9ybS52YWx1ZS5waG9uZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgbGV0IHZhbGlkUGhvbmUgPSBmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlLnJlcGxhY2VBbGwoXCItXCIsXCJcIikucmVwbGFjZUFsbChcIiBcIixcIlwiKTtcclxuICAgICAgXHJcbiAgICAvLyBDb3VudCBkaWdpdHNcclxuICAgIGxldCBwaG9uZUxlbmd0aCA9IHZhbGlkUGhvbmUubGVuZ3RoO1xyXG4gICAgY29uc29sZS5sb2coXCJQaG9uZSBudW1iZXIgbGVuZ3RoXCIsIHBob25lTGVuZ3RoKTtcclxuICAgIGlmIChwaG9uZUxlbmd0aCAhPSAxMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlBob25lIG51bWJlciBtdXN0IGJlIG9mIGxlbmd0aCAxMFwiKVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1cclxuICAgIHRoaXMubHNcclxuICAgICAgLmdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUsIGV2ZW50Lm9wdGlvbi52YWx1ZSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQWNjZXNzIGNvZGUgc2VudCBzdWNjZXNzZnVsbHkuJyk7XHJcbiAgICAgICAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGdlbmVyYXRlIHRoZSBhdXRoZW50aWNhdGlvbiBPVFAgY29kZS4nKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTsgXHJcbiAgfVxyXG5cclxuICBvblJhZGlvT3B0aW9uQ2xpY2soZXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIGlmKGVsZW1lbnQ/Lm5hbWUgPT09IFwiZGlmZm1haWxhZGRyZXNzXCIgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmbG93S2V5XCIpID09ICczNDUnKXtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rpc2FibGVGaWVsZHNPblNpZ251cCcsICdmYWxzZScpO1xyXG4gICAgfVxyXG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcblxyXG4gICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUgJiYgZWxlbWVudC5zZXJ2aWNlVHlwZSA9PT0gJ0ZFVENIJykge1xyXG4gICAgICBsZXQgc2VydmljZUNhbGxUeXBlID0gZWxlbWVudC5zZXJ2aWNlQ2FsbFR5cGU7XHJcbiAgICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IGV2ZW50Lm9wdGlvbi52YWx1ZVxyXG4gICAgICAgID8geyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdzZWxlY3Rpb24nLCBldmVudC5vcHRpb24udmFsdWUpIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiBTZXJ2aWNlQWN0aW9uUmVzcG9uc2VNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgaWYgKHZhbHVlcy5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcy5zZXJ2aWNlVHlwZSk7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcyAmJlxyXG4gICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VUeXBlICYmXHJcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZVR5cGUgPT09ICdGRVRDSCdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGVJblRydWUgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZUNhbGxUeXBlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcnZpY2VOYW1lSW5UcnVlOiBzdHJpbmcgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZU5hbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VydmljZUNhbGxUeXBlSW5UcnVlID09PSAnR0VUJykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldChgJHtzZXJ2aWNlTmFtZUluVHJ1ZX1gKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2FkZXJNb2RlbDogTG9hZGVyTW9kZWwgPSByZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgdmFsdWUgZnJvbSBsb2FkZXIgPSBcIiwgbG9hZGVyTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKGxvYWRlck1vZGVsLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0/LnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50Lm5hbWVdPy5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbHVlcyhkYXRhKSB7XHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgbGV0IHZhbHVlVG9TZXQgPSBkYXRhW2tleV07XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVJbkZvcm1Db250cm9sKGtleSwgdmFsdWVUb1NldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlSW5Gb3JtQ29udHJvbChuYW1lLCB2YWx1ZSkge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gZm9ybSBjb250cm9sIHByZXNlbnQgd2l0aCBuYW1lICcsIG5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyVmFsdWUoZXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2VzLS0nLGNob2ljZXMpO1xyXG5cclxuICAgIGxldCBjaG9pY2VzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG5cclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICYmIGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdGRVRDSCcpIHtcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VDYWxsUGFyYW07IC8vc3NuMzIwLGxzdG5hbWUzMjBcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgICAgbGV0IHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBlbGVtZW50LnNlcnZpY2VOYW1lOyAvLy9zZWN1cml0eS1zZXJ2aWNlL3ZhbGlkYXRlU1NOL1xyXG4gICAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcblxyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgR0VUJyk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncmVzLS0nLCByZXMsICcgLSByZXNbMF0ubGVuZ3RoIC0nLCByZXMpO1xyXG4gICAgICAgICAgICBjaG9pY2VzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcbiAgICAgICAgICAgIC8vbGV0IGZpbHRlcmVkOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgY2hvaWNlID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2UgLSAnLCBjaG9pY2UsICdjaG9pY2UudGV4dC0tJywgY2hvaWNlLnRleHQsICdxdWVyeS50b0xvd2VyQ2FzZSgpJywgcXVlcnk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgIC8vaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2VbMF0pO1xyXG4gICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd0aGlzLmZpbHRlclJlc3VsdDEyMy0tJywgdGhpcy5maWx0ZXJSZXN1bHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNob2ljZXMgPSBlbGVtZW50LmNob2ljZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb3VudHJ5ID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAvL2lmIChjb3VudHJ5LnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNvdW50cnkpO1xyXG4gICAgICAgIC8vfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdChldmVudCwgY250cmxOYW1lOiBzdHJpbmcpIHt9XHJcblxyXG4gIC8vVGhpcyBzaG91ZCBiZSBzaW1pbGlyYSB0byBtZXRob2QgcHJlc2VudCBpbiBwYW5lbFxyXG4gIHZhbGlkYXRlKGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIGlmICghZWxlbWVudC5zZXJ2aWNlTmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlcnZpY2VUeXBlID0gZWxlbWVudC5zZXJ2aWNlVHlwZTtcclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlID09PSAnRkVUQ0gnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VydmljZUNhbGxQYXJhbSA9IGVsZW1lbnQuc2VydmljZUNhbGxQYXJhbTsgLy9zc24zMjAsbHN0bmFtZTMyMFxyXG4gICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTsgLy8vc2VjdXJpdHktc2VydmljZS92YWxpZGF0ZVNTTi9cclxuICAgIGxldCBzZXJ2aWNlVXBkYXRlUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VVcGRhdGVQYXJhbTtcclxuICAgIGxldCBhbGxWYWx1ZVByZXNlbnQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdzZXJ2aWNlQ2FsbFBhcmFtJyxzZXJ2aWNlQ2FsbFBhcmFtKTtcclxuICAgIGlmIChzZXJ2aWNlQ2FsbFBhcmFtKSB7XHJcbiAgICAgIHZhciBzcGxpdHRlZCA9IHNlcnZpY2VDYWxsUGFyYW0uc3BsaXQoJywnKTtcclxuICAgICAgbGV0IHZhbHVlQXJyOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgcGFyYW1BcnI6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXR0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvL3VzZSBpIGluc3RlYWQgb2YgMCBkb2IzMjBcclxuICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZG9iMzIwJyx0aGlzLmZvcm0uY29udHJvbHNbJ2RvYjMyMCddLnZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW3NwbGl0dGVkW2ldXS52YWx1ZSkge1xyXG4gICAgICAgICAgcGFyYW1BcnIucHVzaChzcGxpdHRlZFtpXSk7XHJcbiAgICAgICAgICB2YWx1ZUFyci5wdXNoKHRoaXMuZm9ybS5jb250cm9sc1tzcGxpdHRlZFtpXV0udmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhbGxWYWx1ZVByZXNlbnQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbHVlQXJyMTInLCB2YWx1ZUFyciwgJ3BhcmFtQXJyMTEgJywgcGFyYW1BcnIsICcgZWxlbWVudCcsIGVsZW1lbnQpO1xyXG5cclxuICAgICAgdmFyIG1vZGVsOiBWYWxpZGF0aW9uTW9kZWwgPSB7fTtcclxuICAgICAgbW9kZWwucGFyYW1OYW1lID0gcGFyYW1BcnI7XHJcbiAgICAgIG1vZGVsLnBhcmFtVmFsdWUgPSB2YWx1ZUFycjtcclxuICAgICAgLy8gcmV0dXJuIHRoaXMucG9zdChgcXVlc3Rpb25uYWlyZS9zY3JlZW4tcXVlc3Rpb25uYWlyZWAsIHF1ZXN0aW9ubmFpcmVEYXRhKTtcclxuICAgICAgaWYgKGFsbFZhbHVlUHJlc2VudCkge1xyXG4gICAgICAgIGlmIChzZXJ2aWNlQ2FsbFR5cGUgPT09ICdQT1NUJykge1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBHRVQnKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UucG9zdChgJHtzZXJ2aWNlTmFtZX1gLCBtb2RlbCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXR1cm5Nb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVybk1vZGVsLnJldHVyblR5cGUgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuTW9kZWwucmV0dXJuVHlwZSA9PT0gJ1BPUFVQJ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UG9zaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcEhlYWRlciA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBIZWFkZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcFVwVGV4dCA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBUZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcFllc0FjdGlvbkxhYmVsID0gdGhpcy5yZXR1cm5Nb2RlbC5wb3BVcFllc0J1dHRvbkxhYmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcE5vQWN0aW9uTGFiZWwgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwTm9CdXR0b25MYWJlbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3RoaXMucmV0dXJuTW9kZWwgJywgdGhpcy5yZXR1cm5Nb2RlbCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYmx1ckRPQihlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKGVsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGVja0lmVXNlckV4aXN0KCk7XHJcbiAgfVxyXG4gIGFjY2VwdCgpIHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBQYXJhbXNbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcikge1xyXG4gICAgICBsZXQgbW9kZWxBcnI6IEtleVZhbHVlTW9kZWxbXSA9IHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcjtcclxuICAgICAgZm9yICh2YXIgdmFsIG9mIG1vZGVsQXJyKSB7XHJcbiAgICAgICAgcGFyYW1BcnJheS5wdXNoKHsgW3ZhbC5rZXldOiB2YWwudmFsdWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1BcnJheS5yZWR1Y2UoKGFyck9iaiwgaXRlbSkgPT5cclxuICAgICAgICBPYmplY3QuYXNzaWduKGFyck9iaiwgaXRlbSwge30pXHJcbiAgICAgICk7XHJcbiAgICAgIC8vdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSwgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24sIHBhcmFtcywgdGhpcy5uYXZDb250cm9sbGVyKVxyXG4gICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24uc3Vic3RyaW5nKDAsIDQpICE9ICcvY3AvJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgICAgIHRoaXMuZGlzcGxheVBvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCAnX3NlbGYnKTtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgfVxyXG5cclxuICByZWplY3QoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbi5zdWJzdHJpbmcoMCwgNCkgIT0gJy9jcC8nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbl0pO1xyXG4gICAgICB0aGlzLmRpc3BsYXlQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luICsgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbiwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0Um9vdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKFxyXG4gICAgICAwLFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignLycsIDIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZShldjogYW55KSB7fVxyXG5cclxuICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgZHluYW1pY1BhcmFtOiBhbnkpIHtcclxuICAgIGlmICghZHluYW1pY1BhcmFtKSB7XHJcbiAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGR5bmFtaWNPYmogPSB7fTtcclxuXHJcbiAgICBsZXQgcGFyYW06IEtleVZhbHVlTW9kZWw7XHJcbiAgICBsZXQgcGFyYW1zOiBLZXlWYWx1ZU1vZGVsW107XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHluYW1pY1BhcmFtKSkge1xyXG4gICAgICBwYXJhbXMgPSBkeW5hbWljUGFyYW07XHJcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwcm0pID0+IHtcclxuICAgICAgICBkeW5hbWljT2JqW3BybS5rZXldID0gcHJtLnZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmFtID0gZHluYW1pY1BhcmFtO1xyXG4gICAgICBkeW5hbWljT2JqW3BhcmFtLmtleV0gPSBwYXJhbS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UoJ2VuJyk7XHJcbiAgICBsZXQgdHJhbnNsYXRlZFN0cmluZzogU3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXQoa2V5LCBrZXkpO1xyXG4gICAgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBPYmplY3QuYXNzaWduKGR5bmFtaWNPYmopKTtcclxuICAgIHJldHVybiB0cmFuc2xhdGVkU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dChvYmplY3QpIHtcclxuICAgIHJldHVybiBvYmplY3Q/LnRleHQgPyBvYmplY3Q/LnRleHQgOiBvYmplY3Q7XHJcbiAgfVxyXG5cclxuICB1bm1hc2soZXZlbnQpIHtcclxuICAgIHRoaXMubWFza0NsYXNzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtYXNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLm1hc2tDbGFzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkYXRlSW5wdXQoZXZlbnQpIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XHJcbiAgICBpZiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDIgJiYgY3VycmVudFZhbHVlLmNoYXJBdCgyKSAhPSAnLycpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyAnLyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPT0gNSAmJiBjdXJyZW50VmFsdWUuY2hhckF0KDUpICE9ICcvJykge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGN1cnJlbnRWYWx1ZSArICcvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JWYWx1ZUNoYW5nZShldmVudCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IFZhbHVlQ2hhbmdlQ29tcG9uZW50TW9kZWwgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgY3VycmVudFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoY29tcERhdGEub3JpZ2luYWxWYWx1ZUNvbnRyb2wpPy52YWx1ZTtcclxuICAgICAgbGV0IGZvcm1Db250cm9sVG9VcGRhdGU6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuZm9ybUNvbnRyb2xUb1VwZGF0ZVxyXG4gICAgICApO1xyXG4gICAgICBmb3JtQ29udHJvbFRvVXBkYXRlLnBhdGNoVmFsdWUoJ04nKTtcclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0gdGhpcy5keW5hbWljUGFyYW0gPyB0aGlzLmR5bmFtaWNQYXJhbSA6IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmR5bmFtaWNQYXJhbSkpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5wdXNoKHtcclxuICAgICAgICAgIGtleTogdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbVt0aGlzLnF1ZXN0aW9uLm5hbWVdID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT0gb3JpZ2luYWxWYWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUucGF0Y2hWYWx1ZSgnWScpO1xyXG4gICAgICAgIHRoaXMub25EeW5hbWljUGFyYW1VcGRhdGUuZW1pdCh0aGlzLmR5bmFtaWNQYXJhbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS5wYXRjaFZhbHVlKCdOJyk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFbXBsb3llcihlbXBsb3llcjogRW1wbG95ZXJEZXRhaWxTZWFyY2hSZXN1bHQpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpIHtcclxuICAgICAgbGV0IGNvbXBEYXRhOiBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBhZGRyZXNzRmM6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuYWRkcmVzc0Zvcm1Db250cm9sTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZW1wSWRGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5lbXBsb3llcklkRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGVtcElkRmMuc2V0VmFsdWUoZW1wbG95ZXIuZW1wbG95ZXJJZCA/IGVtcGxveWVyLmVtcGxveWVySWQgOiAnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBlbXBsb3llci5jb3VudHJ5LFxyXG4gICAgICAgIGNpdHk6IGVtcGxveWVyLmNpdHksXHJcbiAgICAgICAgemlwOiBlbXBsb3llci56aXAsXHJcbiAgICAgICAgc3RyZWV0QWRkcmVzczogZW1wbG95ZXIuYWRkcmVzc0Rpc3BsYXlWYWwsXHJcbiAgICAgICAgc3RhdGU6IGVtcGxveWVyLnN0YXRlLFxyXG4gICAgICAgIG9wdGlvbmFsQWRkcmVzczogbnVsbCxcclxuICAgICAgICBjb3VudHk6IG51bGwsXHJcbiAgICAgICAgdG93bjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEVtcGxveWVyKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IEVtcGxveWVyQWRkcmVzc1VwZGF0ZU1vZGVsID0gSlNPTi5wYXJzZShcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgKTtcclxuICAgICAgbGV0IGFkZHJlc3NGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5hZGRyZXNzRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBlbXBJZEZjOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KFxyXG4gICAgICAgIGNvbXBEYXRhLmVtcGxveWVySWRGb3JtQ29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgZW1wSWRGYy5zZXRWYWx1ZSgnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBudWxsLFxyXG4gICAgICAgIGNpdHk6IG51bGwsXHJcbiAgICAgICAgemlwOiBudWxsLFxyXG4gICAgICAgIHN0cmVldEFkZHJlc3M6IG51bGwsXHJcbiAgICAgICAgc3RhdGU6IG51bGwsXHJcbiAgICAgICAgb3B0aW9uYWxBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIGNvdW50eTogbnVsbCxcclxuICAgICAgICB0b3duOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZvcm1Db250cm9sVmFsdWUoZWxlbWVudE5hbWUsIGVsZW1lbnRWYWx1ZSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50TmFtZV0pIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnROYW1lXS5wYXRjaFZhbHVlKGVsZW1lbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLnR5cGUgPT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdmFyIGpzb25PYmplY3Q6IENob2ljZXMgPSBKU09OLnBhcnNlKGNob2ljZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoYykgPT4gYy52YWx1ZSA9PSBqc29uT2JqZWN0LnZhbHVlKVswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHRoaXMucXVlc3Rpb24ubmFtZSwgdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLnBDYWxlbmRhci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICdwLWNhbGVuZGFyIFthcmlhLWNvbnRyb2xzXSdcclxuICAgICk7XHJcbiAgICBpbnB1dEVsZW1lbnQuZm9yRWFjaCgoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnYXJpYS1jb250cm9scycsIHRoaXMucXVlc3Rpb24ubmFtZSk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKXtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHJldHVybiAncmVxdWVyaWRvJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAncmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SYWRpb0NoYW5nZShjb250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sTmFtZSk7XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtpZF09XCIncXVlc3Rpb24tZGl2LScgKyBxdWVzdGlvbi5uYW1lXCI+XHJcbiAgPHAtZGlhbG9nICpuZ0lmPVwiZGlzcGxheVBvc2l0aW9uXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5UG9zaXRpb25cIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxyXG4gICAgW21vZGFsXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieycxMjAwcHgnOiAnNjYwcHgnLCAnOTkycHgnOiAnNjYwcHgnLCAnNzY4cHgnOiAnNjYwcHgnLCAnNTc2cHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc0NXZ3J31cIlxyXG4gICAgW2Jhc2VaSW5kZXhdPVwiNTAwMFwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCIgY2xvc2VPbkVzY2FwZT1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG5cclxuICAgIDxoNCBjbGFzcz1cImhlYWRpbmcgaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICB7e3BvcFVwSGVhZGVyfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8cD57e3BvcFVwVGV4dH19XHJcbiAgICA8L3A+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAqbmdJZj1cInBvcFVwTm9BY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWplY3QoKVwiPlxyXG4gICAgICAgIHt7cG9wVXBOb0FjdGlvbkxhYmVsfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiICpuZ0lmPVwicG9wVXBZZXNBY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiYWNjZXB0KClcIj5cclxuICAgICAgICB7e3BvcFVwWWVzQWN0aW9uTGFiZWx9fVxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtZGlhbG9nPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICpuZ0lmPVwiIWZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uaW5kZW50PT09MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbicgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJ1wiPlxyXG4gICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmIHF1ZXN0aW9uLmRlc2NyaXB0aW9uICYmIHF1ZXN0aW9uLnR5cGUhPSdzaW1wbGVjaGVja2JveCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwtd2l0aC1vdmVybGF5J1wiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJxdWVzdGlvbi5uYW1lXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCJcclxuICAgICpuZ0lmPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2NvbXBvbmVudCcgfHwgKHF1ZXN0aW9uLmN1c3RvbVRhZz09J2NvbXBvbmVudCcgJiYgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkpKSAmJiBxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0naGlkZGVuJyAmJiAhcXVlc3Rpb24uZGVzY3JpcHRpb24gJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnXCI+XHJcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInF1ZXN0aW9uLm5hbWVcIj5cclxuICAgIDxzcGFuIFtpbm5lckh0bWxdPVwicXVlc3Rpb24udGl0bGUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmICFxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvbiAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsLXdpdGgtb3ZlcmxheSdcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiPlxyXG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi50aXRsZSB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCI+PC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnPT09J2NvbXBvbmVudCcgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvblwiPlxyXG4gICAgPGFwcC1lbXBsb3llci1ncmlkIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtXT1cImZvcm1cIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiXHJcbiAgICAgICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtZW1wbG95ZXItZ3JpZCdcIiAobW9kZWxEaXNwbGF5KT1cIm9uTW9kZWxEaXNwbGF5KCRldmVudClcIj48L2FwcC1lbXBsb3llci1ncmlkPlxyXG4gICAgPGFwcC1sZWdhbC1kaXNjbGFpbWFyICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtbGVnYWwtZGlzY2xhaW1hcidcIlxyXG4gICAgICBbY29tcG9uZW50RGF0YV09XCJxdWVzdGlvbi5jb21wb25lbnREYXRhXCIgKGFjY2VwdGVkKT1cIm9uQWNjZXB0ZWQoJGV2ZW50KVwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtXT1cImZvcm1cIj5cclxuICAgIDwvYXBwLWxlZ2FsLWRpc2NsYWltYXI+XHJcbiAgICA8bW9uZXktZXhwZWN0ICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdtb25leS1leHBlY3QnXCI+PC9tb25leS1leHBlY3Q+XHJcbiAgICA8YXBwLWNhcHRjaGEgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1jYXB0Y2hhJ1wiPjwvYXBwLWNhcHRjaGE+XHJcblxyXG4gICAgPGFwcC1maWxlLXVwbG9hZGVyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtZmlsZS11cGxvYWRlcidcIj5cclxuICAgIDwvYXBwLWZpbGUtdXBsb2FkZXI+XHJcbiAgICA8YXBwLWFkZHJlc3MgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Zyb21Qb3B1cF09XCJmYWxzZVwiIFtjb3VudHlSZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGRyZXNzJ1wiICNhZGRyZXNzIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZmxvd0tleV09XCJjdXJyZW50Zmxvd2tleVwiPiA8L2FwcC1hZGRyZXNzPlxyXG4gICAgPGFwcC1iYW5rLWRldGFpbHMgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1iYW5rLWRldGFpbHMnXCIgI2JhbmtkdGxzPlxyXG4gICAgPC9hcHAtYmFuay1kZXRhaWxzPlxyXG4gICAgPGFwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMnXCJcclxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtjb21wb25lbnREYXRhXT1cInF1ZXN0aW9uLmNvbXBvbmVudERhdGFcIiBbZm9ybV09XCJmb3JtXCIgPlxyXG4gICAgPC9hcHAtcmVxdWFsaWZ5LWxpZnQtcHJldmlvdXMtaXNzdWVzPiBcclxuICAgIDxhcHAtZGVwZW5kZW50LWdyaWQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1kZXBlbmRlbnQtZ3JpZCdcIj48L2FwcC1kZXBlbmRlbnQtZ3JpZD5cclxuICAgIDxhcHAtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZCAjd2NFbXBsb3llckdyaWQgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybV09XCJmb3JtXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC13ZWVrbHktY2VydC1lbXBsb3llci1ncmlkJ1wiPjwvYXBwLXdlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQ+XHJcbiAgICA8YXBwLXdycHQtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZCAjd2NXcnB0RW1wbG95ZXJHcmlkIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1dPVwiZm9ybVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtd3JwdC13ZWVrbHktY2VydC1lbXBsb3llci1ncmlkJ1wiPjwvYXBwLXdycHQtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZD5cclxuICAgIDxhcHAtc2VhcmNoLWVtcGxveWVyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIGVtcFR5cGU9XCJSRUdcIiAob25Gb3VuZCk9XCJzZXRFbXBsb3llcigkZXZlbnQpXCIgXHJcbiAgICAob25FbXB0eSk9XCJyZXNldEVtcGxveWVyKClcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNlYXJjaC1lbXBsb3llcidcIj48L2FwcC1zZWFyY2gtZW1wbG95ZXI+XHJcbiAgICA8YXBwLWFkZC1wYXJ0aWNpcGFudCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWFkZC1wYXJ0aWNpcGFudCdcIj4gPC9hcHAtYWRkLXBhcnRpY2lwYW50PlxyXG4gICAgPGFwcC1hZGQtcGF5bWVudCBbcG90ZW50aWFsSXNzdWVJZF09XCJwb3RlbnRpYWxJc3N1ZUlkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGQtcGF5bWVudCdcIj48L2FwcC1hZGQtcGF5bWVudD5cclxuICAgIDxhcHAtbGluayBbaXNSZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1saW5rJ1wiIFt0ZXh0XT1cImxpbmtDb21wb25lbnREYXRhPy50ZXh0XCIgW3VyaV09XCJsaW5rQ29tcG9uZW50RGF0YT8udXJpXCIgW2V4dGVybmFsVXJsXT1cImxpbmtDb21wb25lbnREYXRhPy5leHRlcm5hbFVybFwiPjwvYXBwLWxpbms+XHJcbiAgICA8YXBwLXNpZ24tc3NuIFtpc1JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNpZ24tc3NuJ1wiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIj48L2FwcC1zaWduLXNzbj5cclxuICAgIDxhcHAtam9iLXRpdGxlIFtjb250cm9sXT1cImZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV1cIiAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1qb2ItdGl0bGUnXCIgI2pvYlRpdGxlPiA8L2FwcC1qb2ItdGl0bGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbmRlbnQhPTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbidcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT09J2h0bWwnXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgPGRpdiAgW2lubmVySFRNTF09XCJxdWVzdGlvbi5odG1sIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIlxyXG4gICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1tZWRpdW0tZ3JheSk7IHBhZGRpbmctdG9wOiAyMHB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDoxM3B4XCI+XHJcbiAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGRpdiBbbmdTd2l0Y2hdPVwicXVlc3Rpb24udHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0nZGF0ZScgJiYgcXVlc3Rpb24ubmFtZSAmJiBxdWVzdGlvbi5uYW1lIT0nZG9iJ1wiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgI3BDYWxlbmRhcj5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDk5XCIgW3Nob3dJY29uXT1cInRydWVcIiBbbWluRGF0ZV09XCJzaG93TWluRGF0ZSA/IG1pbkRhdGUgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJzaG93TWF4RGF0ZSA/IG1heERhdGUgOiBudWxsXCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCIgYXBwZW5kVG89XCJib2R5XCIgZGF0YVR5cGU9XCJzdHJpbmdcIlxyXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwidmFsaWRhdGUocXVlc3Rpb24pXCIgKG9uU2VsZWN0KT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIFxyXG4gICAgICAgICAgICAgIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCIgW2ljb25BcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj5cclxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmIHF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSdkb2InXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAjcENhbGVuZGFyPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pbkRhdGVET0JcIlxyXG4gICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVET0JcIiBkYXRlRm9ybWF0PVwibW0vZGQveXlcIiBhcHBlbmRUbz1cImJvZHlcIiBkYXRhVHlwZT1cInN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJibHVyRE9CKHF1ZXN0aW9uKVwiIChvblNlbGVjdCk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiBcclxuICAgICAgICAgICAgICAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIFtpY29uQXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdzc24nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgW2NsYXNzLmhpZGUtY29udGVudF09XCJtYXNrQ2xhc3NcIiBtYXNrPVwiOTk5LTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OTktOTktOTk5OVwiIChvbkNvbXBsZXRlKT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIChvbkZvY3VzKT1cInVubWFzaygkZXZlbnQpXCIgKG9uQmx1cik9XCJtYXNrKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdlYW4nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgbWFzaz1cIjk5LTk5OTk5LTktOTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OS05OTk5OS05LTk5XCIgW3ZhbHVlXT1cIjgxLTAwNTg2LTAtMDFcIiAob25Db21wbGV0ZSk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIj5cclxuICAgICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnPT09J2R1ZWFtdCdcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIG1vZGU9XCJkZWNpbWFsXCIgbG9jYWxlPVwiZW4tVVNcIlxyXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiAoIXF1ZXN0aW9uLmN1c3RvbVRhZyAgfHwgIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdPcHRpb25hbCcpICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBwbGFjZWhvbGRlcj0ne3tcImNvbW1vbi5vcHRpb25hbFwiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICAgIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIC8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgcGxhY2Vob2xkZXI9J3t7XCJjb21tb24ub3B0aW9uYWxcIiB8IHRyYW5zbGF0ZX19JyBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tVXNlciBOYW1lLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgIXF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICAmJiAhY2hlY2tGbG93S2V5KClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmICFxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBjaGVja0Zsb3dLZXkoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIiBbYXV0b2NvbXBsZXRlXT1cInF1ZXN0aW9uPy5uYW1lLmluY2x1ZGVzKCdzZWNBbnMnKT8nb2ZmJzogJ29uJ1wiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIi8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IFxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlyc3ROYW1lJykgJiYgY2hlY2tGbG93S2V5KCkgXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnbGFzdE5hbWUnKSAmJiBjaGVja0Zsb3dLZXkoKSBcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgICFxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJylcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydwYWRkaW5nLWxlZnQucHgnOiBxdWVzdGlvbi5pbmRlbnQqMTB9XCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygncGhvbmUnKSAgJiYgIWNoZWNrRmxvd0tleSgpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIG1hc2s9XCI5OTktOTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5pc1JlcXVpcmVkID8gJzk5OS05OTktOTk5OScgOiAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXCIgKG9uQmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwaG9uZScpICYmIGNoZWNrRmxvd0tleSgpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIG1hc2s9XCI5OTkgOTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5pc1JlcXVpcmVkID8gJzk5OSA5OTktOTk5OScgOiAoJ2NvbW1vbi5vcHRpb25hbCcgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXCIgKG9uQmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bhc3N3b3JkJylcIj5cclxuICAgICAgICAgIDxwLXBhc3N3b3JkIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbdG9nZ2xlTWFza109XCJ0cnVlXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiB3ZWFrTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQud2Vha1wiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICBwcm9tcHRMYWJlbD0gJ3t7XCJjb21tb24uZW50ZXIucGFzc3dvcmRcIiB8IHRyYW5zbGF0ZX19JyBtZWRpdW1MYWJlbD0ne3tcImNvbW1vbi5wYXNzd29yZC53ZWFrXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQuc3Ryb25nXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nUmVnZXg9XCJeKD89LipbYS16XSkoPz0uKltBLVpdKSg/PS4qWzAtOV0pKD89Lns4LH0pKD89LipbX0AqJCEjLl0pXCIgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm11c3QuaW5jbHVkZVwiIHwgdHJhbnNsYXRlfX08L3A+XHJcbiAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibGluZS1oZWlnaHQ6IDEuMjVcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQub25lLnVwcGVyY2FzZVwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5vbmUubG93ZXJjYXNlXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm9uZS5udW1iZXJcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQudHdvLm1lbnRpb25lZC5jaGFyXCIgfCB0cmFuc2xhdGV9fSA8Yj5fICYjNjQ7ICogJCAhICMgLjwvYj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5mb3J0ZWVuLmNoYXJzXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLnN1Z2dlc3Rpb24uaGVhZGVyXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4yNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLmVtYWlsLnBob25lXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5zdWdnZXN0aW9uLmtpZC5wYXJ0bmVyLnBldFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLm9yLnVzZXJpZFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLXBhc3N3b3JkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlsZXVwbG9hZCcpXCI+XHJcbiAgICAgICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgW2FsbG93ZWRGaWxlVHlwZV09XCJxdWVzdGlvbi5hbGxvd2VkRmlsZVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgICBbbWF4U2l6ZUluTUJdPVwicXVlc3Rpb24uc2l6ZUluTUJcIiBbbXVsdGlwbGVdPVwicXVlc3Rpb24ubXVsdGlwbGVcIiBbbm9PZkZpbGVzVG9VcGxvYWRdPVwicXVlc3Rpb24ubm9PRkZpbGVzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUVtYWlsIEFkZHJlc3MtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGhvbmUnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpcnN0TmFtZScgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nbGFzdE5hbWUnICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdlYW4nICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdkdWVhbXQnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3Bhc3N3b3JkJykgJiYgY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tGb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdwaG9uZScgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2VhbicgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2R1ZWFtdCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGFzc3dvcmQnKSAmJiAhY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAoYmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnXCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemVcIiAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sIHNpemU9XCIxXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy10b3A6IDEycHhcIj5cclxuICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PiAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb21tZW50J1wiPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cInF1ZXN0aW9uLm1heExlbmd0aFwiPlxyXG4gICAgICAgIDx0ZXh0YXJlYSBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIGF1dG9SZXNpemU9XCJ0cnVlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW3Jvd3NdPVwiM1wiIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8ZGl2PlxyXG5cclxuICAgICAgICAgIDxzbWFsbCBzdHlsZUNsYXNzPVwicC1kLWJsb2NrXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPnt7cXVlc3Rpb24uZGVzY3JpcHRpb259fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgKm5nSWY9XCIhcXVlc3Rpb24ubWF4TGVuZ3RoXCI+XHJcbiAgICAgICAgPHRleHRhcmVhIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgYXV0b1Jlc2l6ZT1cInRydWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbcm93c109XCIzXCJcclxuICAgICAgICAgIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgPHNtYWxsIHN0eWxlQ2xhc3M9XCJwLWQtYmxvY2tcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+e3txdWVzdGlvbi5kZXNjcmlwdGlvbn19PC9zbWFsbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1hdXRvQ29tcGxldGUgKm5nSWY9XCJmYWxzZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtzdWdnZXN0aW9uc109XCJmaWx0ZXJSZXN1bHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwiZmlsdGVyVmFsdWUoJGV2ZW50LHF1ZXN0aW9uKVwiIGZpZWxkPVwidGV4dFwiIFtkcm9wZG93bl09XCJ0cnVlXCIgbWluTGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCIgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudCxxdWVzdGlvbi5uYW1lKVwiIFtjb21wbGV0ZU9uRm9jdXNdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57e3ZhbHVlLnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZmlsdGVyUmVzdWx0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQscXVlc3Rpb24ubmFtZSlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIChvbkNsaWNrKT1cImZpbHRlclZhbHVlKCRldmVudCxxdWVzdGlvbilcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFkaW9ncm91cCdcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlZC1yb3dcIiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZSE9J3ZlcmlmaWNhdGlvbidcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChvbk9wdGlvbkNsaWNrKT1cIm9uUmFkaW9PcHRpb25DbGljaygkZXZlbnQscXVlc3Rpb24pXCJcclxuICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHF1ZXN0aW9uLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ25nLWludmFsaWQgbmctZGlydHknOlxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0/LnRvdWNoZWQgfHwgZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXT8uZGlydHkpXHJcbiAgICAgICAgICAgICAgICAgIH1cIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSd2ZXJpZmljYXRpb24nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiAob25PcHRpb25DbGljayk9XCJnZW5lcmF0ZU90cEZvck5ld1VzZXJDcmVhdGlvbigkZXZlbnQsZm9ybSlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1tZmEyICpuZ0lmPVwiaXNPdHBNb2RhbEVuYWJsZWRcIiBbZGlzcGxheV09XCJpc090cE1vZGFsRW5hYmxlZFwiIFtyZXR1cm5pbmdVc2VyXT1cImlzUmV0dXJuaW5nVXNlclwiIFsoZm9ybSldPVwiZm9ybVwiIChzdWNjZXNzKT1cImVuYWJsZUZpZWxkcygpXCI+PC9hcHAtbWZhMj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE51bWJlciBmb3JtQ29udHJvbE5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiIG1vZGU9XCJkZWNpbWFsXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFt1c2VHcm91cGluZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbWluXT1cIm1pblZhbHVlXCIgW21heF09XCJtYXhWYWx1ZVwiXHJcbiAgICAgICAgICBbc2l6ZV09XCJxdWVzdGlvbi5zaXplID8gcXVlc3Rpb24uc2l6ZSA6IG51bGxcIiBbbWF4bGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aCA/IHF1ZXN0aW9uLm1heExlbmd0aCA6IG51bGxcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGVjaW1hbCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGZvcm1Db250cm9sTmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgbW9kZT1cImRlY2ltYWxcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgXHJcbiAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCIyXCIgW21pbl09XCJtaW5WYWx1ZVwiIFxyXG4gICAgICAgICAgW21heF09XCJtYXhWYWx1ZVwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemUgPyBxdWVzdGlvbi5zaXplIDogbnVsbFwiICBbbWF4bGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aCA/IHF1ZXN0aW9uLm1heExlbmd0aCA6IG51bGxcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE51bWJlciBmb3JtQ29udHJvbE5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiIG1vZGU9XCJjdXJyZW5jeVwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIiBcclxuICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIiBjdXJyZW5jeT1cIlVTRFwiIFttaW5dPVwibWluVmFsdWVcIiBcclxuICAgICAgICAgIFttYXhdPVwibWF4VmFsdWVcIiBbc2l6ZV09XCJxdWVzdGlvbi5zaXplID8gcXVlc3Rpb24uc2l6ZSA6IG51bGxcIiAgW21heGxlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGggPyBxdWVzdGlvbi5tYXhMZW5ndGggOiBudWxsXCIgXHJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm1ncm91cC1pbmxpbmVcIj5cclxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW25hbWVdPVwicXVlc3Rpb24ubmFtZSArICctZ3JvdXAnXCIgW3ZhbHVlXT1cImNob2ljZS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjaG9pY2UudGV4dFwiICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2YgcXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwiYXBwLXAtY2hlY2tib3hcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lICsgJy0nICsgY2hvaWNlLnZhbHVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGljaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgPHAtY2hlY2tib3ggW25hbWVdPVwicXVlc3Rpb24ubmFtZSArICctZ3JvdXAnXCIgW3ZhbHVlXT1cImNob2ljZS52YWx1ZVwiIFxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJjaG9pY2UudGV4dFwiICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2YgcXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwiYXBwLXAtY2hlY2tib3hcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lICsgJy0nICsgY2hvaWNlLnZhbHVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2luZ2xlc2VsZWN0Y2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gdW5zZWxlY3RhYmxlPVwidHJ1ZVwiIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbbXVsdGlwbGVdPWZhbHNlXHJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2ltcGxlY2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICA8cC1jaGVja2JveCBiaW5hcnk9XCJ0cnVlXCIgaW5wdXRJZD1cImJpbmFyeVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmluYXJ5XCI+e3txdWVzdGlvbi50aXRsZX19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDogM3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Rpc3BsYXl0ZXh0YXNsYWJlbCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8bGFiZWw+e3tnZXRUZXh0KGZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV0udmFsdWUpfX08L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiLz5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxsYWJlbD57e3F1ZXN0aW9uLnRpdGxlfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsLXdpdGgtb3ZlcmxheSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbZGlzcGxheVRleHRdPVwicXVlc3Rpb24udGl0bGVcIiAgW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbZGlzcGxheUFzTGFiZWxdPVwidHJ1ZVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYWJlbC13aXRoLWxpbmsnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW2Rpc3BsYXlUZXh0XT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbbGFiZWxXaXRoTGlua109XCJ0cnVlXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsLXdpdGgtcG9wdXAnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW2Rpc3BsYXlUZXh0XT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2xhYmVsV2l0aFBvcHVwXT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIiBbbGFiZWxXaXRoTGlua109XCJ0cnVlXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyIGNsYXNzPVwicmVzcG9uc2l2ZVwiICpuZ1N3aXRjaENhc2U9XCIncGFuZWwnXCI+XHJcbiAgICAgIDxpb24tcm93PlxyXG4gICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb24uZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wxJyAmJiB2aXNpYmxlSWYoZWxlbWVudC52aXNpYmxlSWYsZWxlbWVudC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZVhsXT1cImVsZW1lbnQuc2l6ZVhMXCIgW3NpemVMZ109XCJlbGVtZW50LnNpemVMR1wiIFtzaXplTWRdPVwiZWxlbWVudC5zaXplTURcIlxyXG4gICAgICAgICAgICAgICAgW29mZnNldE1kXT1cImVsZW1lbnQub2ZmU2V0TURcIiBjbGFzcz1cImNvbC1maXQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbiBbcXVlc3Rpb25dPVwiZWxlbWVudFwiIFtmb3JtXT1cImZvcm1cIiBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1xdWVzdGlvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHF1ZXN0aW9uLmVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LmNvbEVsZW1lbnQ9PT0nQ09MMicgJiYgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLGVsZW1lbnQubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgW3NpemVYbF09XCJlbGVtZW50LnNpemVYTFwiIFtzaXplTGddPVwiZWxlbWVudC5zaXplTEdcIiBbc2l6ZU1kXT1cImVsZW1lbnQuc2l6ZU1EXCJcclxuICAgICAgICAgICAgICAgIFtvZmZzZXRNZF09XCJlbGVtZW50Lm9mZlNldE1EXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXF1ZXN0aW9uIFtxdWVzdGlvbl09XCJlbGVtZW50XCIgW2Zvcm1dPVwiZm9ybVwiIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnR5cGUhPSdwYW5lbCdcIj5cclxuICAgIDxzbWFsbCBjbGFzcz1cInAtZXJyb3JcIiAqbmdJZj1cImlzVmFsaWQhPScnXCIgW0Byb3dFeHBhbnNpb25UcmlnZ2VyXT1cIidhY3RpdmUnXCI+e3tpc1ZhbGlkIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW19fTwvc21hbGw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==