@messaia/cdk 18.0.0 → 18.1.0-rc02

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.
Files changed (163) hide show
  1. package/esm2022/lib/base/base.module.mjs +11 -15
  2. package/esm2022/lib/base/components/base.component.mjs +3 -3
  3. package/esm2022/lib/base/components/dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.mjs +121 -0
  4. package/esm2022/lib/base/components/generic-form-base.component.mjs +3 -3
  5. package/esm2022/lib/base/components/generic-form.component.mjs +3 -3
  6. package/esm2022/lib/base/components/generic-list.component.mjs +40 -32
  7. package/esm2022/lib/base/components/generic-reactive-form.component.mjs +3 -3
  8. package/esm2022/lib/base/interceptors/base.interceptor.mjs +3 -3
  9. package/esm2022/lib/base/interceptors/caching-interceptor.mjs +3 -3
  10. package/esm2022/lib/base/interceptors/loading.interceptor.mjs +3 -3
  11. package/esm2022/lib/base/interfaces/igeneric-list-component.mjs +1 -1
  12. package/esm2022/lib/base/services/file.service.mjs +3 -3
  13. package/esm2022/lib/base/services/loading-screen.service.mjs +3 -3
  14. package/esm2022/lib/base/services/print.service.mjs +3 -3
  15. package/esm2022/lib/chips/chips.module.mjs +4 -4
  16. package/esm2022/lib/chips/components/chips.component.mjs +4 -4
  17. package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
  18. package/esm2022/lib/chips/directives/chip.directive.mjs +3 -3
  19. package/esm2022/lib/common/common.module.mjs +4 -4
  20. package/esm2022/lib/common/directives/delayed-hover.directive.mjs +3 -3
  21. package/esm2022/lib/common/directives/disable-control.directive.mjs +3 -3
  22. package/esm2022/lib/common/functions/utils.mjs +6 -6
  23. package/esm2022/lib/common/helpers/app-storage.mjs +3 -3
  24. package/esm2022/lib/common/helpers/dynamic-builder.mjs +3 -3
  25. package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
  26. package/esm2022/lib/common/models/app-setting.mjs +3 -3
  27. package/esm2022/lib/common/pipes/bind.mjs +3 -3
  28. package/esm2022/lib/common/pipes/data-source.pipe.mjs +3 -3
  29. package/esm2022/lib/common/pipes/enum.pipe.mjs +3 -3
  30. package/esm2022/lib/common/pipes/file-size.pipe.mjs +3 -3
  31. package/esm2022/lib/common/pipes/filter.pipe.mjs +3 -3
  32. package/esm2022/lib/common/pipes/first-letter.mjs +3 -3
  33. package/esm2022/lib/common/pipes/form-array.pipe.mjs +3 -3
  34. package/esm2022/lib/common/pipes/form-control.pipe.mjs +3 -3
  35. package/esm2022/lib/common/pipes/form-group.pipe.mjs +3 -3
  36. package/esm2022/lib/common/pipes/func.pipe.mjs +3 -3
  37. package/esm2022/lib/common/pipes/join.pipe.mjs +3 -3
  38. package/esm2022/lib/common/pipes/keys.mjs +3 -3
  39. package/esm2022/lib/common/pipes/map.pipe.mjs +3 -3
  40. package/esm2022/lib/common/pipes/month-name.pipe.mjs +3 -3
  41. package/esm2022/lib/common/pipes/nested-property.mjs +3 -3
  42. package/esm2022/lib/common/pipes/only-number.mjs +3 -3
  43. package/esm2022/lib/common/pipes/order.pipe.mjs +3 -3
  44. package/esm2022/lib/common/pipes/placeholder.pipe.mjs +3 -3
  45. package/esm2022/lib/common/pipes/property-join.pipe.mjs +3 -3
  46. package/esm2022/lib/common/pipes/safe-html.pipe.mjs +3 -3
  47. package/esm2022/lib/common/pipes/split.pipe.mjs +3 -3
  48. package/esm2022/lib/common/pipes/time.pipe.mjs +3 -3
  49. package/esm2022/lib/common/pipes/titlecase.pipe.mjs +3 -3
  50. package/esm2022/lib/common/pipes/truncate.pipe.mjs +3 -3
  51. package/esm2022/lib/common/pipes/values.mjs +3 -3
  52. package/esm2022/lib/common/services/base.service.mjs +3 -3
  53. package/esm2022/lib/common/services/enum.service.mjs +3 -3
  54. package/esm2022/lib/common/services/event-queue.service.mjs +3 -3
  55. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +3 -3
  56. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +3 -3
  57. package/esm2022/lib/dialogs/dialog.component.mjs +12 -12
  58. package/esm2022/lib/dialogs/dialogs.module.mjs +4 -4
  59. package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +3 -3
  60. package/esm2022/lib/dialogs/services/dialog.service.mjs +3 -3
  61. package/esm2022/lib/file/file-input.component.mjs +3 -3
  62. package/esm2022/lib/file/file.module.mjs +4 -4
  63. package/esm2022/lib/form-validators/core/default-container.mjs +3 -1
  64. package/esm2022/lib/form-validators/decorators/prop.decorator.mjs +3 -1
  65. package/esm2022/lib/form-validators/directives/base-directive.mjs +3 -3
  66. package/esm2022/lib/form-validators/directives/control-host.directive.mjs +3 -3
  67. package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +3 -3
  68. package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +3 -3
  69. package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +3 -3
  70. package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +3 -3
  71. package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +3 -3
  72. package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +3 -3
  73. package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +3 -3
  74. package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +3 -3
  75. package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +3 -3
  76. package/esm2022/lib/form-validators/models/config/prop-config.mjs +1 -1
  77. package/esm2022/lib/form-validators/models/property-info.mjs +1 -1
  78. package/esm2022/lib/form-validators/services/reactive-form.module.mjs +8 -8
  79. package/esm2022/lib/form-validators/services/rx-form-builder.mjs +13 -6
  80. package/esm2022/lib/form-validators/services/typed-form-builder.mjs +3 -3
  81. package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +3 -3
  82. package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +15 -15
  83. package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +3 -3
  84. package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +3 -3
  85. package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +3 -3
  86. package/esm2022/lib/forms/forms.module.mjs +4 -4
  87. package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +3 -3
  88. package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +3 -3
  89. package/esm2022/lib/forms/helpers/value-accessor-base.mjs +3 -3
  90. package/esm2022/lib/forms/pipes/field-func.pipe.mjs +3 -3
  91. package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +3 -3
  92. package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +3 -3
  93. package/esm2022/lib/forms/validators/equal-validator.directive.mjs +3 -3
  94. package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +3 -3
  95. package/esm2022/lib/forms/validators/unique-validator-directive.mjs +3 -3
  96. package/esm2022/lib/http/http.module.mjs +4 -4
  97. package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
  98. package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +3 -3
  99. package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +3 -3
  100. package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +3 -3
  101. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +3 -3
  102. package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
  103. package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +3 -3
  104. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +3 -3
  105. package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
  106. package/esm2022/lib/layout/layout-toggle.class.mjs +3 -3
  107. package/esm2022/lib/layout/layout.component.mjs +3 -3
  108. package/esm2022/lib/layout/layout.directives.mjs +9 -9
  109. package/esm2022/lib/layout/layout.module.mjs +4 -4
  110. package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
  111. package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +9 -9
  112. package/esm2022/lib/list/components/list.component.mjs +3 -3
  113. package/esm2022/lib/list/directives/vd-list-option.directive.mjs +3 -3
  114. package/esm2022/lib/list/list.module.mjs +4 -4
  115. package/esm2022/lib/media/directives/media-toggle.directive.mjs +3 -3
  116. package/esm2022/lib/media/media.module.mjs +4 -4
  117. package/esm2022/lib/media/services/media.service.mjs +3 -3
  118. package/esm2022/lib/menu/components/menu.component.mjs +3 -3
  119. package/esm2022/lib/menu/menu.module.mjs +4 -4
  120. package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +3 -3
  121. package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +3 -3
  122. package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +3 -3
  123. package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +3 -3
  124. package/esm2022/lib/menu/services/menu-items.service.mjs +3 -3
  125. package/esm2022/lib/menu/services/menu.resolve.mjs +6 -6
  126. package/esm2022/lib/menu/services/menu.service.mjs +3 -3
  127. package/esm2022/lib/search/search.module.mjs +4 -4
  128. package/esm2022/lib/select/components/select.component.mjs +3 -3
  129. package/esm2022/lib/select/directives/vd-select-option.directive.mjs +3 -3
  130. package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
  131. package/esm2022/lib/select/select.module.mjs +4 -4
  132. package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +132 -18
  133. package/esm2022/lib/table/components/filter-clear.component.mjs +3 -3
  134. package/esm2022/lib/table/components/filter-date.component.mjs +3 -3
  135. package/esm2022/lib/table/components/filter-input.component.mjs +3 -3
  136. package/esm2022/lib/table/components/filter-select/filter-select.component.mjs +6 -6
  137. package/esm2022/lib/table/directives/data-source-filter.directive.mjs +3 -3
  138. package/esm2022/lib/table/directives/vd-table-field.directive.mjs +3 -3
  139. package/esm2022/lib/table/functions/decorators.mjs +2 -2
  140. package/esm2022/lib/table/models/table-column-config.mjs +12 -14
  141. package/esm2022/lib/table/models/table-config.mjs +41 -0
  142. package/esm2022/lib/table/models/table-query-config.mjs +26 -0
  143. package/esm2022/lib/table/paginator-intl.mjs +3 -3
  144. package/esm2022/lib/table/table.module.mjs +7 -5
  145. package/esm2022/lib/table/table.static-data-source.mjs +1 -2
  146. package/fesm2022/messaia-cdk.mjs +5007 -4856
  147. package/fesm2022/messaia-cdk.mjs.map +1 -1
  148. package/lib/base/base.module.d.ts +5 -6
  149. package/lib/base/components/{dynamic-table-config-dialog.comnponent.d.ts → dynamic-table-config-dialog/dynamic-table-config-dialog.comnponent.d.ts} +12 -6
  150. package/lib/base/components/generic-list.component.d.ts +13 -12
  151. package/lib/base/interfaces/igeneric-list-component.d.ts +8 -4
  152. package/lib/common/functions/utils.d.ts +1 -1
  153. package/lib/common/styles/utilities/_general.scss +49 -2
  154. package/lib/common/theming/_m2-all-theme.scss +0 -2
  155. package/lib/form-validators/models/config/prop-config.d.ts +2 -0
  156. package/lib/form-validators/models/property-info.d.ts +8 -0
  157. package/lib/layout/_m2-layout-theme.scss +1 -1
  158. package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +14 -5
  159. package/lib/table/models/table-config.d.ts +29 -0
  160. package/lib/table/models/table-query-config.d.ts +26 -0
  161. package/lib/table/table.module.d.ts +2 -0
  162. package/package.json +3 -3
  163. package/esm2022/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +0 -155
@@ -322,6 +322,8 @@ export class DefaultContainer {
322
322
  /* Update property information if requested */
323
323
  property.dataPropertyName = propertyInfo.dataPropertyName;
324
324
  property.defaultValue = propertyInfo.defaultValue;
325
+ property.valuePath = propertyInfo.valuePath;
326
+ property.value = propertyInfo.value;
325
327
  }
326
328
  }
327
329
  /**
@@ -495,4 +497,4 @@ export class DefaultContainer {
495
497
  * This class serves as a container for managing instance-related configurations and properties.
496
498
  */
497
499
  export const defaultContainer = new DefaultContainer();
498
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUVoRSxxRUFBcUU7UUFDckUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhGLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUMsTUFBVyxFQUFFLE9BQXVCO1FBQ3RELDREQUE0RDtRQUM1RCxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUV0Riw0Q0FBNEM7UUFDNUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLHdGQUF3RjtZQUN4RixLQUFLLElBQUksTUFBTSxJQUFJLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsNkRBQTZEO2dCQUM3RCxLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDaEMsbUVBQW1FO29CQUNuRSxJQUFJLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLGVBQWUsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBRXhKLDZEQUE2RDtvQkFDN0QsSUFBSSxZQUFZLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO29CQUN0RCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osb0ZBQW9GO3dCQUNwRixJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQzs0QkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssZUFBZSxJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssY0FBYyxDQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzVKLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixrSEFBa0g7WUFDbEgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsTUFBVyxFQUFFLFVBQTBCLEVBQUUsTUFBbUI7UUFDN0UsNkdBQTZHO1FBQzdHLEtBQUssSUFBSSxZQUFZLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbEMsSUFBSSxXQUFXLEdBQVksS0FBSyxDQUFDO1lBRWpDLG1EQUFtRDtZQUNuRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQix3RUFBd0U7Z0JBQ3hFLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUM7WUFDMUYsQ0FBQztZQUVELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2YscUNBQXFDO2dCQUNyQyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUMxQixtREFBbUQ7b0JBQ25ELEtBQUssSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQzNDLDRDQUE0Qzt3QkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUcsTUFBTSxDQUFDLGdCQUF3QixDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsZ0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVMLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCx5Q0FBeUM7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDMUcsQ0FBQztnQkFFRCwyQ0FBMkM7Z0JBQzNDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQy9HLENBQUM7Z0JBRUQsZ0RBQWdEO2dCQUNoRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUN4SCxDQUFDO2dCQUVELGdDQUFnQztnQkFDaEMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLFlBQVksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtnQkFDdkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsTUFBVyxFQUFFLGNBQW1CLEVBQUUsV0FBbUIsRUFBRSxhQUFxQixFQUFFLEtBQVc7UUFDekcsZ0hBQWdIO1FBQ2hILElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEYsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLDREQUE0RDtZQUM1RCxJQUFJLENBQUUsUUFBUSxDQUFDLFVBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLFVBQWtCLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ25ELENBQUM7WUFFRCwrREFBK0Q7WUFDOUQsUUFBUSxDQUFDLFVBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxrQkFBa0IsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLE1BQVcsRUFBRSxhQUFxQjtRQUMvRyw4Q0FBOEM7UUFDOUMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLENBQUM7UUFFL0Msc0VBQXNFO1FBQ3RFLElBQUksWUFBWSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFFaEUsdURBQXVEO1FBQ3ZELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQztRQUVuRiwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsNEZBQTRGO1FBQzVGLENBQUMsUUFBUSxFQUFFLHVCQUErQixDQUFBLENBQUMsYUFBYSxDQUFDLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBRTdILHFEQUFxRDtRQUNyRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXpFLDhCQUE4QjtRQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5QiwwRUFBMEU7Z0JBQzFFLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUVqTCxrRkFBa0Y7Z0JBQ2xGLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSx1QkFBK0IsQ0FBQSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUN6RixDQUFDLFFBQVEsRUFBRSx1QkFBK0IsQ0FBQSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9GLENBQUM7Z0JBRUQsd0RBQXdEO2dCQUN4RCxJQUFJLGVBQWUsR0FBRyxDQUFDLFFBQVEsRUFBRSx1QkFBK0IsQ0FBQSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUcsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzdDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osbURBQW1EO2dCQUNuRCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsdUJBQStCLENBQUEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDdEYsQ0FBQyxRQUFRLEVBQUUsdUJBQStCLENBQUEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM1RixDQUFDO2dCQUVELGdEQUFnRDtnQkFDaEQsQ0FBQyxRQUFRLEVBQUUsdUJBQStCLENBQUEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2hJLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLElBQUksQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGNBQXNCLEVBQUUsTUFBVyxFQUFFLE9BQWdCO1FBQ3BILHdDQUF3QztRQUN4QyxJQUFJLHNCQUFzQixHQUEyQjtZQUNqRCxhQUFhLEVBQUUsY0FBYztZQUM3QixZQUFZLEVBQUUsV0FBVztZQUN6QixjQUFjLEVBQUUsY0FBYztZQUM5QixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFdBQVcsRUFBRSxjQUFjLEtBQUssVUFBVTtTQUM3QyxDQUFBO1FBRUQsOENBQThDO1FBQzlDLElBQUksYUFBYSxHQUFHLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGtCQUFrQixDQUFDLElBQVksRUFBRSxZQUFvQixFQUFFLE1BQVcsRUFBRSxNQUFXLEVBQUUsTUFBWTtRQUNoRyxxQ0FBcUM7UUFDckMsSUFBSSxZQUFZLEdBQWlCO1lBQzdCLElBQUksRUFBRSxJQUFJO1lBQ1YsWUFBWSxFQUFFLFlBQVk7WUFDMUIsTUFBTSxFQUFFLE1BQU07WUFDZCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEQsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM3RCxDQUFBO1FBRUQsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG9CQUFvQixDQUFDLFlBQWlCO1FBQ3pDLGtDQUFrQztRQUNsQyxJQUFJLGlCQUFpQixHQUFzQjtZQUN2QyxRQUFRLEVBQUUsWUFBWSxFQUFNLDRDQUE0QztZQUN4RSxtQkFBbUIsRUFBRSxFQUFFLEVBQUssb0NBQW9DO1lBQ2hFLFVBQVUsRUFBRSxFQUFFLEVBQWMsNkNBQTZDO1lBQ3pFLHVCQUF1QixFQUFFO2dCQUNyQix5QkFBeUI7Z0JBQ3pCLFFBQVEsRUFBRTtvQkFDTixzQkFBc0IsRUFBRSxFQUFFLEVBQUUscURBQXFEO29CQUNqRixlQUFlLEVBQUUsRUFBRSxFQUFTLDhDQUE4QztvQkFDMUUsV0FBVyxFQUFFLEVBQUUsQ0FBYSxnREFBZ0Q7aUJBQy9FO2dCQUVELHNCQUFzQjtnQkFDdEIsS0FBSyxFQUFFO29CQUNILHNCQUFzQixFQUFFLEVBQUUsRUFBRSxrREFBa0Q7b0JBQzlFLGVBQWUsRUFBRSxFQUFFLEVBQVMsMkNBQTJDO29CQUN2RSxXQUFXLEVBQUUsRUFBRSxDQUFhLDZDQUE2QztpQkFDNUU7Z0JBRUQsOEJBQThCO2dCQUM5QixZQUFZLEVBQUU7b0JBQ1Ysc0JBQXNCLEVBQUUsRUFBRSxFQUFFLDBEQUEwRDtvQkFDdEYsZUFBZSxFQUFFLEVBQUUsRUFBUyxtREFBbUQ7b0JBQy9FLFdBQVcsRUFBRSxFQUFFLENBQWEscURBQXFEO2lCQUNwRjthQUNKO1lBRUQsNkNBQTZDO1lBQzdDLFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUM7UUFFRix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV2QywyQ0FBMkM7UUFDM0MsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsWUFBaUIsRUFBRSxZQUEwQixFQUFFLG1CQUE0QixLQUFLO1FBQy9GLDhDQUE4QztRQUM5QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUM7UUFFbkYsa0NBQWtDO1FBQ2xDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCx1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNKLHlEQUF5RDtZQUN6RCxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRW5ELDREQUE0RDtZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLFFBQTJCLEVBQUUsWUFBMEIsRUFBRSxnQkFBeUIsS0FBSztRQUMxRyx1RUFBdUU7UUFDdkUsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osK0RBQStEO1lBQy9ELFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLDhDQUE4QztZQUM5QyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1lBQzFELFFBQVEsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsWUFBaUIsRUFBRSxzQkFBOEM7UUFDbEYsOENBQThDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUcsd0RBQXdEO1FBQ3hELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQztRQUNuRixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsNEVBQTRFO1lBQzVFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUNKLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkQsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDdkYsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9FLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0kscUJBQXFCLENBQUMsUUFBYSxFQUFFLHNCQUE4QztRQUN0Rix3RUFBd0U7UUFDeEUsSUFBSSxRQUFRLElBQUksc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUMsZ0RBQWdEO1lBQ2hELElBQUksc0JBQXNCLENBQUMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxHQUFHO2dCQUM1RCxzQkFBc0IsQ0FBQyxjQUFjLElBQUksZUFBZSxDQUFDLEVBQUU7Z0JBQzNELHNCQUFzQixDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUM5RCxDQUFDO2dCQUNDLDZDQUE2QztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM5RCw2REFBNkQ7b0JBQzdELElBQUksT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNuRSxvRUFBb0U7d0JBQ3BFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUN2SSxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLDBEQUEwRDtnQkFDMUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5SixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxxQkFBcUIsQ0FBQyxRQUFhLEVBQUUsY0FBc0IsRUFBRSxTQUFpQixFQUFFLFlBQW9CO1FBQ3ZHOzs7V0FHRztRQUNILElBQUksUUFBUSxJQUFJLENBQ1osQ0FBQyxjQUFjLElBQUksZUFBZSxDQUFDLE9BQU87WUFDdEMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxXQUFXO1lBQzdDLGNBQWMsSUFBSSxlQUFlLENBQUMsa0JBQWtCO1lBQ3BELGNBQWMsSUFBSSxlQUFlLENBQUMsUUFBUTtZQUMxQyxjQUFjLElBQUksZUFBZSxDQUFDLGVBQWU7WUFDakQsY0FBYyxJQUFJLGVBQWUsQ0FBQyxTQUFTO1lBQzNDLGNBQWMsSUFBSSxlQUFlLENBQUMsTUFBTTtZQUN4QyxjQUFjLElBQUksZUFBZSxDQUFDLE9BQU87WUFDekMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDOUMsQ0FBQyxjQUFjLElBQUksZUFBZSxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUM7WUFDM0QsQ0FBQyxDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsT0FBTyxJQUFJLGNBQWMsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDLENBQzFHLEVBQUUsQ0FBQztZQUNBLDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksdUJBQXVCLENBQUMsUUFBMkIsRUFBRSxZQUFvQixFQUFFLGVBQXVCO1FBQ3JHLCtCQUErQjtRQUMvQixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsZ0RBQWdEO1lBQ2hELElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVuRSx1REFBdUQ7WUFDdkQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixpRUFBaUU7Z0JBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztvQkFDdkMsUUFBUSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztnQkFDN0MsQ0FBQztnQkFFRCwyRUFBMkU7Z0JBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDckQsUUFBUSxDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0QsQ0FBQztnQkFFRCx1RkFBdUY7Z0JBQ3ZGLElBQUksUUFBUSxDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuRixRQUFRLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLG1EQUFtRDtnQkFDbkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsQ0FBQzt3QkFDakQsYUFBYSxFQUFFLENBQUM7d0JBQ2hCLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDdkIsaUJBQWlCLEVBQUUsZUFBZTtxQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLG1CQUFtQixDQUFDLFFBQTJCLEVBQUUsWUFBb0IsRUFBRSxPQUFjO1FBQ3hGLGdDQUFnQztRQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsa0VBQWtFO1lBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDdkMsUUFBUSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztZQUM3QyxDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLGtFQUFrRTtnQkFDbEUsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNsQyw4RUFBOEU7b0JBQzlFLElBQUksQ0FBRSxRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7d0JBQzNELFFBQVEsQ0FBQywwQkFBa0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNsRSxDQUFDO29CQUVELDJGQUEyRjtvQkFDM0YsSUFBSyxRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN0RixRQUFRLENBQUMsMEJBQWtDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDaEYsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osa0RBQWtEO29CQUNsRCxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNqQyw4REFBOEQ7d0JBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzs0QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQzt3QkFFRCxtRUFBbUU7d0JBQ25FLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUM7d0JBQ25DLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFksIFJYQ09ERSB9IGZyb20gXCIuLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBERUNPUkFUT1JTIH0gZnJvbSBcIi4uL2NvbnN0L2RlY29yYXRvcnMuY29uc3RcIjtcclxuaW1wb3J0IHsgUHJvcHNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9wcm9wcy1jb25maWdcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZGVjb3JhdG9yLWNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgSW5zdGFuY2VDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2luc3RhbmNlLWNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3BlcnR5LWluZm9cIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4vYW5ub3RhdGlvbi10eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBkZWZhdWx0IGNvbnRhaW5lciBmb3IgbWFuYWdpbmcgaW5zdGFuY2UgY29uZmlndXJhdGlvbnMuXHJcbiAqIFxyXG4gKiBNYW5hZ2VzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIHZhbGlkYXRpb24gZGVjb3JhdG9ycywgc2FuaXRpemVycywgYW5kIG90aGVyIHByb3BlcnRpZXMgZm9yIGNsYXNzZXMuXHJcbiAqIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBwcm9wZXJ0aWVzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb250YWluZXIge1xyXG4gICAgLyoqXHJcbiAgKiBSZXByZXNlbnRzIHdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBvcGVyYXRpbmcgaW4gZXhwZXJpbWVudGFsIG1vZGUuXHJcbiAgKiBFeHBlcmltZW50YWwgbW9kZSBtYXkgaW50cm9kdWNlIGZlYXR1cmVzIHRoYXQgYXJlIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50IG9yIHRlc3RpbmcuXHJcbiAgKi9cclxuICAgIHB1YmxpYyBpc0V4cGVyaW1lbnRhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgY29udGFpbmluZyBpbnN0YW5jZXMgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICogRWFjaCBlbGVtZW50IHJlcHJlc2VudHMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggYXNzb2NpYXRlZCBwcm9wZXJ0aWVzIGFuZCBkZWNvcmF0b3JzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluc3RhbmNlczogSW5zdGFuY2VDb250YWluZXJbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ291bnRlciB1c2VkIGZvciBnZW5lcmF0aW5nIHVuaXF1ZSBpZGVudGlmaWVycyBmb3IgbW9kZWwgaW5zdGFuY2VzLlxyXG4gICAgICogVGhpcyBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBtb2RlbCBpbnN0YW5jZSBpcyBhZGRlZCB0byB0aGUgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbW9kZWxJbmNyZW1lbnRDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0PFQ+KGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyBhbiBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEluc3RhbmNlKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSBpbnN0YW5jZSBmdW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGluc3RhbmNlcyB0byBmaW5kIHRoZSBvbmUgbWF0Y2hpbmcgdGhlIGluc3RhbmNlIGZ1bmN0aW9uICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG5cclxuICAgICAgICAvKiBJZiBubyBpbnN0YW5jZSBpcyBmb3VuZCwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBSZXR1cm4gdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgY29uZmlndXJhdGlvbnMgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWdzIFRoZSBjb25maWd1cmF0aW9ucy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BzQ29uZmlnKHRhcmdldDogYW55LCBjb25maWdzPzogUHJvcHNDb25maWdbXSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IHRhcmdldCk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZXhpc3RzICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm9uZSBhcmUgcHJvdmlkZWQgKi9cclxuICAgICAgICAgICAgZm9yIChsZXQgY29uZmlnIG9mIGNvbmZpZ3MgPz8gW10pIHtcclxuICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydHkgbmFtZXMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb3Agb2YgY29uZmlnLnByb3BOYW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IGluZm8gaW4gdGhlIGluc3RhbmNlIGNvbnRhaW5lcidzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydHlJbmZvID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wICYmICh0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBJZiB0aGUgcHJvcGVydHkgaW5mbyBleGlzdHMsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBbcHJvcGVydHlJbmZvXSwgY29uZmlnKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBuYW1lIGlzICc6YWxsOicsIGFkZCBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIGZvciBhbGwgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCI6YWxsOlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BDb25maWcodGFyZ2V0LCBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maWx0ZXIodCA9PiB0LnByb3BlcnR5VHlwZSAhPT0gT0JKRUNUX1BST1BFUlRZICYmIHQucHJvcGVydHlUeXBlICE9PSBBUlJBWV9QUk9QRVJUWSkhLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb25maWdzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgLyogSWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBkb2VzIG5vdCBleGlzdCBhbmQgbm8gY29uZmlndXJhdGlvbnMgYXJlIHByb3ZpZGVkLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIodGFyZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcENvbmZpZyh0YXJnZXQ6IGFueSwgcHJvcGVydGllczogUHJvcGVydHlJbmZvW10sIGNvbmZpZzogUHJvcHNDb25maWcpIHtcclxuICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIHRoZSBwcm92aWRlZCBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGNvbmZpZ3VyYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWcgb2JqZWN0ICovXHJcbiAgICAgICAgZm9yICh2YXIgcHJvcGVydHlJbmZvIG9mIHByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgbGV0IGV4Y2x1ZGVQcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiBleGNsdWRlUHJvcE5hbWVzIGV4aXN0IGluIHRoZSBjb25maWcgKi9cclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5leGNsdWRlUHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY3VycmVudCBwcm9wZXJ0eSBzaG91bGQgYmUgZXhjbHVkZWQgYmFzZWQgb24gaXRzIG5hbWUgKi9cclxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVQcm9wID0gY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMuZmluZCh0ID0+IHQgPT0gcHJvcGVydHlJbmZvLm5hbWUpICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGV4Y2x1ZGVkICovXHJcbiAgICAgICAgICAgIGlmICghZXhjbHVkZVByb3ApIHtcclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudmFsaWRhdGlvbkNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHR5cGVOYW1lIGluIGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemUgdmFsaWRhdGlvbiBmb3IgdGhlIHByb3BlcnR5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdCh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIHR5cGVOYW1lLCAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0gPT09IHRydWUgPyB1bmRlZmluZWQgOiAoY29uZmlnLnZhbGlkYXRpb25Db25maWcgYXMgYW55KVt0eXBlTmFtZV0sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZXJyb3IgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lcnJvciwgREVDT1JBVE9SUy5lcnJvcilcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBkaXNhYmxlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmRpc2FibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5kaXNhYmxlLCBERUNPUkFUT1JTLmRpc2FibGVkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGVsZW1lbnRDbGFzcyBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lbGVtZW50Q2xhc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlY29yYXRvckNvbmZpZyh7IGNvbnN0cnVjdG9yOiB0YXJnZXQgfSwgMCwgcHJvcGVydHlJbmZvLm5hbWUsIGNvbmZpZy5lbGVtZW50Q2xhc3MsIERFQ09SQVRPUlMuZWxlbWVudENsYXNzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGlnbm9yZSBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmlnbm9yZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SW5mby5pZ25vcmUgPSBjb25maWcuaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgc2FuaXRpemVyIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1ldGVySW5kZXggVGhlIHBhcmFtZXRlciBpbmRleC5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUgcHJvcGVydHkga2V5LlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFNhbml0aXplcih0YXJnZXQ6IGFueSwgcGFyYW1ldGVySW5kZXg6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xyXG4gICAgICAgIC8qIFJldHJpZXZlcyB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzIGFuZCBhZGRzIGEgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gaXQgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmdldEluc3RhbmNlKHRhcmdldCwgcGFyYW1ldGVySW5kZXgsIHByb3BlcnR5S2V5LCBkZWNvcmF0b3JUeXBlKTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHNhbml0aXplcnMgb2JqZWN0IGZvciB0aGUgcHJvcGVydHkgZXhpc3RzICovXHJcbiAgICAgICAgICAgIGlmICghKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldID0gW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIFB1c2ggdGhlIHNhbml0aXplciBjb25maWd1cmF0aW9uIHRvIHRoZSBzYW5pdGl6ZXJzIG9iamVjdCAqL1xyXG4gICAgICAgICAgICAoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XS5wdXNoKHsgbmFtZTogZGVjb3JhdG9yVHlwZSwgY29uZmlnOiB2YWx1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvclR5cGUgVGhlIGRlY29yYXRvciB0eXBlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkRGVjb3JhdG9yQ29uZmlnKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBjb25maWc6IGFueSwgZGVjb3JhdG9yVHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIGlmIHRoZSBwcm9wZXJ0eSBrZXkgaXMgZGVmaW5lZCAqL1xyXG4gICAgICAgIGxldCBpc1Byb3BlcnR5S2V5ID0gKHByb3BlcnR5S2V5ICE9IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSB0aGUgZnVuY3Rpb24gb3IgY29uc3RydWN0b3IgdG8gYmUgdXNlZCBhcyBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2VGdW5jID0gIWlzUHJvcGVydHlLZXkgPyB0YXJnZXQgOiB0YXJnZXQuY29uc3RydWN0b3I7XHJcblxyXG4gICAgICAgIC8qIEZpbmQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiBpbnN0YW5jZUZ1bmMgKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maW5kKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi9cclxuICAgICAgICBpZiAoIWluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogQWRkIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIHRvIHRoZSBub24tdmFsaWRhdGlvbiBkZWNvcmF0b3JzIG9mIHRoZSBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29uZGl0aW9uYWxFeHByZXNzaW9uc1twcm9wZXJ0eUtleV0gPSBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uO1xyXG5cclxuICAgICAgICAvKiBFeHRyYWN0IGNvbHVtbnMgZnJvbSB0aGUgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiAqL1xyXG4gICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uLCB0cnVlKTtcclxuXHJcbiAgICAgICAgLyogSXRlcmF0ZSBvdmVyIGVhY2ggY29sdW1uICovXHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXJndW1lbnRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIC8qIENvbnN0cnVjdCB0aGUgY29sdW1uIG5hbWUgYmFzZWQgb24gd2hldGhlciBvYmplY3RQcm9wTmFtZSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZSA9ICghY29sdW1uLm9iamVjdFByb3BOYW1lKSA/IGAke2NvbHVtbi5wcm9wTmFtZX0ke1JYQ09ERX0ke2NvbHVtbi5hcmd1bWVudEluZGV4fWAgOiBgJHtjb2x1bW4ub2JqZWN0UHJvcE5hbWV9LiR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YDtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgY29sdW1uIGV4aXN0cyBpbiBjaGFuZ2VEZXRlY3Rpb24gYW5kIGluaXRpYWxpemUgaXQgaWYgbmVjZXNzYXJ5ICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBrZXkgdG8gdGhlIGNoYW5nZURldGVjdGlvbiBjb2x1bW4gKi9cclxuICAgICAgICAgICAgICAgIGxldCBkaXNhYmxlZENvbHVtbnMgPSAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY2hhbmdlRGV0ZWN0aW9uW2NvbHVtbk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbk5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkQ29sdW1ucy5wdXNoKHByb3BlcnR5S2V5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIEhhbmRsZSB0aGUgY29udHJvbFByb3AgaWYgYXJndW1lbnRJbmRleCBpcyAtMSAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFNldCB0aGUgY29sdW1uIG5hbWUgdG8gdHJ1ZSBpbiBjb250cm9sUHJvcCAqL1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNvbnRyb2xQcm9wW3Byb3BlcnR5S2V5XVtjb2x1bW4ucHJvcE5hbWUucmVwbGFjZShcIjtcIiwgXCJcIildID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBc3luYyBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0KHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBhbm5vdGF0aW9uVHlwZTogc3RyaW5nLCBjb25maWc6IGFueSwgaXNBc3luYzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICB2YXIgZGVjb3JhdG9yQ29uZmlndXJhdGlvbjogRGVjb3JhdG9yQ29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgICAgICAgcHJvcGVydHlJbmRleDogcGFyYW1ldGVySW5kZXgsXHJcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGFubm90YXRpb25UeXBlOiBhbm5vdGF0aW9uVHlwZSxcclxuICAgICAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgICAgIGlzQXN5bmM6IGlzQXN5bmMsXHJcbiAgICAgICAgICAgIGlzVmFsaWRhdG9yOiBhbm5vdGF0aW9uVHlwZSAhPT0gXCJ1cGRhdGVPblwiXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbighaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvciwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIHByb3BlcnR5IG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5VHlwZSBUaGUgcHJvcGVydHkgdHlwZS5cclxuICAgICAqIEBwYXJhbSBlbnRpdHkgVGhlIGVudGl0eS5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0UHJvcGVydHlPYmplY3QobmFtZTogc3RyaW5nLCBwcm9wZXJ0eVR5cGU6IHN0cmluZywgZW50aXR5OiBhbnksIHRhcmdldDogYW55LCBjb25maWc/OiBhbnkpIHtcclxuICAgICAgICAvKiBEZWZpbmUgdGhlIHByb3BlcnR5IGluZm9ybWF0aW9uICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBwcm9wZXJ0eVR5cGU6IHByb3BlcnR5VHlwZSxcclxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXHJcbiAgICAgICAgICAgIGRhdGFQcm9wZXJ0eU5hbWU6IGNvbmZpZyA/IGNvbmZpZy5uYW1lIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBlbnRpdHlQcm92aWRlcjogY29uZmlnID8gY29uZmlnLmVudGl0eVByb3ZpZGVyIDogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IHRvIHRoZSB0YXJnZXQncyBjb25zdHJ1Y3RvciAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkodGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhbiBpbnN0YW5jZSBjb250YWluZXIgdG8gdGhlIGxpc3Qgb2YgaW5zdGFuY2VzLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgYWRkZWQgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgLyogRGVmaW5lIGFuIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZUZ1bmMsICAgICAvKiBJbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUFubm90YXRpb25zOiBbXSwgICAgLyogQW5ub3RhdGlvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdLCAgICAgICAgICAgICAvKiBQcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgbm9uVmFsaWRhdGlvbkRlY29yYXRvcnM6IHtcclxuICAgICAgICAgICAgICAgIC8qIERpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBkaXNhYmxlZCBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiB7fSwgICAgICAgIC8qIENoYW5nZSBkZXRlY3Rpb24gZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlcnJvciBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudENsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczoge30sIC8qIENvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbFByb3A6IHt9ICAgICAgICAgICAgIC8qIENvbnRyb2wgcHJvcGVydGllcyBmb3IgZWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvKiBTYW5pdGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgc2FuaXRpemVyczoge31cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvKiBBZGQgdGhlIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChpbnN0YW5jZUNvbnRhaW5lcik7XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgY3JlYXRlZCBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICByZXR1cm4gaW5zdGFuY2VDb250YWluZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZUZ1bmMgVGhlIGluc3RhbmNlIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNGcm9tQW5ub3RhdGlvbiBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGZyb20gYW4gYW5ub3RhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BlcnR5KGluc3RhbmNlRnVuYzogYW55LCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNGcm9tQW5ub3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBpbnN0YW5jZSBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBleGlzdGluZyBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZSwgcHJvcGVydHlJbmZvLCAhaXNGcm9tQW5ub3RhdGlvbik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLyogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIGNvbnRhaW5lciBpZiBpdCBkb2Vzbid0IGV4aXN0ICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG5cclxuICAgICAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5SW5mbyBUaGUgcHJvcGVydHkgaW5mb3JtYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaXNBZGRQcm9wZXJ0eSBJbmRpY2F0ZXMgd2hldGhlciBpdCdzIGFkZGVkIGFzIGEgbmV3IHByb3BlcnR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8sIGlzQWRkUHJvcGVydHk6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIC8qIEZpbmQgdGhlIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5ID0gaW5zdGFuY2UucHJvcGVydGllcz8uZmluZCh0ID0+IHQubmFtZSA9PSBwcm9wZXJ0eUluZm8ubmFtZSk7XHJcblxyXG4gICAgICAgIC8qIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0IGFscmVhZHkgZXhpc3QgKi9cclxuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5wdXNoKHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0FkZFByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIC8qIFVwZGF0ZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWQgKi9cclxuICAgICAgICAgICAgcHJvcGVydHkuZGF0YVByb3BlcnR5TmFtZSA9IHByb3BlcnR5SW5mby5kYXRhUHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUgPSBwcm9wZXJ0eUluZm8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvY29yZS9kZWZhdWx0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7OztJQUdBO0lBQ08sY0FBYyxHQUFZLEtBQUssQ0FBQztJQUV2Qzs7O09BR0c7SUFDSyxTQUFTLEdBQXdCLEVBQUUsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBSSxZQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsQ0FBQyxNQUFXLEVBQUUsY0FBbUIsRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzNGLDhDQUE4QztRQUM5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUUvQyw0RUFBNEU7UUFDNUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFB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dGVudCI6WyJpbXBvcnQgeyBBUlJBWV9QUk9QRVJUWSwgT0JKRUNUX1BST1BFUlRZLCBQUk9QRVJUWSwgUlhDT0RFIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcbmltcG9ydCB7IERFQ09SQVRPUlMgfSBmcm9tIFwiLi4vY29uc3QvZGVjb3JhdG9ycy5jb25zdFwiO1xyXG5pbXBvcnQgeyBQcm9wc0NvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL3Byb3BzLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9kZWNvcmF0b3ItY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBJbnN0YW5jZUNvbnRhaW5lciB9IGZyb20gXCIuLi9tb2RlbHMvaW5zdGFuY2UtY29udGFpbmVyXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvcGVydHktaW5mb1wiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi9hbm5vdGF0aW9uLXR5cGVzXCI7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbnRhaW5lciB7XHJcbiAgICAvKipcclxuICAqIFJlcHJlc2VudHMgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIG9wZXJhdGluZyBpbiBleHBlcmltZW50YWwgbW9kZS5cclxuICAqIEV4cGVyaW1lbnRhbCBtb2RlIG1heSBpbnRyb2R1Y2UgZmVhdHVyZXMgdGhhdCBhcmUgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgb3IgdGVzdGluZy5cclxuICAqL1xyXG4gICAgcHVibGljIGlzRXhwZXJpbWVudGFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBjb250YWluaW5nIGluc3RhbmNlcyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbnMuXHJcbiAgICAgKiBFYWNoIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwbGljYXRpb24gd2l0aCBhc3NvY2lhdGVkIHByb3BlcnRpZXMgYW5kIGRlY29yYXRvcnMuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5zdGFuY2VzOiBJbnN0YW5jZUNvbnRhaW5lcltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3VudGVyIHVzZWQgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBtb2RlbCBpbnN0YW5jZXMuXHJcbiAgICAgKiBUaGlzIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgbmV3IG1vZGVsIGluc3RhbmNlIGlzIGFkZGVkIHRvIHRoZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtb2RlbEluY3JlbWVudENvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGFuIGluc3RhbmNlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SW5zdGFuY2UodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluc3RhbmNlIGZ1bmN0aW9uIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlRnVuYyA9ICFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yO1xyXG5cclxuICAgICAgICAvKiBGaWx0ZXIgaW5zdGFuY2VzIHRvIGZpbmQgdGhlIG9uZSBtYXRjaGluZyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gKi9cclxuICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcblxyXG4gICAgICAgIC8qIElmIG5vIGluc3RhbmNlIGlzIGZvdW5kLCBjcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgaWYgKCFpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFJldHVybiB0aGUgaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBjb25maWd1cmF0aW9ucyB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZ3MgVGhlIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcHNDb25maWcodGFyZ2V0OiBhbnksIGNvbmZpZ3M/OiBQcm9wc0NvbmZpZ1tdKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFyZ2V0ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGNvbnRhaW5lciBleGlzdHMgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2VDb250YWluZXIpIHtcclxuICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucyBvciBhbiBlbXB0eSBhcnJheSBpZiBub25lIGFyZSBwcm92aWRlZCAqL1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjb25maWcgb2YgY29uZmlncyA/PyBbXSkge1xyXG4gICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSBwcm9wZXJ0eSBuYW1lcyBpbiB0aGUgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcHJvcCBvZiBjb25maWcucHJvcE5hbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgaW5mbyBpbiB0aGUgaW5zdGFuY2UgY29udGFpbmVyJ3MgcHJvcGVydGllcyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0eUluZm8gPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3AgJiYgKHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBwcm9wZXJ0eSBpbmZvIGV4aXN0cywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIFtwcm9wZXJ0eUluZm9dLCBjb25maWcpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IG5hbWUgaXMgJzphbGw6JywgYWRkIHByb3BlcnR5IGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBcIjphbGw6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcENvbmZpZyh0YXJnZXQsIGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXM/LmZpbHRlcih0ID0+IHQucHJvcGVydHlUeXBlICE9PSBPQkpFQ1RfUFJPUEVSVFkgJiYgdC5wcm9wZXJ0eVR5cGUgIT09IEFSUkFZX1BST1BFUlRZKSEsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ3MgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAvKiBJZiB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGRvZXMgbm90IGV4aXN0IGFuZCBubyBjb25maWd1cmF0aW9ucyBhcmUgcHJvdmlkZWQsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBjb250YWluZXIgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcih0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSBjb25maWd1cmF0aW9uIHRvIHRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wQ29uZmlnKHRhcmdldDogYW55LCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUluZm9bXSwgY29uZmlnOiBQcm9wc0NvbmZpZykge1xyXG4gICAgICAgIC8qIEl0ZXJhdGVzIHRocm91Z2ggdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZyBvYmplY3QgKi9cclxuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUluZm8gb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICBsZXQgZXhjbHVkZVByb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrIGlmIGV4Y2x1ZGVQcm9wTmFtZXMgZXhpc3QgaW4gdGhlIGNvbmZpZyAqL1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLmV4Y2x1ZGVQcm9wTmFtZXMpIHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjdXJyZW50IHByb3BlcnR5IHNob3VsZCBiZSBleGNsdWRlZCBiYXNlZCBvbiBpdHMgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgZXhjbHVkZVByb3AgPSBjb25maWcuZXhjbHVkZVByb3BOYW1lcy5maW5kKHQgPT4gdCA9PSBwcm9wZXJ0eUluZm8ubmFtZSkgIT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogSWYgdGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgZXhjbHVkZWQgKi9cclxuICAgICAgICAgICAgaWYgKCFleGNsdWRlUHJvcCkge1xyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgdmFsaWRhdGlvbiBjb25maWd1cmF0aW9ucyAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52YWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogSXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdHlwZU5hbWUgaW4gY29uZmlnLnZhbGlkYXRpb25Db25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZSB2YWxpZGF0aW9uIGZvciB0aGUgcHJvcGVydHkgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0KHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgdHlwZU5hbWUsIChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSA9PT0gdHJ1ZSA/IHVuZGVmaW5lZCA6IChjb25maWcudmFsaWRhdGlvbkNvbmZpZyBhcyBhbnkpW3R5cGVOYW1lXSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBcHBseSBlcnJvciBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVycm9yLCBERUNPUkFUT1JTLmVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEFwcGx5IGRpc2FibGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZGlzYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmRpc2FibGUsIERFQ09SQVRPUlMuZGlzYWJsZWQpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgZWxlbWVudENsYXNzIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVsZW1lbnRDbGFzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGVjb3JhdG9yQ29uZmlnKHsgY29uc3RydWN0b3I6IHRhcmdldCB9LCAwLCBwcm9wZXJ0eUluZm8ubmFtZSwgY29uZmlnLmVsZW1lbnRDbGFzcywgREVDT1JBVE9SUy5lbGVtZW50Q2xhc3MpXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQXBwbHkgaWdub3JlIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuaWdub3JlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJbmZvLmlnbm9yZSA9IGNvbmZpZy5pZ25vcmVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBzYW5pdGl6ZXIgdG8gdGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldC5cclxuICAgICAqIEBwYXJhbSBwYXJhbWV0ZXJJbmRleCBUaGUgcGFyYW1ldGVyIGluZGV4LlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5S2V5IFRoZSBwcm9wZXJ0eSBrZXkuXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkU2FuaXRpemVyKHRhcmdldDogYW55LCBwYXJhbWV0ZXJJbmRleDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XHJcbiAgICAgICAgLyogUmV0cmlldmVzIHRoZSBpbnN0YW5jZSBjb250YWluZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMgYW5kIGFkZHMgYSBzYW5pdGl6ZXIgY29uZmlndXJhdGlvbiB0byBpdCAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuZ2V0SW5zdGFuY2UodGFyZ2V0LCBwYXJhbWV0ZXJJbmRleCwgcHJvcGVydHlLZXksIGRlY29yYXRvclR5cGUpO1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgc2FuaXRpemVycyBvYmplY3QgZm9yIHRoZSBwcm9wZXJ0eSBleGlzdHMgKi9cclxuICAgICAgICAgICAgaWYgKCEoaW5zdGFuY2Uuc2FuaXRpemVycyBhcyBhbnkpW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlLnNhbml0aXplcnMgYXMgYW55KVtwcm9wZXJ0eUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogUHVzaCB0aGUgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHNhbml0aXplcnMgb2JqZWN0ICovXHJcbiAgICAgICAgICAgIChpbnN0YW5jZS5zYW5pdGl6ZXJzIGFzIGFueSlbcHJvcGVydHlLZXldLnB1c2goeyBuYW1lOiBkZWNvcmF0b3JUeXBlLCBjb25maWc6IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yVHlwZSBUaGUgZGVjb3JhdG9yIHR5cGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGREZWNvcmF0b3JDb25maWcodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGNvbmZpZzogYW55LCBkZWNvcmF0b3JUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvKiBEZXRlcm1pbmUgaWYgdGhlIHByb3BlcnR5IGtleSBpcyBkZWZpbmVkICovXHJcbiAgICAgICAgbGV0IGlzUHJvcGVydHlLZXkgPSAocHJvcGVydHlLZXkgIT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgICAgLyogRGV0ZXJtaW5lIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0byBiZSB1c2VkIGFzIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUZ1bmMgPSAhaXNQcm9wZXJ0eUtleSA/IHRhcmdldCA6IHRhcmdldC5jb25zdHJ1Y3RvcjtcclxuXHJcbiAgICAgICAgLyogRmluZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIGJhc2VkIG9uIGluc3RhbmNlRnVuYyAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgIC8qIElmIHRoZSBpbnN0YW5jZSBjb250YWluZXIgZG9lc24ndCBleGlzdCwgY3JlYXRlIGEgbmV3IG9uZSAqL1xyXG4gICAgICAgIGlmICghaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgdG8gdGhlIG5vbi12YWxpZGF0aW9uIGRlY29yYXRvcnMgb2YgdGhlIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb25kaXRpb25hbEV4cHJlc3Npb25zW3Byb3BlcnR5S2V5XSA9IGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb247XHJcblxyXG4gICAgICAgIC8qIEV4dHJhY3QgY29sdW1ucyBmcm9tIHRoZSBjb25kaXRpb25hbCBleHByZXNzaW9uICovXHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBJdGVyYXRlIG92ZXIgZWFjaCBjb2x1bW4gKi9cclxuICAgICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5hcmd1bWVudEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgLyogQ29uc3RydWN0IHRoZSBjb2x1bW4gbmFtZSBiYXNlZCBvbiB3aGV0aGVyIG9iamVjdFByb3BOYW1lIGlzIGRlZmluZWQgKi9cclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gKCFjb2x1bW4ub2JqZWN0UHJvcE5hbWUpID8gYCR7Y29sdW1uLnByb3BOYW1lfSR7UlhDT0RFfSR7Y29sdW1uLmFyZ3VtZW50SW5kZXh9YCA6IGAke2NvbHVtbi5vYmplY3RQcm9wTmFtZX0uJHtjb2x1bW4ucHJvcE5hbWV9JHtSWENPREV9JHtjb2x1bW4uYXJndW1lbnRJbmRleH1gO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHRoZSBjb2x1bW4gZXhpc3RzIGluIGNoYW5nZURldGVjdGlvbiBhbmQgaW5pdGlhbGl6ZSBpdCBpZiBuZWNlc3NhcnkgKi9cclxuICAgICAgICAgICAgICAgIGlmICghKGluc3RhbmNlPy5ub25WYWxpZGF0aW9uRGVjb3JhdG9ycyBhcyBhbnkpW2RlY29yYXRvclR5cGVdLmNoYW5nZURldGVjdGlvbltjb2x1bW5OYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIHByb3BlcnR5IGtleSB0byB0aGUgY2hhbmdlRGV0ZWN0aW9uIGNvbHVtbiAqL1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkQ29sdW1ucyA9IChpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jaGFuZ2VEZXRlY3Rpb25bY29sdW1uTmFtZV07XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWRDb2x1bW5zLmluZGV4T2YoY29sdW1uTmFtZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDb2x1bW5zLnB1c2gocHJvcGVydHlLZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLyogSGFuZGxlIHRoZSBjb250cm9sUHJvcCBpZiBhcmd1bWVudEluZGV4IGlzIC0xICovXHJcbiAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZT8ubm9uVmFsaWRhdGlvbkRlY29yYXRvcnMgYXMgYW55KVtkZWNvcmF0b3JUeXBlXS5jb250cm9sUHJvcFtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldID0ge307XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLyogU2V0IHRoZSBjb2x1bW4gbmFtZSB0byB0cnVlIGluIGNvbnRyb2xQcm9wICovXHJcbiAgICAgICAgICAgICAgICAoaW5zdGFuY2U/Lm5vblZhbGlkYXRpb25EZWNvcmF0b3JzIGFzIGFueSlbZGVjb3JhdG9yVHlwZV0uY29udHJvbFByb3BbcHJvcGVydHlLZXldW2NvbHVtbi5wcm9wTmFtZS5yZXBsYWNlKFwiO1wiLCBcIlwiKV0gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIHBhcmFtZXRlckluZGV4IFRoZSBwYXJhbWV0ZXIgaW5kZXguXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIHByb3BlcnR5IGtleS5cclxuICAgICAqIEBwYXJhbSBhbm5vdGF0aW9uVHlwZSBUaGUgYW5ub3RhdGlvbiB0eXBlLlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FzeW5jIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXQodGFyZ2V0OiBhbnksIHBhcmFtZXRlckluZGV4OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGNvbmZpZzogYW55LCBpc0FzeW5jOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgLyogRGVmaW5lIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiAqL1xyXG4gICAgICAgIHZhciBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICAgICAgICBwcm9wZXJ0eUluZGV4OiBwYXJhbWV0ZXJJbmRleCxcclxuICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgYW5ub3RhdGlvblR5cGU6IGFubm90YXRpb25UeXBlLFxyXG4gICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICAgICAgaXNBc3luYzogaXNBc3luYyxcclxuICAgICAgICAgICAgaXNWYWxpZGF0b3I6IGFubm90YXRpb25UeXBlICE9PSBcInVwZGF0ZU9uXCJcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIERldGVybWluZSBpZiB0aGUgcHJvcGVydHkga2V5IGlzIGRlZmluZWQgKi9cclxuICAgICAgICBsZXQgaXNQcm9wZXJ0eUtleSA9IChwcm9wZXJ0eUtleSAhPSB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgICAvKiBEZXRlcm1pbmUgdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgYXMgaW5zdGFuY2VGdW5jICovXHJcbiAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKCFpc1Byb3BlcnR5S2V5ID8gdGFyZ2V0IDogdGFyZ2V0LmNvbnN0cnVjdG9yLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGEgcHJvcGVydHkgb2JqZWN0LlxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlUeXBlIFRoZSBwcm9wZXJ0eSB0eXBlLlxyXG4gICAgICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5LlxyXG4gICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0LlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRQcm9wZXJ0eU9iamVjdChuYW1lOiBzdHJpbmcsIHByb3BlcnR5VHlwZTogc3RyaW5nLCBlbnRpdHk6IGFueSwgdGFyZ2V0OiBhbnksIGNvbmZpZz86IGFueSkge1xyXG4gICAgICAgIC8qIERlZmluZSB0aGUgcHJvcGVydHkgaW5mb3JtYXRpb24gKi9cclxuICAgICAgICB2YXIgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgIHByb3BlcnR5VHlwZTogcHJvcGVydHlUeXBlLFxyXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcclxuICAgICAgICAgICAgZGF0YVByb3BlcnR5TmFtZTogY29uZmlnID8gY29uZmlnLm5hbWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGVudGl0eVByb3ZpZGVyOiBjb25maWcgPyBjb25maWcuZW50aXR5UHJvdmlkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgcHJvcGVydHkgdG8gdGhlIHRhcmdldCdzIGNvbnN0cnVjdG9yICovXHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eSh0YXJnZXQuY29uc3RydWN0b3IsIHByb3BlcnR5SW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGFuIGluc3RhbmNlIGNvbnRhaW5lciB0byB0aGUgbGlzdCBvZiBpbnN0YW5jZXMuXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2VGdW5jIFRoZSBpbnN0YW5jZSBmdW5jdGlvbi5cclxuICAgICAqIEByZXR1cm5zIFRoZSBhZGRlZCBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAvKiBEZWZpbmUgYW4gaW5zdGFuY2UgY29udGFpbmVyICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlRnVuYywgICAgIC8qIEluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVyICovXHJcbiAgICAgICAgICAgIHByb3BlcnR5QW5ub3RhdGlvbnM6IFtdLCAgICAvKiBBbm5vdGF0aW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgcHJvcGVydGllczogW10sICAgICAgICAgICAgIC8qIFByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBub25WYWxpZGF0aW9uRGVjb3JhdG9yczoge1xyXG4gICAgICAgICAgICAgICAgLyogRGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZGlzYWJsZWQgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGRpc2FibGVkIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3Rpb246IHt9LCAgICAgICAgLyogQ2hhbmdlIGRldGVjdGlvbiBmb3IgZXJyb3IgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQcm9wOiB7fSAgICAgICAgICAgICAvKiBDb250cm9sIHByb3BlcnRpZXMgZm9yIGVycm9yIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgLyogRWxlbWVudCBjbGFzcyBkZWNvcmF0b3JzICovXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Q2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiB7fSwgLyogQ29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgZm9yIGVsZW1lbnQgY2xhc3MgZGVjb3JhdG9ycyAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdGlvbjoge30sICAgICAgICAvKiBDaGFuZ2UgZGV0ZWN0aW9uIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcDoge30gICAgICAgICAgICAgLyogQ29udHJvbCBwcm9wZXJ0aWVzIGZvciBlbGVtZW50IGNsYXNzIGRlY29yYXRvcnMgKi9cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8qIFNhbml0aXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgICAgICBzYW5pdGl6ZXJzOiB7fVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8qIEFkZCB0aGUgaW5zdGFuY2UgY29udGFpbmVyIHRvIHRoZSBpbnN0YW5jZXMgYXJyYXkgKi9cclxuICAgICAgICB0aGlzLmluc3RhbmNlcy5wdXNoKGluc3RhbmNlQ29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgLyogUmV0dXJuIHRoZSBjcmVhdGVkIGluc3RhbmNlIGNvbnRhaW5lciAqL1xyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZUNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0Zyb21Bbm5vdGF0aW9uIEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgZnJvbSBhbiBhbm5vdGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jOiBhbnksIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvLCBpc0Zyb21Bbm5vdGF0aW9uOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICAvKiBGaW5kIHRoZSBpbnN0YW5jZSBpbiB0aGUgaW5zdGFuY2VzIGFycmF5ICovXHJcbiAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmluZChpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGluc3RhbmNlIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIGV4aXN0aW5nIGluc3RhbmNlICovXHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8sICFpc0Zyb21Bbm5vdGF0aW9uKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2UgY29udGFpbmVyIGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcblxyXG4gICAgICAgICAgICAvKiBBZGQgcHJvcGVydHkgaW5mb3JtYXRpb24gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UgKi9cclxuICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlJbmZvIFRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbi5cclxuICAgICAqIEBwYXJhbSBpc0FkZFByb3BlcnR5IEluZGljYXRlcyB3aGV0aGVyIGl0J3MgYWRkZWQgYXMgYSBuZXcgcHJvcGVydHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbywgaXNBZGRQcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgLyogRmluZCB0aGUgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRoZSBpbnN0YW5jZSdzIHByb3BlcnRpZXMgKi9cclxuICAgICAgICB2YXIgcHJvcGVydHkgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzPy5maW5kKHQgPT4gdC5uYW1lID09IHByb3BlcnR5SW5mby5uYW1lKTtcclxuXHJcbiAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCAqL1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogQWRkIHRoZSBwcm9wZXJ0eSBpbmZvcm1hdGlvbiB0byB0aGUgaW5zdGFuY2UncyBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnRpZXM/LnB1c2gocHJvcGVydHlJbmZvKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzQWRkUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLyogVXBkYXRlIHByb3BlcnR5IGluZm9ybWF0aW9uIGlmIHJlcXVlc3RlZCAqL1xyXG4gICAgICAgICAgICBwcm9wZXJ0eS5kYXRhUHJvcGVydHlOYW1lID0gcHJvcGVydHlJbmZvLmRhdGFQcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSA9IHByb3BlcnR5SW5mby5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlUGF0aCA9IHByb3BlcnR5SW5mby52YWx1ZVBhdGg7XHJcbiAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gcHJvcGVydHlJbmZvLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gYW5ub3RhdGlvbiB0byB0aGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlRnVuYyBUaGUgaW5zdGFuY2UgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gZGVjb3JhdG9yQ29uZmlndXJhdGlvbiBUaGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgLyogQWRkIHByb3BlcnR5IGluZm9ybWF0aW9uIHRvIHRoZSBpbnN0YW5jZSAqL1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0sIHRydWUpO1xyXG5cclxuICAgICAgICAvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaW5zdGFuY2UgaW4gdGhlIGluc3RhbmNlcyBhcnJheSAqL1xyXG4gICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbmQoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGluc3RhbmNlJ3MgcHJvcGVydHkgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydHlBbm5vdGF0aW9ucy5wdXNoKGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBBZGQgY2hhbmdlIHZhbGlkYXRpb24gYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24pO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lLCBjb2x1bW5zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEFkZCBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIHZhbGlkYXRpb24gKi9cclxuICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZHluYW1pY0NvbmZpZykge1xyXG4gICAgICAgICAgICBsZXQgY29sdW1ucyA9IExpbnEuZHluYW1pY0NvbmZpZ1BhcnNlcihkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5keW5hbWljQ29uZmlnLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IGNvbmRpdGlvbmFsIGNvbHVtbnMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uICovXHJcbiAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbENvbHVtbnMoaW5zdGFuY2UsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBjb25kaXRpb25hbCBjb2x1bW5zIGJhc2VkIG9uIHRoZSBkZWNvcmF0b3IgY29uZmlndXJhdGlvbi5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIGRlY29yYXRvckNvbmZpZ3VyYXRpb24gVGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Q29uZGl0aW9uYWxDb2x1bW5zKGluc3RhbmNlOiBhbnksIGRlY29yYXRvckNvbmZpZ3VyYXRpb246IERlY29yYXRvckNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICAvKiBDaGVja3MgaWYgdGhlcmUgaXMgYW4gaW5zdGFuY2UgYW5kIGRlY29yYXRvciBjb25maWd1cmF0aW9uIHByZXNlbnQgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcpIHtcclxuICAgICAgICAgICAgLyogSGFuZGxlcyBsb2dpY2FsIGFubm90YXRpb25zIChBTkQsIE9SLCBOT1QpICovXHJcbiAgICAgICAgICAgIGlmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5hbmQgfHxcclxuICAgICAgICAgICAgICAgIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm9yIHx8XHJcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ub3RcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvKiBJdGVyYXRlcyBvdmVyIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb24pLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2tzIGlmIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gaXMgbm90IGEgYm9vbGVhbiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcudmFsaWRhdGlvblt0XSAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0cyBsb2dpY2FsIGNvbmRpdGlvbmFsIGJhc2VkIG9uIHRoZSB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2dpY2FsQ29uZGl0aW9uYWwoaW5zdGFuY2UsIHQsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLnZhbGlkYXRpb25bdF0uZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8qIFNldHMgbG9naWNhbCBjb25kaXRpb25hbCBmb3Igbm9uLWxvZ2ljYWwgYW5ub3RhdGlvbnMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgbG9naWNhbCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIGRlY29yYXRvciBjb25maWd1cmF0aW9uLlxyXG4gICAgICogQHBhcmFtIGluc3RhbmNlIFRoZSBpbnN0YW5jZSBjb250YWluZXIuXHJcbiAgICAgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGFubm90YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBwcm9wZXJ0eSBuYW1lLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TG9naWNhbENvbmRpdGlvbmFsKGluc3RhbmNlOiBhbnksIGFubm90YXRpb25UeXBlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBhbmQgYW5ub3RhdGlvbiB0eXBlIHdpdGggYXBwbGljYWJsZSBjb25kaXRpb25zXHJcbiAgICAgICAgICogZm9yIHNldHRpbmcgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoaW5zdGFuY2UgJiYgKFxyXG4gICAgICAgICAgICAoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmNvbXBhcmUgfHxcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmxlc3NUaGFuIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZGlmZmVyZW50IHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuZmFjdG9yIHx8XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubWluVGltZSB8fFxyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heFRpbWUpIHx8XHJcbiAgICAgICAgICAgIChhbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY3JlZGl0Q2FyZCAmJiBmaWVsZE5hbWUpIHx8XHJcbiAgICAgICAgICAgICgoYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1pbkRhdGUgfHwgYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLm1heERhdGUpICYmIGZpZWxkTmFtZSlcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICAgIC8qIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydHkgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgKi9cclxuICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZmllbGROYW1lLCBwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgY29uZGl0aW9uYWwgdmFsdWUgcHJvcGVydGllcyBiYXNlZCBvbiB0aGUgZGVjb3JhdG9yIGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBAcGFyYW0gaW5zdGFuY2UgVGhlIGluc3RhbmNlIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIHByb3BlcnR5IG5hbWUuXHJcbiAgICAgKiBAcGFyYW0gcmVmUHJvcGVydHlOYW1lIFRoZSByZWZlcmVuY2UgcHJvcGVydHkgbmFtZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJlZlByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLyogQ2hlY2tzIGlmIHByb3BOYW1lIGV4aXN0cyAqL1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICAgICAgLyogU3BsaXRzIHByb3BOYW1lIGludG8gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzICovXHJcbiAgICAgICAgICAgIGxldCBzcGxpdFByb3BzID0gcHJvcGVydHlOYW1lLnNwbGl0ID8gcHJvcGVydHlOYW1lLnNwbGl0KCcuJykgOiAnJztcclxuXHJcbiAgICAgICAgICAgIC8qIENoZWNrcyBpZiB0aGUgbGVuZ3RoIG9mIHNwbGl0UHJvcHMgaXMgbGVzcyB0aGFuIDIgKi9cclxuICAgICAgICAgICAgaWYgKHNwbGl0UHJvcHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgaWYgaXQgZG9lcyBub3QgZXhpc3QgKi9cclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qIFB1c2hlcyByZWZQcm9wTmFtZSBpbnRvIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdCAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihyZWZQcm9wZXJ0eU5hbWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHlOYW1lXS5wdXNoKHJlZlByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKiBBZGRzIGNoYW5nZSB2YWxpZGF0aW9uIGZvciBjb21wbGV4IHByb3BlcnRpZXMgKi9cclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgcmVmUHJvcGVydHlOYW1lLCBbe1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXg6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0UHJvcE5hbWU6IHNwbGl0UHJvcHNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcE5hbWU6IHNwbGl0UHJvcHNbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUHJvcE5hbWU6IHJlZlByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICAgfV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBjaGFuZ2UgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgY29sdW1ucy5cclxuICAgICAqIEBwYXJhbSBpbnN0YW5jZSBUaGUgaW5zdGFuY2UgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgcHJvcGVydHkgbmFtZS5cclxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFRoZSBjb2x1bW5zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrcyBpZiBpbnN0YW5jZSBleGlzdHMuICovXHJcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIC8qIEluaXRpYWxpemVzIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBJdGVyYXRlcyB0aHJvdWdoIGNvbHVtbnMuICovXHJcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIENoZWNrcyBpZiBwcm9wTmFtZSBleGlzdHMgYW5kIG9iamVjdFByb3BOYW1lIGRvZXMgbm90IGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplcyBjb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBQdXNoZXMgcHJvcGVydHlOYW1lIGludG8gY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0gaWYgaXQgZG9lcyBub3QgZXhpc3QuICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyBhcyBhbnkpW3QucHJvcE5hbWVdLmluZGV4T2YocHJvcGVydHlOYW1lKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgYXMgYW55KVt0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBDaGVja3MgaWYgcHJvcE5hbWUgYW5kIG9iamVjdFByb3BOYW1lIGV4aXN0LiAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6ZXMgY29uZGl0aW9uYWxPYmplY3RQcm9wcyBpZiBpdCBkb2VzIG5vdCBleGlzdC4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldHMgcmVmZXJlbmNlUHJvcE5hbWUgYW5kIGFkZHMgaXQgdG8gY29uZGl0aW9uYWxPYmplY3RQcm9wcy4gKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdC5yZWZlcmVuY2VQcm9wTmFtZSA9IHByb3BlcnR5TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGRlZmF1bHQgY29udGFpbmVyIGZvciBtYW5hZ2luZyBpbnN0YW5jZSBjb25maWd1cmF0aW9ucy5cclxuICogXHJcbiAqIE1hbmFnZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluc3RhbnRpYXRpb24gb2YgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBzYW5pdGl6ZXJzLCBhbmQgb3RoZXIgcHJvcGVydGllcyBmb3IgY2xhc3Nlcy5cclxuICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBjb250YWluZXIgZm9yIG1hbmFnaW5nIGluc3RhbmNlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIHByb3BlcnRpZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lciA9IG5ldyBEZWZhdWx0Q29udGFpbmVyKCk7Il19
@@ -7,10 +7,12 @@ export function prop(config) {
7
7
  propertyType: PROPERTY,
8
8
  dataPropertyName: config ? config.name : undefined,
9
9
  defaultValue: config ? config.defaultValue : undefined,
10
+ valuePath: config ? config.valuePath : undefined,
11
+ value: config ? config.value : undefined,
10
12
  ignore: config ? config.ignore : undefined,
11
13
  isPrimaryKey: config ? config.isPrimaryKey : undefined
12
14
  };
13
15
  defaultContainer.addProperty(target.constructor, propertyInfo);
14
16
  };
15
17
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGVjb3JhdG9ycy9wcm9wLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdELE1BQU0sVUFBVSxJQUFJLENBQUMsTUFBbUI7SUFDcEMsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQixFQUFFLGNBQW9CO1FBQ3RFLElBQUksWUFBWSxHQUFpQjtZQUM3QixJQUFJLEVBQUUsV0FBVztZQUNqQixZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN0RCxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDekQsQ0FBQTtRQUVELGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQUk9QRVJUWSB9IGZyb20gXCIuLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q29udGFpbmVyIH0gZnJvbSAnLi4vY29yZS9kZWZhdWx0LWNvbnRhaW5lcic7XHJcbmltcG9ydCB7IFByb3BDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9wcm9wLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3BlcnR5LWluZm9cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9wKGNvbmZpZz86IFByb3BDb25maWcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHBhcmFtZXRlckluZGV4PzogYW55KSB7XHJcbiAgICAgICAgdmFyIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgcHJvcGVydHlUeXBlOiBQUk9QRVJUWSxcclxuICAgICAgICAgICAgZGF0YVByb3BlcnR5TmFtZTogY29uZmlnID8gY29uZmlnLm5hbWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID8gY29uZmlnLmRlZmF1bHRWYWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgaWdub3JlOiBjb25maWcgPyBjb25maWcuaWdub3JlIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IGNvbmZpZyA/IGNvbmZpZy5pc1ByaW1hcnlLZXkgOiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHRDb250YWluZXIuYWRkUHJvcGVydHkodGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvZGVjb3JhdG9ycy9wcm9wLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdELE1BQU0sVUFBVSxJQUFJLENBQUMsTUFBbUI7SUFDcEMsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQixFQUFFLGNBQW9CO1FBQ3RFLElBQUksWUFBWSxHQUFpQjtZQUM3QixJQUFJLEVBQUUsV0FBVztZQUNqQixZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbEQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN0RCxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2hELEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDeEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMxQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pELENBQUE7UUFFRCxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUFJPUEVSVFkgfSBmcm9tIFwiLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gJy4uL2NvcmUvZGVmYXVsdC1jb250YWluZXInO1xyXG5pbXBvcnQgeyBQcm9wQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvcHJvcC1jb25maWdcIjtcclxuaW1wb3J0IHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL21vZGVscy9wcm9wZXJ0eS1pbmZvXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvcChjb25maWc/OiBQcm9wQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwYXJhbWV0ZXJJbmRleD86IGFueSkge1xyXG4gICAgICAgIHZhciBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbyA9IHtcclxuICAgICAgICAgICAgbmFtZTogcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIHByb3BlcnR5VHlwZTogUFJPUEVSVFksXHJcbiAgICAgICAgICAgIGRhdGFQcm9wZXJ0eU5hbWU6IGNvbmZpZyA/IGNvbmZpZy5uYW1lIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA/IGNvbmZpZy5kZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHZhbHVlUGF0aDogY29uZmlnID8gY29uZmlnLnZhbHVlUGF0aCA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbmZpZyA/IGNvbmZpZy52YWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgaWdub3JlOiBjb25maWcgPyBjb25maWcuaWdub3JlIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpc1ByaW1hcnlLZXk6IGNvbmZpZyA/IGNvbmZpZy5pc1ByaW1hcnlLZXkgOiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHRDb250YWluZXIuYWRkUHJvcGVydHkodGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -64,10 +64,10 @@ export class BaseDirective {
64
64
  ApplicationUtil.configureControl(control, annotation.config ? annotation.config : "", annotation.annotationType);
65
65
  });
66
66
  }
67
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
68
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: BaseDirective, inputs: { model: "model" }, ngImport: i0 });
67
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
68
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: BaseDirective, inputs: { model: "model" }, ngImport: i0 });
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseDirective, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseDirective, decorators: [{
71
71
  type: Directive
72
72
  }], propDecorators: { model: [{
73
73
  type: Input
@@ -40,10 +40,10 @@ export class ControlHostDirective {
40
40
  this.viewContainerRef.clear();
41
41
  }
42
42
  }
43
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
44
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ControlHostDirective, selector: "[controlHost]", inputs: { portal: ["controlHost", "portal"] }, ngImport: i0 });
43
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ControlHostDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
44
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: ControlHostDirective, selector: "[controlHost]", inputs: { portal: ["controlHost", "portal"] }, ngImport: i0 });
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlHostDirective, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ControlHostDirective, decorators: [{
47
47
  type: Directive,
48
48
  args: [{
49
49
  selector: '[controlHost]'
@@ -21,10 +21,10 @@ export class HtmlControlTemplateDirective {
21
21
  this.templateRef = templateRef;
22
22
  }
23
23
  ;
24
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HtmlControlTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
25
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: HtmlControlTemplateDirective, selector: "[htmlControlTemplate]", inputs: { type: ["htmlControlTemplate", "type"] }, ngImport: i0 });
24
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: HtmlControlTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
25
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: HtmlControlTemplateDirective, selector: "[htmlControlTemplate]", inputs: { type: ["htmlControlTemplate", "type"] }, ngImport: i0 });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HtmlControlTemplateDirective, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: HtmlControlTemplateDirective, decorators: [{
28
28
  type: Directive,
29
29
  args: [{
30
30
  selector: '[htmlControlTemplate]'
@@ -217,10 +217,10 @@ export class RxwebFormDirective extends BaseDirective {
217
217
  }
218
218
  });
219
219
  }
220
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxwebFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
221
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: { formGroup: "formGroup", ngForm: ["rxwebForm", "ngForm"] }, usesInheritance: true, ngImport: i0 });
220
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxwebFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
221
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: { formGroup: "formGroup", ngForm: ["rxwebForm", "ngForm"] }, usesInheritance: true, ngImport: i0 });
222
222
  }
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxwebFormDirective, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxwebFormDirective, decorators: [{
224
224
  type: Directive,
225
225
  args: [{
226
226
  selector: '[formGroup],[rxwebForm]',
@@ -17,14 +17,14 @@ export class AsyncValidationDirective {
17
17
  validate(control) {
18
18
  return this.async ? this.async(control) : of(null);
19
19
  }
20
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AsyncValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: { async: "async" }, providers: [{
20
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AsyncValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: { async: "async" }, providers: [{
22
22
  provide: NG_ASYNC_VALIDATORS,
23
23
  useExisting: forwardRef((() => AsyncValidationDirective)),
24
24
  multi: true
25
25
  }], ngImport: i0 });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AsyncValidationDirective, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AsyncValidationDirective, decorators: [{
28
28
  type: Directive,
29
29
  args: [{
30
30
  selector: '[ngModel],[formControlName],[formControl]',
@@ -65,10 +65,10 @@ export class BaseValidator extends ControlExpressionProcess {
65
65
  }
66
66
  this.eventName = eventName.toLowerCase();
67
67
  }
68
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });
69
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: BaseValidator, inputs: { formControl: "formControl" }, usesInheritance: true, ngImport: i0 });
68
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });
69
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: BaseValidator, inputs: { formControl: "formControl" }, usesInheritance: true, ngImport: i0 });
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: BaseValidator, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BaseValidator, decorators: [{
72
72
  type: Directive
73
73
  }], propDecorators: { formControl: [{
74
74
  type: Input
@@ -47,10 +47,10 @@ export class ControlExpressionProcess {
47
47
  this.controlConfig = undefined;
48
48
  }
49
49
  }
50
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlExpressionProcess, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ControlExpressionProcess, inputs: { name: "name", formControlName: "formControlName" }, ngImport: i0 });
50
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ControlExpressionProcess, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: ControlExpressionProcess, inputs: { name: "name", formControlName: "formControlName" }, ngImport: i0 });
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ControlExpressionProcess, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ControlExpressionProcess, decorators: [{
54
54
  type: Directive
55
55
  }], propDecorators: { name: [{
56
56
  type: Input
@@ -91,13 +91,13 @@ export class FileControlDirective {
91
91
  }
92
92
  return result;
93
93
  }
94
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: FileControlDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
95
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: FileControlDirective, selector: "input[type=file]", inputs: { writeFile: "writeFile", extension: "extension", fileSize: "fileSize", file: "file" }, host: { listeners: { "change": "onChangeCall($event.target)", "blur": "onTouched()" } }, providers: [
94
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FileControlDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
95
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FileControlDirective, selector: "input[type=file]", inputs: { writeFile: "writeFile", extension: "extension", fileSize: "fileSize", file: "file" }, host: { listeners: { "change": "onChangeCall($event.target)", "blur": "onTouched()" } }, providers: [
96
96
  { provide: NG_VALUE_ACCESSOR, useExisting: FileControlDirective, multi: true },
97
97
  { provide: NG_VALIDATORS, useExisting: forwardRef((() => FileControlDirective)), multi: true }
98
98
  ], ngImport: i0 });
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: FileControlDirective, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FileControlDirective, decorators: [{
101
101
  type: Directive,
102
102
  args: [{
103
103
  selector: "input[type=file]",
@@ -51,14 +51,14 @@ export class ImageFileControlDirective {
51
51
  }
52
52
  return of(null);
53
53
  }
54
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ImageFileControlDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
55
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ImageFileControlDirective, selector: "input[type=file]", inputs: { image: "image" }, providers: [{
54
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ImageFileControlDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
55
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: ImageFileControlDirective, selector: "input[type=file]", inputs: { image: "image" }, providers: [{
56
56
  provide: NG_ASYNC_VALIDATORS,
57
57
  useExisting: forwardRef((() => ImageFileControlDirective)),
58
58
  multi: true
59
59
  }], ngImport: i0 });
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ImageFileControlDirective, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ImageFileControlDirective, decorators: [{
62
62
  type: Directive,
63
63
  args: [{
64
64
  selector: "input[type=file]",
@@ -279,10 +279,10 @@ export class RxFormControlDirective extends BaseValidator {
279
279
  if (this.maskProvider)
280
280
  this.maskProvider.onDestroy();
281
281
  }
282
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxFormControlDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.DecimalProvider }], target: i0.ɵɵFactoryTarget.Directive });
283
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: { rxalpha: "rxalpha", rxalphaNumeric: "rxalphaNumeric", rxascii: "rxascii", rxcompare: "rxcompare", rxcompose: "rxcompose", rxcontains: "rxcontains", rxcreditCard: "rxcreditCard", rxdataUri: "rxdataUri", rxdifferent: "rxdifferent", rxdigit: "rxdigit", rxemail: "rxemail", rxendsWith: "rxendsWith", rxeven: "rxeven", rxextension: "rxextension", rxfactor: "rxfactor", rxfileSize: "rxfileSize", rxgreaterThanEqualTo: "rxgreaterThanEqualTo", rxgreaterThan: "rxgreaterThan", rxhexColor: "rxhexColor", rxjson: "rxjson", rxlatitude: "rxlatitude", rxlatLong: "rxlatLong", rxleapYear: "rxleapYear", rxlessThan: "rxlessThan", rxlessThanEqualTo: "rxlessThanEqualTo", rxlongitude: "rxlongitude", rxlowerCase: "rxlowerCase", rxmac: "rxmac", rxmaxDate: "rxmaxDate", rxmaxLength: "rxmaxLength", rxmaxNumber: "rxmaxNumber", rxminDate: "rxminDate", rxminLength: "rxminLength", rxminNumber: "rxminNumber", rxnumeric: "rxnumeric", rxodd: "rxodd", rxpassword: "rxpassword", rxport: "rxport", rxprimeNumber: "rxprimeNumber", rxrequired: "rxrequired", rxrange: "rxrange", rxrule: "rxrule", rxstartsWith: "rxstartsWith", rxtime: "rxtime", rxupperCase: "rxupperCase", rxurl: "rxurl", rxunique: "rxunique", rxnotEmpty: "rxnotEmpty", rxcusip: "rxcusip", rxgrid: "rxgrid", rxdate: "rxdate" }, providers: [NGMODEL_BINDING], usesInheritance: true, ngImport: i0 });
282
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxFormControlDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.DecimalProvider }], target: i0.ɵɵFactoryTarget.Directive });
283
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: { rxalpha: "rxalpha", rxalphaNumeric: "rxalphaNumeric", rxascii: "rxascii", rxcompare: "rxcompare", rxcompose: "rxcompose", rxcontains: "rxcontains", rxcreditCard: "rxcreditCard", rxdataUri: "rxdataUri", rxdifferent: "rxdifferent", rxdigit: "rxdigit", rxemail: "rxemail", rxendsWith: "rxendsWith", rxeven: "rxeven", rxextension: "rxextension", rxfactor: "rxfactor", rxfileSize: "rxfileSize", rxgreaterThanEqualTo: "rxgreaterThanEqualTo", rxgreaterThan: "rxgreaterThan", rxhexColor: "rxhexColor", rxjson: "rxjson", rxlatitude: "rxlatitude", rxlatLong: "rxlatLong", rxleapYear: "rxleapYear", rxlessThan: "rxlessThan", rxlessThanEqualTo: "rxlessThanEqualTo", rxlongitude: "rxlongitude", rxlowerCase: "rxlowerCase", rxmac: "rxmac", rxmaxDate: "rxmaxDate", rxmaxLength: "rxmaxLength", rxmaxNumber: "rxmaxNumber", rxminDate: "rxminDate", rxminLength: "rxminLength", rxminNumber: "rxminNumber", rxnumeric: "rxnumeric", rxodd: "rxodd", rxpassword: "rxpassword", rxport: "rxport", rxprimeNumber: "rxprimeNumber", rxrequired: "rxrequired", rxrange: "rxrange", rxrule: "rxrule", rxstartsWith: "rxstartsWith", rxtime: "rxtime", rxupperCase: "rxupperCase", rxurl: "rxurl", rxunique: "rxunique", rxnotEmpty: "rxnotEmpty", rxcusip: "rxcusip", rxgrid: "rxgrid", rxdate: "rxdate" }, providers: [NGMODEL_BINDING], usesInheritance: true, ngImport: i0 });
284
284
  }
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxFormControlDirective, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxFormControlDirective, decorators: [{
286
286
  type: Directive,
287
287
  args: [{
288
288
  selector: '[ngModel],[formControlName],[formControl]',
@@ -122,10 +122,10 @@ export class DecimalProvider {
122
122
  /* Set isSetConfig to true after configuring */
123
123
  this.isSetConfig = true;
124
124
  }
125
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DecimalProvider, deps: [{ token: i1.DecimalPipe }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
126
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DecimalProvider });
125
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DecimalProvider, deps: [{ token: i1.DecimalPipe }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
126
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DecimalProvider });
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DecimalProvider, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DecimalProvider, decorators: [{
129
129
  type: Injectable
130
130
  }], ctorParameters: () => [{ type: i1.DecimalPipe }, { type: undefined, decorators: [{
131
131
  type: Inject,
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvbW9kZWxzL2NvbmZpZy9wcm9wLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQcm9wQ29uZmlnIHtcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcclxuICBpZ25vcmU/OiAoeDogYW55KSA9PiBib29sZWFuO1xyXG4gIGlzUHJpbWFyeUtleT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvcE9iamVjdENvbmZpZyBleHRlbmRzIFByb3BDb25maWcge1xyXG4gIGVudGl0eVByb3ZpZGVyPzogRnVuY3Rpb247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvcEFycmF5Q29uZmlnIGV4dGVuZHMgUHJvcE9iamVjdENvbmZpZyB7XHJcbiAgYWxsb3dNYXhJbmRleD86IG51bWJlcjtcclxuICBtZXNzYWdlS2V5Pzogc3RyaW5nO1xyXG4gIGNyZWF0ZUJsYW5rPzogYm9vbGVhbjtcclxufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvbW9kZWxzL2NvbmZpZy9wcm9wLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvcENvbmZpZyB7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgdmFsdWVQYXRoPzogc3RyaW5nO1xyXG4gIHZhbHVlPzogKHg6IGFueSkgPT4gYW55O1xyXG4gIGlnbm9yZT86ICh4OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaXNQcmltYXJ5S2V5PzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9wT2JqZWN0Q29uZmlnIGV4dGVuZHMgUHJvcENvbmZpZyB7XHJcbiAgZW50aXR5UHJvdmlkZXI/OiBGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9wQXJyYXlDb25maWcgZXh0ZW5kcyBQcm9wT2JqZWN0Q29uZmlnIHtcclxuICBhbGxvd01heEluZGV4PzogbnVtYmVyO1xyXG4gIG1lc3NhZ2VLZXk/OiBzdHJpbmc7XHJcbiAgY3JlYXRlQmxhbms/OiBib29sZWFuO1xyXG59Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9tb2RlbHMvcHJvcGVydHktaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEludGVyZmFjZSBmb3IgcHJvcGVydHkgaW5mb3JtYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlJbmZvIHtcclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBvZiB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHJvcGVydHlUeXBlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbnRpdHkgaW5mb3JtYXRpb25cclxuICAgICAqL1xyXG4gICAgZW50aXR5PzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0YSBwcm9wZXJ0eSBuYW1lXHJcbiAgICAgKi9cclxuICAgIGRhdGFQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZ25vcmUgZnVuY3Rpb24gZm9yIHRoZSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBpZ25vcmU/OiAoeDogYW55KSA9PiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIGl0J3MgYSBwcmltYXJ5IGtleVxyXG4gICAgICovXHJcbiAgICBpc1ByaW1hcnlLZXk/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW50aXR5IHByb3ZpZGVyIGZ1bmN0aW9uXHJcbiAgICAgKi9cclxuICAgIGVudGl0eVByb3ZpZGVyPzogRnVuY3Rpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBjb25maWd1cmF0aW9uIGZvciB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgYXJyYXlDb25maWc/OiB7XHJcbiAgICAgICAgYWxsb3dNYXhJbmRleD86IG51bWJlcjtcclxuICAgICAgICBtZXNzYWdlS2V5Pzogc3RyaW5nO1xyXG4gICAgICAgIGNyZWF0ZUJsYW5rPzogYm9vbGVhbjtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGltaW5nIGZvciB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgdXBkYXRlT24/OiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm0tdmFsaWRhdG9ycy9tb2RlbHMvcHJvcGVydHktaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBJbnRlcmZhY2UgZm9yIHByb3BlcnR5IGluZm9ybWF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIG5hbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFR5cGUgb2YgdGhlIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHByb3BlcnR5VHlwZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW50aXR5IGluZm9ybWF0aW9uXHJcbiAgICAgKi9cclxuICAgIGVudGl0eT86IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGEgcHJvcGVydHkgbmFtZVxyXG4gICAgICovXHJcbiAgICBkYXRhUHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGF0aCB0byB0aGUgdmFsdWUgd2l0aGluIGEgbmVzdGVkIG9iamVjdCBvciBzdHJ1Y3R1cmVcclxuICAgICAqL1xyXG4gICAgdmFsdWVQYXRoPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gcmV0cmlldmUgb3IgdHJhbnNmb3JtIHRoZSB2YWx1ZSBmcm9tIHRoZSBlbnRpdHkgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHZhbHVlPzogKHg6IGFueSkgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWdub3JlIGZ1bmN0aW9uIGZvciB0aGUgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgaWdub3JlPzogKHg6IGFueSkgPT4gYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiBpdCdzIGEgcHJpbWFyeSBrZXlcclxuICAgICAqL1xyXG4gICAgaXNQcmltYXJ5S2V5PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVudGl0eSBwcm92aWRlciBmdW5jdGlvblxyXG4gICAgICovXHJcbiAgICBlbnRpdHlQcm92aWRlcj86IEZ1bmN0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgY29uZmlndXJhdGlvbiBmb3IgdGhlIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIGFycmF5Q29uZmlnPzoge1xyXG4gICAgICAgIGFsbG93TWF4SW5kZXg/OiBudW1iZXI7XHJcbiAgICAgICAgbWVzc2FnZUtleT86IHN0cmluZztcclxuICAgICAgICBjcmVhdGVCbGFuaz86IGJvb2xlYW47XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRpbWluZyBmb3IgdGhlIHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU9uPzogJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JztcclxufVxyXG4iXX0=
@@ -16,11 +16,11 @@ import { TypedFormBuilder } from "./typed-form-builder";
16
16
  import * as i0 from "@angular/core";
17
17
  export class RxReactiveFormsModule {
18
18
  static forRoot() { return { ngModule: RxReactiveFormsModule, providers: [] }; }
19
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
- /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: RxReactiveFormsModule, declarations: [RxwebFormDirective, HtmlControlTemplateDirective, ControlHostDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective, AsyncValidationDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule], exports: [AsyncValidationDirective, RxwebFormDirective, HtmlControlTemplateDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective] });
21
- /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxReactiveFormsModule, providers: [RxFormBuilder, DecimalProvider, DecimalPipe], imports: [CommonModule, FormsModule, ReactiveFormsModule] });
19
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: RxReactiveFormsModule, declarations: [RxwebFormDirective, HtmlControlTemplateDirective, ControlHostDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective, AsyncValidationDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule], exports: [AsyncValidationDirective, RxwebFormDirective, HtmlControlTemplateDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective] });
21
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxReactiveFormsModule, providers: [RxFormBuilder, DecimalProvider, DecimalPipe], imports: [CommonModule, FormsModule, ReactiveFormsModule] });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RxReactiveFormsModule, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RxReactiveFormsModule, decorators: [{
24
24
  type: NgModule,
25
25
  args: [{
26
26
  declarations: [RxwebFormDirective, HtmlControlTemplateDirective, ControlHostDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective, AsyncValidationDirective],
@@ -36,11 +36,11 @@ export class ReactiveTypedFormsModule {
36
36
  ReactiveFormConfig.autoInstancePush = true;
37
37
  }
38
38
  static forRoot() { return { ngModule: ReactiveTypedFormsModule, providers: [] }; }
39
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ReactiveTypedFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
40
- /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: ReactiveTypedFormsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, RxReactiveFormsModule], exports: [ReactiveFormsModule, FormsModule, ReactiveFormsModule] });
41
- /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ReactiveTypedFormsModule, providers: [{ provide: FormBuilder, useClass: TypedFormBuilder }, TypedFormBuilder], imports: [CommonModule, FormsModule, ReactiveFormsModule, RxReactiveFormsModule.forRoot(), ReactiveFormsModule, FormsModule, ReactiveFormsModule] });
39
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ReactiveTypedFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
40
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ReactiveTypedFormsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, RxReactiveFormsModule], exports: [ReactiveFormsModule, FormsModule, ReactiveFormsModule] });
41
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ReactiveTypedFormsModule, providers: [{ provide: FormBuilder, useClass: TypedFormBuilder }, TypedFormBuilder], imports: [CommonModule, FormsModule, ReactiveFormsModule, RxReactiveFormsModule.forRoot(), ReactiveFormsModule, FormsModule, ReactiveFormsModule] });
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ReactiveTypedFormsModule, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ReactiveTypedFormsModule, decorators: [{
44
44
  type: NgModule,
45
45
  args: [{
46
46
  declarations: [],