@openziti/ziti-console-lib 0.12.11 → 1.0.0

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 (443) hide show
  1. package/assets/fonts/icomoon.eot +0 -0
  2. package/assets/fonts/icomoon.svg +6 -1
  3. package/assets/fonts/icomoon.ttf +0 -0
  4. package/assets/fonts/icomoon.woff +0 -0
  5. package/assets/fonts/icomoon.woff2 +0 -0
  6. package/assets/styles/global.scss +431 -24
  7. package/assets/styles/icons.scss +644 -0
  8. package/assets/svgs/Icon_Log_Logout.svg +43 -0
  9. package/assets/svgs/clients.svg +6 -0
  10. package/assets/svgs/ziti-logo.svg +23 -0
  11. package/esm2022/lib/ZAC_VERSION.mjs +4 -0
  12. package/esm2022/lib/default-app-config.mjs +5 -0
  13. package/esm2022/lib/features/card/card.component.mjs +4 -5
  14. package/esm2022/lib/features/card-list/card-list.component.mjs +2 -4
  15. package/esm2022/lib/features/config-editor/config-editor.component.mjs +2 -3
  16. package/esm2022/lib/features/confirm/confirm.component.mjs +4 -5
  17. package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +2 -3
  18. package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +4 -5
  19. package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +2 -3
  20. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -3
  21. package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +4 -5
  22. package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +2 -3
  23. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -3
  24. package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +2 -3
  25. package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +2 -3
  26. package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +4 -5
  27. package/esm2022/lib/features/data-table/data-table-filter.service.mjs +2 -3
  28. package/esm2022/lib/features/data-table/data-table.component.mjs +4 -5
  29. package/esm2022/lib/features/data-table/data-table.service.mjs +2 -3
  30. package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +4 -5
  31. package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +2 -3
  32. package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +2 -3
  33. package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +2 -3
  34. package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +2 -3
  35. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +2 -3
  36. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +2 -3
  37. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +2 -3
  38. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +2 -3
  39. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +4 -5
  40. package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +2 -3
  41. package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +2 -3
  42. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +2 -3
  43. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +2 -3
  44. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +2 -3
  45. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -3
  46. package/esm2022/lib/features/extendable/extendable.component.mjs +2 -3
  47. package/esm2022/lib/features/extendable/extensions-noop.service.mjs +3 -3
  48. package/esm2022/lib/features/header-bar/header-bar.component.mjs +105 -0
  49. package/esm2022/lib/features/json-view/json-view.component.mjs +4 -5
  50. package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +2 -3
  51. package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +4 -5
  52. package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +2 -3
  53. package/esm2022/lib/features/login/login-dialog.component.mjs +10 -12
  54. package/esm2022/lib/features/messaging/growler.component.mjs +4 -5
  55. package/esm2022/lib/features/messaging/growler.module.mjs +2 -3
  56. package/esm2022/lib/features/messaging/growler.service.mjs +2 -3
  57. package/esm2022/lib/features/messaging/logger.service.mjs +2 -3
  58. package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -3
  59. package/esm2022/lib/features/no-items/no-items.component.mjs +2 -3
  60. package/esm2022/lib/features/overrides/overrides.component.mjs +2 -3
  61. package/esm2022/lib/features/overrides/overrides.service.mjs +2 -3
  62. package/esm2022/lib/features/preview-list/preview-list.component.mjs +4 -5
  63. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +2 -3
  64. package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +2 -3
  65. package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +2 -3
  66. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +5 -9
  67. package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +2 -3
  68. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +5 -9
  69. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +2 -3
  70. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +5 -9
  71. package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +2 -3
  72. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +4 -8
  73. package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +2 -3
  74. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +5 -9
  75. package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +2 -3
  76. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +5 -9
  77. package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +2 -3
  78. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +34 -26
  79. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +2 -3
  80. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +8 -12
  81. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +2 -3
  82. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +4 -5
  83. package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +4 -5
  84. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +4 -5
  85. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +6 -12
  86. package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +2 -3
  87. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +5 -12
  88. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -3
  89. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +5 -9
  90. package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +2 -3
  91. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +36 -74
  92. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +5 -8
  93. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -3
  94. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +57 -24
  95. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +8 -12
  96. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +2 -3
  97. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +8 -12
  98. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +2 -3
  99. package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +5 -9
  100. package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +2 -3
  101. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +4 -8
  102. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +2 -3
  103. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +7 -11
  104. package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +2 -3
  105. package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -5
  106. package/esm2022/lib/features/quick-add/quick-add.component.mjs +50 -0
  107. package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +4 -5
  108. package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +2 -3
  109. package/esm2022/lib/features/side-modal/side-modal.component.mjs +2 -3
  110. package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +127 -0
  111. package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +4 -5
  112. package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -3
  113. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +2 -3
  114. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +2 -3
  115. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +2 -3
  116. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +2 -3
  117. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +2 -3
  118. package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +2 -3
  119. package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +2 -3
  120. package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +2 -3
  121. package/esm2022/lib/pages/attributes/attributes.component.mjs +104 -0
  122. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +2 -3
  123. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +4 -4
  124. package/esm2022/lib/pages/callback/callback.component.mjs +2 -3
  125. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +2 -3
  126. package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +2 -3
  127. package/esm2022/lib/pages/config-types/config-types-page.component.mjs +2 -3
  128. package/esm2022/lib/pages/config-types/config-types-page.service.mjs +2 -3
  129. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +2 -3
  130. package/esm2022/lib/pages/configurations/configurations-page.service.mjs +2 -3
  131. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +6 -13
  132. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -3
  133. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +5 -16
  134. package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +2 -4
  135. package/esm2022/lib/pages/geolocate/geolocate.component.mjs +130 -0
  136. package/esm2022/lib/pages/identities/identities-page.component.mjs +5 -16
  137. package/esm2022/lib/pages/identities/identities-page.service.mjs +2 -3
  138. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +2 -3
  139. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +2 -3
  140. package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +3 -4
  141. package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +2 -3
  142. package/esm2022/lib/pages/profile/profile.component.mjs +58 -0
  143. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +6 -13
  144. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +2 -3
  145. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +6 -13
  146. package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -3
  147. package/esm2022/lib/pages/services/services-page.component.mjs +6 -13
  148. package/esm2022/lib/pages/services/services-page.service.mjs +2 -3
  149. package/esm2022/lib/pages/sessions/sessions-page.component.mjs +2 -3
  150. package/esm2022/lib/pages/sessions/sessions-page.service.mjs +2 -3
  151. package/esm2022/lib/pages/settings/settings.component.mjs +61 -0
  152. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +3 -4
  153. package/esm2022/lib/pages/terminators/terminators-page.service.mjs +2 -3
  154. package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +5 -16
  155. package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +2 -3
  156. package/esm2022/lib/safe.pipe.mjs +2 -3
  157. package/esm2022/lib/services/auth.service.mjs +2 -3
  158. package/esm2022/lib/services/console-events.service.mjs +2 -14
  159. package/esm2022/lib/services/csv-download.service.mjs +2 -3
  160. package/esm2022/lib/services/deactivate-guard.service.mjs +2 -3
  161. package/esm2022/lib/services/login-service.class.mjs +2 -3
  162. package/esm2022/lib/services/node-data.service.mjs +24 -3
  163. package/esm2022/lib/services/noop-login.service.mjs +2 -3
  164. package/esm2022/lib/services/schema.service.mjs +2 -3
  165. package/esm2022/lib/services/settings-service.class.mjs +5 -18
  166. package/esm2022/lib/services/settings.service.mjs +14 -11
  167. package/esm2022/lib/services/tab-name.service.mjs +9 -6
  168. package/esm2022/lib/services/validation.service.mjs +2 -3
  169. package/esm2022/lib/services/ziti-controller-data.service.mjs +18 -3
  170. package/esm2022/lib/services/ziti-data.service.mjs +2 -3
  171. package/esm2022/lib/shared/list-page-component.class.mjs +6 -3
  172. package/esm2022/lib/shared/list-page-service.class.mjs +2 -3
  173. package/esm2022/lib/zac-routing.module.mjs +3 -10
  174. package/esm2022/lib/ziti-console-lib.module.mjs +43 -24
  175. package/esm2022/lib/ziti-console.constants.mjs +2 -1
  176. package/esm2022/public-api.mjs +9 -8
  177. package/fesm2022/openziti-ziti-console-lib.mjs +3512 -4317
  178. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  179. package/lib/ZAC_VERSION.d.ts +4 -0
  180. package/lib/ZAC_VERSION.d.ts.map +1 -0
  181. package/lib/default-app-config.d.ts +9 -0
  182. package/lib/default-app-config.d.ts.map +1 -0
  183. package/lib/features/card-list/card-list.component.d.ts +0 -1
  184. package/lib/features/card-list/card-list.component.d.ts.map +1 -1
  185. package/lib/features/extendable/extensions-noop.service.d.ts +2 -0
  186. package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -1
  187. package/lib/features/header-bar/header-bar.component.d.ts +29 -0
  188. package/lib/features/header-bar/header-bar.component.d.ts.map +1 -0
  189. package/lib/features/login/login-dialog.component.d.ts +2 -1
  190. package/lib/features/login/login-dialog.component.d.ts.map +1 -1
  191. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +1 -2
  192. package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +1 -1
  193. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +1 -2
  194. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -1
  195. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +1 -2
  196. package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -1
  197. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +1 -2
  198. package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -1
  199. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +1 -2
  200. package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +1 -1
  201. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -2
  202. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  203. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +6 -3
  204. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  205. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +1 -2
  206. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  207. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -2
  208. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  209. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +1 -2
  210. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  211. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +1 -2
  212. package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +1 -1
  213. package/lib/features/projectable-forms/projectable-form.class.d.ts +11 -7
  214. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  215. package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -1
  216. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  217. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +9 -2
  218. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  219. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +1 -2
  220. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  221. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +1 -2
  222. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  223. package/lib/features/projectable-forms/session/session-form.component.d.ts +1 -2
  224. package/lib/features/projectable-forms/session/session-form.component.d.ts.map +1 -1
  225. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +1 -2
  226. package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -1
  227. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +1 -2
  228. package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +1 -1
  229. package/lib/features/quick-add/quick-add.component.d.ts +15 -0
  230. package/lib/features/quick-add/quick-add.component.d.ts.map +1 -0
  231. package/lib/features/side-navigator/side-navigator.component.d.ts +33 -0
  232. package/lib/features/side-navigator/side-navigator.component.d.ts.map +1 -0
  233. package/lib/pages/attributes/attributes.component.d.ts +31 -0
  234. package/lib/pages/attributes/attributes.component.d.ts.map +1 -0
  235. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
  236. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +1 -3
  237. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
  238. package/lib/pages/edge-routers/edge-routers-page.component.d.ts +1 -3
  239. package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -1
  240. package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
  241. package/lib/pages/geolocate/geolocate.component.d.ts +32 -0
  242. package/lib/pages/geolocate/geolocate.component.d.ts.map +1 -0
  243. package/lib/pages/identities/identities-page.component.d.ts +1 -3
  244. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  245. package/lib/pages/profile/profile.component.d.ts +17 -0
  246. package/lib/pages/profile/profile.component.d.ts.map +1 -0
  247. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +1 -3
  248. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -1
  249. package/lib/pages/service-policies/service-policies-page.component.d.ts +1 -3
  250. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  251. package/lib/pages/services/services-page.component.d.ts +1 -3
  252. package/lib/pages/services/services-page.component.d.ts.map +1 -1
  253. package/lib/pages/settings/settings.component.d.ts +23 -0
  254. package/lib/pages/settings/settings.component.d.ts.map +1 -0
  255. package/lib/pages/transit-routers/transit-routers-page.component.d.ts +1 -3
  256. package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +1 -1
  257. package/lib/services/console-events.service.d.ts.map +1 -1
  258. package/lib/services/node-data.service.d.ts +1 -0
  259. package/lib/services/node-data.service.d.ts.map +1 -1
  260. package/lib/services/settings-service.class.d.ts +0 -2
  261. package/lib/services/settings-service.class.d.ts.map +1 -1
  262. package/lib/services/settings.service.d.ts.map +1 -1
  263. package/lib/services/tab-name.service.d.ts.map +1 -1
  264. package/lib/services/ziti-controller-data.service.d.ts +1 -0
  265. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  266. package/lib/services/ziti-data.service.d.ts +1 -0
  267. package/lib/services/ziti-data.service.d.ts.map +1 -1
  268. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  269. package/lib/zac-routing.module.d.ts.map +1 -1
  270. package/lib/ziti-console-lib.module.d.ts +114 -110
  271. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  272. package/lib/ziti-console.constants.d.ts +1 -0
  273. package/lib/ziti-console.constants.d.ts.map +1 -1
  274. package/package.json +1 -1
  275. package/public-api.d.ts +8 -7
  276. package/public-api.d.ts.map +1 -1
  277. package/assets/components/add.html +0 -1
  278. package/assets/components/api.html +0 -12
  279. package/assets/components/customtags.html +0 -4
  280. package/assets/components/line.html +0 -1
  281. package/assets/components/noitems.html +0 -1
  282. package/assets/components/save.html +0 -4
  283. package/assets/components/search.html +0 -8
  284. package/assets/components/tabIdentities.html +0 -5
  285. package/assets/components/tabPolicies.html +0 -7
  286. package/assets/components/tabRouters.html +0 -5
  287. package/assets/components/tabServers.html +0 -4
  288. package/assets/components/tabServices.html +0 -6
  289. package/assets/components/tabSessions.html +0 -4
  290. package/assets/data/mail.json +0 -0
  291. package/assets/data/services.json +0 -6
  292. package/assets/data/site.json +0 -31
  293. package/assets/data/tags.json +0 -7
  294. package/assets/data/templates.json +0 -1
  295. package/assets/fonts/zac.eot +0 -0
  296. package/assets/fonts/zac.svg +0 -57
  297. package/assets/fonts/zac.ttf +0 -0
  298. package/assets/fonts/zac.woff +0 -0
  299. package/assets/fonts/zac.woff2 +0 -0
  300. package/assets/html/api-sessions.htm +0 -152
  301. package/assets/html/attributes.htm +0 -260
  302. package/assets/html/auth-policies.htm +0 -410
  303. package/assets/html/cas.htm +0 -439
  304. package/assets/html/config-types.htm +0 -167
  305. package/assets/html/configs.htm +0 -238
  306. package/assets/html/deprecated/fabric-links.htm +0 -336
  307. package/assets/html/deprecated/fabric-routers.htm +0 -72
  308. package/assets/html/deprecated/fabric-services.htm +0 -494
  309. package/assets/html/identities.htm +0 -934
  310. package/assets/html/index.htm +0 -222
  311. package/assets/html/jwt-signers.htm +0 -260
  312. package/assets/html/known.htm +0 -115
  313. package/assets/html/login.htm +0 -131
  314. package/assets/html/organization.htm +0 -223
  315. package/assets/html/posture-checks.htm +0 -393
  316. package/assets/html/profile.htm +0 -52
  317. package/assets/html/recipes.htm +0 -455
  318. package/assets/html/router-policies.htm +0 -168
  319. package/assets/html/routers.htm +0 -323
  320. package/assets/html/servers.htm +0 -236
  321. package/assets/html/service-policies.htm +0 -197
  322. package/assets/html/service-router-policies.htm +0 -170
  323. package/assets/html/services.htm +0 -634
  324. package/assets/html/sessions.htm +0 -157
  325. package/assets/html/settings.htm +0 -146
  326. package/assets/html/terminators.htm +0 -244
  327. package/assets/html/transit-routers.htm +0 -173
  328. package/assets/resources/avatar/man.svg +0 -78
  329. package/assets/resources/avatar/woman.svg +0 -96
  330. package/assets/resources/icon/analysis.svg +0 -104
  331. package/assets/resources/icon/appwans.svg +0 -20
  332. package/assets/resources/icon/architecture.svg +0 -1
  333. package/assets/resources/icon/bike.svg +0 -94
  334. package/assets/resources/icon/bus.svg +0 -64
  335. package/assets/resources/icon/cas.svg +0 -46
  336. package/assets/resources/icon/clusters.svg +0 -28
  337. package/assets/resources/icon/computer.svg +0 -1
  338. package/assets/resources/icon/data.svg +0 -1
  339. package/assets/resources/icon/delivery-truck.svg +0 -1
  340. package/assets/resources/icon/explosion.svg +0 -81
  341. package/assets/resources/icon/fabricServices.svg +0 -31
  342. package/assets/resources/icon/fabrics.svg +0 -136
  343. package/assets/resources/icon/front.svg +0 -83
  344. package/assets/resources/icon/gateway.svg +0 -49
  345. package/assets/resources/icon/gear.svg +0 -122
  346. package/assets/resources/icon/house.svg +0 -72
  347. package/assets/resources/icon/language.svg +0 -1
  348. package/assets/resources/icon/objective.svg +0 -55
  349. package/assets/resources/icon/route.svg +0 -97
  350. package/assets/resources/icon/routers.svg +0 -27
  351. package/assets/resources/icon/startup.svg +0 -112
  352. package/assets/resources/icon/switch.svg +0 -101
  353. package/assets/scripts/chart.min.js +0 -7
  354. package/assets/scripts/commands.js +0 -112
  355. package/assets/scripts/components/codemirror/codemirror.css +0 -356
  356. package/assets/scripts/components/codemirror/codemirror.js +0 -9741
  357. package/assets/scripts/components/codemirror/modes/addons/closetags.js +0 -200
  358. package/assets/scripts/components/codemirror/modes/addons/colorize.js +0 -40
  359. package/assets/scripts/components/codemirror/modes/addons/css-hint.js +0 -66
  360. package/assets/scripts/components/codemirror/modes/addons/formatting.js +0 -124
  361. package/assets/scripts/components/codemirror/modes/addons/html-hint.js +0 -366
  362. package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +0 -159
  363. package/assets/scripts/components/codemirror/modes/addons/show-hint.css +0 -36
  364. package/assets/scripts/components/codemirror/modes/addons/show-hint.js +0 -482
  365. package/assets/scripts/components/codemirror/modes/css.js +0 -831
  366. package/assets/scripts/components/codemirror/modes/htmlmixed.js +0 -152
  367. package/assets/scripts/components/codemirror/modes/javascript.js +0 -930
  368. package/assets/scripts/components/codemirror/modes/xml.js +0 -413
  369. package/assets/scripts/components/column.css +0 -184
  370. package/assets/scripts/components/column.js +0 -165
  371. package/assets/scripts/components/flows.css +0 -0
  372. package/assets/scripts/components/flows.js +0 -48
  373. package/assets/scripts/components/moment.js +0 -4602
  374. package/assets/scripts/components/multiselect.js +0 -333
  375. package/assets/scripts/components/resources.js +0 -26
  376. package/assets/scripts/components/selector-new.js +0 -300
  377. package/assets/scripts/components/selector.js +0 -300
  378. package/assets/scripts/components/spectrum.js +0 -2323
  379. package/assets/scripts/components/timezone.js +0 -1545
  380. package/assets/scripts/context.js +0 -177
  381. package/assets/scripts/dragging.js +0 -58
  382. package/assets/scripts/forms/forms.js +0 -74
  383. package/assets/scripts/forms/host.v1.htm +0 -43
  384. package/assets/scripts/forms/intercept.v1.htm +0 -0
  385. package/assets/scripts/forms/schema.js +0 -693
  386. package/assets/scripts/growler.js +0 -137
  387. package/assets/scripts/header.js +0 -163
  388. package/assets/scripts/jquery-3.6.3.min.js +0 -2
  389. package/assets/scripts/jquery.datetimepicker.js +0 -2930
  390. package/assets/scripts/locale.js +0 -47
  391. package/assets/scripts/modal.js +0 -65
  392. package/assets/scripts/model/data.js +0 -558
  393. package/assets/scripts/model/fabric.js +0 -55
  394. package/assets/scripts/model/fabricServices.js +0 -45
  395. package/assets/scripts/model/known.js +0 -43
  396. package/assets/scripts/model/links.js +0 -44
  397. package/assets/scripts/model/routers.js +0 -51
  398. package/assets/scripts/model/series.js +0 -70
  399. package/assets/scripts/model/sessions.js +0 -61
  400. package/assets/scripts/model/settings.js +0 -60
  401. package/assets/scripts/model/summary.js +0 -49
  402. package/assets/scripts/model/tags.js +0 -310
  403. package/assets/scripts/model/templates.js +0 -42
  404. package/assets/scripts/model/user.js +0 -40
  405. package/assets/scripts/restrictions.js +0 -34
  406. package/assets/scripts/service.js +0 -76
  407. package/assets/scripts/validation-tools.js +0 -5119
  408. package/assets/scripts/ziti.js +0 -372
  409. package/assets/styles/chart.min.css +0 -1
  410. package/assets/styles/datetimepicker.css +0 -1
  411. package/assets/styles/forms.css +0 -521
  412. package/assets/styles/growler.css +0 -190
  413. package/assets/styles/header.css +0 -232
  414. package/assets/styles/icons.css +0 -182
  415. package/assets/styles/navigation.css +0 -183
  416. package/assets/styles/select2.css +0 -481
  417. package/assets/styles/spectrum.css +0 -507
  418. package/assets/styles/tables.css +0 -449
  419. package/assets/styles/tooltip.css +0 -134
  420. package/assets/styles/ziti.css +0 -3271
  421. package/assets/templates/footer.htm +0 -183
  422. package/assets/templates/header.htm +0 -297
  423. package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +0 -17
  424. package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +0 -129
  425. package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +0 -51
  426. package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +0 -95
  427. package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +0 -148
  428. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +0 -981
  429. package/esm2022/lib/version.mjs +0 -4
  430. package/lib/features/sidebars/side-banner/side-banner.component.d.ts +0 -7
  431. package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +0 -1
  432. package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +0 -34
  433. package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +0 -1
  434. package/lib/features/wrappers/node-wrapper.service.d.ts +0 -24
  435. package/lib/features/wrappers/node-wrapper.service.d.ts.map +0 -1
  436. package/lib/features/wrappers/zac-wrapper-service.class.d.ts +0 -38
  437. package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +0 -1
  438. package/lib/features/wrappers/zac-wrapper.component.d.ts +0 -31
  439. package/lib/features/wrappers/zac-wrapper.component.d.ts.map +0 -1
  440. package/lib/features/wrappers/zac-wrapper.service.d.ts +0 -58
  441. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +0 -1
  442. package/lib/version.d.ts +0 -4
  443. package/lib/version.d.ts.map +0 -1
@@ -35,7 +35,7 @@ import * as i4 from "@angular/material/dialog";
35
35
  import * as i5 from "@angular/router";
36
36
  import * as i6 from "../../services/settings-service.class";
37
37
  import * as i7 from "../../services/ziti-data.service";
38
- class IdentitiesPageService extends ListPageServiceClass {
38
+ export class IdentitiesPageService extends ListPageServiceClass {
39
39
  constructor(settings, filterService, zitiService, csvDownloadService, growlerService, dialogForm, extService, router) {
40
40
  super(settings, filterService, csvDownloadService, extService, router);
41
41
  this.zitiService = zitiService;
@@ -529,7 +529,6 @@ class IdentitiesPageService extends ListPageServiceClass {
529
529
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentitiesPageService, deps: [{ token: SETTINGS_SERVICE }, { token: i1.DataTableFilterService }, { token: ZITI_DATA_SERVICE }, { token: i2.CsvDownloadService }, { token: i3.GrowlerService }, { token: i4.MatDialog }, { token: IDENTITY_EXTENSION_SERVICE }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
530
530
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentitiesPageService, providedIn: 'root' }); }
531
531
  }
532
- export { IdentitiesPageService };
533
532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentitiesPageService, decorators: [{
534
533
  type: Injectable,
535
534
  args: [{
@@ -545,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
545
544
  type: Inject,
546
545
  args: [IDENTITY_EXTENSION_SERVICE]
547
546
  }] }, { type: i5.Router }]; } });
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdGllcy1wYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQVksT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzlCLE1BQU0sOEZBQThGLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFJL0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDM0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBSXBHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRTNHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7QUFFakgsTUFHYSxxQkFBc0IsU0FBUSxvQkFBb0I7SUFrRDNELFlBQzhCLFFBQThCLEVBQ3hE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Yy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEluamVjdCwgQ29tcG9uZW50LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge2Nsb25lRGVlcCwgaXNFbXB0eX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZSwgRmlsdGVyT2JqfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0xpc3RQYWdlU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2xpc3QtcGFnZS1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge1xuICAgIFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudFxufSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9jb2x1bW4taGVhZGVycy90YWJsZS1jb2x1bW4tZGVmYXVsdC90YWJsZS1jb2x1bW4tZGVmYXVsdC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q2FsbGJhY2tSZXN1bHRzfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1mb3JtL2xpc3QtcGFnZS1mb3JtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtDc3ZEb3dubG9hZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jc3YtZG93bmxvYWQuc2VydmljZVwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHt1bnNldH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtJVG9vbHRpcEFuZ3VsYXJDb21wfSBmcm9tIFwiYWctZ3JpZC1hbmd1bGFyXCI7XG5pbXBvcnQge0lUb29sdGlwUGFyYW1zfSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcbmltcG9ydCB7T1NUb29sdGlwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS90b29sdGlwcy9vcy10b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTREtUb29sdGlwQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS90b29sdGlwcy9zZGstdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1Jlc2V0RW5yb2xsbWVudENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL3Jlc2V0LWVucm9sbG1lbnQvcmVzZXQtZW5yb2xsbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Mtc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2lkZW50aXR5L2lkZW50aXR5LWZvcm0uc2VydmljZVwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7VGFibGVDZWxsTmFtZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnRcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0aWVzUGFnZVNlcnZpY2UgZXh0ZW5kcyBMaXN0UGFnZVNlcnZpY2VDbGFzcyB7XG5cbiAgICBwcml2YXRlIHBhZ2luZyA9IHRoaXMuREVGQVVMVF9QQUdJTkc7XG4gICAgcHVibGljIG1vZGFsVHlwZSA9ICdpZGVudGl0aWVzJztcblxuICAgIG92ZXJyaWRlIENTVl9DT0xVTU5TID0gW1xuICAgICAgICB7bGFiZWw6ICdOYW1lJywgcGF0aDogJ25hbWUnfSxcbiAgICAgICAge2xhYmVsOiAnUm9sZXMnLCBwYXRoOiAncm9sZUF0dHJpYnV0ZXMnfSxcbiAgICAgICAge2xhYmVsOiAnT25saW5lJywgcGF0aDogJ2hhc0FwaVNlc3Npb24nfSxcbiAgICAgICAge2xhYmVsOiAnRWRnZSBSb3V0ZXIgQ29ubmVjdGVkJywgcGF0aDogJ2hhc0VkZ2VSb3V0ZXJDb25uZWN0aW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ09TJywgcGF0aDogJ2VudkluZm8ub3MnfSxcbiAgICAgICAge2xhYmVsOiAnT1MgVmVyc2lvbicsIHBhdGg6ICdlbnZJbmZvLm9zVmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdTREsnLCBwYXRoOiAnc2RrSW5mby52ZXJzaW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ0FwcCBWZXJzaW9uJywgcGF0aDogJ3Nka0luZm8uYXBwVmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdUeXBlJywgcGF0aDogJ3R5cGVJZCd9LFxuICAgICAgICB7bGFiZWw6ICdJcyBBZG1pbicsIHBhdGg6ICdpc0FkbWluJ30sXG4gICAgICAgIHtsYWJlbDogJ0F1dGggUG9saWN5JywgcGF0aDogJ2F1dGhQb2xpY3kubmFtZSd9LFxuICAgICAgICB7bGFiZWw6ICdBdXRoIFBvbGljeSBJRCcsIHBhdGg6ICdhdXRoUG9saWN5LmlkJ30sXG4gICAgICAgIHtsYWJlbDogJ01GQSBFbmFibGVkJywgcGF0aDogJ2lzTWZhRW5hYmxlZCd9LFxuICAgICAgICB7bGFiZWw6ICdDcmVhdGVkIEF0JywgcGF0aDogJ2NyZWF0ZWRBdCd9LFxuICAgICAgICB7bGFiZWw6ICdJRCcsIHBhdGg6ICdpZCd9LFxuICAgIF07XG5cbiAgICBpZGVudGl0eVJvbGVBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICAgIHNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgICBzZWxlY3RlZElkZW50aXR5OiBhbnkgPSBuZXcgSWRlbnRpdHkoKTtcbiAgICBjb2x1bW5GaWx0ZXJzOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBvczogJycsXG4gICAgICAgIGNyZWF0ZWRBdDogJycsXG4gICAgfTtcblxuICAgIG92ZXJyaWRlIG1lbnVJdGVtcyA9IFtcbiAgICAgICAge25hbWU6ICdFZGl0JywgYWN0aW9uOiAndXBkYXRlJ30sXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgSldUJywgYWN0aW9uOiAnZG93bmxvYWQtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1ZpZXcgUVInLCBhY3Rpb246ICdxci1jb2RlJ30sXG4gICAgICAgIHtuYW1lOiAnVmlzdWFsaXplcicsIGFjdGlvbjogJ2lkZW50aXR5LXNlcnZpY2UtcGF0aCd9LFxuICAgICAgICB7bmFtZTogJ1Jlc2V0IEVucm9sbG1lbnQnLCBhY3Rpb246ICdyZXNldC1lbnJvbGxtZW50J30sXG4gICAgICAgIHtuYW1lOiAnUmVpc3N1ZSBFbnJvbGxtZW50JywgYWN0aW9uOiAncmVpc3N1ZS1lbnJvbGxtZW50J30sXG4gICAgICAgIHtuYW1lOiAnUmVzZXQgTUZBJywgYWN0aW9uOiAncmVzZXQtbWZhJ30sXG4gICAgICAgIHtuYW1lOiAnT3ZlcnJpZGUnLCBhY3Rpb246ICdvdmVycmlkZSd9LFxuICAgICAgICB7bmFtZTogJ0RlbGV0ZScsIGFjdGlvbjogJ2RlbGV0ZSd9LFxuICAgIF07XG5cbiAgICBvdmVycmlkZSB0YWJsZUhlYWRlckFjdGlvbnMgPSBbXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgQWxsJywgYWN0aW9uOiAnZG93bmxvYWQtYWxsJ30sXG4gICAgICAgIHtuYW1lOiAnRG93bmxvYWQgU2VsZWN0ZWQnLCBhY3Rpb246ICdkb3dubG9hZC1zZWxlY3RlZCd9LFxuICAgIF1cblxuICAgIHJlc291cmNlVHlwZSA9ICdpZGVudGl0aWVzJztcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlQ2xhc3MsXG4gICAgICAgIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgY3N2RG93bmxvYWRTZXJ2aWNlOiBDc3ZEb3dubG9hZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ0Zvcm06IE1hdERpYWxvZyxcbiAgICAgICAgQEluamVjdChJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSkgcHJpdmF0ZSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoc2V0dGluZ3MsIGZpbHRlclNlcnZpY2UsIGNzdkRvd25sb2FkU2VydmljZSwgZXh0U2VydmljZSwgcm91dGVyKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNDaGFuZ2VkLnN1YnNjcmliZShmaWx0ZXJzID0+IHtcbiAgICAgICAgICAgIGxldCBpZGVudGl0eUZpbHRlcjtcbiAgICAgICAgICAgIGZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXIuY29sdW1uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWRlbnRpdHlSb2xlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGl0eUZpbHRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghaWRlbnRpdHlGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSA9IChmb3JtRGF0YSk6IFByb21pc2U8Q2FsbGJhY2tSZXN1bHRzPiA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBwYXNzZWQ6IHRydWV9KTtcbiAgICB9XG5cbiAgICBpbml0VGFibGVDb2x1bW5zKCk6IGFueSB7XG4gICAgICAgIHRoaXMuaW5pdE1lbnVBY3Rpb25zKCk7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBpZGVudGl0eVJvbGVzSGVhZGVyQ29tcG9uZW50UGFyYW1zID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ0FUVFJJQlVURScsXG4gICAgICAgICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlSGFzaDogZmFsc2UsXG4gICAgICAgICAgICBnZXRSb2xlQXR0cmlidXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TmFtZWRBdHRyaWJ1dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFNlbGVjdGVkUm9sZUF0dHJpYnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRSb2xlQXR0cmlidXRlczogKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkSWRlbnRpdHlSb2xlQXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0U2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXM6IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbm8tb3BcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXROYW1lZEF0dHJpYnV0ZXNNYXA6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5hbWVSZW5kZXJlciA9IChyb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cIi4vaWRlbnRpdGllcy8ke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNlbGwtbmFtZS1yZW5kZXJlclwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUgJHtyb3c/LmRhdGE/Lmhhc0FwaVNlc3Npb259XCIgdGl0bGU9XCJBcGkgU2Vzc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSAke3Jvdz8uZGF0YT8uaGFzRWRnZVJvdXRlckNvbm5lY3Rpb259XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4ke3Jvdz8uZGF0YT8ubmFtZX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9zUmVuZGVyZXIgPSAocm93KSA9PiB7XG4gICAgICAgICAgICBsZXQgb3MgPSBcIm90aGVyXCI7XG4gICAgICAgICAgICBsZXQgb3NEZXRhaWxzID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24mJnJvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndpbmRvd3NcIik+PTApIG9zID0gXCJ3aW5kb3dzXCI7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImRhcndpblwiKT49MCkgb3MgPSBcImFwcGxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwibGludXhcIik+PTApIG9zID0gXCJsaW51eFwiO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImFuZHJvaWRcIik+PTApIG9zID0gXCJhbmRyb2lkXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MmJnJvdz8uZGF0YT8uZW52SW5mbz8ub3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid2luZG93c1wiKT49MCkgb3MgPSBcIndpbmRvd3NcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3MpIG9zRGV0YWlscyArPSBcIk9TOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/LmFyY2gpIG9zRGV0YWlscyArPSBcIiYjMTA7QXJjaDogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5hcmNoO1xuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZSkgb3NEZXRhaWxzICs9IFwiJiMxMDtSZWxlYXNlOiBcIityb3c/LmRhdGE/LmVudkluZm8/Lm9zUmVsZWFzZTtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb24pIG9zRGV0YWlscyArPSBcIiYjMTA7VmVyc2lvbjogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5vc1ZlcnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIHN0eWxlPVwib3ZlcmZsb3c6IHVuc2V0O1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3MgJHtvc31cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNka1JlbmRlcmVyID0gKHJvdykgPT4ge1xuICAgICAgICAgICAgbGV0IHNkayA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgdmVyc2lvbiA9IFwiLVwiO1xuICAgICAgICAgICAgY29uc3Qgc2RrSW5mbyA9IHJvdz8uZGF0YT8uc2RrSW5mbztcbiAgICAgICAgICAgIGlmIChzZGtJbmZvKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnZlcnNpb24pIHZlcnNpb24gKz0gc2RrSW5mbz8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwSWQpIHNkayArPSBzZGtJbmZvPy5hcHBJZDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8uYXBwVmVyc2lvbikgc2RrICs9IHNka0luZm8/LmFwcFZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnR5cGUpIHNkayArPSBzZGtJbmZvPy50eXBlO1xuICAgICAgICAgICAgICAgIGlmIChzZGtJbmZvPy50eXBlKSBzZGsgKz0gXCImIzEwO1wiK3Nka0luZm8/LmJyYW5jaDtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8ucmV2aXNpb24pIHNkayArPSBcIiAtIFwiK3Nka0luZm8/LnJldmlzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuYDxkaXYgY2xhc3M9XCJjb2wgZGVza3RvcFwiIGRhdGEtaWQ9XCIke3Jvdz8uZGF0YT8uaWR9XCIgc3R5bGU9XCJvdmVyZmxvdzogdW5zZXQ7XCIgZGF0YS1iYWxsb29uLXBvcz1cInVwXCIgYXJpYS1sYWJlbD1cIiR7c2RrfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib25lbGluZVwiPiR7dmVyc2lvbn08L3NwYW4+XG4gICAgICAgICAgICAgPC9kaXY+YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtbkZpbHRlcnMgPSB0aGlzLmNvbHVtbkZpbHRlcnM7XG5cbiAgICAgICAgY29uc3Qgb3NQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnQ09NQk8nLFxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczogW1xuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJycsIGljb246ICdlbXB0eScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQXBwbGUnLCB2YWx1ZTogJ2RhcndpbicsIGljb246ICdhcHBsZScgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnV2luZG93cycsIHZhbHVlOiAnbWluZ3cnLCBpY29uOiAnd2luZG93cycgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0xpbnV4JywgdmFsdWU6ICdsaW51eCcsIGljb246ICdsaW51eCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FuZHJvaWQnLCB2YWx1ZTogJ2FuZHJvaWQnLCBpY29uOiAnYW5kcm9pZCcgIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ090aGVyICh0ZXh0IHNlYXJjaCknLCB2YWx1ZTogJycsIGljb246ICdvdGhlcicsIHVzZVRleHRJbnB1dDogdHJ1ZSAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb2x1bW5GaWx0ZXJzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGlzQWRtaW5IZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnU0VMRUNUJyxcbiAgICAgICAgICAgIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gICAgICAgICAgICBmaWx0ZXJPcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FsbCcsIHZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBZG1pbnMnLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdOb24tQWRtaW5zJywgdmFsdWU6IGZhbHNlIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHRhYmxlQ29sdW1ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ05hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBUYWJsZUNlbGxOYW1lQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBwYXRoUm9vdDogdGhpcy5iYXNlUGF0aCwgc2hvd0lkZW50aXR5SWNvbnM6IHRydWUgfSxcbiAgICAgICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVkaXRGb3JtKGRhdGE/LmRhdGE/LmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNvcnREaXI6ICdhc2MnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAzMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZUF0dHJpYnV0ZXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdSb2xlcycsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiBpZGVudGl0eVJvbGVzSGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlbGVjdGVkVGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRWRpdEZvcm0oZGF0YT8uZGF0YT8uaWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5yb2xlc1JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdvcycsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdvcycsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ08vUycsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IG9zUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudDogT1NUb29sdGlwQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogJ2VudkluZm8nLFxuICAgICAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnRQYXJhbXM6IHsgY29sb3I6ICcjZWNlY2VjJyB9LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnc2RrJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3NkaycsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ1NESycsXG4gICAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiAnc2RrSW5mbycsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBzZGtSZW5kZXJlcixcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB0b29sdGlwQ29tcG9uZW50OiBTREtUb29sdGlwQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDEyNSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICd0eXBlJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3R5cGUubmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ1R5cGUnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnaXNBZG1pbicsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc0FkbWluJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnSXMgQWRtaW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogaXNBZG1pbkhlYWRlckNvbXBvbmVudFBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ0NyZWF0ZWQgQXQnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiB0aGlzLmNyZWF0ZWRBdEZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ3Rva2VuJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3Rva2VuJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnVG9rZW4nLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogJ2NlbGxUb2tlbkNvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdpc01mYUVuYWJsZWQnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaXNNZmFFbmFibGVkJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnTUZBJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5JRF9DT0xVTU5fREVGXG4gICAgICAgIF07XG4gICAgICAgIGlmICh0aGlzLmV4dFNlcnZpY2UucHJvY2Vzc1RhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGFibGVDb2x1bW5zID0gdGhpcy5leHRTZXJ2aWNlLnByb2Nlc3NUYWJsZUNvbHVtbnModGFibGVDb2x1bW5zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFibGVDb2x1bW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQoJ2lkZW50aXR5LXJvbGUtYXR0cmlidXRlcycsIHt9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERhdGEoZmlsdGVycz86IEZpbHRlck9ialtdLCBzb3J0PzogYW55LCBwYWdlPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgLy8gd2UgY2FuIGN1c3RvbWl6ZSBmaWx0ZXJzIG9yIHNvcnRpbmcgaGVyZSBiZWZvcmUgbW92aW5nIG9uLi4uXG4gICAgICAgIHRoaXMucGFnaW5nLnBhZ2UgPSBwYWdlIHx8IHRoaXMucGFnaW5nLnBhZ2U7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRUYWJsZURhdGEoJ2lkZW50aXRpZXMnLCB0aGlzLnBhZ2luZywgZmlsdGVycywgc29ydClcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YShyZXN1bHRzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0RhdGEocmVzdWx0czogYW55KSB7XG4gICAgICAgIGlmICghaXNFbXB0eShyZXN1bHRzPy5kYXRhKSkge1xuICAgICAgICAgICAgLy9wcmUtcHJvY2VzcyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgICAgICAgICAgIHJlc3VsdHMuZGF0YSA9IHRoaXMuYWRkQWN0aW9uc1BlclJvdyhyZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEFjdGlvbnNQZXJSb3cocmVzdWx0czogYW55KTogYW55W10ge1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5kYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cuYWN0aW9uTGlzdCA9IFsndXBkYXRlJywgJ292ZXJyaWRlJywgJ2RlbGV0ZScsICdpZGVudGl0eS1zZXJ2aWNlLXBhdGgnXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRW5yb2xtZW50VG9rZW4ocm93KSkge1xuICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ3JlaXNzdWUtZW5yb2xsbWVudCcpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbnJvbGxtZW50RXhwaXJlZChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ2Rvd25sb2FkLWVucm9sbG1lbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgncXItY29kZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBdXRoZW50aWNhdG9yKHJvdykpIHtcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdyZXNldC1lbnJvbGxtZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocm93LmlzTWZhRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ3Jlc2V0LW1mYScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hZGRMaXN0SXRlbUV4dGVuc2lvbkFjdGlvbnMocm93KTtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhc0F1dGhlbnRpY2F0b3IoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbT8uYXV0aGVudGljYXRvcnM/LmNlcnQ/LmlkIHx8IGl0ZW0uYXV0aGVudGljYXRvcnM/LnVwZGI/LmlkO1xuICAgIH1cblxuICAgIGhhc0Vucm9sbWVudFRva2VuKGl0ZW0pIHtcbiAgICAgICAgbGV0IHRva2VuO1xuICAgICAgICBpZiAoaXRlbT8uZW5yb2xsbWVudD8ub3R0Py5qd3QpIHtcbiAgICAgICAgICAgIHRva2VuID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Py5qd3Q7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dCkge1xuICAgICAgICAgICAgdG9rZW4gPSBpdGVtPy5lbnJvbGxtZW50Py5vdHRjYT8uand0O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dCkge1xuICAgICAgICAgICAgdG9rZW4gPSBpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5qd3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIGVucm9sbG1lbnRFeHBpcmVkKGl0ZW0pIHtcbiAgICAgICAgbGV0IGV4cGlyYXRpb247XG4gICAgICAgIGlmIChpdGVtPy5lbnJvbGxtZW50Py5vdHQ/Lmp3dCkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbiA9IGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uZXhwaXJlc0F0O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3QpIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24gPSBpdGVtPy5lbnJvbGxtZW50Py5vdHRjYT8uZXhwaXJlc0F0O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dCkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbiA9IGl0ZW0/LmVucm9sbG1lbnQ/LnVwZGI/LmV4cGlyZXNBdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9tZW50KGV4cGlyYXRpb24pLmlzQmVmb3JlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkZW50aXRpZXNSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldE1GQShpZGVudGl0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5yZXNldE1GQShpZGVudGl0eS5pZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBgTUZBIFJlc2V0YCxcbiAgICAgICAgICAgICAgICBgTUZBIHdhcyBzdWNjZXNzZnVsbHkgcmVzZXQgZm9yIGlkZW50aXR5OiAke2lkZW50aXR5Lm5hbWV9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnppdGlTZXJ2aWNlLmdldEVycm9yTWVzc2FnZShlcnJvcik7XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gUmVzZXQgTUZBYCxcbiAgICAgICAgICAgICAgICBgQXR0ZW1wdCB0byByZXNldCBNRkEgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRKV1QoaWRlbnRpdHk6IGFueSkge1xuICAgICAgICBsZXQgcXJDb2RlO1xuICAgICAgICBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uand0KSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uand0O1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uand0KSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3Q7XG4gICAgICAgIH0gZWxzZSBpZighaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uand0KSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXJDb2RlO1xuICAgIH1cblxuICAgIGdldFRva2VuKGlkZW50aXR5OiBhbnkpIHtcbiAgICAgICAgbGV0IHFyQ29kZTtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LnRva2VuKSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8udG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy50b2tlbikpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8udG9rZW47XG4gICAgICAgIH0gZWxzZSBpZighaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8udG9rZW4pKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8udG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHFyQ29kZTtcbiAgICB9XG5cbiAgICBkb3dubG9hZEpXVChqd3QsIG5hbWUpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnZGF0YTphcHBsaWNhdGlvbi96aXRpLWp3dDtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoand0KSk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIG5hbWUrXCIuand0XCIpO1xuICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBjb3B5VG9rZW4odG9rZW4pIHtcbiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodG9rZW4pO1xuICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICAgICAgYFJlZ2lzdHJhdGlvbiB0b2tlbiBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICByZXNldEpXVChpZGVudGl0eSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nRm9ybS5vcGVuKFJlc2V0RW5yb2xsbWVudENvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eSxcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVzZXQnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZjtcbiAgICB9XG5cbiAgICByZWlzc3VlSldUKGlkZW50aXR5KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dGb3JtLm9wZW4oUmVzZXRFbnJvbGxtZW50Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgaWRlbnRpdHk6IGlkZW50aXR5LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWlzc3VlJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWY7XG4gICAgfVxuXG4gICAgZ2V0RW5yb2xsbWVudEV4cGlyYXRpb24oaWRlbnRpdHk6IGFueSkge1xuICAgICAgICBsZXQgZXhwaXJlc0F0O1xuICAgICAgICBpZiAoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uZXhwaXJlc0F0KSkge1xuICAgICAgICAgICAgZXhwaXJlc0F0ID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dD8uZXhwaXJlc0F0O1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uZXhwaXJlc0F0KSkge1xuICAgICAgICAgICAgZXhwaXJlc0F0ID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhPy5leHBpcmVzQXQ7XG4gICAgICAgIH0gZWxzZSBpZighaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYj8uZXhwaXJlc0F0KSkge1xuICAgICAgICAgICAgZXhwaXJlc0F0ID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LmV4cGlyZXNBdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhwaXJlc0F0O1xuICAgIH1cblxuICAgIHJlc2V0RW5yb2xsbWVudChpZGVudGl0eTogYW55LCBkYXRlOiBhbnkpIHtcbiAgICAgICAgbGV0IGlkID0gaWRlbnRpdHk/LmF1dGhlbnRpY2F0b3JzPy5jZXJ0Py5pZDtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dCkpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQuaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQub3R0Y2EpKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2EuaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50LnVwZGIpKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8udXBkYi5pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZXNldEVucm9sbG1lbnQoaWQsIGRhdGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgYEVucm9sbG1lbnQgUmVzZXRgLFxuICAgICAgICAgICAgICAgIGBTdWNjZXNzZnVsbHkgcmVpc3N1ZWQgZW5yb2xsbWVudCB0b2tlbmAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgICAgICAgIGBSZXNldCBGYWlsZWRgLFxuICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gcmVpc3N1ZXMgZW5yb2xsbWVudCB0b2tlbmAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5VcGRhdGUoaXRlbUlkPzogYW55KSB7XG4gICAgICAgIHRoaXMubW9kYWxUeXBlID0gJ2lkZW50aXR5JztcbiAgICAgICAgdGhpcy5zaWRlTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbk92ZXJyaWRlc01vZGFsKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5tb2RhbFR5cGUgPSAnb3ZlcnJpZGVzJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkZW50aXR5ID0gaXRlbTtcbiAgICAgICAgdGhpcy5zaWRlTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdGllcy1wYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvaWRlbnRpdGllcy9pZGVudGl0aWVzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQVksT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzlCLE1BQU0sOEZBQThGLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdCQUFnQixFQUFrQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFJL0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDM0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDN0YsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRXBFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBSXBHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRTNHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7Ozs7QUFLakgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQWtEM0QsWUFDOEIsUUFBOEIs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ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3QsIENvbXBvbmVudCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtjbG9uZURlZXAsIGlzRW1wdHl9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0RhdGFUYWJsZUZpbHRlclNlcnZpY2UsIEZpbHRlck9ian0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtMaXN0UGFnZVNlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NoYXJlZC9saXN0LXBhZ2Utc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnRcbn0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NhbGxiYWNrUmVzdWx0c30gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2xpc3QtcGFnZS1mZWF0dXJlcy9saXN0LXBhZ2UtZm9ybS9saXN0LXBhZ2UtZm9ybS5jb21wb25lbnRcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3N2RG93bmxvYWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY3N2LWRvd25sb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7SWRlbnRpdHl9IGZyb20gXCIuLi8uLi9tb2RlbHMvaWRlbnRpdHlcIjtcbmltcG9ydCB7dW5zZXR9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7SVRvb2x0aXBBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xuaW1wb3J0IHtJVG9vbHRpcFBhcmFtc30gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQge09TVG9vbHRpcENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvdG9vbHRpcHMvb3MtdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7U0RLVG9vbHRpcENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvdG9vbHRpcHMvc2RrLXRvb2x0aXAuY29tcG9uZW50XCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtSZXNldEVucm9sbG1lbnRDb21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9yZXNldC1lbnJvbGxtZW50L3Jlc2V0LWVucm9sbG1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7SURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9pZGVudGl0eS9pZGVudGl0eS1mb3JtLnNlcnZpY2VcIjtcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1RhYmxlQ2VsbE5hbWVDb21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWRlbnRpdGllc1BhZ2VTZXJ2aWNlIGV4dGVuZHMgTGlzdFBhZ2VTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcHJpdmF0ZSBwYWdpbmcgPSB0aGlzLkRFRkFVTFRfUEFHSU5HO1xuICAgIHB1YmxpYyBtb2RhbFR5cGUgPSAnaWRlbnRpdGllcyc7XG5cbiAgICBvdmVycmlkZSBDU1ZfQ09MVU1OUyA9IFtcbiAgICAgICAge2xhYmVsOiAnTmFtZScsIHBhdGg6ICduYW1lJ30sXG4gICAgICAgIHtsYWJlbDogJ1JvbGVzJywgcGF0aDogJ3JvbGVBdHRyaWJ1dGVzJ30sXG4gICAgICAgIHtsYWJlbDogJ09ubGluZScsIHBhdGg6ICdoYXNBcGlTZXNzaW9uJ30sXG4gICAgICAgIHtsYWJlbDogJ0VkZ2UgUm91dGVyIENvbm5lY3RlZCcsIHBhdGg6ICdoYXNFZGdlUm91dGVyQ29ubmVjdGlvbid9LFxuICAgICAgICB7bGFiZWw6ICdPUycsIHBhdGg6ICdlbnZJbmZvLm9zJ30sXG4gICAgICAgIHtsYWJlbDogJ09TIFZlcnNpb24nLCBwYXRoOiAnZW52SW5mby5vc1ZlcnNpb24nfSxcbiAgICAgICAge2xhYmVsOiAnU0RLJywgcGF0aDogJ3Nka0luZm8udmVyc2lvbid9LFxuICAgICAgICB7bGFiZWw6ICdBcHAgVmVyc2lvbicsIHBhdGg6ICdzZGtJbmZvLmFwcFZlcnNpb24nfSxcbiAgICAgICAge2xhYmVsOiAnVHlwZScsIHBhdGg6ICd0eXBlSWQnfSxcbiAgICAgICAge2xhYmVsOiAnSXMgQWRtaW4nLCBwYXRoOiAnaXNBZG1pbid9LFxuICAgICAgICB7bGFiZWw6ICdBdXRoIFBvbGljeScsIHBhdGg6ICdhdXRoUG9saWN5Lm5hbWUnfSxcbiAgICAgICAge2xhYmVsOiAnQXV0aCBQb2xpY3kgSUQnLCBwYXRoOiAnYXV0aFBvbGljeS5pZCd9LFxuICAgICAgICB7bGFiZWw6ICdNRkEgRW5hYmxlZCcsIHBhdGg6ICdpc01mYUVuYWJsZWQnfSxcbiAgICAgICAge2xhYmVsOiAnQ3JlYXRlZCBBdCcsIHBhdGg6ICdjcmVhdGVkQXQnfSxcbiAgICAgICAge2xhYmVsOiAnSUQnLCBwYXRoOiAnaWQnfSxcbiAgICBdO1xuXG4gICAgaWRlbnRpdHlSb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgICBzZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gICAgc2VsZWN0ZWRJZGVudGl0eTogYW55ID0gbmV3IElkZW50aXR5KCk7XG4gICAgY29sdW1uRmlsdGVyczogYW55ID0ge1xuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgb3M6ICcnLFxuICAgICAgICBjcmVhdGVkQXQ6ICcnLFxuICAgIH07XG5cbiAgICBvdmVycmlkZSBtZW51SXRlbXMgPSBbXG4gICAgICAgIHtuYW1lOiAnRWRpdCcsIGFjdGlvbjogJ3VwZGF0ZSd9LFxuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIEpXVCcsIGFjdGlvbjogJ2Rvd25sb2FkLWVucm9sbG1lbnQnfSxcbiAgICAgICAge25hbWU6ICdWaWV3IFFSJywgYWN0aW9uOiAncXItY29kZSd9LFxuICAgICAgICB7bmFtZTogJ1Zpc3VhbGl6ZXInLCBhY3Rpb246ICdpZGVudGl0eS1zZXJ2aWNlLXBhdGgnfSxcbiAgICAgICAge25hbWU6ICdSZXNldCBFbnJvbGxtZW50JywgYWN0aW9uOiAncmVzZXQtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1JlaXNzdWUgRW5yb2xsbWVudCcsIGFjdGlvbjogJ3JlaXNzdWUtZW5yb2xsbWVudCd9LFxuICAgICAgICB7bmFtZTogJ1Jlc2V0IE1GQScsIGFjdGlvbjogJ3Jlc2V0LW1mYSd9LFxuICAgICAgICB7bmFtZTogJ092ZXJyaWRlJywgYWN0aW9uOiAnb3ZlcnJpZGUnfSxcbiAgICAgICAge25hbWU6ICdEZWxldGUnLCBhY3Rpb246ICdkZWxldGUnfSxcbiAgICBdO1xuXG4gICAgb3ZlcnJpZGUgdGFibGVIZWFkZXJBY3Rpb25zID0gW1xuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIEFsbCcsIGFjdGlvbjogJ2Rvd25sb2FkLWFsbCd9LFxuICAgICAgICB7bmFtZTogJ0Rvd25sb2FkIFNlbGVjdGVkJywgYWN0aW9uOiAnZG93bmxvYWQtc2VsZWN0ZWQnfSxcbiAgICBdXG5cbiAgICByZXNvdXJjZVR5cGUgPSAnaWRlbnRpdGllcyc7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZUNsYXNzLFxuICAgICAgICBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIG92ZXJyaWRlIGNzdkRvd25sb2FkU2VydmljZTogQ3N2RG93bmxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dGb3JtOiBNYXREaWFsb2csXG4gICAgICAgIEBJbmplY3QoSURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UpIHByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNldHRpbmdzLCBmaWx0ZXJTZXJ2aWNlLCBjc3ZEb3dubG9hZFNlcnZpY2UsIGV4dFNlcnZpY2UsIHJvdXRlcik7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJzQ2hhbmdlZC5zdWJzY3JpYmUoZmlsdGVycyA9PiB7XG4gICAgICAgICAgICBsZXQgaWRlbnRpdHlGaWx0ZXI7XG4gICAgICAgICAgICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZmlsdGVyLmNvbHVtbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2lkZW50aXR5Um9sZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHlGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIWlkZW50aXR5RmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUgPSAoZm9ybURhdGEpOiBQcm9taXNlPENhbGxiYWNrUmVzdWx0cz4gPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcGFzc2VkOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgaW5pdFRhYmxlQ29sdW1ucygpOiBhbnkge1xuICAgICAgICB0aGlzLmluaXRNZW51QWN0aW9ucygpO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgaWRlbnRpdHlSb2xlc0hlYWRlckNvbXBvbmVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6ICdBVFRSSUJVVEUnLFxuICAgICAgICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZUhhc2g6IGZhbHNlLFxuICAgICAgICAgICAgZ2V0Um9sZUF0dHJpYnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE5hbWVkQXR0cmlidXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTZWxlY3RlZFJvbGVBdHRyaWJ1dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2VsZWN0ZWRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUm9sZUF0dHJpYnV0ZXM6IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZElkZW50aXR5Um9sZUF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzOiAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICAgICAgICAgIC8vIG5vLW9wXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TmFtZWRBdHRyaWJ1dGVzTWFwOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuYW1lUmVuZGVyZXIgPSAocm93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYDxhIGhyZWY9XCIuL2lkZW50aXRpZXMvJHtyb3c/LmRhdGE/LmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjZWxsLW5hbWUtcmVuZGVyZXJcIiBkYXRhLWlkPVwiJHtyb3c/LmRhdGE/LmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlICR7cm93Py5kYXRhPy5oYXNBcGlTZXNzaW9ufVwiIHRpdGxlPVwiQXBpIFNlc3Npb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUgJHtyb3c/LmRhdGE/Lmhhc0VkZ2VSb3V0ZXJDb25uZWN0aW9ufVwiIHRpdGxlPVwiRWRnZSBSb3V0ZXIgQ29ubmVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+JHtyb3c/LmRhdGE/Lm5hbWV9PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPmA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvc1JlbmRlcmVyID0gKHJvdykgPT4ge1xuICAgICAgICAgICAgbGV0IG9zID0gXCJvdGhlclwiO1xuICAgICAgICAgICAgbGV0IG9zRGV0YWlscyA9IFwiXCI7XG4gICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zVmVyc2lvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJ3aW5kb3dzXCIpPj0wKSBvcyA9IFwid2luZG93c1wiO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vcyYmcm93Py5kYXRhPy5lbnZJbmZvPy5vcy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJkYXJ3aW5cIik+PTApIG9zID0gXCJhcHBsZVwiO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImxpbnV4XCIpPj0wKSBvcyA9IFwibGludXhcIjtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vcyYmcm93Py5kYXRhPy5lbnZJbmZvPy5vcy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJhbmRyb2lkXCIpPj0wKSBvcyA9IFwiYW5kcm9pZFwiO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zJiZyb3c/LmRhdGE/LmVudkluZm8/Lm9zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndpbmRvd3NcIik+PTApIG9zID0gXCJ3aW5kb3dzXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyb3c/LmRhdGE/LmVudkluZm8/Lm9zKSBvc0RldGFpbHMgKz0gXCJPUzogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5vcztcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5hcmNoKSBvc0RldGFpbHMgKz0gXCImIzEwO0FyY2g6IFwiK3Jvdz8uZGF0YT8uZW52SW5mbz8uYXJjaDtcbiAgICAgICAgICAgICAgICBpZiAocm93Py5kYXRhPy5lbnZJbmZvPy5vc1JlbGVhc2UpIG9zRGV0YWlscyArPSBcIiYjMTA7UmVsZWFzZTogXCIrcm93Py5kYXRhPy5lbnZJbmZvPy5vc1JlbGVhc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uKSBvc0RldGFpbHMgKz0gXCImIzEwO1ZlcnNpb246IFwiK3Jvdz8uZGF0YT8uZW52SW5mbz8ub3NWZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY29sIGRlc2t0b3BcIiBzdHlsZT1cIm92ZXJmbG93OiB1bnNldDtcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9zICR7b3N9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZGtSZW5kZXJlciA9IChyb3cpID0+IHtcbiAgICAgICAgICAgIGxldCBzZGsgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IHZlcnNpb24gPSBcIi1cIjtcbiAgICAgICAgICAgIGNvbnN0IHNka0luZm8gPSByb3c/LmRhdGE/LnNka0luZm87XG4gICAgICAgICAgICBpZiAoc2RrSW5mbykge1xuICAgICAgICAgICAgICAgIHZlcnNpb24gPSBcIlwiO1xuICAgICAgICAgICAgICAgIGlmIChzZGtJbmZvPy52ZXJzaW9uKSB2ZXJzaW9uICs9IHNka0luZm8/LnZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LmFwcElkKSBzZGsgKz0gc2RrSW5mbz8uYXBwSWQ7XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LmFwcFZlcnNpb24pIHNkayArPSBzZGtJbmZvPy5hcHBWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGlmIChzZGtJbmZvPy50eXBlKSBzZGsgKz0gc2RrSW5mbz8udHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoc2RrSW5mbz8udHlwZSkgc2RrICs9IFwiJiMxMDtcIitzZGtJbmZvPy5icmFuY2g7XG4gICAgICAgICAgICAgICAgaWYgKHNka0luZm8/LnJldmlzaW9uKSBzZGsgKz0gXCIgLSBcIitzZGtJbmZvPy5yZXZpc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybmA8ZGl2IGNsYXNzPVwiY29sIGRlc2t0b3BcIiBkYXRhLWlkPVwiJHtyb3c/LmRhdGE/LmlkfVwiIHN0eWxlPVwib3ZlcmZsb3c6IHVuc2V0O1wiIGRhdGEtYmFsbG9vbi1wb3M9XCJ1cFwiIGFyaWEtbGFiZWw9XCIke3Nka31cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9uZWxpbmVcIj4ke3ZlcnNpb259PC9zcGFuPlxuICAgICAgICAgICAgIDwvZGl2PmA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5jb2x1bW5GaWx0ZXJzO1xuXG4gICAgICAgIGNvbnN0IG9zUGFyYW1zID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ0NPTUJPJyxcbiAgICAgICAgICAgIGZpbHRlck9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQWxsJywgdmFsdWU6ICcnLCBpY29uOiAnZW1wdHknIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FwcGxlJywgdmFsdWU6ICdkYXJ3aW4nLCBpY29uOiAnYXBwbGUnIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1dpbmRvd3MnLCB2YWx1ZTogJ21pbmd3JywgaWNvbjogJ3dpbmRvd3MnICB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdMaW51eCcsIHZhbHVlOiAnbGludXgnLCBpY29uOiAnbGludXgnICB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBbmRyb2lkJywgdmFsdWU6ICdhbmRyb2lkJywgaWNvbjogJ2FuZHJvaWQnICB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPdGhlciAodGV4dCBzZWFyY2gpJywgdmFsdWU6ICcnLCBpY29uOiAnb3RoZXInLCB1c2VUZXh0SW5wdXQ6IHRydWUgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY29sdW1uRmlsdGVycyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc0FkbWluSGVhZGVyQ29tcG9uZW50UGFyYW1zID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ1NFTEVDVCcsXG4gICAgICAgICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uczogW1xuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdBbGwnLCB2YWx1ZTogJycgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQWRtaW5zJywgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnTm9uLUFkbWlucycsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCB0YWJsZUNvbHVtbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdOYW1lJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IHRoaXMuaGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogVGFibGVDZWxsTmFtZUNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgcGF0aFJvb3Q6IHRoaXMuYmFzZVBhdGgsIHNob3dJZGVudGl0eUljb25zOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FZGl0Rm9ybShkYXRhPy5kYXRhPy5pZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBzb3J0RGlyOiAnYXNjJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMzAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ3JvbGVBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JvbGVBdHRyaWJ1dGVzJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnUm9sZXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogaWRlbnRpdHlSb2xlc0hlYWRlckNvbXBvbmVudFBhcmFtcyxcbiAgICAgICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFRleHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkVkaXRGb3JtKGRhdGE/LmRhdGE/LmlkKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHRoaXMucm9sZXNSZW5kZXJlcixcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnb3MnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnb3MnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdPL1MnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBvc1JlbmRlcmVyLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQ6IE9TVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB0b29sdGlwRmllbGQ6ICdlbnZJbmZvJyxcbiAgICAgICAgICAgICAgICB0b29sdGlwQ29tcG9uZW50UGFyYW1zOiB7IGNvbG9yOiAnI2VjZWNlYycgfSxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ3NkaycsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdzZGsnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdTREsnLFxuICAgICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogJ3Nka0luZm8nLFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogc2RrUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgdG9vbHRpcENvbXBvbmVudDogU0RLVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxMjUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAndHlwZScsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0eXBlLm5hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdUeXBlJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2lzQWRtaW4nLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaXNBZG1pbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ0lzIEFkbWluJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IGlzQWRtaW5IZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdDcmVhdGVkIEF0JyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdGhpcy5jcmVhdGVkQXRGb3JtYXR0ZXIsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICd0b2tlbicsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd0b2tlbicsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ1Rva2VuJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6ICdjZWxsVG9rZW5Db21wb25lbnQnLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnaXNNZmFFbmFibGVkJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2lzTWZhRW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ01GQScsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuSURfQ09MVU1OX0RFRlxuICAgICAgICBdO1xuICAgICAgICBpZiAodGhpcy5leHRTZXJ2aWNlLnByb2Nlc3NUYWJsZUNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRhYmxlQ29sdW1ucyA9IHRoaXMuZXh0U2VydmljZS5wcm9jZXNzVGFibGVDb2x1bW5zKHRhYmxlQ29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYmxlQ29sdW1ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWRlbnRpdHlSb2xlQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnLCB7fSwgW10pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREYXRhKGZpbHRlcnM/OiBGaWx0ZXJPYmpbXSwgc29ydD86IGFueSwgcGFnZT86IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIHdlIGNhbiBjdXN0b21pemUgZmlsdGVycyBvciBzb3J0aW5nIGhlcmUgYmVmb3JlIG1vdmluZyBvbi4uLlxuICAgICAgICB0aGlzLnBhZ2luZy5wYWdlID0gcGFnZSB8fCB0aGlzLnBhZ2luZy5wYWdlO1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VGFibGVEYXRhKCdpZGVudGl0aWVzJywgdGhpcy5wYWdpbmcsIGZpbHRlcnMsIHNvcnQpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEocmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhKHJlc3VsdHM6IGFueSkge1xuICAgICAgICBpZiAoIWlzRW1wdHkocmVzdWx0cz8uZGF0YSkpIHtcbiAgICAgICAgICAgIC8vcHJlLXByb2Nlc3MgZGF0YSBiZWZvcmUgcmVuZGVyaW5nXG4gICAgICAgICAgICByZXN1bHRzLmRhdGEgPSB0aGlzLmFkZEFjdGlvbnNQZXJSb3cocmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRBY3Rpb25zUGVyUm93KHJlc3VsdHM6IGFueSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuZGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QgPSBbJ3VwZGF0ZScsICdvdmVycmlkZScsICdkZWxldGUnLCAnaWRlbnRpdHktc2VydmljZS1wYXRoJ107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Vucm9sbWVudFRva2VuKHJvdykpIHtcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdyZWlzc3VlLWVucm9sbG1lbnQnKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5yb2xsbWVudEV4cGlyZWQocm93KSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdkb3dubG9hZC1lbnJvbGxtZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5hY3Rpb25MaXN0LnB1c2goJ3FyLWNvZGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQXV0aGVudGljYXRvcihyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QucHVzaCgncmVzZXQtZW5yb2xsbWVudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJvdy5pc01mYUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9uTGlzdC5wdXNoKCdyZXNldC1tZmEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkTGlzdEl0ZW1FeHRlbnNpb25BY3Rpb25zKHJvdyk7XG4gICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYXNBdXRoZW50aWNhdG9yKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmF1dGhlbnRpY2F0b3JzPy5jZXJ0Py5pZCB8fCBpdGVtLmF1dGhlbnRpY2F0b3JzPy51cGRiPy5pZDtcbiAgICB9XG5cbiAgICBoYXNFbnJvbG1lbnRUb2tlbihpdGVtKSB7XG4gICAgICAgIGxldCB0b2tlbjtcbiAgICAgICAgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uand0KSB7XG4gICAgICAgICAgICB0b2tlbiA9IGl0ZW0/LmVucm9sbG1lbnQ/Lm90dD8uand0O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmVucm9sbG1lbnQ/Lm90dGNhPy5qd3QpIHtcbiAgICAgICAgICAgIHRva2VuID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5qd3QpIHtcbiAgICAgICAgICAgIHRva2VuID0gaXRlbT8uZW5yb2xsbWVudD8udXBkYj8uand0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG5cbiAgICBlbnJvbGxtZW50RXhwaXJlZChpdGVtKSB7XG4gICAgICAgIGxldCBleHBpcmF0aW9uO1xuICAgICAgICBpZiAoaXRlbT8uZW5yb2xsbWVudD8ub3R0Py5qd3QpIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24gPSBpdGVtPy5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py5vdHRjYT8uand0KSB7XG4gICAgICAgICAgICBleHBpcmF0aW9uID0gaXRlbT8uZW5yb2xsbWVudD8ub3R0Y2E/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5qd3QpIHtcbiAgICAgICAgICAgIGV4cGlyYXRpb24gPSBpdGVtPy5lbnJvbGxtZW50Py51cGRiPy5leHBpcmVzQXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbWVudChleHBpcmF0aW9uKS5pc0JlZm9yZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJZGVudGl0aWVzUm9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCgnaWRlbnRpdHktcm9sZS1hdHRyaWJ1dGVzJywge30sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRNRkEoaWRlbnRpdHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UucmVzZXRNRkEoaWRlbnRpdHkuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgYE1GQSBSZXNldGAsXG4gICAgICAgICAgICAgICAgYE1GQSB3YXMgc3VjY2Vzc2Z1bGx5IHJlc2V0IGZvciBpZGVudGl0eTogJHtpZGVudGl0eS5uYW1lfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy56aXRpU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIFJlc2V0IE1GQWAsXG4gICAgICAgICAgICAgICAgYEF0dGVtcHQgdG8gcmVzZXQgTUZBIGZhaWxlZDogJHttZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SldUKGlkZW50aXR5OiBhbnkpIHtcbiAgICAgICAgbGV0IHFyQ29kZTtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/Lmp3dDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uand0O1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/Lmp3dCkpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5qd3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHFyQ29kZTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbihpZGVudGl0eTogYW55KSB7XG4gICAgICAgIGxldCBxckNvZGU7XG4gICAgICAgIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Py50b2tlbikpIHtcbiAgICAgICAgICAgIHFyQ29kZSA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LnRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8udG9rZW4pKSB7XG4gICAgICAgICAgICBxckNvZGUgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LnRva2VuO1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LnRva2VuKSkge1xuICAgICAgICAgICAgcXJDb2RlID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LnRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxckNvZGU7XG4gICAgfVxuXG4gICAgZG93bmxvYWRKV1Qoand0LCBuYW1lKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6YXBwbGljYXRpb24veml0aS1qd3Q7Y2hhcnNldD11dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KGp3dCkpO1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBuYW1lK1wiLmp3dFwiKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29weVRva2VuKHRva2VuKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRva2VuKTtcbiAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgYFRleHQgQ29waWVkYCxcbiAgICAgICAgICAgIGBSZWdpc3RyYXRpb24gdG9rZW4gY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgfVxuXG4gICAgcmVzZXRKV1QoaWRlbnRpdHkpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0Zvcm0ub3BlbihSZXNldEVucm9sbG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Jlc2V0J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWY7XG4gICAgfVxuXG4gICAgcmVpc3N1ZUpXVChpZGVudGl0eSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nRm9ybS5vcGVuKFJlc2V0RW5yb2xsbWVudENvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eSxcbiAgICAgICAgICAgICAgICB0eXBlOiAncmVpc3N1ZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmO1xuICAgIH1cblxuICAgIGdldEVucm9sbG1lbnRFeHBpcmF0aW9uKGlkZW50aXR5OiBhbnkpIHtcbiAgICAgICAgbGV0IGV4cGlyZXNBdDtcbiAgICAgICAgaWYgKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQ/LmV4cGlyZXNBdDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0Y2E/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHRjYT8uZXhwaXJlc0F0O1xuICAgICAgICB9IGVsc2UgaWYoIWlzRW1wdHkoaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGI/LmV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIGV4cGlyZXNBdCA9IGlkZW50aXR5Py5lbnJvbGxtZW50Py51cGRiPy5leHBpcmVzQXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cGlyZXNBdDtcbiAgICB9XG5cbiAgICByZXNldEVucm9sbG1lbnQoaWRlbnRpdHk6IGFueSwgZGF0ZTogYW55KSB7XG4gICAgICAgIGxldCBpZCA9IGlkZW50aXR5Py5hdXRoZW50aWNhdG9ycz8uY2VydD8uaWQ7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Py5vdHQpKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBpZGVudGl0eT8uZW5yb2xsbWVudD8ub3R0LmlkO1xuICAgICAgICAgICAgfSBlbHNlIGlmKCFpc0VtcHR5KGlkZW50aXR5Py5lbnJvbGxtZW50Lm90dGNhKSkge1xuICAgICAgICAgICAgICAgIGlkID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/Lm90dGNhLmlkO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNFbXB0eShpZGVudGl0eT8uZW5yb2xsbWVudC51cGRiKSkge1xuICAgICAgICAgICAgICAgIGlkID0gaWRlbnRpdHk/LmVucm9sbG1lbnQ/LnVwZGIuaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVzZXRFbnJvbGxtZW50KGlkLCBkYXRlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIGBFbnJvbGxtZW50IFJlc2V0YCxcbiAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5IHJlaXNzdWVkIGVucm9sbG1lbnQgdG9rZW5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgICAgICAgICBgUmVzZXQgRmFpbGVkYCxcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHJlaXNzdWVzIGVucm9sbG1lbnQgdG9rZW5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuVXBkYXRlKGl0ZW1JZD86IGFueSkge1xuICAgICAgICB0aGlzLm1vZGFsVHlwZSA9ICdpZGVudGl0eSc7XG4gICAgICAgIHRoaXMuc2lkZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5PdmVycmlkZXNNb2RhbChpdGVtKSB7XG4gICAgICAgIHRoaXMubW9kYWxUeXBlID0gJ292ZXJyaWRlcyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZGVudGl0eSA9IGl0ZW07XG4gICAgICAgIHRoaXMuc2lkZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgfVxufVxuIl19
@@ -27,7 +27,7 @@ import * as i6 from "@angular/common";
27
27
  import * as i7 from "../../features/list-page-features/list-page-header/list-page-header.component";
28
28
  import * as i8 from "../../features/data-table/data-table.component";
29
29
  import * as i9 from "../../features/loading-indicator/loading-indicator.component";
30
- class JwtSignersPageComponent extends ListPageComponent {
30
+ export class JwtSignersPageComponent extends ListPageComponent {
31
31
  constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
32
32
  super(filterService, svc, consoleEvents, dialogForm);
33
33
  this.svc = svc;
@@ -153,9 +153,8 @@ class JwtSignersPageComponent extends ListPageComponent {
153
153
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageComponent, deps: [{ token: i1.JwtSignersPageService }, { token: i2.DataTableFilterService }, { token: i3.TabNameService }, { token: i4.ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
154
154
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: JwtSignersPageComponent, selector: "lib-jwt-signers", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-configs-container\">\n <a\n *ngIf=\"_networkJwt\"\n class=\"network-jwt-link save-button\"\n href=\"data:application/ziti-jwt;charset=utf-8,{{networkJwt}}\"\n download=\"{{networkJwtFilename}}.jwt\"\n >\n Download Network JWT\n </a>\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'ext-jwt-signers'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:5.625rem;top:1.5625rem;z-index:10001;height:var(--buttonHeightSmall);padding-left:var(--buttonImagePaddingSmall);background-position:var(--buttonImagePositionSmall);background-image:url(/assets/svgs/DownloadKey.svg);background-repeat:no-repeat;background-size:var(--buttonImageSizeSmall);color:var(--white)}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: i8.DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "rowHeight", "filterName", "filterColumn", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
155
155
  }
156
- export { JwtSignersPageComponent };
157
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageComponent, decorators: [{
158
157
  type: Component,
159
158
  args: [{ selector: 'lib-jwt-signers', template: "<div class=\"ziti-page-container ziti-configs-container\">\n <a\n *ngIf=\"_networkJwt\"\n class=\"network-jwt-link save-button\"\n href=\"data:application/ziti-jwt;charset=utf-8,{{networkJwt}}\"\n download=\"{{networkJwtFilename}}.jwt\"\n >\n Download Network JWT\n </a>\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'ext-jwt-signers'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:5.625rem;top:1.5625rem;z-index:10001;height:var(--buttonHeightSmall);padding-left:var(--buttonImagePaddingSmall);background-position:var(--buttonImagePositionSmall);background-image:url(/assets/svgs/DownloadKey.svg);background-repeat:no-repeat;background-size:var(--buttonImageSizeSmall);color:var(--white)}\n"] }]
160
159
  }], ctorParameters: function () { return [{ type: i1.JwtSignersPageService }, { type: i2.DataTableFilterService }, { type: i3.TabNameService }, { type: i4.ConsoleEventsService }, { type: i5.MatDialog }]; } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvand0LXNpZ25lcnMvand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvand0LXNpZ25lcnMvand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFJaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFHekUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7QUFHMUUsTUFLYSx1QkFBd0IsU0FBUSxpQkFBaUI7SUFPMUQsWUFDYSxHQUEwQixFQUNuQyxhQUFxQyxFQUM3QixRQUF3QixFQUNoQyxhQUFtQyxFQUNuQyxVQUFxQjtRQUVyQixLQUFLLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFONUMsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFFM0IsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFUcEMsVUFBSyxHQUFHLGFBQWEsQ0FBQTtRQUdyQixvQkFBZSxHQUFHLEtBQUssQ0FBQztJQVd4QixDQUFDO0lBRVEsUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUN2QixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQzlCLFFBQVEsTUFBTSxFQUFFO1lBQ1osS0FBSyxLQUFLO2dCQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU07WUFDVixLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUM5QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDL0MsTUFBTTtZQUNWLFFBQVE7U0FDWDtJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQywwQkFBMEI7UUFDOUMsTUFBTSxLQUFLLEdBQUcsMEJBQTBCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1FBQ2pHLE1BQU0sTUFBTSxHQUFHLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLCtGQUErRixDQUFDLENBQUMsQ0FBQyw2RkFBNkYsQ0FBQztRQUN2UCxNQUFNLE1BQU0sR0FBRywwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0RkFBNEYsQ0FBQyxDQUFDLENBQUMsd0ZBQXdGLENBQUM7UUFDL08sTUFBTSxLQUFLLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUc7WUFDVCxRQUFRLEVBQUUscUNBQXFDO1lBQy9DLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFLE1BQU07WUFDZixVQUFVLEVBQUUsTUFBTTtZQUNsQixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLGNBQWMsRUFBRSxLQUFLO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3BELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ2xCLFFBQU8sS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNsQixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFlBQVk7Z0JBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzVCLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBQ1YsS0FBSyxRQUFRO2dCQUNULE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQy9DLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsYUFBYTtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5RSxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUM3QixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUM1RCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ3hDO3lCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFO3dCQUMzRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ3hDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNILE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzdDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBRyxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRTtZQUNuRCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQzdFLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzsrR0ExSVEsdUJBQXVCO21HQUF2Qix1QkFBdUIsOEVDaENwQyx1eUNBNkJBOztTREdhLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNJLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0p3dFNpZ25lcnNQYWdlU2VydmljZX0gZnJvbSBcIi4vand0LXNpZ25lcnMtcGFnZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1RhYk5hbWVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdGFiLW5hbWUuc2VydmljZVwiO1xuaW1wb3J0IHtMaXN0UGFnZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9saXN0LXBhZ2UtY29tcG9uZW50LmNsYXNzXCI7XG5pbXBvcnQge0NvbnNvbGVFdmVudHNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29uc29sZS1ldmVudHMuc2VydmljZVwiO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtDb25maXJtQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvY29uZmlybS9jb25maXJtLmNvbXBvbmVudFwiO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWp3dC1zaWduZXJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEp3dFNpZ25lcnNQYWdlQ29tcG9uZW50IGV4dGVuZHMgTGlzdFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHRpdGxlID0gJ0pXVCBTaWduZXJzJ1xuICAgIHRhYnM6IHsgdXJsOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfVtdIDtcbiAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gICAgZm9ybURhdGFDaGFuZ2VkID0gZmFsc2U7XG4gICAgX25ldHdvcmtKd3Q6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBvdmVycmlkZSBzdmM6IEp3dFNpZ25lcnNQYWdlU2VydmljZSxcbiAgICAgICAgZmlsdGVyU2VydmljZTogRGF0YVRhYmxlRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJOYW1lczogVGFiTmFtZVNlcnZpY2UsXG4gICAgICAgIGNvbnNvbGVFdmVudHM6IENvbnNvbGVFdmVudHNTZXJ2aWNlLFxuICAgICAgICBkaWFsb2dGb3JtOiBNYXREaWFsb2dcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZmlsdGVyU2VydmljZSwgc3ZjLCBjb25zb2xlRXZlbnRzLCBkaWFsb2dGb3JtKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJOYW1lcy5nZXRUYWJzKCdhdXRoZW50aWNhdGlvbicpO1xuICAgICAgICB0aGlzLnN2Yy5yZWZyZXNoRGF0YSA9IHRoaXMucmVmcmVzaERhdGE7XG4gICAgICAgIHRoaXMuc3ZjLmdldE5ldHdvcmtKd3QoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0VtcHR5KHJlc3VsdD8uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9uZXR3b3JrSnd0ID0gcmVzdWx0LmRhdGFbMF0udG9rZW47XG4gICAgICAgIH0pO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIGhlYWRlckFjdGlvbkNsaWNrZWQoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnN2Yy5vcGVuRWRpdEZvcm0oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMucm93RGF0YS5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93LnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JBc3NvY2lhdGVkRW50aXRpZXMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uZmlybUFzc29jaWF0ZWREZWxldGUoand0U2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBqd3RTaWduZXJzV2l0aEFzc29jaWF0aW9ucy5sZW5ndGggPiAxID8gJ0pXVCBTaWduZXJzIEluIFVzZScgOiAnSldUIFNpZ25lciBJbiBVc2UnO1xuICAgICAgICBjb25zdCBsYWJlbDEgPSBqd3RTaWduZXJzV2l0aEFzc29jaWF0aW9ucy5sZW5ndGggPiAxID8gJ1RoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgSldUIHNpZ25lcnMgYXJlIHN0aWxsIGluIHVzZSBieSBhbiBhdXRoIHBvbGljeSBhbmQgY2FuIG5vdCBiZSBkZWxldGVkOicgOiAnVGhlIGZvbGxvd2luZyBleHRlcm5hbCBKV1Qgc2lnbmVyIGlzIHN0aWxsIGluIHVzZSBieSBhbiBhdXRoIHBvbGljeSBhbmQgY2FuIG5vdCBiZSBkZWxldGVkOic7XG4gICAgICAgIGNvbnN0IGxhYmVsMiA9IGp3dFNpZ25lcnNXaXRoQXNzb2NpYXRpb25zLmxlbmd0aCA+IDEgPyAnVG8gZGVsZXRlIHRoZXNlIGV4dGVybmFsIEpXVCBzaWduZXJzLCBmaXJzdCByZW1vdmUgdGhlbSBmcm9tIGFueSBhc3NvY2lhdGVkIGF1dGggcG9saWNpZXMuJyA6ICdUbyBkZWxldGUgdGhpcyBleHRlcm5hbCBKV1Qgc2lnbmVyLCBmaXJzdCByZW1vdmUgaXQgZnJvbSBhbnkgYXNzb2NpYXRlZCBhdXRoIHBvbGljaWVzLic7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gand0U2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGFwcGVuZElkOiAnRGVsZXRlRXh0SldUU2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMnLFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgbWVzc2FnZTogbGFiZWwxLFxuICAgICAgICAgICAgc3VibWVzc2FnZTogbGFiZWwyLFxuICAgICAgICAgICAgYnVsbGV0TGlzdDogbmFtZXMsXG4gICAgICAgICAgICBjb25maXJtTGFiZWw6ICdPaycsXG4gICAgICAgICAgICBpbWFnZVVybDogJy4uLy4uL2Fzc2V0cy9zdmdzL0dyb3dsX0Vycm9yLnN2ZycsXG4gICAgICAgICAgICBzaG93Q2FuY2VsTGluazogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ0Zvcm0ub3BlbihDb25maXJtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGFibGVBY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgICAgICBzd2l0Y2goZXZlbnQ/LmFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndG9nZ2xlQWxsJzpcbiAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZUl0ZW0nOlxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRvZ2dsZWQoZXZlbnQuaXRlbSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKGV2ZW50Lml0ZW0/LmlkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBbZXZlbnQuaXRlbV07XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0ZvckFzc29jaWF0ZWRFbnRpdGllcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0ZvckFzc29jaWF0ZWRFbnRpdGllcyhzZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgIHRoaXMuc3ZjLmdldFRhYmxlRGF0YSgnYXV0aC1wb2xpY2llcycsIHRoaXMuc3ZjLkRFRkFVTFRfUEFHSU5HKS50aGVuKChwb2xpY2llcykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChzaWduZXIpID0+IHtcbiAgICAgICAgICAgICAgICBwb2xpY2llcy5kYXRhLmZvckVhY2goKHBvbGljeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9saWN5LnByaW1hcnkuZXh0Snd0Py5hbGxvd2VkU2lnbmVycz8uaW5jbHVkZXMoc2lnbmVyLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMucHVzaChzaWduZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGljeS5zZWNvbmRhcnkucmVxdWlyZUV4dEp3dFNpZ25lciA9PT0gc2lnbmVyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduZXJzV2l0aEFzc29jaWF0aW9ucy5wdXNoKHNpZ25lcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHNpZ25lcnNXaXRoQXNzb2NpYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1Bc3NvY2lhdGVkRGVsZXRlKHNpZ25lcnNXaXRoQXNzb2NpYXRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEgPyAnZXh0ZXJuYWwgSldUIHNpZ25lcicgOiAnZXh0ZXJuYWwgSldUIHNpZ25lcnMnO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkJ1bGtEZWxldGUoc2VsZWN0ZWRJdGVtcywgbGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVJdGVtKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLm9wZW5CdWxrRGVsZXRlKFtpdGVtXSwgJ2p3dC1zaWduZXInKTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5zdmMuc2lkZU1vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgICBpZihldmVudD8ucmVmcmVzaCkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGF0YUNoYW5nZWQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YUNoYW5nZWQgPSBldmVudDtcbiAgICB9XG5cbiAgICBnZXQgbmV0d29ya0p3dCgpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl9uZXR3b3JrSnd0KTtcbiAgICB9XG5cbiAgICBnZXQgbmV0d29ya0p3dEZpbGVuYW1lKCkge1xuICAgICAgICBsZXQgZmlsZW5hbWUgPSAnbmV0d29yay1qd3QnO1xuICAgICAgICBpZiAodGhpcy5zdmM/LmN1cnJlbnRTZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlcikge1xuICAgICAgICAgICAgY29uc3QgdXJsT2JqZWN0ID0gbmV3IFVSTCh0aGlzLnN2Yz8uY3VycmVudFNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyKTtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsT2JqZWN0Lmhvc3RuYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlbmFtZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwieml0aS1wYWdlLWNvbnRhaW5lciB6aXRpLWNvbmZpZ3MtY29udGFpbmVyXCI+XG4gICAgPGFcbiAgICAgICAgKm5nSWY9XCJfbmV0d29ya0p3dFwiXG4gICAgICAgIGNsYXNzPVwibmV0d29yay1qd3QtbGluayBzYXZlLWJ1dHRvblwiXG4gICAgICAgIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL3ppdGktand0O2NoYXJzZXQ9dXRmLTgse3tuZXR3b3JrSnd0fX1cIlxuICAgICAgICBkb3dubG9hZD1cInt7bmV0d29ya0p3dEZpbGVuYW1lfX0uand0XCJcbiAgICA+XG4gICAgICAgIERvd25sb2FkIE5ldHdvcmsgSldUXG4gICAgPC9hPlxuICAgIDxsaWItbGlzdC1wYWdlLWhlYWRlciBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFic109XCJ0YWJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBZGRdPVwiIWl0ZW1zU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2tlZCk9XCJoZWFkZXJBY3Rpb25DbGlja2VkKCRldmVudClcIj48L2xpYi1saXN0LXBhZ2UtaGVhZGVyPlxuXG4gICAgPGxpYi1kYXRhLXRhYmxlIFt0YWJsZUlkXT1cIidleHQtand0LXNpZ25lcnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZpbml0aW9uc109XCJjb2x1bW5EZWZzXCJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJ0YWJsZUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXJ0Q291bnRdPVwic3RhcnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFtlbmRDb3VudF09XCJlbmRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbENvdW50XT1cInRvdGFsQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbZW1wdHlNc2ddPVwiJ05vIENvbmZpZ3VyYXRpb25zIGRlZmluZWQsIENsaWNrIHRoZSBwbHVzIHRvIGFkZCBhIENvbmZpZ3VyYXRpb24uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJBcHBsaWVkXT1cImZpbHRlckFwcGxpZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbWVudUl0ZW1zXT1cInN2Yy5tZW51SXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cImdyaWRSZWFkeSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9saWItZGF0YS10YWJsZT5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+XG4iXX0=
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvand0LXNpZ25lcnMvand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvand0LXNpZ25lcnMvand0LXNpZ25lcnMtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFJaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFHekUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7QUFRMUUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGlCQUFpQjtJQU8xRCxZQUNhLEdBQTBCLEVBQ25DLGFBQXFDLEVBQzdCLFFBQXdCLEVBQ2hDLGFBQW1DLEVBQ25DLFVBQXFCO1FBRXJCLEtBQUssQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQU41QyxRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQUUzQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVRwQyxVQUFLLEdBQUcsYUFBYSxDQUFBO1FBR3JCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBV3hCLENBQUM7SUFFUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMs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eEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFHLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFO1lBQ25ELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDN0UsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7U0FDakM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOytHQTFJUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw4RUNoQ3BDLHV5Q0E2QkE7OzRGREdhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtKd3RTaWduZXJzUGFnZVNlcnZpY2V9IGZyb20gXCIuL2p3dC1zaWduZXJzLXBhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtUYWJOYW1lU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RhYi1uYW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7TGlzdFBhZ2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9zaGFyZWQvbGlzdC1wYWdlLWNvbXBvbmVudC5jbGFzc1wiO1xuaW1wb3J0IHtDb25zb2xlRXZlbnRzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvbnNvbGUtZXZlbnRzLnNlcnZpY2VcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge2lzRW1wdHl9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7Q29uZmlybUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnRcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1qd3Qtc2lnbmVycycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2p3dC1zaWduZXJzLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2p3dC1zaWduZXJzLXBhZ2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBKd3RTaWduZXJzUGFnZUNvbXBvbmVudCBleHRlbmRzIExpc3RQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICB0aXRsZSA9ICdKV1QgU2lnbmVycydcbiAgICB0YWJzOiB7IHVybDogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH1bXSA7XG4gICAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAgIGZvcm1EYXRhQ2hhbmdlZCA9IGZhbHNlO1xuICAgIF9uZXR3b3JrSnd0OiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcnJpZGUgc3ZjOiBKd3RTaWduZXJzUGFnZVNlcnZpY2UsXG4gICAgICAgIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGFiTmFtZXM6IFRhYk5hbWVTZXJ2aWNlLFxuICAgICAgICBjb25zb2xlRXZlbnRzOiBDb25zb2xlRXZlbnRzU2VydmljZSxcbiAgICAgICAgZGlhbG9nRm9ybTogTWF0RGlhbG9nXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZpbHRlclNlcnZpY2UsIHN2YywgY29uc29sZUV2ZW50cywgZGlhbG9nRm9ybSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFiTmFtZXMuZ2V0VGFicygnYXV0aGVudGljYXRpb24nKTtcbiAgICAgICAgdGhpcy5zdmMucmVmcmVzaERhdGEgPSB0aGlzLnJlZnJlc2hEYXRhO1xuICAgICAgICB0aGlzLnN2Yy5nZXROZXR3b3JrSnd0KCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNFbXB0eShyZXN1bHQ/LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fbmV0d29ya0p3dCA9IHJlc3VsdC5kYXRhWzBdLnRva2VuO1xuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJBY3Rpb25DbGlja2VkKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnJvd0RhdGEuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdy5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yQXNzb2NpYXRlZEVudGl0aWVzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbmZpcm1Bc3NvY2lhdGVkRGVsZXRlKGp3dFNpZ25lcnNXaXRoQXNzb2NpYXRpb25zKSB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gand0U2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMubGVuZ3RoID4gMSA/ICdKV1QgU2lnbmVycyBJbiBVc2UnIDogJ0pXVCBTaWduZXIgSW4gVXNlJztcbiAgICAgICAgY29uc3QgbGFiZWwxID0gand0U2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMubGVuZ3RoID4gMSA/ICdUaGUgZm9sbG93aW5nIGV4dGVybmFsIEpXVCBzaWduZXJzIGFyZSBzdGlsbCBpbiB1c2UgYnkgYW4gYXV0aCBwb2xpY3kgYW5kIGNhbiBub3QgYmUgZGVsZXRlZDonIDogJ1RoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgSldUIHNpZ25lciBpcyBzdGlsbCBpbiB1c2UgYnkgYW4gYXV0aCBwb2xpY3kgYW5kIGNhbiBub3QgYmUgZGVsZXRlZDonO1xuICAgICAgICBjb25zdCBsYWJlbDIgPSBqd3RTaWduZXJzV2l0aEFzc29jaWF0aW9ucy5sZW5ndGggPiAxID8gJ1RvIGRlbGV0ZSB0aGVzZSBleHRlcm5hbCBKV1Qgc2lnbmVycywgZmlyc3QgcmVtb3ZlIHRoZW0gZnJvbSBhbnkgYXNzb2NpYXRlZCBhdXRoIHBvbGljaWVzLicgOiAnVG8gZGVsZXRlIHRoaXMgZXh0ZXJuYWwgSldUIHNpZ25lciwgZmlyc3QgcmVtb3ZlIGl0IGZyb20gYW55IGFzc29jaWF0ZWQgYXV0aCBwb2xpY2llcy4nO1xuICAgICAgICBjb25zdCBuYW1lcyA9IGp3dFNpZ25lcnNXaXRoQXNzb2NpYXRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBhcHBlbmRJZDogJ0RlbGV0ZUV4dEpXVFNpZ25lcnNXaXRoQXNzb2NpYXRpb25zJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGxhYmVsMSxcbiAgICAgICAgICAgIHN1Ym1lc3NhZ2U6IGxhYmVsMixcbiAgICAgICAgICAgIGJ1bGxldExpc3Q6IG5hbWVzLFxuICAgICAgICAgICAgY29uZmlybUxhYmVsOiAnT2snLFxuICAgICAgICAgICAgaW1hZ2VVcmw6ICcuLi8uLi9hc3NldHMvc3Zncy9Hcm93bF9FcnJvci5zdmcnLFxuICAgICAgICAgICAgc2hvd0NhbmNlbExpbms6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dGb3JtLm9wZW4oQ29uZmlybUNvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRhYmxlQWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50Py5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZUFsbCc6XG4gICAgICAgICAgICBjYXNlICd0b2dnbGVJdGVtJzpcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Ub2dnbGVkKGV2ZW50Lml0ZW0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybShldmVudC5pdGVtPy5pZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gW2V2ZW50Lml0ZW1dO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JBc3NvY2lhdGVkRW50aXRpZXMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tGb3JBc3NvY2lhdGVkRW50aXRpZXMoc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICB0aGlzLnN2Yy5nZXRUYWJsZURhdGEoJ2F1dGgtcG9saWNpZXMnLCB0aGlzLnN2Yy5ERUZBVUxUX1BBR0lORykudGhlbigocG9saWNpZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25lcnNXaXRoQXNzb2NpYXRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoc2lnbmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgcG9saWNpZXMuZGF0YS5mb3JFYWNoKChwb2xpY3kpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvbGljeS5wcmltYXJ5LmV4dEp3dD8uYWxsb3dlZFNpZ25lcnM/LmluY2x1ZGVzKHNpZ25lci5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcnNXaXRoQXNzb2NpYXRpb25zLnB1c2goc2lnbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwb2xpY3kuc2Vjb25kYXJ5LnJlcXVpcmVFeHRKd3RTaWduZXIgPT09IHNpZ25lci5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVyc1dpdGhBc3NvY2lhdGlvbnMucHVzaChzaWduZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzaWduZXJzV2l0aEFzc29jaWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtQXNzb2NpYXRlZERlbGV0ZShzaWduZXJzV2l0aEFzc29jaWF0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxID8gJ2V4dGVybmFsIEpXVCBzaWduZXInIDogJ2V4dGVybmFsIEpXVCBzaWduZXJzJztcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5CdWxrRGVsZXRlKHNlbGVjdGVkSXRlbXMsIGxhYmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlSXRlbShpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vcGVuQnVsa0RlbGV0ZShbaXRlbV0sICdqd3Qtc2lnbmVyJyk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuc3ZjLnNpZGVNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYoZXZlbnQ/LnJlZnJlc2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhdGFDaGFuZ2VkKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgZ2V0IG5ldHdvcmtKd3QoKSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fbmV0d29ya0p3dCk7XG4gICAgfVxuXG4gICAgZ2V0IG5ldHdvcmtKd3RGaWxlbmFtZSgpIHtcbiAgICAgICAgbGV0IGZpbGVuYW1lID0gJ25ldHdvcmstand0JztcbiAgICAgICAgaWYgKHRoaXMuc3ZjPy5jdXJyZW50U2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybE9iamVjdCA9IG5ldyBVUkwodGhpcy5zdmM/LmN1cnJlbnRTZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlcik7XG4gICAgICAgICAgICBmaWxlbmFtZSA9IHVybE9iamVjdC5ob3N0bmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZW5hbWU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInppdGktcGFnZS1jb250YWluZXIgeml0aS1jb25maWdzLWNvbnRhaW5lclwiPlxuICAgIDxhXG4gICAgICAgICpuZ0lmPVwiX25ldHdvcmtKd3RcIlxuICAgICAgICBjbGFzcz1cIm5ldHdvcmstand0LWxpbmsgc2F2ZS1idXR0b25cIlxuICAgICAgICBocmVmPVwiZGF0YTphcHBsaWNhdGlvbi96aXRpLWp3dDtjaGFyc2V0PXV0Zi04LHt7bmV0d29ya0p3dH19XCJcbiAgICAgICAgZG93bmxvYWQ9XCJ7e25ldHdvcmtKd3RGaWxlbmFtZX19Lmp3dFwiXG4gICAgPlxuICAgICAgICBEb3dubG9hZCBOZXR3b3JrIEpXVFxuICAgIDwvYT5cbiAgICA8bGliLWxpc3QtcGFnZS1oZWFkZXIgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYnNdPVwidGFic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWRkXT1cIiFpdGVtc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrZWQpPVwiaGVhZGVyQWN0aW9uQ2xpY2tlZCgkZXZlbnQpXCI+PC9saWItbGlzdC1wYWdlLWhlYWRlcj5cblxuICAgIDxsaWItZGF0YS10YWJsZSBbdGFibGVJZF09XCInZXh0LWp3dC1zaWduZXJzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmaW5pdGlvbnNdPVwiY29sdW1uRGVmc1wiXG4gICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwidGFibGVBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGFydENvdW50XT1cInN0YXJ0Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbZW5kQ291bnRdPVwiZW5kQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbdG90YWxDb3VudF09XCJ0b3RhbENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2VtcHR5TXNnXT1cIidObyBDb25maWd1cmF0aW9ucyBkZWZpbmVkLCBDbGljayB0aGUgcGx1cyB0byBhZGQgYSBDb25maWd1cmF0aW9uLidcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQXBwbGllZF09XCJmaWx0ZXJBcHBsaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJzdmMubWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJncmlkUmVhZHkoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbGliLWRhdGEtdGFibGU+XG48L2Rpdj5cbjxsaWItbG9hZGluZy1pbmRpY2F0b3IgKm5nSWY9XCJpc0xvYWRpbmdcIiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvbGliLWxvYWRpbmctaW5kaWNhdG9yPlxuIl19
@@ -27,7 +27,7 @@ import * as i2 from "../../features/data-table/data-table-filter.service";
27
27
  import * as i3 from "../../services/csv-download.service";
28
28
  import * as i4 from "@angular/router";
29
29
  import * as i5 from "../../services/settings.service";
30
- class JwtSignersPageService extends ListPageServiceClass {
30
+ export class JwtSignersPageService extends ListPageServiceClass {
31
31
  constructor(schemaSvc, settings, filterService, csvDownloadService, extService, router) {
32
32
  super(settings, filterService, csvDownloadService, extService, router);
33
33
  this.schemaSvc = schemaSvc;
@@ -162,7 +162,6 @@ class JwtSignersPageService extends ListPageServiceClass {
162
162
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageService, deps: [{ token: i1.SchemaService }, { token: SETTINGS_SERVICE }, { token: i2.DataTableFilterService }, { token: i3.CsvDownloadService }, { token: SHAREDZ_EXTENSION }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
163
163
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageService, providedIn: 'root' }); }
164
164
  }
165
- export { JwtSignersPageService };
166
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageService, decorators: [{
167
166
  type: Injectable,
168
167
  args: [{
@@ -175,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
175
174
  type: Inject,
176
175
  args: [SHAREDZ_EXTENSION]
177
176
  }] }, { type: i4.Router }]; } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXNpZ25lcnMtcGFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL3BhZ2VzL2p3dC1zaWduZXJzL2p3dC1zaWduZXJzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQVUsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFDSCwyQkFBMkIsRUFDOUIsTUFBTSw4RkFBOEYsQ0FBQztBQUd0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFbEYsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQzs7Ozs7OztBQUdqSCxNQUdhLHFCQUFzQixTQUFRLG9CQUFvQjtJQWEzRCxZQUNZLFNBQXdCLEVBQ04sUUFBeUIsRUFDbkQsYUFBcUMsRUFDckMsa0JBQXNDLEVBQ1gsVUFBNEIsRUFDcEMsTUFBYztRQUVqQyxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFQL0QsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUtiLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqQjdCLFdBQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsc0JBQXNCLENBQUM7UUFD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QUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVU7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDOUIsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztTQUN2QztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7K0dBbEpRLHFCQUFxQiwrQ0FlbEIsZ0JBQWdCLHFGQUdoQixpQkFBaUI7bUhBbEJwQixxQkFBcUIsY0FGbEIsTUFBTTs7U0FFVCxxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWdCUSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBR3ZCLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLCBGaWx0ZXJPYmp9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCBfLCB7aXNFbXB0eSwgdW5zZXR9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHtMaXN0UGFnZVNlcnZpY2VDbGFzc30gZnJvbSBcIi4uLy4uL3NoYXJlZC9saXN0LXBhZ2Utc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtcbiAgICBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnRcbn0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NhbGxiYWNrUmVzdWx0c30gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2xpc3QtcGFnZS1mZWF0dXJlcy9saXN0LXBhZ2UtZm9ybS9saXN0LXBhZ2UtZm9ybS5jb21wb25lbnRcIjtcbmltcG9ydCB7U2NoZW1hU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjaGVtYS5zZXJ2aWNlXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3N2RG93bmxvYWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY3N2LWRvd25sb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZSwgU0hBUkVEWl9FWFRFTlNJT059IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge1NlcnZpY2V9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmljZVwiO1xuaW1wb3J0IHtUYWJsZUNlbGxOYW1lQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9jZWxscy90YWJsZS1jZWxsLW5hbWUvdGFibGUtY2VsbC1uYW1lLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKd3RTaWduZXJzUGFnZVNlcnZpY2UgZXh0ZW5kcyBMaXN0UGFnZVNlcnZpY2VDbGFzcyB7XG5cbiAgICBwcml2YXRlIHBhZ2luZyA9IHRoaXMuREVGQVVMVF9QQUdJTkc7XG5cbiAgICByZXNvdXJjZVR5cGUgPSAnZXh0ZXJuYWwtand0LXNpZ25lcnMnO1xuICAgIHNlbGVjdGVkQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBtb2RhbFR5cGUgPSAnJztcblxuICAgIG92ZXJyaWRlIG1lbnVJdGVtcyA9IFtcbiAgICAgICAge25hbWU6ICdFZGl0JywgYWN0aW9uOiAndXBkYXRlJ30sXG4gICAgICAgIHtuYW1lOiAnRGVsZXRlJywgYWN0aW9uOiAnZGVsZXRlJ30sXG4gICAgXVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2NoZW1hU3ZjOiBTY2hlbWFTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgIGZpbHRlclNlcnZpY2U6IERhdGFUYWJsZUZpbHRlclNlcnZpY2UsXG4gICAgICAgIGNzdkRvd25sb2FkU2VydmljZTogQ3N2RG93bmxvYWRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoc2V0dGluZ3MsIGZpbHRlclNlcnZpY2UsIGNzdkRvd25sb2FkU2VydmljZSwgZXh0U2VydmljZSwgcm91dGVyKTtcbiAgICB9XG5cbiAgICBpbml0VGFibGVDb2x1bW5zKCk6IGFueSB7XG5cbiAgICAgICAgY29uc3QgZW5hYmxlZEhlYWRlckNvbXBvbmVudFBhcmFtcyA9IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6ICdTRUxFQ1QnLFxuICAgICAgICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGZpbHRlck9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnQWxsJywgdmFsdWU6ICcnIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0VuYWJsZWQnLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdEaXNhYmxlZCcsIHZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjcmVhdGVkQXRIZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnREFURVRJTUUnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnTmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB0aGlzLmhlYWRlckNvbXBvbmVudFBhcmFtcyxcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IFRhYmxlQ2VsbE5hbWVDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7IHBhdGhSb290OiB0aGlzLmJhc2VQYXRoIH0sXG4gICAgICAgICAgICAgICAgb25DZWxsQ2xpY2tlZDogKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5FZGl0Rm9ybShkYXRhPy5kYXRhPy5pZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2lzc3VlcicsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdpc3N1ZXInLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdJc3N1ZXInLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnYXVkaWVuY2UnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnYXVkaWVuY2UnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdBdWRpZW5jZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB0aGlzLmhlYWRlckNvbXBvbmVudFBhcmFtcyxcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdFbmFibGVkJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IGVuYWJsZWRIZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ0NyZWF0ZWQgQXQnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogY3JlYXRlZEF0SGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiB0aGlzLmNyZWF0ZWRBdEZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnbmYtY2VsbC12ZXJ0LWFsaWduIHRDb2wnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuSURfQ09MVU1OX0RFRlxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGdldERhdGEoZmlsdGVycz86IEZpbHRlck9ialtdLCBzb3J0PzogYW55KSB7XG4gICAgICAgIC8vIHdlIGNhbiBjdXN0b21pemUgZmlsdGVycyBvciBzb3J0aW5nIGhlcmUgYmVmb3JlIG1vdmluZyBvbi4uLlxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VGFibGVEYXRhKHRoaXMucmVzb3VyY2VUeXBlLCB0aGlzLnBhZ2luZywgZmlsdGVycywgc29ydClcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YShyZXN1bHRzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhbGlkYXRlID0gKGZvcm1EYXRhKTogUHJvbWlzZTxDYWxsYmFja1Jlc3VsdHM+ID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHBhc3NlZDogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0RhdGEocmVzdWx0czogYW55KSB7XG4gICAgICAgIGlmICghaXNFbXB0eShyZXN1bHRzPy5kYXRhKSkge1xuICAgICAgICAgICAgLy9wcmUtcHJvY2VzcyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgICAgICAgICAgIHJlc3VsdHMuZGF0YSA9IHRoaXMuYWRkQWN0aW9uc1BlclJvdyhyZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEFjdGlvbnNQZXJSb3cocmVzdWx0czogYW55KTogYW55W10ge1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5kYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cuYWN0aW9uTGlzdCA9IFsndXBkYXRlJywgJ2RlbGV0ZSddO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5VcGRhdGUoaXRlbT86IGFueSkge1xuICAgICAgICB0aGlzLm1vZGFsVHlwZSA9ICdqd3Qtc2lnbmVyJztcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbmZpZy5iYWRnZXMgPSBbXTtcbiAgICAgICAgICAgIHVuc2V0KHRoaXMuc2VsZWN0ZWRDb25maWcsICdfbGlua3MnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBuZXcgU2VydmljZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2lkZU1vZGFsT3BlbiA9IHRydWU7XG4gICAgfVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LXNpZ25lcnMtcGFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL3BhZ2VzL2p3dC1zaWduZXJzL2p3dC1zaWduZXJzLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQVUsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFDSCwyQkFBMkIsRUFDOUIsTUFBTSw4RkFBOEYsQ0FBQztBQUd0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7QUFFbEYsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQzs7Ozs7OztBQU1qSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBYTNELFlBQ1ksU0FBd0IsRUFDTixRQUF5QixFQUNuRCxhQUFxQyxFQUNyQyxrQkFBc0MsRUFDWCxVQUE0QixFQUNwQyxNQUFjO1FBRWpDLEtBQUssQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQVAvRCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBS2IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWpCN0IsV0FBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFckMsaUJBQVksR0FBRyxzQkFBc0IsQ0FB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QUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBVTtRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzsrR0FsSlEscUJBQXFCLCtDQWVsQixnQkFBZ0IscUZBR2hCLGlCQUFpQjttSEFsQnBCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFnQlEsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUd2QixNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZSwgRmlsdGVyT2JqfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgXywge2lzRW1wdHksIHVuc2V0fSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7TGlzdFBhZ2VTZXJ2aWNlQ2xhc3N9IGZyb20gXCIuLi8uLi9zaGFyZWQvbGlzdC1wYWdlLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7XG4gICAgVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50XG59IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NvbHVtbi1oZWFkZXJzL3RhYmxlLWNvbHVtbi1kZWZhdWx0L3RhYmxlLWNvbHVtbi1kZWZhdWx0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDYWxsYmFja1Jlc3VsdHN9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9saXN0LXBhZ2UtZmVhdHVyZXMvbGlzdC1wYWdlLWZvcm0vbGlzdC1wYWdlLWZvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQge1NjaGVtYVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2hlbWEuc2VydmljZVwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge0NzdkRvd25sb2FkU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2Nzdi1kb3dubG9hZC5zZXJ2aWNlXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2UsIFNIQVJFRFpfRVhURU5TSU9OfSBmcm9tIFwiLi4vLi4vZmVhdHVyZXMvZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlcnZpY2VcIjtcbmltcG9ydCB7VGFibGVDZWxsTmFtZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnRcIjtcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSnd0U2lnbmVyc1BhZ2VTZXJ2aWNlIGV4dGVuZHMgTGlzdFBhZ2VTZXJ2aWNlQ2xhc3Mge1xuXG4gICAgcHJpdmF0ZSBwYWdpbmcgPSB0aGlzLkRFRkFVTFRfUEFHSU5HO1xuXG4gICAgcmVzb3VyY2VUeXBlID0gJ2V4dGVybmFsLWp3dC1zaWduZXJzJztcbiAgICBzZWxlY3RlZENvbmZpZzogYW55ID0ge307XG4gICAgbW9kYWxUeXBlID0gJyc7XG5cbiAgICBvdmVycmlkZSBtZW51SXRlbXMgPSBbXG4gICAgICAgIHtuYW1lOiAnRWRpdCcsIGFjdGlvbjogJ3VwZGF0ZSd9LFxuICAgICAgICB7bmFtZTogJ0RlbGV0ZScsIGFjdGlvbjogJ2RlbGV0ZSd9LFxuICAgIF1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNjaGVtYVN2YzogU2NoZW1hU2VydmljZSxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBzZXR0aW5nczogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBjc3ZEb3dubG9hZFNlcnZpY2U6IENzdkRvd25sb2FkU2VydmljZSxcbiAgICAgICAgQEluamVjdChTSEFSRURaX0VYVEVOU0lPTikgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNldHRpbmdzLCBmaWx0ZXJTZXJ2aWNlLCBjc3ZEb3dubG9hZFNlcnZpY2UsIGV4dFNlcnZpY2UsIHJvdXRlcik7XG4gICAgfVxuXG4gICAgaW5pdFRhYmxlQ29sdW1ucygpOiBhbnkge1xuXG4gICAgICAgIGNvbnN0IGVuYWJsZWRIZWFkZXJDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiAnU0VMRUNUJyxcbiAgICAgICAgICAgIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gICAgICAgICAgICBmaWx0ZXJPcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FsbCcsIHZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdFbmFibGVkJywgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnRGlzYWJsZWQnLCB2YWx1ZTogZmFsc2UgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY3JlYXRlZEF0SGVhZGVyQ29tcG9uZW50UGFyYW1zID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ0RBVEVUSU1FJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJ05hbWUnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBUYWJsZUNlbGxOYW1lQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBwYXRoUm9vdDogdGhpcy5iYXNlUGF0aCB9LFxuICAgICAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlbGVjdGVkVGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuRWRpdEZvcm0oZGF0YT8uZGF0YT8uaWQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sSWQ6ICdpc3N1ZXInLFxuICAgICAgICAgICAgICAgIGZpZWxkOiAnaXNzdWVyJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnSXNzdWVyJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IHRoaXMuaGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2F1ZGllbmNlJyxcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2F1ZGllbmNlJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnQXVkaWVuY2UnLFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudDogVGFibGVDb2x1bW5EZWZhdWx0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczogdGhpcy5oZWFkZXJDb21wb25lbnRQYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbElkOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdlbmFibGVkJyxcbiAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnRW5hYmxlZCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiBlbmFibGVkSGVhZGVyQ29tcG9uZW50UGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICduZi1jZWxsLXZlcnQtYWxpZ24gdENvbCcsXG4gICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xJZDogJ2NyZWF0ZWRBdCcsXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICdDcmVhdGVkIEF0JyxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IGNyZWF0ZWRBdEhlYWRlckNvbXBvbmVudFBhcmFtcyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdGhpcy5jcmVhdGVkQXRGb3JtYXR0ZXIsXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ25mLWNlbGwtdmVydC1hbGlnbiB0Q29sJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLklEX0NPTFVNTl9ERUZcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBnZXREYXRhKGZpbHRlcnM/OiBGaWx0ZXJPYmpbXSwgc29ydD86IGFueSkge1xuICAgICAgICAvLyB3ZSBjYW4gY3VzdG9taXplIGZpbHRlcnMgb3Igc29ydGluZyBoZXJlIGJlZm9yZSBtb3Zpbmcgb24uLi5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFRhYmxlRGF0YSh0aGlzLnJlc291cmNlVHlwZSwgdGhpcy5wYWdpbmcsIGZpbHRlcnMsIHNvcnQpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RhdGEocmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSA9IChmb3JtRGF0YSk6IFByb21pc2U8Q2FsbGJhY2tSZXN1bHRzPiA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBwYXNzZWQ6IHRydWV9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhKHJlc3VsdHM6IGFueSkge1xuICAgICAgICBpZiAoIWlzRW1wdHkocmVzdWx0cz8uZGF0YSkpIHtcbiAgICAgICAgICAgIC8vcHJlLXByb2Nlc3MgZGF0YSBiZWZvcmUgcmVuZGVyaW5nXG4gICAgICAgICAgICByZXN1bHRzLmRhdGEgPSB0aGlzLmFkZEFjdGlvbnNQZXJSb3cocmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRBY3Rpb25zUGVyUm93KHJlc3VsdHM6IGFueSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuZGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgcm93LmFjdGlvbkxpc3QgPSBbJ3VwZGF0ZScsICdkZWxldGUnXTtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuVXBkYXRlKGl0ZW0/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5tb2RhbFR5cGUgPSAnand0LXNpZ25lcic7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWcuYmFkZ2VzID0gW107XG4gICAgICAgICAgICB1bnNldCh0aGlzLnNlbGVjdGVkQ29uZmlnLCAnX2xpbmtzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnID0gbmV3IFNlcnZpY2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNpZGVNb2RhbE9wZW4gPSB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -25,7 +25,7 @@ import * as i6 from "@angular/common";
25
25
  import * as i7 from "../../features/list-page-features/list-page-header/list-page-header.component";
26
26
  import * as i8 from "../../features/data-table/data-table.component";
27
27
  import * as i9 from "../../features/loading-indicator/loading-indicator.component";
28
- class PostureChecksPageComponent extends ListPageComponent {
28
+ export class PostureChecksPageComponent extends ListPageComponent {
29
29
  constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
30
30
  super(filterService, svc, consoleEvents, dialogForm);
31
31
  this.svc = svc;
@@ -34,7 +34,7 @@ class PostureChecksPageComponent extends ListPageComponent {
34
34
  this.formDataChanged = false;
35
35
  }
36
36
  ngOnInit() {
37
- this.tabs = this.tabNames.getTabs('identities');
37
+ this.tabs = this.tabNames.getTabs('posture-checks');
38
38
  this.svc.refreshData = this.refreshData;
39
39
  super.ngOnInit();
40
40
  }
@@ -96,9 +96,8 @@ class PostureChecksPageComponent extends ListPageComponent {
96
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PostureChecksPageComponent, deps: [{ token: i1.PostureChecksPageService }, { token: i2.DataTableFilterService }, { token: i3.TabNameService }, { token: i4.ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
97
97
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PostureChecksPageComponent, selector: "lib-configurations", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-posture-checks-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'posture-checks'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Posture Checks defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: i8.DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "rowHeight", "filterName", "filterColumn", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
98
98
  }
99
- export { PostureChecksPageComponent };
100
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PostureChecksPageComponent, decorators: [{
101
100
  type: Component,
102
101
  args: [{ selector: 'lib-configurations', template: "<div class=\"ziti-page-container ziti-posture-checks-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'posture-checks'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Posture Checks defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>" }]
103
102
  }], ctorParameters: function () { return [{ type: i1.PostureChecksPageService }, { type: i2.DataTableFilterService }, { type: i3.TabNameService }, { type: i4.ConsoleEventsService }, { type: i5.MatDialog }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvcG9zdHVyZS1jaGVja3MvcG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvcG9zdHVyZS1jaGVja3MvcG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFJaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBTXpFLE1BS2EsMEJBQTJCLFNBQVEsaUJBQWlCO0lBTTdELFlBQ2EsR0FBNkIsRUFDdEMsYUFBcUMsRUFDN0IsUUFBd0IsRUFDaEMsYUFBbUMsRUFDbkMsVUFBcUI7UUFFckIsS0FBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBTjVDLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBRTlCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBUnBDLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQTtRQUd4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztJQVV4QixDQUFDO0lBRVEsUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWM7UUFDOUIsUUFBUSxNQUFNLEVBQUU7WUFDWixLQUFLLEtBQUs7Z0JBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNWLEtBQUssTUFBTTtnQkFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBQ1YsS0FBSyxRQUFRO2dCQUNULE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzlDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7Z0JBQzVFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxNQUFNO1lBQ1YsUUFBUTtTQUNYO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ2xCLFFBQU8sS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNsQixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFlBQVk7Z0JBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzVCLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBQ1YsS0FBSyxRQUFRO2dCQUNULElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUMzQixNQUFNO1lBQ1YsS0FBSyxjQUFjO2dCQUNmLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBQ1YsS0FBSyxtQkFBbUI7Z0JBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWO2dCQUNJLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFHLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDOytHQWhGUSwwQkFBMEI7bUdBQTFCLDBCQUEwQixpRkMvQnZDLDJpQ0FvQnlGOztTRFc1RSwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDSSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtQb3N0dXJlQ2hlY2tzUGFnZVNlcnZpY2V9IGZyb20gXCIuL3Bvc3R1cmUtY2hlY2tzLXBhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtUYWJOYW1lU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RhYi1uYW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7TGlzdFBhZ2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9zaGFyZWQvbGlzdC1wYWdlLWNvbXBvbmVudC5jbGFzc1wiO1xuaW1wb3J0IHtDb25zb2xlRXZlbnRzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvbnNvbGUtZXZlbnRzLnNlcnZpY2VcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0NvbmZpcm1Db21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50XCI7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItY29uZmlndXJhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3N0dXJlLWNoZWNrcy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wb3N0dXJlLWNoZWNrcy1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUG9zdHVyZUNoZWNrc1BhZ2VDb21wb25lbnQgZXh0ZW5kcyBMaXN0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgdGl0bGUgPSAnUG9zdHVyZSBDaGVja3MnXG4gICAgdGFiczogeyB1cmw6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9W10gO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgICBmb3JtRGF0YUNoYW5nZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBvdmVycmlkZSBzdmM6IFBvc3R1cmVDaGVja3NQYWdlU2VydmljZSxcbiAgICAgICAgZmlsdGVyU2VydmljZTogRGF0YVRhYmxlRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJOYW1lczogVGFiTmFtZVNlcnZpY2UsXG4gICAgICAgIGNvbnNvbGVFdmVudHM6IENvbnNvbGVFdmVudHNTZXJ2aWNlLFxuICAgICAgICBkaWFsb2dGb3JtOiBNYXREaWFsb2dcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZmlsdGVyU2VydmljZSwgc3ZjLCBjb25zb2xlRXZlbnRzLCBkaWFsb2dGb3JtKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJOYW1lcy5nZXRUYWJzKCdpZGVudGl0aWVzJyk7XG4gICAgICAgIHRoaXMuc3ZjLnJlZnJlc2hEYXRhID0gdGhpcy5yZWZyZXNoRGF0YTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJBY3Rpb25DbGlja2VkKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnJvd0RhdGEuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdy5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSA/ICdwb3N0dXJlIGNoZWNrcycgOiAncG9zdHVyZSBjaGVjayc7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQnVsa0RlbGV0ZShzZWxlY3RlZEl0ZW1zLCBsYWJlbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFibGVBY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgICAgICBzd2l0Y2goZXZlbnQ/LmFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndG9nZ2xlQWxsJzpcbiAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZUl0ZW0nOlxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRvZ2dsZWQoZXZlbnQuaXRlbSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKGV2ZW50Lml0ZW0/LmlkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMub3BlbkVkaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlSXRlbShldmVudC5pdGVtKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZG93bmxvYWQtYWxsJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkQWxsSXRlbXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Rvd25sb2FkLXNlbGVjdGVkJzpcbiAgICAgICAgICAgICAgICB0aGlzLnN2Yy5kb3dubG9hZEl0ZW1zKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVsZXRlSXRlbShpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vcGVuQnVsa0RlbGV0ZShbaXRlbV0sICdwb3N0dXJlIGNoZWNrJyk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuc3ZjLnNpZGVNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYoZXZlbnQ/LnJlZnJlc2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRhdGFDaGFuZ2VkKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkID0gZXZlbnQ7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInppdGktcGFnZS1jb250YWluZXIgeml0aS1wb3N0dXJlLWNoZWNrcy1jb250YWluZXJcIj5cbiAgICA8bGliLWxpc3QtcGFnZS1oZWFkZXIgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYnNdPVwidGFic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWRkXT1cIiFpdGVtc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrZWQpPVwiaGVhZGVyQWN0aW9uQ2xpY2tlZCgkZXZlbnQpXCI+PC9saWItbGlzdC1wYWdlLWhlYWRlcj5cblxuICAgIDxsaWItZGF0YS10YWJsZSBbdGFibGVJZF09XCIncG9zdHVyZS1jaGVja3MnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZpbml0aW9uc109XCJjb2x1bW5EZWZzXCJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJ0YWJsZUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXJ0Q291bnRdPVwic3RhcnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFtlbmRDb3VudF09XCJlbmRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbENvdW50XT1cInRvdGFsQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbZW1wdHlNc2ddPVwiJ05vIFBvc3R1cmUgQ2hlY2tzIGRlZmluZWQsIENsaWNrIHRoZSBwbHVzIHRvIGFkZCBhIENvbmZpZ3VyYXRpb24uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJBcHBsaWVkXT1cImZpbHRlckFwcGxpZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbWVudUl0ZW1zXT1cInN2Yy5tZW51SXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cImdyaWRSZWFkeSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9saWItZGF0YS10YWJsZT5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvcG9zdHVyZS1jaGVja3MvcG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvcGFnZXMvcG9zdHVyZS1jaGVja3MvcG9zdHVyZS1jaGVja3MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFJaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBV3pFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFNN0QsWUFDYSxHQUE2QixFQUN0QyxhQUFxQyxFQUM3QixRQUF3QixFQUNoQyxhQUFtQyxFQUNuQyxVQUFxQjtRQUVyQixLQUFLLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFONUMsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFFOUIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFScEMsVUFBSyxHQUFHLGdCQUFnQixDQUFBO1FBR3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBVXhCLENBQUM7SUFFUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDeEMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQzlCLFFBQVEsTUFBTSxFQUFFO1lBQ1osS0FBSyxLQUFLO2dCQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU07WUFDVixLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUM5QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO2dCQUM1RSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDMUMsTUFBTTtZQUNWLFFBQVE7U0FDWDtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNsQixRQUFPLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDbEIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxZQUFZO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUM1QixNQUFNO1lBQ1YsS0FBSyxRQUFRO2dCQUNULElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLE1BQU07WUFDVixLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDM0IsTUFBTTtZQUNWLEtBQUssY0FBYztnQkFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUNWLEtBQUssbUJBQW1CO2dCQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBRyxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQzsrR0FoRlEsMEJBQTBCO21HQUExQiwwQkFBMEIsaUZDL0J2QywyaUNBb0J5Rjs7NEZEVzVFLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDSSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YVRhYmxlRmlsdGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2ZlYXR1cmVzL2RhdGEtdGFibGUvZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtQb3N0dXJlQ2hlY2tzUGFnZVNlcnZpY2V9IGZyb20gXCIuL3Bvc3R1cmUtY2hlY2tzLXBhZ2Uuc2VydmljZVwiO1xuaW1wb3J0IHtUYWJOYW1lU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RhYi1uYW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7TGlzdFBhZ2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9zaGFyZWQvbGlzdC1wYWdlLWNvbXBvbmVudC5jbGFzc1wiO1xuaW1wb3J0IHtDb25zb2xlRXZlbnRzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NvbnNvbGUtZXZlbnRzLnNlcnZpY2VcIjtcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0NvbmZpcm1Db21wb25lbnR9IGZyb20gXCIuLi8uLi9mZWF0dXJlcy9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50XCI7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItY29uZmlndXJhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3N0dXJlLWNoZWNrcy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wb3N0dXJlLWNoZWNrcy1wYWdlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUG9zdHVyZUNoZWNrc1BhZ2VDb21wb25lbnQgZXh0ZW5kcyBMaXN0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgdGl0bGUgPSAnUG9zdHVyZSBDaGVja3MnXG4gICAgdGFiczogeyB1cmw6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9W10gO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgICBmb3JtRGF0YUNoYW5nZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBvdmVycmlkZSBzdmM6IFBvc3R1cmVDaGVja3NQYWdlU2VydmljZSxcbiAgICAgICAgZmlsdGVyU2VydmljZTogRGF0YVRhYmxlRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJOYW1lczogVGFiTmFtZVNlcnZpY2UsXG4gICAgICAgIGNvbnNvbGVFdmVudHM6IENvbnNvbGVFdmVudHNTZXJ2aWNlLFxuICAgICAgICBkaWFsb2dGb3JtOiBNYXREaWFsb2dcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZmlsdGVyU2VydmljZSwgc3ZjLCBjb25zb2xlRXZlbnRzLCBkaWFsb2dGb3JtKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJOYW1lcy5nZXRUYWJzKCdwb3N0dXJlLWNoZWNrcycpO1xuICAgICAgICB0aGlzLnN2Yy5yZWZyZXNoRGF0YSA9IHRoaXMucmVmcmVzaERhdGE7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxuXG4gICAgaGVhZGVyQWN0aW9uQ2xpY2tlZChhY3Rpb246IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgICB0aGlzLnN2Yy5vcGVuRWRpdEZvcm0oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5yb3dEYXRhLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByb3cuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEgPyAncG9zdHVyZSBjaGVja3MnIDogJ3Bvc3R1cmUgY2hlY2snO1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkJ1bGtEZWxldGUoc2VsZWN0ZWRJdGVtcywgbGFiZWwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRhYmxlQWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgc3dpdGNoKGV2ZW50Py5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3RvZ2dsZUFsbCc6XG4gICAgICAgICAgICBjYXNlICd0b2dnbGVJdGVtJzpcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Ub2dnbGVkKGV2ZW50Lml0ZW0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybShldmVudC5pdGVtPy5pZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3ZjLm9wZW5FZGl0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUl0ZW0oZXZlbnQuaXRlbSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Rvd25sb2FkLWFsbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEFsbEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb3dubG9hZC1zZWxlY3RlZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5zdmMuZG93bmxvYWRJdGVtcyh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMub3BlbkJ1bGtEZWxldGUoW2l0ZW1dLCAncG9zdHVyZSBjaGVjaycpO1xuICAgIH1cblxuICAgIGNsb3NlTW9kYWwoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLnN2Yy5zaWRlTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgIGlmKGV2ZW50Py5yZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhQ2hhbmdlZChldmVudCkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhQ2hhbmdlZCA9IGV2ZW50O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ6aXRpLXBhZ2UtY29udGFpbmVyIHppdGktcG9zdHVyZS1jaGVja3MtY29udGFpbmVyXCI+XG4gICAgPGxpYi1saXN0LXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJzXT1cInRhYnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FkZF09XCIhaXRlbXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25DbGlja2VkKT1cImhlYWRlckFjdGlvbkNsaWNrZWQoJGV2ZW50KVwiPjwvbGliLWxpc3QtcGFnZS1oZWFkZXI+XG5cbiAgICA8bGliLWRhdGEtdGFibGUgW3RhYmxlSWRdPVwiJ3Bvc3R1cmUtY2hlY2tzJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmaW5pdGlvbnNdPVwiY29sdW1uRGVmc1wiXG4gICAgICAgICAgICAgICAgICAgIChhY3Rpb25SZXF1ZXN0ZWQpPVwidGFibGVBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGFydENvdW50XT1cInN0YXJ0Q291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbZW5kQ291bnRdPVwiZW5kQ291bnRcIlxuICAgICAgICAgICAgICAgICAgICBbdG90YWxDb3VudF09XCJ0b3RhbENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2VtcHR5TXNnXT1cIidObyBQb3N0dXJlIENoZWNrcyBkZWZpbmVkLCBDbGljayB0aGUgcGx1cyB0byBhZGQgYSBDb25maWd1cmF0aW9uLidcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQXBwbGllZF09XCJmaWx0ZXJBcHBsaWVkXCJcbiAgICAgICAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJzdmMubWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJncmlkUmVhZHkoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbGliLWRhdGEtdGFibGU+XG48L2Rpdj5cbjxsaWItbG9hZGluZy1pbmRpY2F0b3IgKm5nSWY9XCJpc0xvYWRpbmdcIiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvbGliLWxvYWRpbmctaW5kaWNhdG9yPiJdfQ==