@mediusinc/mng-commons 5.0.0-rc.0 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  2. package/core/descriptors/action.descriptor.d.ts +3 -3
  3. package/core/descriptors/column.descriptor.d.ts +1 -1
  4. package/core/descriptors/editor.descriptor.d.ts +6 -6
  5. package/core/descriptors/enum.descriptor.d.ts +6 -0
  6. package/core/descriptors/filter.descriptor.d.ts +1 -1
  7. package/core/descriptors/model.descriptor.d.ts +1 -1
  8. package/core/descriptors/table.descriptor.d.ts +6 -6
  9. package/core/descriptors/tableview.descriptor.d.ts +10 -10
  10. package/core/enum/enum-helpers.d.ts +49 -0
  11. package/core/error/error-helpers.d.ts +114 -0
  12. package/core/helpers/date.d.ts +14 -0
  13. package/core/helpers/object.d.ts +27 -0
  14. package/core/helpers/route.d.ts +35 -0
  15. package/core/helpers/string.d.ts +7 -0
  16. package/core/helpers/templates.d.ts +3 -0
  17. package/core/i18n/i18n-common.d.ts +6 -0
  18. package/core/i18n/i18n-error.d.ts +4 -0
  19. package/core/i18n/i18n-type.d.ts +20 -0
  20. package/core/index.d.ts +15 -9
  21. package/{model → core}/pipes/enum.pipe.d.ts +2 -2
  22. package/core/pipes/enumerate.pipe.d.ts +3 -3
  23. package/{model → core}/pipes/i18n-property.pipe.d.ts +2 -2
  24. package/core/pipes/template.pipe.d.ts +0 -2
  25. package/core/router/route-builder.d.ts +2 -4
  26. package/core/router/routes-builder.d.ts +5 -6
  27. package/core/security/permission-helpers.d.ts +3 -0
  28. package/core/security/permissions.model.d.ts +2 -2
  29. package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
  30. package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
  31. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
  32. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  33. package/esm2022/core/data-list/filter-match.model.mjs +1 -1
  34. package/esm2022/core/data-providers/base.data-provider.mjs +1 -1
  35. package/esm2022/core/descriptors/action.descriptor.mjs +1 -1
  36. package/esm2022/core/descriptors/column.descriptor.mjs +1 -1
  37. package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
  38. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  39. package/esm2022/core/descriptors/filter.descriptor.mjs +1 -1
  40. package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
  41. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  42. package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
  43. package/esm2022/core/directives/component.directive.mjs +4 -4
  44. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +4 -4
  45. package/esm2022/core/directives/template.directive.mjs +3 -3
  46. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  47. package/esm2022/core/error/error-handler.mjs +3 -3
  48. package/esm2022/core/error/error-helpers.mjs +247 -0
  49. package/esm2022/core/helpers/coercion.mjs +1 -1
  50. package/esm2022/core/helpers/date.mjs +119 -0
  51. package/esm2022/core/helpers/object.mjs +145 -0
  52. package/esm2022/core/helpers/route.mjs +58 -0
  53. package/esm2022/core/helpers/string.mjs +57 -0
  54. package/esm2022/core/helpers/templates.mjs +4 -0
  55. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  56. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  57. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  58. package/esm2022/core/index.mjs +17 -11
  59. package/esm2022/core/log/log-publisher-console.service.mjs +3 -3
  60. package/esm2022/core/log/logger.service.mjs +3 -3
  61. package/esm2022/core/pipes/boolean.pipe.mjs +4 -4
  62. package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
  63. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  64. package/esm2022/core/pipes/enumerate-async.pipe.mjs +8 -8
  65. package/esm2022/core/pipes/enumerate.pipe.mjs +10 -10
  66. package/esm2022/core/pipes/getter.pipe.mjs +4 -4
  67. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  68. package/esm2022/core/pipes/json-path.pipe.mjs +6 -6
  69. package/esm2022/core/pipes/parametrize.pipe.mjs +6 -6
  70. package/esm2022/core/pipes/template.pipe.mjs +7 -8
  71. package/esm2022/core/provide.mjs +1 -21
  72. package/esm2022/core/reflect/type-enum-metadata.mjs +1 -1
  73. package/esm2022/core/registry/type-registry.mjs +1 -1
  74. package/esm2022/core/router/route-builder.mjs +8 -24
  75. package/esm2022/core/router/routes-builder.mjs +17 -16
  76. package/esm2022/core/security/permission-helpers.mjs +14 -0
  77. package/esm2022/core/security/permission.guard.mjs +1 -1
  78. package/esm2022/core/security/permission.service.mjs +6 -6
  79. package/esm2022/core/security/permissions.model.mjs +1 -1
  80. package/esm2022/core/services/commons-configuration.service.mjs +6 -6
  81. package/esm2022/core/services/commons-init.service.mjs +4 -4
  82. package/esm2022/core/services/commons-router.service.mjs +4 -4
  83. package/esm2022/core/services/commons.service.mjs +4 -4
  84. package/esm2022/core/services/local-storage-config.service.mjs +4 -4
  85. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +9 -10
  86. package/esm2022/filter/descriptors/filter.descriptor.mjs +1 -1
  87. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  88. package/esm2022/form/api/descriptors/button-style.builder.mjs +1 -1
  89. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +7 -7
  90. package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
  91. package/esm2022/form/components/dropdown/dropdown.component.mjs +7 -7
  92. package/esm2022/form/directives/input-trim.directive.mjs +4 -4
  93. package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
  94. package/esm2022/model/descriptors/model.descriptor.mjs +4 -4
  95. package/esm2022/model/helpers/i18n.mjs +45 -0
  96. package/esm2022/model/helpers/model.mjs +71 -0
  97. package/esm2022/model/index.mjs +4 -7
  98. package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -1
  99. package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
  100. package/esm2022/table/api/descriptors/table.descriptor.mjs +36 -8
  101. package/esm2022/table/api/helpers/class-attribute-converter.mjs +1 -1
  102. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +9 -9
  103. package/esm2022/table/components/column-value/column-value.component.mjs +12 -14
  104. package/esm2022/table/components/table/table.component.mjs +20 -37
  105. package/esm2022/table/helpers/notification.mjs +4 -4
  106. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
  107. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
  108. package/esm2022/table/services/data-list.service.mjs +3 -3
  109. package/esm2022/tableview/action/components/action/action.component.mjs +9 -9
  110. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
  111. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +6 -6
  112. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
  113. package/esm2022/tableview/action/components/route/action-route.component.mjs +4 -4
  114. package/esm2022/tableview/action/components/table/action-table.component.mjs +12 -24
  115. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  116. package/esm2022/tableview/action/helpers/notification.mjs +8 -8
  117. package/esm2022/tableview/action/helpers/styles.mjs +1 -1
  118. package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
  119. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
  120. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +1 -1
  121. package/esm2022/tableview/action/services/action-executor.service.mjs +9 -8
  122. package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
  123. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
  124. package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
  125. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +1 -1
  126. package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
  127. package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
  128. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +1 -1
  129. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +1 -1
  130. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +1 -1
  131. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +1 -1
  132. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -1
  133. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +4 -4
  134. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
  135. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +3 -3
  136. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +1 -1
  137. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +8 -8
  138. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +1 -1
  139. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +4 -4
  140. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +1 -1
  141. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +1 -1
  142. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  143. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
  144. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +1 -1
  145. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +4 -4
  146. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +1 -1
  147. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +1 -1
  148. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +4 -4
  149. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +1 -1
  150. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +9 -9
  151. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  152. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -4
  153. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  154. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  155. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
  156. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
  157. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  158. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  159. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  160. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +9 -9
  161. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  162. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  163. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  164. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  165. package/esm2022/tableview/editor/helpers/formly-config.mjs +1 -1
  166. package/esm2022/tableview/editor/services/formly-config.provider.mjs +1 -1
  167. package/esm2022/tableview/index.mjs +3 -5
  168. package/esm2022/tableview/provide.mjs +2 -1
  169. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +3 -3
  170. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +10 -19
  171. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +1 -1
  172. package/fesm2022/mediusinc-mng-commons-core.mjs +1367 -1389
  173. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  174. package/fesm2022/mediusinc-mng-commons-filter.mjs +8 -9
  175. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  176. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  177. package/fesm2022/mediusinc-mng-commons-form.mjs +17 -17
  178. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  179. package/fesm2022/mediusinc-mng-commons-model.mjs +99 -148
  180. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  181. package/fesm2022/mediusinc-mng-commons-table-api.mjs +35 -7
  182. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  183. package/fesm2022/mediusinc-mng-commons-table.mjs +48 -65
  184. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  185. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +19 -19
  186. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  187. package/fesm2022/mediusinc-mng-commons-tableview.mjs +507 -572
  188. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  189. package/filter/descriptors/filter.descriptor.d.ts +2 -2
  190. package/model/descriptors/model.descriptor.d.ts +2 -2
  191. package/model/helpers/i18n.d.ts +10 -0
  192. package/model/helpers/model.d.ts +5 -0
  193. package/model/index.d.ts +2 -4
  194. package/package.json +7 -7
  195. package/table/api/descriptors/table.descriptor.d.ts +10 -0
  196. package/table/components/column-value/column-value.component.d.ts +3 -4
  197. package/table/components/table/table.component.d.ts +13 -13
  198. package/tableview/action/components/table/action-table.component.d.ts +6 -6
  199. package/tableview/action/helpers/i18n.d.ts +22 -0
  200. package/tableview/action/models/execution/action-instance-state.model.d.ts +21 -21
  201. package/tableview/action/services/action-executor.service.d.ts +1 -1
  202. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +1 -1
  203. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
  204. package/tableview/api/action/models/action.type.d.ts +2 -2
  205. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +21 -21
  206. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +2 -2
  207. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +2 -2
  208. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  209. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +4 -4
  210. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +4 -4
  211. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
  212. package/tableview/api/editor/descriptors/field.descriptor.d.ts +2 -2
  213. package/tableview/api/editor/models/editor-fields.model.d.ts +3 -3
  214. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +2 -2
  215. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  216. package/tableview/index.d.ts +2 -2
  217. package/tableview/tableview/components/tableview/tableview.component.d.ts +5 -5
  218. package/core/data-list/data-list-params.util.d.ts +0 -84
  219. package/core/enum/enum.util.d.ts +0 -51
  220. package/core/error/error.util.d.ts +0 -116
  221. package/core/security/permission.util.d.ts +0 -5
  222. package/core/utils/date.util.d.ts +0 -20
  223. package/core/utils/i18n.util.d.ts +0 -36
  224. package/core/utils/object.util.d.ts +0 -31
  225. package/core/utils/route.util.d.ts +0 -37
  226. package/core/utils/string.util.d.ts +0 -9
  227. package/esm2022/core/data-list/data-list-params.util.mjs +0 -417
  228. package/esm2022/core/enum/enum.util.mjs +0 -83
  229. package/esm2022/core/error/error.util.mjs +0 -249
  230. package/esm2022/core/security/permission.util.mjs +0 -16
  231. package/esm2022/core/utils/date.util.mjs +0 -136
  232. package/esm2022/core/utils/i18n.util.mjs +0 -137
  233. package/esm2022/core/utils/object.util.mjs +0 -147
  234. package/esm2022/core/utils/route.util.mjs +0 -60
  235. package/esm2022/core/utils/string.util.mjs +0 -59
  236. package/esm2022/model/pipes/enum.pipe.mjs +0 -26
  237. package/esm2022/model/pipes/i18n-property.pipe.mjs +0 -19
  238. package/esm2022/model/utils/i18n.util.mjs +0 -51
  239. package/esm2022/model/utils/model.util.mjs +0 -73
  240. package/esm2022/tableview/action/utils/i18n.util.mjs +0 -126
  241. package/esm2022/tableview/editor/utils/editor-formly.util.mjs +0 -337
  242. package/model/utils/i18n.util.d.ts +0 -15
  243. package/model/utils/model.util.d.ts +0 -8
  244. package/tableview/action/utils/i18n.util.d.ts +0 -48
  245. package/tableview/editor/utils/editor-formly.util.d.ts +0 -12
@@ -381,10 +381,10 @@ export class CommonsService {
381
381
  titlePieces.push(this.translate.instant('app.name'));
382
382
  return titlePieces.join(' - ');
383
383
  }
384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CommonsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
385
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CommonsService }); }
384
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CommonsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
385
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CommonsService }); }
386
386
  }
387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CommonsService, decorators: [{
387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: CommonsService, decorators: [{
388
388
  type: Injectable
389
389
  }] });
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBeUIsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUlwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFSSxXQUFXO1FBQ00sV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFLM0QsY0FBYztRQUNHLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUF5QjtZQUNqRixJQUFJLEVBQUUsWUFBWTtZQUNsQixVQUFVLEVBQUUsR0FBRztTQUNsQixDQUFDLENBQUM7UUFDYyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFJakYsU0FBUztRQUNELGlCQUFZLEdBQXFCLE9BQU8sQ0FBQztRQUl6QyxnQkFBVyxHQUErQixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBMkIsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRTFGLFdBQVc7UUFDSCxvQkFBZSxHQUFHLElBQUksYUFBYSxDQUFnQixDQUFDLENBQUMsQ0FBQztRQUN0RCx3QkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7S0FnWnJFO0lBOVlHLGNBQWM7SUFFZCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJLFdBQVcsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSwrQkFBK0IsQ0FBQztJQUM3SixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSwrQkFBK0IsQ0FBQztJQUMzSixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxpQkFBaUI7WUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGlCQUFpQjtZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxJQUFJLHVDQUF1QyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFlBQVksSUFBSSx1Q0FBdUMsQ0FBQztJQUMvSyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsRUFBRTtZQUNyRCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFXLFdBQVcsQ0FBQyxRQUF1QjtRQUMxQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxZQUFZO1FBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwRCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsRUFBRTtZQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUMvQixPQUFPLFdBQVcsQ0FBQztTQUN0QjtRQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3BGLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDO1FBQ25DLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFTSxpQkFBaUI7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQy9ELE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsZUFBZSxDQUFDLFlBQTJCO1FBQ2xELElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxZQUFZLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCx3R0FBd0c7SUFDeEcsSUFBVyxtQkFBbUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztJQUMzQyxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxpQkFBaUI7SUFFakIsSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtJQUVmLElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsSUFBdUI7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxTQUFTLENBQUMsS0FBb0I7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxLQUFLO1FBQ1IsU0FBUztRQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUVuRSxTQUFTO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRWpDLFlBQVk7UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXRDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDN0MsSUFBSTtRQUNELG1HQUFtRztRQUNuRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ2xEO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQywrQkFBK0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO0lBQ2Qsa0JBQWtCLENBQUMsSUFBcUI7UUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztTQUM1RDthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN4QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkcsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztTQUMzSTthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMzQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztTQUMxRjthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztTQUNsRTthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztTQUMvRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxJQUFxQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNULE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzRDthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN4QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkcsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssYUFBYSxDQUFDLENBQUM7U0FDMUk7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pGO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqRTthQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDWixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRztZQUNaLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNoQixHQUFHLElBQUk7WUFDUCxPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDO1FBRUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsU0FBUyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUNBQW1DLEVBQUU7WUFDMUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxtQ0FBbUMsR0FBRyxTQUFTLENBQUM7U0FDeEQ7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRXhELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxtQ0FBbUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNqRyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ25EO1NBQ0o7UUFFRCxNQUFNLFdBQVcsR0FBc0IsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXJELFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDM0IsQ0FBQyxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBa0IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDeEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsRixxQ0FBcUM7Z0JBQ3JDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUMxQixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzNCO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILDJCQUEyQjtnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQW9DO1FBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQXdCLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLEVBQUUsVUFBVSxDQUFDO1FBQ2xELElBQUksbUJBQW1CLElBQUksT0FBTyxtQkFBbUIsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLG1CQUFtQixFQUFFO1lBQ25HLElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtnQkFDdEMsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekUsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO29CQUN4QyxVQUFVLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztpQkFDbEM7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7YUFDckI7U0FDSjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQW9DLEVBQUUsaUJBQTJCLEVBQUUsV0FBOEI7UUFDekgsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUF3QixDQUFDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUU7WUFDdkIsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBRWpELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNwQyxLQUFLLE1BQU0sdUJBQXVCLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxVQUFVLEVBQUU7d0JBQ1osV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDaEM7aUJBQ0o7YUFDSjtpQkFBTSxJQUFJLE9BQU8sbUJBQW1CLEtBQUssVUFBVSxFQUFFO2dCQUNsRCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLFVBQVUsRUFBRTtvQkFDWixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQzthQUNKO1NBQ0o7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxlQUE0QyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQ3hHLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxrQkFBa0IsRUFBRSxPQUFPLEVBQUU7WUFDN0IsT0FBTyxrQkFBa0IsQ0FBQztTQUM3QjtRQUNELElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxFQUFFO1lBQ3JDLHdDQUF3QztZQUN4QyxPQUFPO2dCQUNILEVBQUUsRUFBRSxRQUFRO2dCQUNaLEtBQUssRUFBRSxlQUFlO2dCQUN0QixVQUFVLEVBQUUsUUFBUTthQUN2QixDQUFDO1NBQ0w7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxlQUFlLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtnQkFDL0QsOEJBQThCO2dCQUM5QixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsSUFBSSxPQUFPLGVBQWUsQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO2dCQUNuRCxlQUFlLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQzthQUN6QztZQUNELGVBQWUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE9BQU8sZUFBZSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQjtJQUVULFlBQVksQ0FBQyxLQUFjO1FBQzlCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDekQsT0FBTyxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQzVCLFlBQVksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQzFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQXdCLENBQUM7UUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFFL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxlQUFlLENBQUMsV0FBb0I7UUFDeEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksV0FBVyxFQUFFO1lBQ2IsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXJELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQWpiUSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJTZXJ2aWNlLCBQcmltZU5HQ29uZmlnfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtJVXNlcn0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuaW1wb3J0IHtCcmVhZGNydW1iTWVudUl0ZW0sIENvbW1vbnNSb3V0ZURhdGF9IGZyb20gJy4uL3JvdXRlci9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHtCUk9XU0VSX1NUT1JBR0VfSVR9IGZyb20gJy4vdG9rZW5zL2Jyb3dzZXItc3RvcmFnZS50b2tlbic7XG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVH0gZnJvbSAnLi90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tb25zU2VydmljZSB7XG4gICAgLy8gaW50ZXJuYWxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ0NvbW1vbnNTZXJ2aWNlJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1lbmdDb25maWcgPSBpbmplY3QoUHJpbWVOR0NvbmZpZyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyU2VydmljZSA9IGluamVjdChGaWx0ZXJTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZUNvbmZpZyA9IGluamVjdChDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlID0gaW5qZWN0KEJST1dTRVJfU1RPUkFHRV9JVCk7XG5cbiAgICBwcml2YXRlIHJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHRyYW5zbGF0ZUxhbmdDaGFuZ2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvLyBicmVhZGNydW1ic1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYkhvbWVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb21tb25zTWVudUl0ZW0gfCBudWxsPih7XG4gICAgICAgIGljb246ICdwaSBwaS1ob21lJyxcbiAgICAgICAgcm91dGVyTGluazogJy8nXG4gICAgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1ic1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbW1vbnNNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBicmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gdmlzdWFsXG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnO1xuXG4gICAgLy8gdXNlclxuICAgIHByaXZhdGUgX3VzZXI/OiBJVXNlcjtcbiAgICBwcml2YXRlIHVzZXJTdWJqZWN0OiBTdWJqZWN0PElVc2VyIHwgdW5kZWZpbmVkPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHByaXZhdGUgX3VzZXJSb2xlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByaXZhdGUgdXNlclJvbGVzU3ViamVjdDogU3ViamVjdDxBcnJheTxzdHJpbmc+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8c3RyaW5nPj4oW10pO1xuXG4gICAgLy8gbGFuZ3VhZ2VcbiAgICBwcml2YXRlIGxhbmd1YWdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IG51bGw+KDEpO1xuICAgIHByaXZhdGUgZGF0YUxhbmd1YWdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IG51bGw+KDEpO1xuXG4gICAgLy8gQVBQIHNlY3Rpb25cblxuICAgIHB1YmxpYyBnZXQgYXBwTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/Lm5hbWUgPz8gJ2FwcC5uYW1lJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcE93bmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ub3duZXIgPz8gJ2FwcC5vd25lcic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvTGlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aExpZ2h0ID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29QYXRoTGlnaHQgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby5wbmcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTG9nb0RhcmsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aERhcmsgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb1BhdGhEYXJrIDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExvZ29OYW1lTGlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhMaWdodFxuICAgICAgICAgICAgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb05hbWVQYXRoTGlnaHRcbiAgICAgICAgICAgIDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLWFwcG5hbWUucG5nJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExvZ29OYW1lRGFyaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aERhcmsgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb05hbWVQYXRoRGFyayA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMYW5ndWFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sYW5ndWFnZXMgPz8gWydlbiddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTGFuZ3VhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGxzTGFuZyA9IHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKTtcbiAgICAgICAgaWYgKGxzTGFuZyAmJiB0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gbHNMYW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGxzTGFuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFwcExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIGlmIChsYW5ndWFnZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGFuZycpO1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVN1YmplY3QubmV4dChsYW5ndWFnZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXBwTGFuZ3VhZ2VzLnNvbWUobCA9PiBsID09PSBsYW5ndWFnZSkpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCBsYW5ndWFnZSk7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlU3ViamVjdC5uZXh0KGxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExhbmd1YWdlJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiB0aGlzLmFwcExhbmd1YWdlcy5zb21lKGwgPT4gbCA9PT0gYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcExhbmd1YWdlID0gYnJvd3Nlckxhbmc7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5hcHBMYW5ndWFnZXM/Lmxlbmd0aCA+IDAgPyB0aGlzLmFwcExhbmd1YWdlc1swXSA6ICdlbic7XG4gICAgICAgIHRoaXMuYXBwTGFuZ3VhZ2UgPSBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9ySW5pdExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcExhbmd1YWdlIHx8IHRoaXMuaW5pdExhbmd1YWdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBEYXRhTGFuZ3VhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8uZGF0YUxhbmd1YWdlcyA/PyBbJ2VuJ107XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBEYXRhTGFuZ3VhZ2VEZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBEYXRhTGFuZ3VhZ2VzWzBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwRGF0YUxhbmd1YWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBkYXRhTGFuZyA9IHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGFMYW5nJyk7XG4gICAgICAgIGlmIChkYXRhTGFuZyAmJiB0aGlzLmFwcERhdGFMYW5ndWFnZXMuc29tZShkbCA9PiBkbCA9PT0gZGF0YUxhbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YUxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERhdGFMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFwcERhdGFMYW5ndWFnZShkYXRhTGFuZ3VhZ2U6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgaWYgKGRhdGFMYW5ndWFnZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZGF0YUxhbmcnKTtcbiAgICAgICAgICAgIHRoaXMuZGF0YUxhbmd1YWdlU3ViamVjdC5uZXh0KGRhdGFMYW5ndWFnZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXBwRGF0YUxhbmd1YWdlcy5zb21lKGRsID0+IGRsID09PSBkYXRhTGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXRhTGFuZycsIGRhdGFMYW5ndWFnZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGFMYW5ndWFnZVN1YmplY3QubmV4dChkYXRhTGFuZ3VhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBEYXRhTGFuZ3VhZ2UkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhTGFuZ3VhZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gV2UgYXNzdW1lLCB0aGF0IGRlZmF1bHQgZGF0YSBsYW5ndWFnZSBpcyB0aGUgZmlyc3Qgb25lIGZyb20gdGhlIGFycmF5IG9mIGFsbCBhdmFpbGFibGUgZGF0YSBsYW5ndWFnZXNcbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHREYXRhTGFuZ3VhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcERhdGFMYW5ndWFnZXNbMF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBWZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8udmVyc2lvbjtcbiAgICB9XG5cbiAgICAvLyBCUkVBRENSVU1CIHNlY3Rpb25cbiAgICBwdWJsaWMgZ2V0IGJyZWFkY3J1bWJIb21lJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnJlYWRjcnVtYnMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1ic1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gVklTVUFMIHNlY3Rpb25cblxuICAgIHB1YmxpYyBnZXQgY29sb3JTY2hlbWVJc0xpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JTY2hlbWUgPT09ICdsaWdodCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2xvclNjaGVtZUlzRGFyaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yU2NoZW1lID09PSAnZGFyayc7XG4gICAgfVxuXG4gICAgLy8gVVNFUiBzZWN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdXNlcih1c2VyOiBJVXNlciB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy51c2VyU3ViamVjdC5uZXh0KHVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlciQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlclJvbGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlclJvbGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdXNlclJvbGVzKHJvbGVzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX3VzZXJSb2xlcyA9IHJvbGVzO1xuICAgICAgICB0aGlzLnVzZXJSb2xlc1N1YmplY3QubmV4dChyb2xlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2VyUm9sZXMkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyUm9sZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgLy8gdmlzdWFsXG4gICAgICAgIHRoaXMuX2NvbG9yU2NoZW1lID0gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8uY29sb3JTY2hlbWUgPz8gJ2xpZ2h0JztcblxuICAgICAgICAvLyByaXBwbGVcbiAgICAgICAgdGhpcy5wcmltZW5nQ29uZmlnLnJpcHBsZSA9IHRydWU7XG5cbiAgICAgICAgLy8gdHJhbnNsYXRlXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmxhbmdzID0gdGhpcy5hcHBMYW5ndWFnZXM7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmdldE9ySW5pdExhbmd1YWdlKCk7XG5cbiAgICAgICAgdGhpcy5sYW5ndWFnZVN1YmplY3QubmV4dChsYW5nKTtcbiAgICAgICAgdGhpcy5kYXRhTGFuZ3VhZ2VTdWJqZWN0Lm5leHQodGhpcy5hcHBEYXRhTGFuZ3VhZ2UpO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCdtbmdQcmltZScpLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLnByaW1lbmdDb25maWcuc2V0VHJhbnNsYXRpb24odmFsdWUpKTtcblxuICAgICAgICB0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXJFdmVudHNTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIEZpbHRlciB0aGUgTmF2aWdhdGlvbkVuZCBldmVudHMgYXMgdGhlIGJyZWFkY3J1bWIgaXMgdXBkYXRlZCBvbmx5IHdoZW4gdGhlIHJvdXRlIHJlYWNoZXMgaXRzIGVuZFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZUxhbmdDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTGFuZ0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1icygpO1xuICAgICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1Jlc2V0Jyk7XG4gICAgfVxuXG4gICAgLy8gQlJFQURDUlVNQiBhY3Rpb25zXG4gICAgcHVibGljIGZpbmRCcmVhZGNydW1iSXRlbShpdGVtOiBDb21tb25zTWVudUl0ZW0pOiBDb21tb25zTWVudUl0ZW0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmJyZWFkY3J1bWJzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5pZCAmJiBpLmlkID09PSBpdGVtLmlkKSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyTGlua1N0ciA9IEFycmF5LmlzQXJyYXkoaXRlbS5yb3V0ZXJMaW5rKSA/IGl0ZW0ucm91dGVyTGluay5qb2luKCcvJykgOiBpdGVtLnJvdXRlckxpbms7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmluZChpID0+IGkucm91dGVyTGluayAmJiAoQXJyYXkuaXNBcnJheShpLnJvdXRlckxpbmspID8gaS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGkucm91dGVyTGluaykgPT09IHJvdXRlckxpbmtTdHIpID8/IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wb3NpdGlvbkluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmluZChpID0+IGkucG9zaXRpb25JbmRleCAmJiBpLnBvc2l0aW9uSW5kZXggPT09IGkucG9zaXRpb25JbmRleCkgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmluZChpID0+IGkubGFiZWwgJiYgaS5sYWJlbCA9PT0gaS5sYWJlbCkgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5pY29uICYmIGkuaWNvbiA9PT0gaS5pY29uKSA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVCcmVhZGNydW1iSXRlbShpdGVtOiBDb21tb25zTWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5icmVhZGNydW1ic1N1YmplY3QudmFsdWVdO1xuICAgICAgICBsZXQgcG9zSWR4ID0gLTE7XG4gICAgICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyTGlua1N0ciA9IEFycmF5LmlzQXJyYXkoaXRlbS5yb3V0ZXJMaW5rKSA/IGl0ZW0ucm91dGVyTGluay5qb2luKCcvJykgOiBpdGVtLnJvdXRlckxpbms7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLnJvdXRlckxpbmsgJiYgKEFycmF5LmlzQXJyYXkoaS5yb3V0ZXJMaW5rKSA/IGkucm91dGVyTGluay5qb2luKCcvJykgOiBpLnJvdXRlckxpbmspID09PSByb3V0ZXJMaW5rU3RyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkucG9zaXRpb25JbmRleCAmJiBpLnBvc2l0aW9uSW5kZXggPT09IGkucG9zaXRpb25JbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgcG9zSWR4ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWNvbiAmJiBpLmljb24gPT09IGkuaWNvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zSWR4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXNbcG9zSWR4XSA9IHtcbiAgICAgICAgICAgIC4uLml0ZW1zW3Bvc0lkeF0sXG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgdXBkYXRlZDogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoaXRlbXMpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQnJlYWRjcnVtYnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFkY3J1bWJzVHJhbnNsYXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzVHJhbnNsYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzVHJhbnNsYXRlU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcblxuICAgICAgICBjb25zdCBob21lQnJlYWRjcnVtYiA9IHRoaXMuZ2VuZXJhdGVIb21lQnJlYWRjcnVtYihyb290Um91dGUpO1xuICAgICAgICBpZiAoaG9tZUJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgIGlmIChob21lQnJlYWRjcnVtYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZS5nZXQoaG9tZUJyZWFkY3J1bWIubGFiZWwpLnN1YnNjcmliZShpMThuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaG9tZUJyZWFkY3J1bWIubGFiZWwgPSBpMThuO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lU3ViamVjdC5uZXh0KGhvbWVCcmVhZGNydW1iKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVN1YmplY3QubmV4dChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBicmVhZGNydW1iczogQ29tbW9uc01lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3RSb3V0ZSwgW10sIGJyZWFkY3J1bWJzKTtcblxuICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKChiLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGIucG9zaXRpb25JbmRleCA9IGlkeDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaTE4bktleXM6IEFycmF5PHN0cmluZz4gPSBicmVhZGNydW1icy5maWx0ZXIoYiA9PiB0eXBlb2YgYi5sYWJlbCA9PT0gJ3N0cmluZycpLm1hcChiID0+IGIubGFiZWwhKTtcbiAgICAgICAgaWYgKGkxOG5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZS5nZXQoaTE4bktleXMpLnN1YnNjcmliZShpMThuID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGJyZWFkY3J1bWIgaGllcmFyY2h5XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMuZm9yRWFjaChiID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubGFiZWwgJiYgaTE4bltiLmxhYmVsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYi5sYWJlbCA9IGkxOG5bYi5sYWJlbF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIEVtaXQgdGhlIG5ldyBicmVhZGNydW1ic1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJzU3ViamVjdC5uZXh0KGJyZWFkY3J1bWJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVIb21lQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwpOiBDb21tb25zTWVudUl0ZW0gfCBudWxsIHtcbiAgICAgICAgaWYgKCFyb3V0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSByb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJSb3V0ZURhdGEgPSByb3V0ZURhdGE/LmJyZWFkY3J1bWI7XG4gICAgICAgIGlmIChicmVhZGNydW1iUm91dGVEYXRhICYmIHR5cGVvZiBicmVhZGNydW1iUm91dGVEYXRhID09PSAnb2JqZWN0JyAmJiAnaXNIb21lJyBpbiBicmVhZGNydW1iUm91dGVEYXRhKSB7XG4gICAgICAgICAgICBpZiAoYnJlYWRjcnVtYlJvdXRlRGF0YS5pc0hvbWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKCcvJywgYnJlYWRjcnVtYlJvdXRlRGF0YSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYnJlYWRjcnVtYi5pY29uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1iLmljb24gPSAncGkgcGktaG9tZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBicmVhZGNydW1iO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVIb21lQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQnJlYWRjcnVtYnMocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBwYXJlbnRVcmxTZWdtZW50czogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBDb21tb25zTWVudUl0ZW1bXSkge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSByb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG4gICAgICAgIGNvbnN0IHJvdXRlVXJsU2VnbWVudHMgPSBwYXJlbnRVcmxTZWdtZW50cy5jb25jYXQocm91dGUudXJsLm1hcCh1cmwgPT4gdXJsLnBhdGgpKTtcbiAgICAgICAgY29uc3Qgcm91dGVVcmwgPSBgLyR7cm91dGVVcmxTZWdtZW50cy5qb2luKCcvJyl9YDtcbiAgICAgICAgaWYgKHJvdXRlRGF0YT8uYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YS5icmVhZGNydW1iO1xuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShicmVhZGNydW1iUm91dGVEYXRhKSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YUl0ZW0gb2YgYnJlYWRjcnVtYlJvdXRlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsLCBicmVhZGNydW1iUm91dGVEYXRhSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYnJlYWRjcnVtYlJvdXRlRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goLi4uYnJlYWRjcnVtYlJvdXRlRGF0YShyb3V0ZVVybCwgcm91dGUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybCwgYnJlYWRjcnVtYlJvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQsIHJvdXRlVXJsU2VnbWVudHMsIGJyZWFkY3J1bWJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmw6IHN0cmluZywgcm91dGVCcmVhZGNydW1iOiBzdHJpbmcgfCBCcmVhZGNydW1iTWVudUl0ZW0sIGluY2x1ZGVIb21lID0gZmFsc2UpOiBDb21tb25zTWVudUl0ZW0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdCcmVhZGNydW1iID0gdGhpcy5maW5kQnJlYWRjcnVtYkl0ZW0oe3JvdXRlckxpbms6IHJvdXRlVXJsfSk7XG4gICAgICAgIGlmIChleGlzdGluZ0JyZWFkY3J1bWI/LnVwZGF0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBleGlzdGluZ0JyZWFkY3J1bWI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBjaGVjayBmb3IgdXBkYXRlZCBleGlzdGluZyBicmVhZGNydW1iXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiByb3V0ZVVybCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcm91dGVCcmVhZGNydW1iLFxuICAgICAgICAgICAgICAgIHJvdXRlckxpbms6IHJvdXRlVXJsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFpbmNsdWRlSG9tZSAmJiB0eXBlb2Ygcm91dGVCcmVhZGNydW1iLmlzSG9tZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBob21lIHNob3VsZCBub3QgYmUgaW5jbHVkZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm91dGVCcmVhZGNydW1iLnJvdXRlckxpbmsgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCcmVhZGNydW1iLnJvdXRlckxpbmsgPSByb3V0ZVVybDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvdXRlQnJlYWRjcnVtYi5pZCA9IHJvdXRlVXJsO1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlQnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRJVExFIHNlY3Rpb25cblxuICAgIHB1YmxpYyBzZXRQYWdlVGl0bGUodGl0bGU/OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Um91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgY3VycmVudFJvdXRlID0gY3VycmVudFJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBjdXJyZW50Um91dGUuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhO1xuICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSB0aXRsZSA/PyByb3V0ZURhdGEucGFnZVRpdGxlO1xuXG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuZm9ybWF0UGFnZVRpdGxlKHBhZ2VUaXRsZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0UGFnZVRpdGxlKHRpdGxlUHJlZml4Pzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRpdGxlUGllY2VzID0gW107XG5cbiAgICAgICAgaWYgKHRpdGxlUHJlZml4KSB7XG4gICAgICAgICAgICB0aXRsZVBpZWNlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGl0bGVQcmVmaXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYXBwLm5hbWUnKSk7XG5cbiAgICAgICAgcmV0dXJuIHRpdGxlUGllY2VzLmpvaW4oJyAtICcpO1xuICAgIH1cbn1cbiJdfQ==
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRCxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBeUIsb0JBQW9CLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUlwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFSSxXQUFXO1FBQ00sV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztR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amJRLGNBQWM7a0hBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGl0bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ZpbHRlclNlcnZpY2UsIFByaW1lTkdDb25maWd9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMvbWVudS5tb2RlbCc7XG5pbXBvcnQge0lVc2VyfSBmcm9tICcuLi9tb2RlbHMvdXNlci5tb2RlbCc7XG5pbXBvcnQge0JyZWFkY3J1bWJNZW51SXRlbSwgQ29tbW9uc1JvdXRlRGF0YX0gZnJvbSAnLi4vcm91dGVyL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQge0JST1dTRVJfU1RPUkFHRV9JVH0gZnJvbSAnLi90b2tlbnMvYnJvd3Nlci1zdG9yYWdlLnRva2VuJztcbmltcG9ydCB7Q09NTU9OU19NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbW1vbnNTZXJ2aWNlIHtcbiAgICAvLyBpbnRlcm5hbFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnQ29tbW9uc1NlcnZpY2UnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWVuZ0NvbmZpZyA9IGluamVjdChQcmltZU5HQ29uZmlnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZSA9IGluamVjdChUaXRsZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJTZXJ2aWNlID0gaW5qZWN0KEZpbHRlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoQlJPV1NFUl9TVE9SQUdFX0lUKTtcblxuICAgIHByaXZhdGUgcm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgdHJhbnNsYXRlTGFuZ0NoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8vIGJyZWFkY3J1bWJzXG4gICAgcHJpdmF0ZSByZWFkb25seSBicmVhZGNydW1iSG9tZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbW1vbnNNZW51SXRlbSB8IG51bGw+KHtcbiAgICAgICAgaWNvbjogJ3BpIHBpLWhvbWUnLFxuICAgICAgICByb3V0ZXJMaW5rOiAnLydcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbW9uc01lbnVJdGVtW10+KFtdKTtcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJzVHJhbnNsYXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvLyB2aXN1YWxcbiAgICBwcml2YXRlIF9jb2xvclNjaGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdsaWdodCc7XG5cbiAgICAvLyB1c2VyXG4gICAgcHJpdmF0ZSBfdXNlcj86IElVc2VyO1xuICAgIHByaXZhdGUgdXNlclN1YmplY3Q6IFN1YmplY3Q8SVVzZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHJpdmF0ZSBfdXNlclJvbGVzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSB1c2VyUm9sZXNTdWJqZWN0OiBTdWJqZWN0PEFycmF5PHN0cmluZz4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxzdHJpbmc+PihbXSk7XG5cbiAgICAvLyBsYW5ndWFnZVxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oMSk7XG4gICAgcHJpdmF0ZSBkYXRhTGFuZ3VhZ2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oMSk7XG5cbiAgICAvLyBBUFAgc2VjdGlvblxuXG4gICAgcHVibGljIGdldCBhcHBOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubmFtZSA/PyAnYXBwLm5hbWUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwT3duZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5vd25lciA/PyAnYXBwLm93bmVyJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExvZ29MaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoTGlnaHQgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb1BhdGhMaWdodCA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLnBuZyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMb2dvRGFyaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoRGFyayA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvUGF0aERhcmsgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby5wbmcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTG9nb05hbWVMaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aExpZ2h0XG4gICAgICAgICAgICA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvTmFtZVBhdGhMaWdodFxuICAgICAgICAgICAgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTG9nb05hbWVEYXJrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoRGFyayA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvTmFtZVBhdGhEYXJrIDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLWFwcG5hbWUucG5nJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcExhbmd1YWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/Lmxhbmd1YWdlcyA/PyBbJ2VuJ107XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBMYW5ndWFnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbHNMYW5nID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZycpO1xuICAgICAgICBpZiAobHNMYW5nICYmIHRoaXMuYXBwTGFuZ3VhZ2VzLnNvbWUobCA9PiBsID09PSBsc0xhbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gbHNMYW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgYXBwTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgaWYgKGxhbmd1YWdlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsYW5nJyk7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlU3ViamVjdC5uZXh0KGxhbmd1YWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hcHBMYW5ndWFnZXMuc29tZShsID0+IGwgPT09IGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZycsIGxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VTdWJqZWN0Lm5leHQobGFuZ3VhZ2UpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXBwTGFuZ3VhZ2UkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcbiAgICAgICAgaWYgKGJyb3dzZXJMYW5nICYmIHRoaXMuYXBwTGFuZ3VhZ2VzLnNvbWUobCA9PiBsID09PSBicm93c2VyTGFuZykpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwTGFuZ3VhZ2UgPSBicm93c2VyTGFuZztcbiAgICAgICAgICAgIHJldHVybiBicm93c2VyTGFuZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmFwcExhbmd1YWdlcz8ubGVuZ3RoID4gMCA/IHRoaXMuYXBwTGFuZ3VhZ2VzWzBdIDogJ2VuJztcbiAgICAgICAgdGhpcy5hcHBMYW5ndWFnZSA9IGRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JJbml0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTGFuZ3VhZ2UgfHwgdGhpcy5pbml0TGFuZ3VhZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcERhdGFMYW5ndWFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5kYXRhTGFuZ3VhZ2VzID8/IFsnZW4nXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcERhdGFMYW5ndWFnZURlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcERhdGFMYW5ndWFnZXNbMF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhcHBEYXRhTGFuZ3VhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGRhdGFMYW5nID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YUxhbmcnKTtcbiAgICAgICAgaWYgKGRhdGFMYW5nICYmIHRoaXMuYXBwRGF0YUxhbmd1YWdlcy5zb21lKGRsID0+IGRsID09PSBkYXRhTGFuZykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhTGFuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGF0YUxhbmd1YWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgYXBwRGF0YUxhbmd1YWdlKGRhdGFMYW5ndWFnZTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICBpZiAoZGF0YUxhbmd1YWdlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdkYXRhTGFuZycpO1xuICAgICAgICAgICAgdGhpcy5kYXRhTGFuZ3VhZ2VTdWJqZWN0Lm5leHQoZGF0YUxhbmd1YWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hcHBEYXRhTGFuZ3VhZ2VzLnNvbWUoZGwgPT4gZGwgPT09IGRhdGFMYW5ndWFnZSkpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFMYW5nJywgZGF0YUxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMuZGF0YUxhbmd1YWdlU3ViamVjdC5uZXh0KGRhdGFMYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcERhdGFMYW5ndWFnZSQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFMYW5ndWFnZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvLyBXZSBhc3N1bWUsIHRoYXQgZGVmYXVsdCBkYXRhIGxhbmd1YWdlIGlzIHRoZSBmaXJzdCBvbmUgZnJvbSB0aGUgYXJyYXkgb2YgYWxsIGF2YWlsYWJsZSBkYXRhIGxhbmd1YWdlc1xuICAgIHB1YmxpYyBnZXQgZGVmYXVsdERhdGFMYW5ndWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwRGF0YUxhbmd1YWdlc1swXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFwcFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy52ZXJzaW9uO1xuICAgIH1cblxuICAgIC8vIEJSRUFEQ1JVTUIgc2VjdGlvblxuICAgIHB1YmxpYyBnZXQgYnJlYWRjcnVtYkhvbWUkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1iSG9tZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBicmVhZGNydW1icyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyZWFkY3J1bWJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvLyBWSVNVQUwgc2VjdGlvblxuXG4gICAgcHVibGljIGdldCBjb2xvclNjaGVtZUlzTGlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xvclNjaGVtZSA9PT0gJ2xpZ2h0JztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbG9yU2NoZW1lSXNEYXJrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JTY2hlbWUgPT09ICdkYXJrJztcbiAgICB9XG5cbiAgICAvLyBVU0VSIHNlY3Rpb25cblxuICAgIHB1YmxpYyBnZXQgdXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB1c2VyKHVzZXI6IElVc2VyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3VzZXIgPSB1c2VyO1xuICAgICAgICB0aGlzLnVzZXJTdWJqZWN0Lm5leHQodXNlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2VyJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2VyUm9sZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyUm9sZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB1c2VyUm9sZXMocm9sZXM6IEFycmF5PHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5fdXNlclJvbGVzID0gcm9sZXM7XG4gICAgICAgIHRoaXMudXNlclJvbGVzU3ViamVjdC5uZXh0KHJvbGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJSb2xlcyQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJSb2xlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICAvLyB2aXN1YWxcbiAgICAgICAgdGhpcy5fY29sb3JTY2hlbWUgPSB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5jb2xvclNjaGVtZSA/PyAnbGlnaHQnO1xuXG4gICAgICAgIC8vIHJpcHBsZVxuICAgICAgICB0aGlzLnByaW1lbmdDb25maWcucmlwcGxlID0gdHJ1ZTtcblxuICAgICAgICAvLyB0cmFuc2xhdGVcbiAgICAgICAgdGhpcy50cmFuc2xhdGUubGFuZ3MgPSB0aGlzLmFwcExhbmd1YWdlcztcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuZ2V0T3JJbml0TGFuZ3VhZ2UoKTtcblxuICAgICAgICB0aGlzLmxhbmd1YWdlU3ViamVjdC5uZXh0KGxhbmcpO1xuICAgICAgICB0aGlzLmRhdGFMYW5ndWFnZVN1YmplY3QubmV4dCh0aGlzLmFwcERhdGFMYW5ndWFnZSk7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmcpO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ21uZ1ByaW1lJykuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gRmlsdGVyIHRoZSBOYXZpZ2F0aW9uRW5kIGV2ZW50cyBhcyB0aGUgYnJlYWRjcnVtYiBpcyB1cGRhdGVkIG9ubHkgd2hlbiB0aGUgcm91dGUgcmVhY2hlcyBpdHMgZW5kXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTGFuZ0NoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVMYW5nQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnUmVzZXQnKTtcbiAgICB9XG5cbiAgICAvLyBCUkVBRENSVU1CIGFjdGlvbnNcbiAgICBwdWJsaWMgZmluZEJyZWFkY3J1bWJJdGVtKGl0ZW06IENvbW1vbnNNZW51SXRlbSk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0LnZhbHVlO1xuICAgICAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpID8/IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rU3RyID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGl0ZW0ucm91dGVyTGluaztcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5yb3V0ZXJMaW5rICYmIChBcnJheS5pc0FycmF5KGkucm91dGVyTGluaykgPyBpLnJvdXRlckxpbmsuam9pbignLycpIDogaS5yb3V0ZXJMaW5rKSA9PT0gcm91dGVyTGlua1N0cikgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5wb3NpdGlvbkluZGV4ICYmIGkucG9zaXRpb25JbmRleCA9PT0gaS5wb3NpdGlvbkluZGV4KSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmljb24gJiYgaS5pY29uID09PSBpLmljb24pID8/IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUJyZWFkY3J1bWJJdGVtKGl0ZW06IENvbW1vbnNNZW51SXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmJyZWFkY3J1bWJzU3ViamVjdC52YWx1ZV07XG4gICAgICAgIGxldCBwb3NJZHggPSAtMTtcbiAgICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWQgJiYgaS5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rU3RyID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGl0ZW0ucm91dGVyTGluaztcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkucm91dGVyTGluayAmJiAoQXJyYXkuaXNBcnJheShpLnJvdXRlckxpbmspID8gaS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGkucm91dGVyTGluaykgPT09IHJvdXRlckxpbmtTdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucG9zaXRpb25JbmRleCkge1xuICAgICAgICAgICAgcG9zSWR4ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS5wb3NpdGlvbkluZGV4ICYmIGkucG9zaXRpb25JbmRleCA9PT0gaS5wb3NpdGlvbkluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLmxhYmVsICYmIGkubGFiZWwgPT09IGkubGFiZWwpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgcG9zSWR4ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS5pY29uICYmIGkuaWNvbiA9PT0gaS5pY29uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NJZHggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtc1twb3NJZHhdID0ge1xuICAgICAgICAgICAgLi4uaXRlbXNbcG9zSWR4XSxcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB1cGRhdGVkOiB0cnVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5icmVhZGNydW1ic1N1YmplY3QubmV4dChpdGVtcyk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCcmVhZGNydW1icygpIHtcbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xuXG4gICAgICAgIGNvbnN0IGhvbWVCcmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvb3RSb3V0ZSk7XG4gICAgICAgIGlmIChob21lQnJlYWRjcnVtYikge1xuICAgICAgICAgICAgaWYgKGhvbWVCcmVhZGNydW1iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmdldChob21lQnJlYWRjcnVtYi5sYWJlbCkuc3Vic2NyaWJlKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBob21lQnJlYWRjcnVtYi5sYWJlbCA9IGkxOG47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkhvbWVTdWJqZWN0Lm5leHQoaG9tZUJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lU3ViamVjdC5uZXh0KGhvbWVCcmVhZGNydW1iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzOiBDb21tb25zTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYnMocm9vdFJvdXRlLCBbXSwgYnJlYWRjcnVtYnMpO1xuXG4gICAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goKGIsIGlkeCkgPT4ge1xuICAgICAgICAgICAgYi5wb3NpdGlvbkluZGV4ID0gaWR4O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpMThuS2V5czogQXJyYXk8c3RyaW5nPiA9IGJyZWFkY3J1bWJzLmZpbHRlcihiID0+IHR5cGVvZiBiLmxhYmVsID09PSAnc3RyaW5nJykubWFwKGIgPT4gYi5sYWJlbCEpO1xuICAgICAgICBpZiAoaTE4bktleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmdldChpMThuS2V5cykuc3Vic2NyaWJlKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgYnJlYWRjcnVtYiBoaWVyYXJjaHlcbiAgICAgICAgICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKGIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYi5sYWJlbCAmJiBpMThuW2IubGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiLmxhYmVsID0gaTE4bltiLmxhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gRW1pdCB0aGUgbmV3IGJyZWFkY3J1bWJzXG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1N1YmplY3QubmV4dChicmVhZGNydW1icyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YT8uYnJlYWRjcnVtYjtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJSb3V0ZURhdGEgJiYgdHlwZW9mIGJyZWFkY3J1bWJSb3V0ZURhdGEgPT09ICdvYmplY3QnICYmICdpc0hvbWUnIGluIGJyZWFkY3J1bWJSb3V0ZURhdGEpIHtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iUm91dGVEYXRhLmlzSG9tZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIoJy8nLCBicmVhZGNydW1iUm91dGVEYXRhLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBicmVhZGNydW1iLmljb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIuaWNvbiA9ICdwaSBwaS1ob21lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFkY3J1bWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsIHBhcmVudFVybFNlZ21lbnRzOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IENvbW1vbnNNZW51SXRlbVtdKSB7XG4gICAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3Qgcm91dGVVcmxTZWdtZW50cyA9IHBhcmVudFVybFNlZ21lbnRzLmNvbmNhdChyb3V0ZS51cmwubWFwKHVybCA9PiB1cmwucGF0aCkpO1xuICAgICAgICBjb25zdCByb3V0ZVVybCA9IGAvJHtyb3V0ZVVybFNlZ21lbnRzLmpvaW4oJy8nKX1gO1xuICAgICAgICBpZiAocm91dGVEYXRhPy5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iUm91dGVEYXRhID0gcm91dGVEYXRhLmJyZWFkY3J1bWI7XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJyZWFkY3J1bWJSb3V0ZURhdGEpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBicmVhZGNydW1iUm91dGVEYXRhSXRlbSBvZiBicmVhZGNydW1iUm91dGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmwsIGJyZWFkY3J1bWJSb3V0ZURhdGFJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBicmVhZGNydW1iUm91dGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCguLi5icmVhZGNydW1iUm91dGVEYXRhKHJvdXRlVXJsLCByb3V0ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsLCBicmVhZGNydW1iUm91dGVEYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYnMocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmxTZWdtZW50cywgYnJlYWRjcnVtYnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybDogc3RyaW5nLCByb3V0ZUJyZWFkY3J1bWI6IHN0cmluZyB8IEJyZWFkY3J1bWJNZW51SXRlbSwgaW5jbHVkZUhvbWUgPSBmYWxzZSk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBjb25zdCBleGlzdGluZ0JyZWFkY3J1bWIgPSB0aGlzLmZpbmRCcmVhZGNydW1iSXRlbSh7cm91dGVyTGluazogcm91dGVVcmx9KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnJlYWRjcnVtYj8udXBkYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJvdXRlQnJlYWRjcnVtYiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGZvciB1cGRhdGVkIGV4aXN0aW5nIGJyZWFkY3J1bWJcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHJvdXRlVXJsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiByb3V0ZUJyZWFkY3J1bWIsXG4gICAgICAgICAgICAgICAgcm91dGVyTGluazogcm91dGVVcmxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIb21lICYmIHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIuaXNIb21lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8vIGhvbWUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9IHJvdXRlVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm91dGVCcmVhZGNydW1iLmlkID0gcm91dGVVcmw7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVCcmVhZGNydW1iO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVElUTEUgc2VjdGlvblxuXG4gICAgcHVibGljIHNldFBhZ2VUaXRsZSh0aXRsZT86IHN0cmluZykge1xuICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IGN1cnJlbnRSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG4gICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9IHRpdGxlID8/IHJvdXRlRGF0YS5wYWdlVGl0bGU7XG5cbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5mb3JtYXRQYWdlVGl0bGUocGFnZVRpdGxlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQYWdlVGl0bGUodGl0bGVQcmVmaXg/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdGl0bGVQaWVjZXMgPSBbXTtcblxuICAgICAgICBpZiAodGl0bGVQcmVmaXgpIHtcbiAgICAgICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aXRsZVByZWZpeCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGl0bGVQaWVjZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhcHAubmFtZScpKTtcblxuICAgICAgICByZXR1cm4gdGl0bGVQaWVjZXMuam9pbignIC0gJyk7XG4gICAgfVxufVxuIl19
@@ -20,10 +20,10 @@ export class LocalStorageService {
20
20
  removeItem(type, key) {
21
21
  localStorage.removeItem(this.buildLocalStorageKey(type, key));
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LocalStorageService }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: LocalStorageService }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LocalStorageService, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: LocalStorageService, decorators: [{
27
27
  type: Injectable
28
28
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVxQixlQUFVLEdBQUcsa0JBQWtCLENBQUM7S0FxQnBEO0lBbkJXLG9CQUFvQixDQUFDLElBQVksRUFBRSxHQUFXO1FBQ2xELE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sT0FBTyxDQUFrQyxJQUFZLEVBQUUsR0FBVztRQUNyRSxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksZ0JBQWdCLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU0sT0FBTyxDQUFrQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEtBQVE7UUFDL0UsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVksRUFBRSxHQUFXO1FBQ3ZDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBckJRLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgTG9jYWxzdG9yYWdlQ29uZmlnVmFsdWVUeXBlID0gc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG9iamVjdCB8IGJvb2xlYW47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWdLZXkgPSAnQ29tbW9uc1VzZXJQcmVmcyc7XG5cbiAgICBwcml2YXRlIGJ1aWxkTG9jYWxTdG9yYWdlS2V5KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5fY29uZmlnS2V5fV8ke3R5cGV9XyR7a2V5fWA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW08VCA9IExvY2Fsc3RvcmFnZUNvbmZpZ1ZhbHVlVHlwZT4odHlwZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBsb2NhbHN0b3JhZ2VEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5idWlsZExvY2FsU3RvcmFnZUtleSh0eXBlLCBrZXkpKTtcbiAgICAgICAgaWYgKGxvY2Fsc3RvcmFnZURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2Fsc3RvcmFnZURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEl0ZW08VCA9IExvY2Fsc3RvcmFnZUNvbmZpZ1ZhbHVlVHlwZT4odHlwZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5idWlsZExvY2FsU3RvcmFnZUtleSh0eXBlLCBrZXkpLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5idWlsZExvY2FsU3RvcmFnZUtleSh0eXBlLCBrZXkpKTtcbiAgICB9XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVxQixlQUFVLEdBQUcsa0JBQWtCLENBQUM7S0FxQnBEO0lBbkJXLG9CQUFvQixDQUFDLElBQVksRUFBRSxHQUFXO1FBQ2xELE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sT0FBTyxDQUFrQyxJQUFZLEVBQUUsR0FBVztRQUNyRSxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLE9BQU8sQ0FBa0MsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFRO1FBQy9FLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN2QyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDOzhHQXJCUSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2Fsc3RvcmFnZUNvbmZpZ1ZhbHVlVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGUgfCBvYmplY3QgfCBib29sZWFuO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnS2V5ID0gJ0NvbW1vbnNVc2VyUHJlZnMnO1xuXG4gICAgcHJpdmF0ZSBidWlsZExvY2FsU3RvcmFnZUtleSh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuX2NvbmZpZ0tleX1fJHt0eXBlfV8ke2tleX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtPFQgPSBMb2NhbHN0b3JhZ2VDb25maWdWYWx1ZVR5cGU+KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbG9jYWxzdG9yYWdlRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSk7XG4gICAgICAgIGlmIChsb2NhbHN0b3JhZ2VEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbHN0b3JhZ2VEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJdGVtPFQgPSBMb2NhbHN0b3JhZ2VDb25maWdWYWx1ZVR5cGU+KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSXRlbSh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSk7XG4gICAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { of } from 'rxjs';
2
- import { CommonsInternalError, EnumUtil } from '@mediusinc/mng-commons/core';
2
+ import { CommonsInternalError, fromEnumConstantsAsValueArray, fromEnumValuesAsValueArray, getEnumConstantName } from '@mediusinc/mng-commons/core';
3
3
  import { LookupDataProvider } from '@mediusinc/mng-commons/form/api';
4
- import { ModelUtil } from '@mediusinc/mng-commons/model';
4
+ import { findClassIdAttribute, trySetLookupItemsProperties } from '@mediusinc/mng-commons/model';
5
5
  import { FilterLookupTypeEnum, FilterTypeEnum } from '../models/filter.model';
6
6
  import { FilterDescriptor } from './filter.descriptor';
7
7
  export class FilterLookupDescriptor extends FilterDescriptor {
@@ -18,9 +18,8 @@ export class FilterLookupDescriptor extends FilterDescriptor {
18
18
  else {
19
19
  this._dataProvider = LookupDataProvider.fromAnyParam(cfg?.type, cfg?.serviceType);
20
20
  }
21
- this._optionsValueProperty =
22
- typeof cfg?.optionsValueProperty === 'undefined' ? ModelUtil.findIdAttribute(this._dataProvider.classType) ?? undefined : cfg?.optionsValueProperty;
23
- ModelUtil.trySetLookupItemsProperties(this, false);
21
+ this._optionsValueProperty = typeof cfg?.optionsValueProperty === 'undefined' ? findClassIdAttribute(this._dataProvider.classType) ?? undefined : cfg?.optionsValueProperty;
22
+ trySetLookupItemsProperties(this, false);
24
23
  }
25
24
  get lookupType() {
26
25
  return this._lookupType;
@@ -128,8 +127,8 @@ export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
128
127
  this._nameAsValue = false;
129
128
  this._enum = enumDesc;
130
129
  this._optionEnumValues = Array.isArray(options)
131
- ? EnumUtil.fromValuesAsEnumValueArray(this._enum.type, options, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined)
132
- : EnumUtil.fromConstantsAsEnumValueArray(this._enum.type, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined);
130
+ ? fromEnumValuesAsValueArray(this._enum.type, options, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined)
131
+ : fromEnumConstantsAsValueArray(this._enum.type, this._enum.nameAsValue, this._enum.i18nBaseKey ?? undefined);
133
132
  this.withLookup(() => of(this._optionEnumValues));
134
133
  this.withOptionsLabelProperty('title', this._enum.i18nBaseKey !== null);
135
134
  }
@@ -153,10 +152,10 @@ export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
153
152
  withDefaultFilterEnum(value, matchMode) {
154
153
  let defaultOptionValue;
155
154
  if (Array.isArray(value)) {
156
- defaultOptionValue = this._nameAsValue ? value.map(value => EnumUtil.getConstantName(this.enum.type, value)) : value;
155
+ defaultOptionValue = this._nameAsValue ? value.map(value => getEnumConstantName(this.enum.type, value)) : value;
157
156
  }
158
157
  else if (value != null) {
159
- defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this.enum.type, value) : value;
158
+ defaultOptionValue = this._nameAsValue ? getEnumConstantName(this.enum.type, value) : value;
160
159
  }
161
160
  if (defaultOptionValue != null) {
162
161
  let option;
@@ -183,4 +182,4 @@ export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
183
182
  return field;
184
183
  }
185
184
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWxvb2t1cC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZmlsdGVyL3NyYy9kZXNjcmlwdG9ycy9maWx0ZXItbG9va3VwLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBRUgsb0JBQW9CLEVBRXBCLFFBQVEsRUFPWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBaUIsU0FBUyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFdkUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBa0JyRCxNQUFNLE9BQU8sc0JBQStELFNBQVEsZ0JBQXlDO0lBY3pILFlBQVksUUFBZ0IsRUFBRSxHQUFxRTtRQUMvRixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFaVixnQkFBVyxHQUEwQixvQkFBb0IsQ0FBQyxRQUFRLENBQUM7UUFFbkUsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLHVCQUFrQixHQUFHLDRCQUE0QixDQUFDO1FBUXhELElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUV6QyxJQUFJLEdBQUcsRUFBRSxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1NBQ3pDO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNy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QUM7SUFDaEIsQ0FBQztJQUVlLElBQUk7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSwwQkFBMEIsQ0FBbUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQ2xhc3NUeXBlLFxuICAgIENvbW1vbnNJbnRlcm5hbEVycm9yLFxuICAgIEVudW1Db25zdGFudFR5cGUsXG4gICAgRW51bVV0aWwsXG4gICAgRW51bVZhbHVlLFxuICAgIEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSxcbiAgICBJTG9va3VwRGF0YVByb3ZpZGVyLFxuICAgIElMb29rdXBEZXNjcmlwdG9yLFxuICAgIExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZSxcbiAgICBTZXJ2aWNlQ2xhc3NUeXBlXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0xvb2t1cERhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBNb2RlbFV0aWx9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0ZpbHRlckxvb2t1cFR5cGVFbnVtLCBGaWx0ZXJUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3J9IGZyb20gJy4vZmlsdGVyLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4gPSBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4gJiB7XG4gICAgdHlwZT86IENsYXNzVHlwZTxGaWx0ZXJNb2RlbD47XG4gICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+ID0ge1xuICAgIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICBkYXRhUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlck1vZGVsLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlID0ge1xuICAgIG9wZW5PbkZvY3VzPzogYm9vbGVhbjtcbiAgICBpbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIGF1dG9DbGVhcj86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZSA9IGFueT4gZXh0ZW5kcyBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPiBpbXBsZW1lbnRzIElMb29rdXBEZXNjcmlwdG9yPEZpbHRlck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhUHJvdmlkZXI6IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2U+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBzdHJpbmcgfCBudWxsO1xuICAgIHByb3RlY3RlZCBfbG9va3VwVHlwZT86IEZpbHRlckxvb2t1cFR5cGVFbnVtID0gRmlsdGVyTG9va3VwVHlwZUVudW0uRHJvcGRvd247XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zTGFiZWxQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfbXVsdGlzZWxlY3QgPSBmYWxzZTtcblxuICAgIHByb3RlY3RlZCBfZHJvcGRvd25DbGFzc05hbWUgPSAnbW5nLWZpbHRlci1sb29rdXAtZHJvcGRvd24nO1xuXG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVPcGVuT25Gb2N1cz86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlQXV0b0NsZWFyPzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIGNmZz86IEZpbHRlckxvb2t1cERlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEZpbHRlck1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Mb29rdXA7XG5cbiAgICAgICAgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gTG9va3VwRGF0YVByb3ZpZGVyLmZyb21BbnlQYXJhbShjZmc/LnR5cGUsIGNmZz8uc2VydmljZVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPVxuICAgICAgICAgICAgdHlwZW9mIGNmZz8ub3B0aW9uc1ZhbHVlUHJvcGVydHkgPT09ICd1bmRlZmluZWQnID8gTW9kZWxVdGlsLmZpbmRJZEF0dHJpYnV0ZSh0aGlzLl9kYXRhUHJvdmlkZXIuY2xhc3NUeXBlKSA/PyB1bmRlZmluZWQgOiBjZmc/Lm9wdGlvbnNWYWx1ZVByb3BlcnR5O1xuXG4gICAgICAgIE1vZGVsVXRpbC50cnlTZXRMb29rdXBJdGVtc1Byb3BlcnRpZXModGhpcywgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1ZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtdWx0aXNlbGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpc2VsZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF1dG9DbGVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlubGluZVNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRyb3Bkb3duQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eShwcm9wZXJ0eToga2V5b2YgRmlsdGVyTW9kZWwsIHRyYW5zbGF0ZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIHRyYW5zbGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCB0cmFuc2xhdGUgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSB0cmFuc2xhdGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB3aWxsIHNldCBgb3B0aW9uc1ZhbHVlUHJvcGVydHlgLCBiZWNhdXNlIHRyYWNrIHByb3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaGVyZSBhcyBmaWx0ZXJzIG5lZWQgZmluYWwgdmFsdWUgdG8gd29yayBjb3JyZWN0bHkuXG4gICAgICogVXNlIGBvcHRpb25zVmFsdWVQcm9wZXJ0eWAgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5KCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5VW5zYWZlKCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cChsb29rdXA/OiBMb29rdXBEYXRhUHJvdmlkZXJMb29rdXBGblR5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoTG9va3VwKGxvb2t1cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlzZWxlY3QobXVsdGlzZWxlY3QgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX211bHRpc2VsZWN0ID0gbXVsdGlzZWxlY3Q7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSAnaW4nO1xuICAgICAgICB0aGlzLndpdGhNYXRjaE1vZGVzKFsnaW4nLCAnbm90SW4nXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRHJvcGRvd25DbGFzc05hbWUoZHJvcGRvd25DbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kcm9wZG93bkNsYXNzTmFtZSA9IGRyb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aERlZmF1bHRGaWx0ZXIodmFsdWU6IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXSB8IHVuZGVmaW5lZCwgbWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSBtYXRjaE1vZGU7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0ZURlZmF1bHRGaWx0ZXIodmFsdWUsIG1hdGNoTW9kZSk7XG5cbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdGhpcy5tdWx0aXNlbGVjdCkgfHwgKHRoaXMubXVsdGlzZWxlY3QgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEZWZhdWx0IHZhbHVlIG5vdCBpbiBjb3JyZWN0IGZvcm1hdCBmb3IgcHJvcGVydHkgJHt0aGlzLl9wcm9wZXJ0eX0uYCwge25hbWU6ICdGaWx0ZXJEZXNjcmlwdG9yRXJyb3InfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNBdXRvY29tcGxldGUob3B0cz86IEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFR5cGUgPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhciA9IG9wdHM/LmF1dG9DbGVhcjtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSBvcHRzPy5vcGVuT25Gb2N1cztcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoID0gb3B0cz8uaW5saW5lU2VhcmNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT4odGhpcy5fcHJvcGVydHksIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY29weUZpZWxkc1RvKGZpbHRlcjogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIuY29weUZpZWxkc1RvKGZpbHRlcik7XG4gICAgICAgIGZpbHRlci5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpbHRlci5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgZmlsdGVyLl9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGU7XG4gICAgICAgIGZpbHRlci5fbXVsdGlzZWxlY3QgPSB0aGlzLl9tdWx0aXNlbGVjdDtcbiAgICAgICAgZmlsdGVyLl9kcm9wZG93bkNsYXNzTmFtZSA9IHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICBmaWx0ZXIuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gdGhpcy5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXM7XG4gICAgICAgIGZpbHRlci5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoID0gdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+IGV4dGVuZHMgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxFbnVtVmFsdWUsIFRhYmxlTW9kZWw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbnVtOiBFbnVtRGVzY3JpcHRvcjxFbnVtPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25FbnVtVmFsdWVzOiBFbnVtVmFsdWVbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lQXNWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHksIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogTG9va3VwRGF0YVByb3ZpZGVyLmNyZWF0ZTxFbnVtVmFsdWU+KCksXG4gICAgICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eTogJ3ZhbHVlJ1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9lbnVtID0gZW51bURlc2M7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uRW51bVZhbHVlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucylcbiAgICAgICAgICAgID8gRW51bVV0aWwuZnJvbVZhbHVlc0FzRW51bVZhbHVlQXJyYXkodGhpcy5fZW51bS50eXBlLCBvcHRpb25zLCB0aGlzLl9lbnVtLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogRW51bVV0aWwuZnJvbUNvbnN0YW50c0FzRW51bVZhbHVlQXJyYXkodGhpcy5fZW51bS50eXBlLCB0aGlzLl9lbnVtLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy53aXRoTG9va3VwKCgpID0+IG9mKHRoaXMuX29wdGlvbkVudW1WYWx1ZXMpKTtcbiAgICAgICAgdGhpcy53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHkoJ3RpdGxlJywgdGhpcy5fZW51bS5pMThuQmFzZUtleSAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXNBdXRvY29tcGxldGUob3B0cz86IEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHN1cGVyLmFzQXV0b2NvbXBsZXRlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBvcGVuT25Gb2N1czogb3B0cz8ub3Blbk9uRm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNlYXJjaDogb3B0cz8uaW5saW5lU2VhcmNoID8/IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlzZWxlY3RFbnVtKG11bHRpc2VsZWN0ID0gdHJ1ZSk6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLndpdGhNdWx0aXNlbGVjdChtdWx0aXNlbGVjdCkgYXMgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgVGFibGVNb2RlbD47XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhEZWZhdWx0RmlsdGVyKCk6IHRoaXMge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYHdpdGhEZWZhdWx0RmlsdGVyIG9uIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHdpdGhEZWZhdWx0RmlsdGVyRW51bSBpbnN0ZWFkLmAsIHtuYW1lOiAnRmlsdGVyRGVzY3JpcHRvckVycm9yJ30pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdEZpbHRlckVudW0odmFsdWU6IEVudW1Db25zdGFudFR5cGUgfCBFbnVtQ29uc3RhbnRUeXBlW10gfCB1bmRlZmluZWQsIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlKTogdGhpcyB7XG4gICAgICAgIGxldCBkZWZhdWx0T3B0aW9uVmFsdWU6IGFueSB8IGFueVtdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25WYWx1ZSA9IHRoaXMuX25hbWVBc1ZhbHVlID8gdmFsdWUubWFwKHZhbHVlID0+IEVudW1VdGlsLmdldENvbnN0YW50TmFtZSh0aGlzLmVudW0udHlwZSwgdmFsdWUpKSA6IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25WYWx1ZSA9IHRoaXMuX25hbWVBc1ZhbHVlID8gRW51bVV0aWwuZ2V0Q29uc3RhbnROYW1lKHRoaXMuZW51bS50eXBlLCB2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWZhdWx0T3B0aW9uVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IG9wdGlvbjogYW55IHwgYW55W107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZhdWx0T3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uID0gZGVmYXVsdE9wdGlvblZhbHVlLm1hcCh2YWx1ZSA9PiB0aGlzLl9vcHRpb25FbnVtVmFsdWVzLmZpbmQobyA9PiBvLnZhbHVlID09PSB2YWx1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb24gPSB0aGlzLl9vcHRpb25FbnVtVmFsdWVzLmZpbmQobyA9PiBvLnZhbHVlID09PSBkZWZhdWx0T3B0aW9uVmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGVmYXVsdEZpbHRlclZhbHVlOiBhbnkgfCBhbnlbXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyVmFsdWUgPSB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA/IG9wdGlvbi5tYXAodmFsdWUgPT4gdmFsdWVbdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSkgOiBvcHRpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZSA9IHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5ID8gb3B0aW9uW3RoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5IGFzIGtleW9mIG9iamVjdF0gOiBvcHRpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1cGVyLndpdGhEZWZhdWx0RmlsdGVyKGRlZmF1bHRGaWx0ZXJWYWx1ZSwgbWF0Y2hNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBUYWJsZU1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+KHRoaXMuX3Byb3BlcnR5LCB0aGlzLmVudW0sIFtdKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWxvb2t1cC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZmlsdGVyL3NyYy9kZXNjcmlwdG9ycy9maWx0ZXItbG9va3VwLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBRUgsb0JBQW9CLEVBUXBCLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsbUJBQW1CLEVBQ3RCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFpQixvQkFBb0IsRUFBRSwyQkFBMkIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCckQsTUFBTSxPQUFPLHNCQUErRCxTQUFRLGdCQUF5QztJQWN6SCxZQUFZLFFBQWdCLEVBQUUsR0FBcUU7UUFDL0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBWlYsZ0JBQVcsR0FBMEIsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1FBRW5FLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQix1QkFBa0IsR0FBRyw0QkFBNEIsQ0FBQztRQVF4RCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFFekMsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxZ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LENBQUM7WUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFZSxJQUFJO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksMEJBQTBCLENBQW1CLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIENsYXNzVHlwZSxcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBFbnVtQ29uc3RhbnRUeXBlLFxuICAgIEVudW1WYWx1ZSxcbiAgICBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsXG4gICAgSUxvb2t1cERhdGFQcm92aWRlcixcbiAgICBJTG9va3VwRGVzY3JpcHRvcixcbiAgICBMb29rdXBEYXRhUHJvdmlkZXJMb29rdXBGblR5cGUsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBmcm9tRW51bUNvbnN0YW50c0FzVmFsdWVBcnJheSxcbiAgICBmcm9tRW51bVZhbHVlc0FzVmFsdWVBcnJheSxcbiAgICBnZXRFbnVtQ29uc3RhbnROYW1lXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0xvb2t1cERhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yLCBmaW5kQ2xhc3NJZEF0dHJpYnV0ZSwgdHJ5U2V0TG9va3VwSXRlbXNQcm9wZXJ0aWVzfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtGaWx0ZXJMb29rdXBUeXBlRW51bSwgRmlsdGVyVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICcuL2ZpbHRlci5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyTG9va3VwRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+ID0gRmlsdGVyTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+ICYge1xuICAgIHR5cGU/OiBDbGFzc1R5cGU8RmlsdGVyTW9kZWw+O1xuICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckxvb2t1cERlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpbHRlck1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJMb29rdXBBdXRvY29tcGxldGVPcHRzVHlwZSA9IHtcbiAgICBvcGVuT25Gb2N1cz86IGJvb2xlYW47XG4gICAgaW5saW5lU2VhcmNoPzogYm9vbGVhbjtcbiAgICBhdXRvQ2xlYXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNsYXNzIEZpbHRlckxvb2t1cERlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2UgPSBhbnk+IGV4dGVuZHMgRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbD4gaW1wbGVtZW50cyBJTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGF0YVByb3ZpZGVyOiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlck1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29wdGlvbnNWYWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2xvb2t1cFR5cGU/OiBGaWx0ZXJMb29rdXBUeXBlRW51bSA9IEZpbHRlckxvb2t1cFR5cGVFbnVtLkRyb3Bkb3duO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uc0xhYmVsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX211bHRpc2VsZWN0ID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgX2Ryb3Bkb3duQ2xhc3NOYW1lID0gJ21uZy1maWx0ZXItbG9va3VwLWRyb3Bkb3duJztcblxuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXM/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZUF1dG9DbGVhcj86IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nLCBjZmc/OiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9maWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTG9va3VwO1xuXG4gICAgICAgIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IExvb2t1cERhdGFQcm92aWRlci5mcm9tQW55UGFyYW0oY2ZnPy50eXBlLCBjZmc/LnNlcnZpY2VUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5ID0gdHlwZW9mIGNmZz8ub3B0aW9uc1ZhbHVlUHJvcGVydHkgPT09ICd1bmRlZmluZWQnID8gZmluZENsYXNzSWRBdHRyaWJ1dGUodGhpcy5fZGF0YVByb3ZpZGVyLmNsYXNzVHlwZSkgPz8gdW5kZWZpbmVkIDogY2ZnPy5vcHRpb25zVmFsdWVQcm9wZXJ0eTtcblxuICAgICAgICB0cnlTZXRMb29rdXBJdGVtc1Byb3BlcnRpZXModGhpcywgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9va3VwVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsVHJhbnNsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1ZhbHVlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtdWx0aXNlbGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpc2VsZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUF1dG9DbGVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZUlubGluZVNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlubGluZVNlYXJjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRyb3Bkb3duQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eShwcm9wZXJ0eToga2V5b2YgRmlsdGVyTW9kZWwsIHRyYW5zbGF0ZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIHRyYW5zbGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPcHRpb25zTGFiZWxQcm9wZXJ0eVVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCB0cmFuc2xhdGUgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSB0cmFuc2xhdGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB3aWxsIHNldCBgb3B0aW9uc1ZhbHVlUHJvcGVydHlgLCBiZWNhdXNlIHRyYWNrIHByb3BlcnRpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaGVyZSBhcyBmaWx0ZXJzIG5lZWQgZmluYWwgdmFsdWUgdG8gd29yayBjb3JyZWN0bHkuXG4gICAgICogVXNlIGBvcHRpb25zVmFsdWVQcm9wZXJ0eWAgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5KCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNUcmFja1Byb3BlcnR5VW5zYWZlKCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cChsb29rdXA/OiBMb29rdXBEYXRhUHJvdmlkZXJMb29rdXBGblR5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlci53aXRoTG9va3VwKGxvb2t1cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlzZWxlY3QobXVsdGlzZWxlY3QgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX211bHRpc2VsZWN0ID0gbXVsdGlzZWxlY3Q7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSAnaW4nO1xuICAgICAgICB0aGlzLndpdGhNYXRjaE1vZGVzKFsnaW4nLCAnbm90SW4nXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRHJvcGRvd25DbGFzc05hbWUoZHJvcGRvd25DbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kcm9wZG93bkNsYXNzTmFtZSA9IGRyb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aERlZmF1bHRGaWx0ZXIodmFsdWU6IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXSB8IHVuZGVmaW5lZCwgbWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSBtYXRjaE1vZGU7XG5cbiAgICAgICAgdGhpcy52YWxpZGF0ZURlZmF1bHRGaWx0ZXIodmFsdWUsIG1hdGNoTW9kZSk7XG5cbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAhdGhpcy5tdWx0aXNlbGVjdCkgfHwgKHRoaXMubXVsdGlzZWxlY3QgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEZWZhdWx0IHZhbHVlIG5vdCBpbiBjb3JyZWN0IGZvcm1hdCBmb3IgcHJvcGVydHkgJHt0aGlzLl9wcm9wZXJ0eX0uYCwge25hbWU6ICdGaWx0ZXJEZXNjcmlwdG9yRXJyb3InfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNBdXRvY29tcGxldGUob3B0cz86IEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFR5cGUgPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG4gICAgICAgIHRoaXMuX2F1dG9jb21wbGV0ZUF1dG9DbGVhciA9IG9wdHM/LmF1dG9DbGVhcjtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSBvcHRzPy5vcGVuT25Gb2N1cztcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoID0gb3B0cz8uaW5saW5lU2VhcmNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT4odGhpcy5fcHJvcGVydHksIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5kYXRhUHJvdmlkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY29weUZpZWxkc1RvKGZpbHRlcjogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIuY29weUZpZWxkc1RvKGZpbHRlcik7XG4gICAgICAgIGZpbHRlci5fbG9va3VwVHlwZSA9IHRoaXMuX2xvb2t1cFR5cGU7XG4gICAgICAgIGZpbHRlci5fb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zTGFiZWxQcm9wZXJ0eTtcbiAgICAgICAgZmlsdGVyLl9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGU7XG4gICAgICAgIGZpbHRlci5fbXVsdGlzZWxlY3QgPSB0aGlzLl9tdWx0aXNlbGVjdDtcbiAgICAgICAgZmlsdGVyLl9kcm9wZG93bkNsYXNzTmFtZSA9IHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lO1xuICAgICAgICBmaWx0ZXIuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzID0gdGhpcy5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXM7XG4gICAgICAgIGZpbHRlci5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoID0gdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+IGV4dGVuZHMgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxFbnVtVmFsdWUsIFRhYmxlTW9kZWw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbnVtOiBFbnVtRGVzY3JpcHRvcjxFbnVtPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25FbnVtVmFsdWVzOiBFbnVtVmFsdWVbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lQXNWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHksIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogTG9va3VwRGF0YVByb3ZpZGVyLmNyZWF0ZTxFbnVtVmFsdWU+KCksXG4gICAgICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eTogJ3ZhbHVlJ1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9lbnVtID0gZW51bURlc2M7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9uRW51bVZhbHVlcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucylcbiAgICAgICAgICAgID8gZnJvbUVudW1WYWx1ZXNBc1ZhbHVlQXJyYXkodGhpcy5fZW51bS50eXBlLCBvcHRpb25zLCB0aGlzLl9lbnVtLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogZnJvbUVudW1Db25zdGFudHNBc1ZhbHVlQXJyYXkodGhpcy5fZW51bS50eXBlLCB0aGlzLl9lbnVtLm5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtLmkxOG5CYXNlS2V5ID8/IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgdGhpcy53aXRoTG9va3VwKCgpID0+IG9mKHRoaXMuX29wdGlvbkVudW1WYWx1ZXMpKTtcbiAgICAgICAgdGhpcy53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHkoJ3RpdGxlJywgdGhpcy5fZW51bS5pMThuQmFzZUtleSAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXNBdXRvY29tcGxldGUob3B0cz86IEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHN1cGVyLmFzQXV0b2NvbXBsZXRlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBvcGVuT25Gb2N1czogb3B0cz8ub3Blbk9uRm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNlYXJjaDogb3B0cz8uaW5saW5lU2VhcmNoID8/IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlzZWxlY3RFbnVtKG11bHRpc2VsZWN0ID0gdHJ1ZSk6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLndpdGhNdWx0aXNlbGVjdChtdWx0aXNlbGVjdCkgYXMgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgVGFibGVNb2RlbD47XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhEZWZhdWx0RmlsdGVyKCk6IHRoaXMge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYHdpdGhEZWZhdWx0RmlsdGVyIG9uIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHdpdGhEZWZhdWx0RmlsdGVyRW51bSBpbnN0ZWFkLmAsIHtuYW1lOiAnRmlsdGVyRGVzY3JpcHRvckVycm9yJ30pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdEZpbHRlckVudW0odmFsdWU6IEVudW1Db25zdGFudFR5cGUgfCBFbnVtQ29uc3RhbnRUeXBlW10gfCB1bmRlZmluZWQsIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlKTogdGhpcyB7XG4gICAgICAgIGxldCBkZWZhdWx0T3B0aW9uVmFsdWU6IGFueSB8IGFueVtdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25WYWx1ZSA9IHRoaXMuX25hbWVBc1ZhbHVlID8gdmFsdWUubWFwKHZhbHVlID0+IGdldEVudW1Db25zdGFudE5hbWUodGhpcy5lbnVtLnR5cGUsIHZhbHVlKSkgOiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uVmFsdWUgPSB0aGlzLl9uYW1lQXNWYWx1ZSA/IGdldEVudW1Db25zdGFudE5hbWUodGhpcy5lbnVtLnR5cGUsIHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25WYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9uOiBhbnkgfCBhbnlbXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlZmF1bHRPcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBvcHRpb24gPSBkZWZhdWx0T3B0aW9uVmFsdWUubWFwKHZhbHVlID0+IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMuZmluZChvID0+IG8udmFsdWUgPT09IHZhbHVlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdGlvbiA9IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMuZmluZChvID0+IG8udmFsdWUgPT09IGRlZmF1bHRPcHRpb25WYWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkZWZhdWx0RmlsdGVyVmFsdWU6IGFueSB8IGFueVtdO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9uKSkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZSA9IHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5ID8gb3B0aW9uLm1hcCh2YWx1ZSA9PiB2YWx1ZVt0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSBhcyBrZXlvZiBvYmplY3RdKSA6IG9wdGlvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlclZhbHVlID0gdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPyBvcHRpb25bdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSA6IG9wdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIud2l0aERlZmF1bHRGaWx0ZXIoZGVmYXVsdEZpbHRlclZhbHVlLCBtYXRjaE1vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3I8RW51bSwgVGFibGVNb2RlbD4odGhpcy5fcHJvcGVydHksIHRoaXMuZW51bSwgW10pO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=
@@ -194,4 +194,4 @@ export class FilterDescriptor {
194
194
  descriptor._columnClassName = this._columnClassName;
195
195
  }
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9maWx0ZXIvc3JjL2Rlc2NyaXB0b3JzL2ZpbHRlci5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBMEQsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHeEksT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE1BQU0sT0FBTyxnQkFBZ0I7SUErQnpCLFlBQVksUUFBZ0I7UUEzQmxCLGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUVwQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHekIsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDO1FBS3BDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUkxQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFhLFNBQVMsQ0FBQztRQUM3QywrQkFBMEIsR0FBYSxTQUFTLENBQUM7UUFDakQsd0JBQW1CLEdBQWEsU0FBUyxDQUFDO1FBRzFDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFJNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFB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LENBQUMsbUJBQW1CLENBQUM7UUFDMUQsVUFBVSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUN4RSxVQUFVLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ2hFLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM1QyxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDeEMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzVDLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsRCxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3hELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSwgSUZpbHRlckRlc2NyaXB0b3JJbnRlcm5hbCwgTG9nZ2VyU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmlsdGVyVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9maWx0ZXIubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbD4gaW1wbGVtZW50cyBJRmlsdGVyRGVzY3JpcHRvckludGVybmFsPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfc2hvd09uQ29sdW1uOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZTtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRWYWx1ZT86IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXTtcbiAgICBwcm90ZWN0ZWQgX21hdGNoTW9kZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBudW1iZXIgZmlsdGVyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcm90ZWN0ZWQgX251bWJlck1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBfbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIF9udW1iZXJVc2VHcm91cGluZyA9IHRydWU7XG5cbiAgICAvLyBkYXRlIGZpbHRlciBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfZGF0ZVBpY2tlclNob3dUaW1lID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2RhdGVQaWNrZXJWYWx1ZU5vVGltZT86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgX2RhdGVQaWNrZXJWYWx1ZVV0Yz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5DbGFzc05hbWUgPSAnJztcbiAgICBwcm90ZWN0ZWQgX2NvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2NvbHVtbk1pbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2lucHV0VHJpbT86IElucHV0VHJpbVR5cGU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaG93T25Db2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93T25Db2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNEZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0TWF0Y2hNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdE1hdGNoTW9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1hdGNoTW9kZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXRjaE1vZGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1heEZyYWN0aW9uRGlnaXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJVc2VHcm91cGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlclVzZUdyb3VwaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlckZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1RpbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1NlY29uZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVVdGMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5DbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbldpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uTWluV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5NaW5XaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRyaW1PcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFRyaW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ZpbHRlclR5cGUoZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW0pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2hvd09uQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNob3dPbkNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRGaWx0ZXIodmFsdWU6IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXSB8IHVuZGVmaW5lZCwgbWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSBtYXRjaE1vZGU7XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWZhdWx0RmlsdGVyKHZhbHVlLCBtYXRjaE1vZGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGVEZWZhdWx0RmlsdGVyKHZhbHVlOiBGaWx0ZXJNb2RlbCB8IEZpbHRlck1vZGVsW10gfCB1bmRlZmluZWQsIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlKSB7XG4gICAgICAgIGlmIChtYXRjaE1vZGUgPT09ICdiZXR3ZWVuJyAmJiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmZpbHRlcih2ID0+IHYgIT0gbnVsbCkubGVuZ3RoICE9PSAyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEZWZhdWx0IHZhbHVlIGZvciBmaWx0ZXIgbWF0Y2ggbW9kZSAke21hdGNoTW9kZX0gbXVzdCBwcm92aWRlIGV4YWN0bHkgMiB2YWx1ZXMgaW4gYXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1hdGNoTW9kZSA9PT0gJ2luJyB8fCBtYXRjaE1vZGUgPT09ICdub3RJbicpICYmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUuZmlsdGVyKHYgPT4gdiAhPSBudWxsKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYERlZmF1bHQgdmFsdWUgZm9yIGZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSBtdXN0IGJlIGFycmF5IGFuZCBwcm92aWRlIGF0IGxlYXN0IDEgbm9uLW51bGwgdmFsdWVgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hNb2RlID09PSAnZXhpc3RzJyB8fCBtYXRjaE1vZGUgPT09ICdkb2VzTm90RXhpc3QnKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2hNb2RlICYmIHRoaXMuX21hdGNoTW9kZXMgJiYgdGhpcy5fbWF0Y2hNb2Rlcy5pbmRleE9mKG1hdGNoTW9kZSkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0TWF0Y2hNb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5kZWJ1ZyhgV0FSTklORzogRGVmYXVsdCBmaWx0ZXIgbWF0Y2ggbW9kZSAnJHttYXRjaE1vZGV9JyBjb3VsZCBub3QgYmUgYXNzaWduZWQgZm9yIHByb3BlcnR5ICR7dGhpcy5fcHJvcGVydHl9LmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMobWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPSBtaW47XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gbWF4O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE51bWJlckdyb3VwaW5nKHVzZUdyb3VwaW5nID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9udW1iZXJVc2VHcm91cGluZyA9IHVzZUdyb3VwaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVGb3JtYXQoZm9ybWF0Pzogc3RyaW5nLCBzaG93VGltZSA9IGZhbHNlLCBzaG93U2Vjb25kcyA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQgPSBmb3JtYXQ7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZSA9IHNob3dUaW1lO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSBzaG93U2Vjb25kcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUodXRjPzogYm9vbGVhbiwgbm9UaW1lem9uZT86IGJvb2xlYW4sIG5vVGltZT86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1dGMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGMgPSB1dGM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub1RpbWV6b25lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IG5vVGltZXpvbmU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWUgPSBub1RpbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5DbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbldpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aCA9IHdpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbHVtbk1pbldpZHRoID0gbWluV2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJbnB1dFRyaW1taW5nKHRyaW1PcHRpb246IElucHV0VHJpbVR5cGUgPSAnYm90aCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faW5wdXRUcmltID0gdHJpbU9wdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNYXRjaE1vZGVzKG1hdGNoTW9kZXM6IEFycmF5PEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbWF0Y2hNb2RlcyA9IG1hdGNoTW9kZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+KSB7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZpbHRlclR5cGUgPSB0aGlzLl9maWx0ZXJUeXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9oYXNEZWZhdWx0VmFsdWUgPSB0aGlzLl9oYXNEZWZhdWx0VmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRWYWx1ZSA9IHRoaXMuX2RlZmF1bHRWYWx1ZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdE1hdGNoTW9kZSA9IHRoaXMuX2RlZmF1bHRNYXRjaE1vZGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJGb3JtYXQgPSB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgICAgICBkZXNjcmlwdG9yLl9kYXRlUGlja2VyU2hvd1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJWYWx1ZVV0YyA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICAgICAgZGVzY3JpcHRvci5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICAgICAgZGVzY3JpcHRvci5fcGxhY2Vob2xkZXIgPSB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5XaWR0aCA9IHRoaXMuX2NvbHVtbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5NaW5XaWR0aCA9IHRoaXMuX2NvbHVtbk1pbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5DbGFzc05hbWUgPSB0aGlzLl9jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9maWx0ZXIvc3JjL2Rlc2NyaXB0b3JzL2ZpbHRlci5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxvQkFBb0IsRUFBa0QsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHaEksT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE1BQU0sT0FBTyxnQkFBZ0I7SUErQnpCLFlBQVksUUFBZ0I7UUEzQmxCLGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUVwQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHekIsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDO1FBS3BDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUkxQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFhLFNBQVMsQ0FBQztRQUM3QywrQkFBMEIsR0FBYSxTQUFTLENBQUM7UUFDakQsd0JBQW1CLEdBQWEsU0FBUyxDQUFDO1FBRzFDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFJNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFXLHVCQUF1QjtRQUM5QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLHlCQUF5QjtRQUNoQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTSxZQUFZLENBQUMsVUFBMEI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFFBQTBCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQWtCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsUUFBZ0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQThDLEVBQUUsU0FBc0M7UUFDM0csSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLHFCQUFxQixDQUFDLEtBQThDLEVBQUUsU0FBc0M7UUFDbEgsSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEcsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHVDQUF1QyxTQUFTLHlDQUF5QyxDQUFDLENBQUM7UUFDOUgsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hILE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx1Q0FBdUMsU0FBUyxzREFBc0QsQ0FBQyxDQUFDO1FBQzNJLENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7WUFDbkMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsU0FBUyx3Q0FBd0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDekksQ0FBQztJQUNMLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsR0FBWTtRQUNqRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFlLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxXQUFXLEdBQUcsS0FBSztRQUN4RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFdBQVcsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQWEsRUFBRSxVQUFvQixFQUFFLE1BQWdCO1FBQ3RFLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsVUFBVSxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFpQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sbUJBQW1CLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQWMsRUFBRSxRQUFpQjtRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxhQUE0QixNQUFNO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsVUFBOEM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLElBQUk7UUFDUCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUEwQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRVMsWUFBWSxDQUFDLFVBQXFEO1FBQ3hFLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BELFVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxVQUFVLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDcEUsVUFBVSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUNwRSxVQUFVLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3hELFVBQVUsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDdEQsVUFBVSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUMxRCxVQUFVLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELFVBQVUsQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUM7UUFDeEUsVUFBVSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUNoRSxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3hDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM1QyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDbEQsVUFBVSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUN4RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsIElGaWx0ZXJEZXNjcmlwdG9yLCBMb2dnZXJTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJbnB1dFRyaW1UeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcblxuaW1wb3J0IHtGaWx0ZXJUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPiBpbXBsZW1lbnRzIElGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfc2hvd09uQ29sdW1uOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZTtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRWYWx1ZT86IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXTtcbiAgICBwcm90ZWN0ZWQgX21hdGNoTW9kZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBudW1iZXIgZmlsdGVyIHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICBwcm90ZWN0ZWQgX251bWJlck1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBfbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIF9udW1iZXJVc2VHcm91cGluZyA9IHRydWU7XG5cbiAgICAvLyBkYXRlIGZpbHRlciBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyRm9ybWF0Pzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfZGF0ZVBpY2tlclNob3dUaW1lID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2RhdGVQaWNrZXJWYWx1ZU5vVGltZT86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9kYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgX2RhdGVQaWNrZXJWYWx1ZVV0Yz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5DbGFzc05hbWUgPSAnJztcbiAgICBwcm90ZWN0ZWQgX2NvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2NvbHVtbk1pbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2lucHV0VHJpbT86IElucHV0VHJpbVR5cGU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlclR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaG93T25Db2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93T25Db2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNEZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNEZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0TWF0Y2hNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdE1hdGNoTW9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1hdGNoTW9kZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXRjaE1vZGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1iZXJNaW5GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG51bWJlck1heEZyYWN0aW9uRGlnaXRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBudW1iZXJVc2VHcm91cGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlclVzZUdyb3VwaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlckZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1RpbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyU2hvd1NlY29uZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVVdGMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyVmFsdWVOb1RpbWV6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVQaWNrZXJWYWx1ZU5vVGltZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5DbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbldpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uTWluV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5NaW5XaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRyaW1PcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFRyaW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0ZpbHRlclR5cGUoZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW0pIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2hvd09uQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNob3dPbkNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRGaWx0ZXIodmFsdWU6IEZpbHRlck1vZGVsIHwgRmlsdGVyTW9kZWxbXSB8IHVuZGVmaW5lZCwgbWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRNYXRjaE1vZGUgPSBtYXRjaE1vZGU7XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWZhdWx0RmlsdGVyKHZhbHVlLCBtYXRjaE1vZGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGVEZWZhdWx0RmlsdGVyKHZhbHVlOiBGaWx0ZXJNb2RlbCB8IEZpbHRlck1vZGVsW10gfCB1bmRlZmluZWQsIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlKSB7XG4gICAgICAgIGlmIChtYXRjaE1vZGUgPT09ICdiZXR3ZWVuJyAmJiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmZpbHRlcih2ID0+IHYgIT0gbnVsbCkubGVuZ3RoICE9PSAyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBEZWZhdWx0IHZhbHVlIGZvciBmaWx0ZXIgbWF0Y2ggbW9kZSAke21hdGNoTW9kZX0gbXVzdCBwcm92aWRlIGV4YWN0bHkgMiB2YWx1ZXMgaW4gYXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1hdGNoTW9kZSA9PT0gJ2luJyB8fCBtYXRjaE1vZGUgPT09ICdub3RJbicpICYmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUuZmlsdGVyKHYgPT4gdiAhPSBudWxsKS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYERlZmF1bHQgdmFsdWUgZm9yIGZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSBtdXN0IGJlIGFycmF5IGFuZCBwcm92aWRlIGF0IGxlYXN0IDEgbm9uLW51bGwgdmFsdWVgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hNb2RlID09PSAnZXhpc3RzJyB8fCBtYXRjaE1vZGUgPT09ICdkb2VzTm90RXhpc3QnKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2hNb2RlICYmIHRoaXMuX21hdGNoTW9kZXMgJiYgdGhpcy5fbWF0Y2hNb2Rlcy5pbmRleE9mKG1hdGNoTW9kZSkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0TWF0Y2hNb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgTG9nZ2VyU2VydmljZS5nZXQoKS5kZWJ1ZyhgV0FSTklORzogRGVmYXVsdCBmaWx0ZXIgbWF0Y2ggbW9kZSAnJHttYXRjaE1vZGV9JyBjb3VsZCBub3QgYmUgYXNzaWduZWQgZm9yIHByb3BlcnR5ICR7dGhpcy5fcHJvcGVydHl9LmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhOdW1iZXJGcmFjdGlvbnMobWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPSBtaW47XG4gICAgICAgIHRoaXMuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gbWF4O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE51bWJlckdyb3VwaW5nKHVzZUdyb3VwaW5nID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9udW1iZXJVc2VHcm91cGluZyA9IHVzZUdyb3VwaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERhdGVGb3JtYXQoZm9ybWF0Pzogc3RyaW5nLCBzaG93VGltZSA9IGZhbHNlLCBzaG93U2Vjb25kcyA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJGb3JtYXQgPSBmb3JtYXQ7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJTaG93VGltZSA9IHNob3dUaW1lO1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyU2hvd1NlY29uZHMgPSBzaG93U2Vjb25kcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRlVmFsdWUodXRjPzogYm9vbGVhbiwgbm9UaW1lem9uZT86IGJvb2xlYW4sIG5vVGltZT86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1dGMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVVdGMgPSB1dGM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub1RpbWV6b25lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IG5vVGltZXpvbmU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub1RpbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyVmFsdWVOb1RpbWUgPSBub1RpbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5DbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbldpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aCA9IHdpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbHVtbk1pbldpZHRoID0gbWluV2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJbnB1dFRyaW1taW5nKHRyaW1PcHRpb246IElucHV0VHJpbVR5cGUgPSAnYm90aCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faW5wdXRUcmltID0gdHJpbU9wdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNYXRjaE1vZGVzKG1hdGNoTW9kZXM6IEFycmF5PEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbWF0Y2hNb2RlcyA9IG1hdGNoTW9kZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWw+KSB7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZpbHRlclR5cGUgPSB0aGlzLl9maWx0ZXJUeXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9oYXNEZWZhdWx0VmFsdWUgPSB0aGlzLl9oYXNEZWZhdWx0VmFsdWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRWYWx1ZSA9IHRoaXMuX2RlZmF1bHRWYWx1ZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdE1hdGNoTW9kZSA9IHRoaXMuX2RlZmF1bHRNYXRjaE1vZGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlck1pbkZyYWN0aW9uRGlnaXRzID0gdGhpcy5fbnVtYmVyTWluRnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlck1heEZyYWN0aW9uRGlnaXRzID0gdGhpcy5fbnVtYmVyTWF4RnJhY3Rpb25EaWdpdHM7XG4gICAgICAgIGRlc2NyaXB0b3IuX251bWJlclVzZUdyb3VwaW5nID0gdGhpcy5fbnVtYmVyVXNlR3JvdXBpbmc7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJGb3JtYXQgPSB0aGlzLl9kYXRlUGlja2VyRm9ybWF0O1xuICAgICAgICBkZXNjcmlwdG9yLl9kYXRlUGlja2VyU2hvd1RpbWUgPSB0aGlzLl9kYXRlUGlja2VyU2hvd1RpbWU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJWYWx1ZVV0YyA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZVV0YztcbiAgICAgICAgZGVzY3JpcHRvci5fZGF0ZVBpY2tlclZhbHVlTm9UaW1lem9uZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZXpvbmU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZSA9IHRoaXMuX2RhdGVQaWNrZXJWYWx1ZU5vVGltZTtcbiAgICAgICAgZGVzY3JpcHRvci5fcGxhY2Vob2xkZXIgPSB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICAgICAgZGVzY3JpcHRvci5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5XaWR0aCA9IHRoaXMuX2NvbHVtbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5NaW5XaWR0aCA9IHRoaXMuX2NvbHVtbk1pbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5DbGFzc05hbWUgPSB0aGlzLl9jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxufVxuIl19
@@ -42,4 +42,4 @@ export class LookupDataProvider extends LookupDataProviderInst {
42
42
  }
43
43
  }
44
44
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL2FwaS9zcmMvZGF0YS1wcm92aWRlcnMvbG9va3VwLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixnQkFBZ0IsRUFBNkYsTUFBTSw2QkFBNkIsQ0FBQztBQUVsTCxNQUFNLE9BQU8sc0JBQ1QsU0FBUSxnQkFBZ0Q7SUFLeEQsWUFBc0IsSUFBUSxFQUFFLFdBQWU7UUFDM0MsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUhuQixZQUFPLEdBQTJELEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUlyRixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBMEQ7UUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUEyQjtJQUMvRDtRQUNJLEtBQUssQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBeUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFRLElBQXNCO1FBQ2pELE9BQU8sSUFBSSxzQkFBc0IsQ0FBZ0QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQWlCLElBQXNCLEVBQUUsV0FBc0M7UUFDN0csT0FBTyxJQUFJLHNCQUFzQixDQUE4RCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLFdBQTBDO1FBRTFDLE9BQU8sSUFBSSxzQkFBc0IsQ0FBbUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFnQk0sTUFBTSxDQUFDLFlBQVksQ0FBZ0csSUFBaUIsRUFBRSxXQUEwQjtRQUNuSyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUM3QixPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVc7Z0JBQ3JDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUF3QixFQUFFLFdBQXdDLENBQUM7Z0JBQzdHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBd0IsQ0FBQyxDQUFDO1NBQ2hFO2FBQU0sSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUU7WUFDM0MsT0FBTyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsV0FBd0MsQ0FBQyxDQUFDO1NBQ25GO2FBQU07WUFDSCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sRUFBUyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc09wdFR5cGUsIENsYXNzVHlwZSwgRGF0YVByb3ZpZGVySW5zdCwgSUxvb2t1cERhdGFQcm92aWRlciwgTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbFR5cGUsIFNlcnZpY2VUeXBlID0gYW55LCBDVCA9IENsYXNzT3B0VHlwZTxNb2RlbFR5cGU+LCBTVCA9IFNlcnZpY2VDbGFzc09wdFR5cGU8U2VydmljZVR5cGU+PlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbFR5cGUsIFNlcnZpY2VUeXBlLCBDVCwgU1Q+XG4gICAgaW1wbGVtZW50cyBJTG9va3VwRGF0YVByb3ZpZGVyPE1vZGVsVHlwZSwgU2VydmljZVR5cGUsIENULCBTVD5cbntcbiAgICBwcm90ZWN0ZWQgX2xvb2t1cDogTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlPE1vZGVsVHlwZSwgU2VydmljZVR5cGU+ID0gKCkgPT4gW107XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogQ1QsIHNlcnZpY2VUeXBlOiBTVCkge1xuICAgICAgICBzdXBlcih0eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0IGxvb2t1cCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cDtcbiAgICB9XG5cbiAgICB3aXRoTG9va3VwKGZuOiBMb29rdXBEYXRhUHJvdmlkZXJMb29rdXBGblR5cGU8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvb2t1cERhdGFQcm92aWRlciBleHRlbmRzIExvb2t1cERhdGFQcm92aWRlckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8TW9kZWw+KCkge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzczxNb2RlbD4odHlwZTogQ2xhc3NUeXBlPE1vZGVsPikge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgQ2xhc3NUeXBlPE1vZGVsPiwgdW5kZWZpbmVkPih0eXBlLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNsYXNzV2l0aFNlcnZpY2U8TW9kZWwsIFNlcnZpY2U+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiBuZXcgTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4odHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZpY2U8U2VydmljZVR5cGUsIE1vZGVsVHlwZT4oXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPj4ge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPj4odW5kZWZpbmVkLCBzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWw+KCk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsPih0eXBlOiBDbGFzc1R5cGU8TW9kZWw+KTogTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBDbGFzc1R5cGU8TW9kZWw+LCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsLCBTZXJ2aWNlID0gYW55PihcbiAgICAgICAgdHlwZTogdW5kZWZpbmVkLFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UgPSBhbnk+KFxuICAgICAgICB0eXBlOiBDbGFzc1R5cGU8TW9kZWw+LFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIENsYXNzVHlwZTxNb2RlbD4sIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsLCBTZXJ2aWNlLCBNb2RlbENsYXNzID0gQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4oXG4gICAgICAgIHR5cGU/OiBNb2RlbENsYXNzLFxuICAgICAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1xuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsQ2xhc3MsIFNlcnZpY2VDbGFzcz47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UgPSBhbnksIE1vZGVsQ2xhc3MgPSBDbGFzc1R5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pih0eXBlPzogTW9kZWxDbGFzcywgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICA/IExvb2t1cERhdGFQcm92aWRlci5mcm9tQ2xhc3NXaXRoU2VydmljZSh0eXBlIGFzIENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4pXG4gICAgICAgICAgICAgICAgOiBMb29rdXBEYXRhUHJvdmlkZXIuZnJvbUNsYXNzKHR5cGUgYXMgQ2xhc3NUeXBlPE1vZGVsPik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcnZpY2VUeXBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIExvb2t1cERhdGFQcm92aWRlci5mcm9tU2VydmljZShzZXJ2aWNlVHlwZSBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMb29rdXBEYXRhUHJvdmlkZXIuY3JlYXRlPE1vZGVsPigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL2FwaS9zcmMvZGF0YS1wcm92aWRlcnMvbG9va3VwLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwQixnQkFBZ0IsRUFBNkYsTUFBTSw2QkFBNkIsQ0FBQztBQUVsTCxNQUFNLE9BQU8sc0JBQ1QsU0FBUSxnQkFBZ0Q7SUFLeEQsWUFBc0IsSUFBUSxFQUFFLFdBQWU7UUFDM0MsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUhuQixZQUFPLEdBQTJELEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUlyRixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBMEQ7UUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLHNCQUEyQjtJQUMvRDtRQUNJLEtBQUssQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBeUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFRLElBQXNCO1FBQ2pELE9BQU8sSUFBSSxzQkFBc0IsQ0FBZ0QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQWlCLElBQXNCLEVBQUUsV0FBc0M7UUFDN0csT0FBTyxJQUFJLHNCQUFzQixDQUE4RCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLFdBQTBDO1FBRTFDLE9BQU8sSUFBSSxzQkFBc0IsQ0FBbUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFnQk0sTUFBTSxDQUFDLFlBQVksQ0FBZ0csSUFBaUIsRUFBRSxXQUEwQjtRQUNuSyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sT0FBTyxXQUFXLEtBQUssV0FBVztnQkFDckMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLElBQXdCLEVBQUUsV0FBd0MsQ0FBQztnQkFDN0csQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUF3QixDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDNUMsT0FBTyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsV0FBd0MsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLEVBQVMsQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc09wdFR5cGUsIENsYXNzVHlwZSwgRGF0YVByb3ZpZGVySW5zdCwgSUxvb2t1cERhdGFQcm92aWRlciwgTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbFR5cGUsIFNlcnZpY2VUeXBlID0gYW55LCBDVCA9IENsYXNzT3B0VHlwZTxNb2RlbFR5cGU+LCBTVCA9IFNlcnZpY2VDbGFzc09wdFR5cGU8U2VydmljZVR5cGU+PlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbFR5cGUsIFNlcnZpY2VUeXBlLCBDVCwgU1Q+XG4gICAgaW1wbGVtZW50cyBJTG9va3VwRGF0YVByb3ZpZGVyPE1vZGVsVHlwZSwgU2VydmljZVR5cGUsIENULCBTVD5cbntcbiAgICBwcm90ZWN0ZWQgX2xvb2t1cDogTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlPE1vZGVsVHlwZSwgU2VydmljZVR5cGU+ID0gKCkgPT4gW107XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodHlwZTogQ1QsIHNlcnZpY2VUeXBlOiBTVCkge1xuICAgICAgICBzdXBlcih0eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgZ2V0IGxvb2t1cCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cDtcbiAgICB9XG5cbiAgICB3aXRoTG9va3VwKGZuOiBMb29rdXBEYXRhUHJvdmlkZXJMb29rdXBGblR5cGU8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvb2t1cERhdGFQcm92aWRlciBleHRlbmRzIExvb2t1cERhdGFQcm92aWRlckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8TW9kZWw+KCkge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzczxNb2RlbD4odHlwZTogQ2xhc3NUeXBlPE1vZGVsPikge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgQ2xhc3NUeXBlPE1vZGVsPiwgdW5kZWZpbmVkPih0eXBlLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNsYXNzV2l0aFNlcnZpY2U8TW9kZWwsIFNlcnZpY2U+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiBuZXcgTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4odHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZpY2U8U2VydmljZVR5cGUsIE1vZGVsVHlwZT4oXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPj4ge1xuICAgICAgICByZXR1cm4gbmV3IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWxUeXBlLCBTZXJ2aWNlVHlwZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2VUeXBlPj4odW5kZWZpbmVkLCBzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWw+KCk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsPih0eXBlOiBDbGFzc1R5cGU8TW9kZWw+KTogTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBDbGFzc1R5cGU8TW9kZWw+LCB1bmRlZmluZWQ+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsLCBTZXJ2aWNlID0gYW55PihcbiAgICAgICAgdHlwZTogdW5kZWZpbmVkLFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UgPSBhbnk+KFxuICAgICAgICB0eXBlOiBDbGFzc1R5cGU8TW9kZWw+LFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIENsYXNzVHlwZTxNb2RlbD4sIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+O1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFueVBhcmFtPE1vZGVsLCBTZXJ2aWNlLCBNb2RlbENsYXNzID0gQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4oXG4gICAgICAgIHR5cGU/OiBNb2RlbENsYXNzLFxuICAgICAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1xuICAgICk6IExvb2t1cERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsQ2xhc3MsIFNlcnZpY2VDbGFzcz47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UgPSBhbnksIE1vZGVsQ2xhc3MgPSBDbGFzc1R5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pih0eXBlPzogTW9kZWxDbGFzcywgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBzZXJ2aWNlVHlwZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICA/IExvb2t1cERhdGFQcm92aWRlci5mcm9tQ2xhc3NXaXRoU2VydmljZSh0eXBlIGFzIENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4pXG4gICAgICAgICAgICAgICAgOiBMb29rdXBEYXRhUHJvdmlkZXIuZnJvbUNsYXNzKHR5cGUgYXMgQ2xhc3NUeXBlPE1vZGVsPik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcnZpY2VUeXBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIExvb2t1cERhdGFQcm92aWRlci5mcm9tU2VydmljZShzZXJ2aWNlVHlwZSBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBMb29rdXBEYXRhUHJvdmlkZXIuY3JlYXRlPE1vZGVsPigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -171,4 +171,4 @@ export var ButtonStyleRoundedEnum;
171
171
  ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["ROUNDED"] = 1] = "ROUNDED";
172
172
  ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["SQUARE"] = 2] = "SQUARE";
173
173
  })(ButtonStyleRoundedEnum || (ButtonStyleRoundedEnum = {}));
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXN0eWxlLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL2FwaS9zcmMvZGVzY3JpcHRvcnMvYnV0dG9uLXN0eWxlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRSxNQUFNLE9BQU8sa0JBQWtCO0lBVTNCLFlBQVksS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBb0I7UUFUeEQsVUFBSyxHQUFrQixhQUFhLENBQUMsTUFBTSxDQUFDO1FBRzVDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBSW5ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUcsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUU7WUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsTUFBTSxDQUFDLElBQUks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bkIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0NBQ0o7QUFFRCxNQUFNLENBQU4sSUFBWSxzQkFJWDtBQUpELFdBQVksc0JBQXNCO0lBQzlCLHlFQUFPLENBQUE7SUFDUCx5RUFBTyxDQUFBO0lBQ1AsdUVBQU0sQ0FBQTtBQUNWLENBQUMsRUFKVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBSWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdHlsZUxldmVsRW51bSwgU3R5bGVTaXplRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuZXhwb3J0IGNsYXNzIEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBfc2l6ZTogU3R5bGVTaXplRW51bSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsO1xuICAgIHByaXZhdGUgX2FjdGlvbkxldmVsOiBTdHlsZUxldmVsRW51bTtcblxuICAgIHByaXZhdGUgX3RleHRCdXR0b24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9vdXRsaW5lQnV0dG9uID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcmFpc2VkQnV0dG9uID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcm91bmRlZFN0eWxlID0gQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ERUZBVUxUO1xuICAgIHByaXZhdGUgX2N1c3RvbUNsYXNzPzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobGV2ZWwgPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0LCBjdXN0b21DbGFzcz86IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hY3Rpb25MZXZlbCA9IGxldmVsO1xuICAgICAgICB0aGlzLl9jdXN0b21DbGFzcyA9IGN1c3RvbUNsYXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZChoYXNOb1RpdGxlID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzdHlsZXMgPSBbdGhpcy5jb252ZXJ0QWN0aW9uTGV2ZWxUb1N0eWxlQ2xhc3MoKSwgdGhpcy5jb252ZXJ0U2l6ZVRvU3R5bGVDbGFzcygpLCB0aGlzLl9jdXN0b21DbGFzc107XG5cbiAgICAgICAgaWYgKGhhc05vVGl0bGUgJiYgdGhpcy5fcm91bmRlZFN0eWxlID09PSBCdXR0b25TdHlsZVJvdW5kZWRFbnVtLkRFRkFVTFQpIHtcbiAgICAgICAgICAgIHN0eWxlcy5wdXNoKGBwLWJ1dHRvbi1yb3VuZGVkIG1uZy1hY3Rpb24tYnV0dG9uLWljb25gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl90ZXh0QnV0dG9uKSB7XG4gICAgICAgICAgICBzdHlsZXMucHVzaChgcC1idXR0b24tdGV4dGApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX291dGxpbmVCdXR0b24pIHtcbiAgICAgICAgICAgIHN0eWxlcy5wdXNoKGBwLWJ1dHRvbi1vdXRsaW5lZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3JhaXNlZEJ1dHRvbikge1xuICAgICAgICAgICAgc3R5bGVzLnB1c2goYHAtYnV0dG9uLXJhaXNlZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3JvdW5kZWRTdHlsZSA9PT0gQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ST1VOREVEKSB7XG4gICAgICAgICAgICBzdHlsZXMucHVzaCgncC1idXR0b24tcm91bmRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0eWxlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBpbnN0YW5jZSBvZiBzdHlsZSBidWlsZGVyIHdpdGggY3VzdG9tIHByb3BlcnRpZXNcbiAgICAgKiBAcGFyYW0gYWN0aW9uTGV2ZWwgQWN0aW9uTGV2ZWxFbnVtXG4gICAgICogQHBhcmFtIHNpemUgQWN0aW9uU2l6ZUVudW1cbiAgICAgKiBAcGFyYW0gdGV4dEJ1dHRvbiBpZiB0cnVlLCB0ZXh0IGJ1dHRvbiB3aWxsIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0gb3V0bGluZUJ1dHRvbiBpZiB0cnVlLCBvdXRsaW5lZCBidXR0b24gd2lsbCBiZSBhcHBsaWVkXG4gICAgICogQHBhcmFtIHJhaXNlZEJ1dHRvbiBpZiB0cnVlLCByYWlzZWQgYnV0dG9uIHdpbGwgYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBjdXN0b21DbGFzcyBhZGRpdGlvbmFsIGN1c3RvbSBjbGFzc2VzICh3aWxsIGJlIGFkZGVkIGF0IGdlbmVyYXRpbmcpXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoXG4gICAgICAgIGFjdGlvbkxldmVsPzogU3R5bGVMZXZlbEVudW0sXG4gICAgICAgIHNpemU/OiBTdHlsZVNpemVFbnVtLFxuICAgICAgICB0ZXh0QnV0dG9uPzogYm9vbGVhbixcbiAgICAgICAgb3V0bGluZUJ1dHRvbj86IGJvb2xlYW4sXG4gICAgICAgIHJhaXNlZEJ1dHRvbj86IGJvb2xlYW4sXG4gICAgICAgIHJvdW5kZWRCdXR0b24/OiBCdXR0b25TdHlsZVJvdW5kZWRFbnVtLFxuICAgICAgICBjdXN0b21DbGFzcz86IHN0cmluZ1xuICAgICk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKGFjdGlvbkxldmVsLCBjdXN0b21DbGFzcyk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2FjdGlvbkxldmVsID0gYWN0aW9uTGV2ZWwgPz8gZGVzY3JpcHRvci5fYWN0aW9uTGV2ZWw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3NpemUgPSBzaXplID8/IGRlc2NyaXB0b3IuX3NpemU7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RleHRCdXR0b24gPSB0ZXh0QnV0dG9uID8/IGRlc2NyaXB0b3IuX3RleHRCdXR0b247XG4gICAgICAgIGRlc2NyaXB0b3IuX291dGxpbmVCdXR0b24gPSBvdXRsaW5lQnV0dG9uID8/IGRlc2NyaXB0b3IuX291dGxpbmVCdXR0b247XG4gICAgICAgIGRlc2NyaXB0b3IuX3JhaXNlZEJ1dHRvbiA9IHJhaXNlZEJ1dHRvbiA/PyBkZXNjcmlwdG9yLl9yYWlzZWRCdXR0b247XG4gICAgICAgIGRlc2NyaXB0b3IuX3JvdW5kZWRTdHlsZSA9IHJvdW5kZWRCdXR0b24gPz8gZGVzY3JpcHRvci5fcm91bmRlZFN0eWxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9jdXN0b21DbGFzcyA9IGN1c3RvbUNsYXNzO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY3VzdG9tIGFjdGlvbiBsZXZlbCBhbmQgcmV0dXJucyB0aGlzIG9iamVjdFxuICAgICAqIEBwYXJhbSBhY3Rpb25MZXZlbFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQWN0aW9uTGV2ZWwoYWN0aW9uTGV2ZWw6IFN0eWxlTGV2ZWxFbnVtKTogQnV0dG9uU3R5bGVCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5fYWN0aW9uTGV2ZWwgPSBhY3Rpb25MZXZlbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyBjdXN0b20gc2l6ZSBhbmQgcmV0dXJuIHRoaXMgb2JqZWN0XG4gICAgICogQHBhcmFtIHNpemVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFNpemUoc2l6ZTogU3R5bGVTaXplRW51bSk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIHRleHQgYnV0dG9uIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHdpdGhUZXh0IGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGV4dEJ1dHRvbih3aXRoVGV4dCA9IHRydWUpOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLl90ZXh0QnV0dG9uID0gd2l0aFRleHQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgb3V0bGluZSBidXR0b24gcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gd2l0aE91dGxpbmUgZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhPdXRsaW5lQnV0dG9uKHdpdGhPdXRsaW5lID0gdHJ1ZSk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIHRoaXMuX291dGxpbmVCdXR0b24gPSB3aXRoT3V0bGluZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyByYWlzZWQgYnV0dG9uIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHdpdGhSYWlzZWQgZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSYWlzZWRCdXR0b24od2l0aFJhaXNlZCA9IHRydWUpOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLl9yYWlzZWRCdXR0b24gPSB3aXRoUmFpc2VkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvdW5kZWRCdXR0b24ocm91bmRlZFN0eWxlID0gQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ST1VOREVEKTogQnV0dG9uU3R5bGVCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5fcm91bmRlZFN0eWxlID0gcm91bmRlZFN0eWxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSBzdHlsZSBjbGFzc1xuICAgICAqIEBwYXJhbSBjdXN0b21DbGFzc1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VzdG9tQ2xhc3MoY3VzdG9tQ2xhc3M6IHN0cmluZyk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNsYXNzID0gY3VzdG9tQ2xhc3M7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydEFjdGlvbkxldmVsVG9TdHlsZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fYWN0aW9uTGV2ZWwpIHtcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uRGVmYXVsdDpcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uUHJpbWFyeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLXByaW1hcnknO1xuICAgICAgICAgICAgY2FzZSBTdHlsZUxldmVsRW51bS5TZWNvbmRhcnk6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1zZWNvbmRhcnknO1xuICAgICAgICAgICAgY2FzZSBTdHlsZUxldmVsRW51bS5JbmZvOlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24taW5mbyc7XG4gICAgICAgICAgICBjYXNlIFN0eWxlTGV2ZWxFbnVtLkhlbHA6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1oZWxwJztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uU3VjY2VzczpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLXN1Y2Nlc3MnO1xuICAgICAgICAgICAgY2FzZSBTdHlsZUxldmVsRW51bS5XYXJuaW5nOlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24td2FybmluZyc7XG4gICAgICAgICAgICBjYXNlIFN0eWxlTGV2ZWxFbnVtLkRhbmdlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLWRhbmdlcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRTaXplVG9TdHlsZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fc2l6ZSkge1xuICAgICAgICAgICAgY2FzZSBTdHlsZVNpemVFbnVtLkV4dHJhU21hbGw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1zbSBtbmctYnV0dG9uLXhzJztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVTaXplRW51bS5TbWFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLXNtIG1uZy1idXR0b24tc20nO1xuICAgICAgICAgICAgY2FzZSBTdHlsZVNpemVFbnVtLkxhcmdlOlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24tbGcgbW5nLWJ1dHRvbi1sZyc7XG4gICAgICAgICAgICBjYXNlIFN0eWxlU2l6ZUVudW0uRXh0cmFMYXJnZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLWxnIG1uZy1idXR0b24teGwnO1xuICAgICAgICAgICAgY2FzZSBTdHlsZVNpemVFbnVtLk5vcm1hbDpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogQnV0dG9uU3R5bGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIodGhpcy5fYWN0aW9uTGV2ZWwsIHRoaXMuX2N1c3RvbUNsYXNzKTtcblxuICAgICAgICBidWlsZGVyLl9zaXplID0gdGhpcy5fc2l6ZTtcbiAgICAgICAgYnVpbGRlci5fdGV4dEJ1dHRvbiA9IHRoaXMuX3RleHRCdXR0b247XG4gICAgICAgIGJ1aWxkZXIuX291dGxpbmVCdXR0b24gPSB0aGlzLl9vdXRsaW5lQnV0dG9uO1xuICAgICAgICBidWlsZGVyLl9yYWlzZWRCdXR0b24gPSB0aGlzLl9yYWlzZWRCdXR0b247XG4gICAgICAgIGJ1aWxkZXIuX3JvdW5kZWRTdHlsZSA9IHRoaXMuX3JvdW5kZWRTdHlsZTtcblxuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbkxldmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9uTGV2ZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRleHRCdXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZXh0QnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3V0bGluZUJ1dHRvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX291dGxpbmVCdXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByYWlzZWRCdXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWlzZWRCdXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3VuZGVkU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3VuZGVkU3R5bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21DbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNsYXNzO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gQnV0dG9uU3R5bGVSb3VuZGVkRW51bSB7XG4gICAgREVGQVVMVCxcbiAgICBST1VOREVELFxuICAgIFNRVUFSRVxufVxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXN0eWxlLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL2FwaS9zcmMvZGVzY3JpcHRvcnMvYnV0dG9uLXN0eWxlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRSxNQUFNLE9BQU8sa0JBQWtCO0lBVTNCLFlBQVksS0FBSyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBb0I7UUFUeEQsVUFBSyxHQUFrQixhQUFhLENBQUMsTUFBTSxDQUFDO1FBRzVDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBSW5ELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFMUcsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxD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UUFDM0MsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTNDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUM5Qix5RUFBTyxDQUFBO0lBQ1AseUVBQU8sQ0FBQTtJQUNQLHVFQUFNLENBQUE7QUFDVixDQUFDLEVBSlcsc0JBQXNCLEtBQXRCLHNCQUFzQixRQUlqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgIHByaXZhdGUgX3NpemU6IFN0eWxlU2l6ZUVudW0gPSBTdHlsZVNpemVFbnVtLk5vcm1hbDtcbiAgICBwcml2YXRlIF9hY3Rpb25MZXZlbDogU3R5bGVMZXZlbEVudW07XG5cbiAgICBwcml2YXRlIF90ZXh0QnV0dG9uID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfb3V0bGluZUJ1dHRvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3JhaXNlZEJ1dHRvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3JvdW5kZWRTdHlsZSA9IEJ1dHRvblN0eWxlUm91bmRlZEVudW0uREVGQVVMVDtcbiAgICBwcml2YXRlIF9jdXN0b21DbGFzcz86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGxldmVsID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdCwgY3VzdG9tQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0aW9uTGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ2xhc3MgPSBjdXN0b21DbGFzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoaGFzTm9UaXRsZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gW3RoaXMuY29udmVydEFjdGlvbkxldmVsVG9TdHlsZUNsYXNzKCksIHRoaXMuY29udmVydFNpemVUb1N0eWxlQ2xhc3MoKSwgdGhpcy5fY3VzdG9tQ2xhc3NdO1xuXG4gICAgICAgIGlmIChoYXNOb1RpdGxlICYmIHRoaXMuX3JvdW5kZWRTdHlsZSA9PT0gQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ERUZBVUxUKSB7XG4gICAgICAgICAgICBzdHlsZXMucHVzaChgcC1idXR0b24tcm91bmRlZCBtbmctYWN0aW9uLWJ1dHRvbi1pY29uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fdGV4dEJ1dHRvbikge1xuICAgICAgICAgICAgc3R5bGVzLnB1c2goYHAtYnV0dG9uLXRleHRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9vdXRsaW5lQnV0dG9uKSB7XG4gICAgICAgICAgICBzdHlsZXMucHVzaChgcC1idXR0b24tb3V0bGluZWRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9yYWlzZWRCdXR0b24pIHtcbiAgICAgICAgICAgIHN0eWxlcy5wdXNoKGBwLWJ1dHRvbi1yYWlzZWRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9yb3VuZGVkU3R5bGUgPT09IEJ1dHRvblN0eWxlUm91bmRlZEVudW0uUk9VTkRFRCkge1xuICAgICAgICAgICAgc3R5bGVzLnB1c2goJ3AtYnV0dG9uLXJvdW5kZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgaW5zdGFuY2Ugb2Ygc3R5bGUgYnVpbGRlciB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzXG4gICAgICogQHBhcmFtIGFjdGlvbkxldmVsIEFjdGlvbkxldmVsRW51bVxuICAgICAqIEBwYXJhbSBzaXplIEFjdGlvblNpemVFbnVtXG4gICAgICogQHBhcmFtIHRleHRCdXR0b24gaWYgdHJ1ZSwgdGV4dCBidXR0b24gd2lsbCBiZSBhcHBsaWVkXG4gICAgICogQHBhcmFtIG91dGxpbmVCdXR0b24gaWYgdHJ1ZSwgb3V0bGluZWQgYnV0dG9uIHdpbGwgYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSByYWlzZWRCdXR0b24gaWYgdHJ1ZSwgcmFpc2VkIGJ1dHRvbiB3aWxsIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0gY3VzdG9tQ2xhc3MgYWRkaXRpb25hbCBjdXN0b20gY2xhc3NlcyAod2lsbCBiZSBhZGRlZCBhdCBnZW5lcmF0aW5nKVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKFxuICAgICAgICBhY3Rpb25MZXZlbD86IFN0eWxlTGV2ZWxFbnVtLFxuICAgICAgICBzaXplPzogU3R5bGVTaXplRW51bSxcbiAgICAgICAgdGV4dEJ1dHRvbj86IGJvb2xlYW4sXG4gICAgICAgIG91dGxpbmVCdXR0b24/OiBib29sZWFuLFxuICAgICAgICByYWlzZWRCdXR0b24/OiBib29sZWFuLFxuICAgICAgICByb3VuZGVkQnV0dG9uPzogQnV0dG9uU3R5bGVSb3VuZGVkRW51bSxcbiAgICAgICAgY3VzdG9tQ2xhc3M/OiBzdHJpbmdcbiAgICApOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEJ1dHRvblN0eWxlQnVpbGRlcihhY3Rpb25MZXZlbCwgY3VzdG9tQ2xhc3MpO1xuICAgICAgICBkZXNjcmlwdG9yLl9hY3Rpb25MZXZlbCA9IGFjdGlvbkxldmVsID8/IGRlc2NyaXB0b3IuX2FjdGlvbkxldmVsO1xuICAgICAgICBkZXNjcmlwdG9yLl9zaXplID0gc2l6ZSA/PyBkZXNjcmlwdG9yLl9zaXplO1xuICAgICAgICBkZXNjcmlwdG9yLl90ZXh0QnV0dG9uID0gdGV4dEJ1dHRvbiA/PyBkZXNjcmlwdG9yLl90ZXh0QnV0dG9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9vdXRsaW5lQnV0dG9uID0gb3V0bGluZUJ1dHRvbiA/PyBkZXNjcmlwdG9yLl9vdXRsaW5lQnV0dG9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9yYWlzZWRCdXR0b24gPSByYWlzZWRCdXR0b24gPz8gZGVzY3JpcHRvci5fcmFpc2VkQnV0dG9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9yb3VuZGVkU3R5bGUgPSByb3VuZGVkQnV0dG9uID8/IGRlc2NyaXB0b3IuX3JvdW5kZWRTdHlsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fY3VzdG9tQ2xhc3MgPSBjdXN0b21DbGFzcztcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSBhY3Rpb24gbGV2ZWwgYW5kIHJldHVybnMgdGhpcyBvYmplY3RcbiAgICAgKiBAcGFyYW0gYWN0aW9uTGV2ZWxcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEFjdGlvbkxldmVsKGFjdGlvbkxldmVsOiBTdHlsZUxldmVsRW51bSk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIHRoaXMuX2FjdGlvbkxldmVsID0gYWN0aW9uTGV2ZWw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY3VzdG9tIHNpemUgYW5kIHJldHVybiB0aGlzIG9iamVjdFxuICAgICAqIEBwYXJhbSBzaXplXG4gICAgICovXG4gICAgcHVibGljIHdpdGhTaXplKHNpemU6IFN0eWxlU2l6ZUVudW0pOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB0ZXh0IGJ1dHRvbiBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB3aXRoVGV4dCBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFRleHRCdXR0b24od2l0aFRleHQgPSB0cnVlKTogQnV0dG9uU3R5bGVCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5fdGV4dEJ1dHRvbiA9IHdpdGhUZXh0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIG91dGxpbmUgYnV0dG9uIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHdpdGhPdXRsaW5lIGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoT3V0bGluZUJ1dHRvbih3aXRoT3V0bGluZSA9IHRydWUpOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLl9vdXRsaW5lQnV0dG9uID0gd2l0aE91dGxpbmU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgcmFpc2VkIGJ1dHRvbiBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB3aXRoUmFpc2VkIGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUmFpc2VkQnV0dG9uKHdpdGhSYWlzZWQgPSB0cnVlKTogQnV0dG9uU3R5bGVCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5fcmFpc2VkQnV0dG9uID0gd2l0aFJhaXNlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3VuZGVkQnV0dG9uKHJvdW5kZWRTdHlsZSA9IEJ1dHRvblN0eWxlUm91bmRlZEVudW0uUk9VTkRFRCk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIHRoaXMuX3JvdW5kZWRTdHlsZSA9IHJvdW5kZWRTdHlsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyBjdXN0b20gc3R5bGUgY2xhc3NcbiAgICAgKiBAcGFyYW0gY3VzdG9tQ2xhc3NcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEN1c3RvbUNsYXNzKGN1c3RvbUNsYXNzOiBzdHJpbmcpOiBCdXR0b25TdHlsZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLl9jdXN0b21DbGFzcyA9IGN1c3RvbUNsYXNzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRBY3Rpb25MZXZlbFRvU3R5bGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX2FjdGlvbkxldmVsKSB7XG4gICAgICAgICAgICBjYXNlIFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQ6XG4gICAgICAgICAgICBjYXNlIFN0eWxlTGV2ZWxFbnVtLlByaW1hcnk6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1wcmltYXJ5JztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5OlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24tc2Vjb25kYXJ5JztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uSW5mbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLWluZm8nO1xuICAgICAgICAgICAgY2FzZSBTdHlsZUxldmVsRW51bS5IZWxwOlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24taGVscCc7XG4gICAgICAgICAgICBjYXNlIFN0eWxlTGV2ZWxFbnVtLlN1Y2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1zdWNjZXNzJztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVMZXZlbEVudW0uV2FybmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLXdhcm5pbmcnO1xuICAgICAgICAgICAgY2FzZSBTdHlsZUxldmVsRW51bS5EYW5nZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1kYW5nZXInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0U2l6ZVRvU3R5bGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NpemUpIHtcbiAgICAgICAgICAgIGNhc2UgU3R5bGVTaXplRW51bS5FeHRyYVNtYWxsOlxuICAgICAgICAgICAgICAgIHJldHVybiAncC1idXR0b24tc20gbW5nLWJ1dHRvbi14cyc7XG4gICAgICAgICAgICBjYXNlIFN0eWxlU2l6ZUVudW0uU21hbGw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1zbSBtbmctYnV0dG9uLXNtJztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVTaXplRW51bS5MYXJnZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3AtYnV0dG9uLWxnIG1uZy1idXR0b24tbGcnO1xuICAgICAgICAgICAgY2FzZSBTdHlsZVNpemVFbnVtLkV4dHJhTGFyZ2U6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwLWJ1dHRvbi1sZyBtbmctYnV0dG9uLXhsJztcbiAgICAgICAgICAgIGNhc2UgU3R5bGVTaXplRW51bS5Ob3JtYWw6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEJ1dHRvblN0eWxlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKHRoaXMuX2FjdGlvbkxldmVsLCB0aGlzLl9jdXN0b21DbGFzcyk7XG5cbiAgICAgICAgYnVpbGRlci5fc2l6ZSA9IHRoaXMuX3NpemU7XG4gICAgICAgIGJ1aWxkZXIuX3RleHRCdXR0b24gPSB0aGlzLl90ZXh0QnV0dG9uO1xuICAgICAgICBidWlsZGVyLl9vdXRsaW5lQnV0dG9uID0gdGhpcy5fb3V0bGluZUJ1dHRvbjtcbiAgICAgICAgYnVpbGRlci5fcmFpc2VkQnV0dG9uID0gdGhpcy5fcmFpc2VkQnV0dG9uO1xuICAgICAgICBidWlsZGVyLl9yb3VuZGVkU3R5bGUgPSB0aGlzLl9yb3VuZGVkU3R5bGU7XG5cbiAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25MZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbkxldmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZXh0QnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEJ1dHRvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG91dGxpbmVCdXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vdXRsaW5lQnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmFpc2VkQnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFpc2VkQnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91bmRlZFN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91bmRlZFN0eWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21DbGFzcztcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblN0eWxlUm91bmRlZEVudW0ge1xuICAgIERFRkFVTFQsXG4gICAgUk9VTkRFRCxcbiAgICBTUVVBUkVcbn1cbiJdfQ==