@sumaris-net/ngx-components 2.0.0-rc9 → 2.0.2

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 (332) hide show
  1. package/README.md +3 -1
  2. package/esm2020/public_api.mjs +35 -22
  3. package/esm2020/src/app/admin/admin-routing.module.mjs +6 -6
  4. package/esm2020/src/app/admin/admin.module.mjs +6 -6
  5. package/esm2020/src/app/admin/services/person.service.mjs +3 -3
  6. package/esm2020/src/app/admin/services/validator/person.validator.mjs +3 -3
  7. package/esm2020/src/app/admin/users/users.mjs +233 -0
  8. package/esm2020/src/app/admin/users/users.module.mjs +54 -0
  9. package/esm2020/src/app/core/about/about.modal.mjs +71 -0
  10. package/esm2020/src/app/core/about/about.module.mjs +34 -0
  11. package/esm2020/src/app/core/account/account.module.mjs +43 -0
  12. package/esm2020/src/app/core/account/account.page.mjs +239 -0
  13. package/esm2020/src/app/core/auth/auth.form.mjs +131 -0
  14. package/esm2020/src/app/core/auth/auth.modal.mjs +72 -0
  15. package/esm2020/src/app/core/auth/auth.module.mjs +47 -0
  16. package/esm2020/src/app/core/core.module.mjs +86 -125
  17. package/esm2020/src/app/core/core.testing.module.mjs +7 -7
  18. package/esm2020/src/app/core/form/{form-buttons-bar.component.mjs → buttons/form-buttons-bar.component.mjs} +7 -7
  19. package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +35 -0
  20. package/esm2020/src/app/core/form/entity/editor.class.mjs +675 -0
  21. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +421 -0
  22. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +646 -0
  23. package/esm2020/src/app/core/form/{entity-metadata.component.mjs → entity/entity-metadata.component.mjs} +6 -6
  24. package/esm2020/src/app/core/form/entity/entity.module.mjs +38 -0
  25. package/esm2020/src/app/core/form/form.class.mjs +4 -4
  26. package/esm2020/src/app/core/form/form.module.mjs +66 -0
  27. package/esm2020/src/app/core/form/list/list.form.mjs +222 -0
  28. package/esm2020/src/app/core/form/list/list.module.mjs +35 -0
  29. package/esm2020/src/app/core/form/properties/properties.form.mjs +3 -3
  30. package/esm2020/src/app/core/form/properties/properties.module.mjs +35 -0
  31. package/esm2020/src/app/core/form/properties/property.validator.mjs +4 -4
  32. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +3 -3
  33. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +4 -4
  34. package/esm2020/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.mjs +4 -4
  35. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +45 -0
  36. package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +89 -0
  37. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +105 -0
  38. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +40 -0
  39. package/esm2020/src/app/core/graphql/graphql.module.mjs +4 -4
  40. package/esm2020/src/app/core/graphql/graphql.service.mjs +12 -7
  41. package/esm2020/src/app/core/graphql/graphql.utils.mjs +2 -2
  42. package/esm2020/src/app/core/home/home.mjs +8 -8
  43. package/esm2020/src/app/core/home/home.module.mjs +48 -0
  44. package/esm2020/src/app/core/icon/icon.component.mjs +3 -3
  45. package/esm2020/src/app/core/icon/icon.module.mjs +4 -4
  46. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +3 -3
  47. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +17 -15
  48. package/esm2020/src/app/core/menu/menu.component.mjs +5 -5
  49. package/esm2020/src/app/core/menu/menu.module.mjs +9 -10
  50. package/esm2020/src/app/core/menu/menu.service.mjs +3 -3
  51. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  52. package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +35 -0
  53. package/esm2020/src/app/core/peer/select-peer.modal.mjs +55 -11
  54. package/esm2020/src/app/core/peer/select-peer.module.mjs +17 -10
  55. package/esm2020/src/app/core/register/register-confirm.page.mjs +81 -0
  56. package/esm2020/src/app/core/register/register.form.mjs +181 -0
  57. package/esm2020/src/app/core/register/register.modal.mjs +52 -0
  58. package/esm2020/src/app/core/register/register.module.mjs +17 -15
  59. package/esm2020/src/app/core/services/account.service.mjs +22 -23
  60. package/esm2020/src/app/core/services/auth-guard.service.mjs +6 -6
  61. package/esm2020/src/app/core/services/base-entity-service.class.mjs +3 -3
  62. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +8 -8
  63. package/esm2020/src/app/core/services/base58.mjs +2 -2
  64. package/esm2020/src/app/core/services/config.service.mjs +4 -4
  65. package/esm2020/src/app/core/services/crypto.service.mjs +82 -97
  66. package/esm2020/src/app/core/services/local-settings.service.mjs +8 -10
  67. package/esm2020/src/app/core/services/model/entity.decorators.mjs +44 -54
  68. package/esm2020/src/app/core/services/model/peer.model.mjs +3 -3
  69. package/esm2020/src/app/core/services/network.service.mjs +7 -7
  70. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +8 -8
  71. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  72. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  73. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  74. package/esm2020/src/app/core/services/platform.service.mjs +9 -10
  75. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  76. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +4 -4
  77. package/esm2020/src/app/core/services/testing/referential.validator.mjs +3 -3
  78. package/esm2020/src/app/core/services/validator/account.validator.mjs +3 -3
  79. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +3 -3
  80. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +3 -3
  81. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  82. package/esm2020/src/app/core/settings/settings.module.mjs +34 -0
  83. package/esm2020/src/app/core/settings/settings.page.mjs +12 -9
  84. package/esm2020/src/app/core/table/actions-column.component.mjs +3 -3
  85. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +13 -8
  86. package/esm2020/src/app/core/table/memory-table.class.mjs +3 -3
  87. package/esm2020/src/app/core/table/table-select-columns.component.mjs +3 -3
  88. package/esm2020/src/app/core/table/table.class.mjs +11 -16
  89. package/esm2020/src/app/core/table/table.module.mjs +40 -0
  90. package/esm2020/src/app/core/table/testing/table.testing.mjs +8 -8
  91. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +4 -4
  92. package/esm2020/src/app/shared/audio/audio.mjs +3 -3
  93. package/esm2020/src/app/shared/audio/audio.testing.mjs +3 -3
  94. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +4 -4
  95. package/esm2020/src/app/shared/capacitor/keyboard.mjs +3 -3
  96. package/esm2020/src/app/shared/constants.mjs +4 -2
  97. package/esm2020/src/app/shared/dates.mjs +20 -14
  98. package/esm2020/src/app/shared/debug/debug.component.mjs +3 -3
  99. package/esm2020/src/app/shared/debug/debug.module.mjs +4 -4
  100. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +3 -3
  101. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +3 -3
  102. package/esm2020/src/app/shared/directives/directives.module.mjs +4 -4
  103. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  104. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +3 -3
  105. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  106. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  107. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  108. package/esm2020/src/app/shared/file/file.service.mjs +5 -5
  109. package/esm2020/src/app/shared/form/field.component.mjs +3 -3
  110. package/esm2020/src/app/shared/form/loading-spinner.mjs +3 -3
  111. package/esm2020/src/app/shared/gesture/gesture-config.mjs +3 -3
  112. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  113. package/esm2020/src/app/shared/help/help.modal.mjs +3 -3
  114. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  115. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  116. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  117. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +134 -60
  118. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +19 -7
  119. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  120. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +13 -7
  121. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  122. package/esm2020/src/app/shared/image/image.module.mjs +5 -5
  123. package/esm2020/src/app/shared/image/image.service.mjs +3 -3
  124. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +7 -6
  125. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  126. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  127. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +3 -3
  128. package/esm2020/src/app/shared/material/badge/badge.module.mjs +4 -4
  129. package/esm2020/src/app/shared/material/badge/badge.test.mjs +3 -3
  130. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  131. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +5 -5
  132. package/esm2020/src/app/shared/material/chips/chips.module.mjs +4 -4
  133. package/esm2020/src/app/shared/material/chips/material.chips.mjs +5 -5
  134. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
  135. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  136. package/esm2020/src/app/shared/material/datetime/material.date.mjs +7 -8
  137. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +6 -6
  138. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +7 -8
  139. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +5 -7
  140. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +7 -8
  141. package/esm2020/src/app/shared/material/duration/duration.module.mjs +4 -4
  142. package/esm2020/src/app/shared/material/duration/material.duration.mjs +3 -3
  143. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  144. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  145. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
  146. package/esm2020/src/app/shared/material/material.module.mjs +4 -4
  147. package/esm2020/src/app/shared/material/material.testing.module.mjs +4 -4
  148. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +3 -3
  149. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +3 -3
  150. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +3 -3
  151. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +3 -3
  152. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +3 -3
  153. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +3 -3
  154. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +4 -4
  155. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +3 -3
  156. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  157. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  158. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +3 -3
  159. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  160. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +11 -12
  161. package/esm2020/src/app/shared/modules.mjs +11 -0
  162. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +24 -24
  163. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +4 -4
  164. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +8 -9
  165. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +38 -14
  166. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  167. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +4 -4
  168. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  169. package/esm2020/src/app/shared/pipes/form.pipes.mjs +18 -18
  170. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  171. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  172. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +12 -12
  173. package/esm2020/src/app/shared/pipes/math.pipes.mjs +12 -12
  174. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  175. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  176. package/esm2020/src/app/shared/pipes/pipes.module.mjs +14 -6
  177. package/esm2020/src/app/shared/pipes/property.pipes.mjs +9 -12
  178. package/esm2020/src/app/shared/pipes/string.pipes.mjs +43 -17
  179. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  180. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +3 -3
  181. package/esm2020/src/app/shared/services/progress-bar.service.mjs +3 -3
  182. package/esm2020/src/app/shared/services/storage/storage.service.mjs +3 -3
  183. package/esm2020/src/app/shared/services/translate-context.service.mjs +3 -3
  184. package/esm2020/src/app/shared/shared-routing.module.mjs +7 -7
  185. package/esm2020/src/app/shared/shared.module.mjs +11 -7
  186. package/esm2020/src/app/shared/shared.testing.module.mjs +4 -4
  187. package/esm2020/src/app/shared/testing/observable.test.mjs +6 -7
  188. package/esm2020/src/app/shared/testing/tests.page.mjs +3 -3
  189. package/esm2020/src/app/shared/toast/toast.testing.mjs +3 -3
  190. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +4 -4
  191. package/esm2020/src/app/shared/toast/toasts.mjs +1 -1
  192. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  193. package/esm2020/src/app/shared/toolbar/toolbar.mjs +3 -3
  194. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  195. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  196. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  197. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +5 -5
  198. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  199. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  200. package/esm2020/src/app/shared/validator/validators.mjs +4 -5
  201. package/esm2020/src/app/social/job/job.module.mjs +4 -4
  202. package/esm2020/src/app/social/job/job.service.mjs +3 -3
  203. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +3 -3
  204. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +4 -4
  205. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +3 -3
  206. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +3 -3
  207. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +4 -4
  208. package/esm2020/src/app/social/message/message.form.mjs +3 -3
  209. package/esm2020/src/app/social/message/message.modal.mjs +3 -3
  210. package/esm2020/src/app/social/message/message.module.mjs +4 -4
  211. package/esm2020/src/app/social/message/message.service.mjs +3 -3
  212. package/esm2020/src/app/social/social.module.mjs +4 -4
  213. package/esm2020/src/app/social/social.testing.module.mjs +4 -4
  214. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +3 -3
  215. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +7 -7
  216. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +13 -12
  217. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  218. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  219. package/esm2020/src/app/social/user-event/user-event.module.mjs +4 -4
  220. package/esm2020/src/app/social/user-event/user-event.service.mjs +6 -8
  221. package/fesm2015/sumaris-net.ngx-components.mjs +10176 -9570
  222. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  223. package/fesm2020/sumaris-net.ngx-components.mjs +10390 -9791
  224. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  225. package/package.json +2 -1
  226. package/plugins/clovelced-plugin-audiomanagement/README.md +66 -0
  227. package/plugins/cordova-plugin-camera/README.md +703 -0
  228. package/plugins/cordova-plugin-device/README.md +309 -0
  229. package/plugins/cordova-plugin-file/README.md +848 -0
  230. package/plugins/cordova-plugin-file-transfer/README.md +598 -0
  231. package/plugins/cordova-plugin-file-transfer/doc/de/README.md +311 -0
  232. package/plugins/cordova-plugin-file-transfer/doc/es/README.md +311 -0
  233. package/plugins/cordova-plugin-file-transfer/doc/fr/README.md +270 -0
  234. package/plugins/cordova-plugin-file-transfer/doc/it/README.md +311 -0
  235. package/plugins/cordova-plugin-file-transfer/doc/ja/README.md +311 -0
  236. package/plugins/cordova-plugin-file-transfer/doc/ko/README.md +311 -0
  237. package/plugins/cordova-plugin-file-transfer/doc/pl/README.md +311 -0
  238. package/plugins/cordova-plugin-file-transfer/doc/zh/README.md +311 -0
  239. package/plugins/cordova-plugin-ionic-keyboard/README.md +220 -0
  240. package/plugins/cordova-plugin-ionic-webview/README.md +181 -0
  241. package/plugins/cordova-plugin-media-capture/README.md +626 -0
  242. package/plugins/cordova-plugin-splashscreen/README.md +387 -0
  243. package/plugins/cordova-plugin-statusbar/README.md +341 -0
  244. package/plugins/cordova-plugin-telerik-imagepicker/README.md +155 -0
  245. package/plugins/cordova-plugin-whitelist/README.md +185 -0
  246. package/plugins/cordova-sqlite-storage/README.md +1848 -0
  247. package/plugins/integrator-cordova-plugin-downloader/README.md +49 -0
  248. package/public_api.d.ts +34 -21
  249. package/src/app/admin/admin.module.d.ts +1 -1
  250. package/src/app/admin/users/{list/users.d.ts → users.d.ts} +11 -11
  251. package/src/app/admin/users/users.module.d.ts +13 -0
  252. package/src/app/core/about/{modal-about.d.ts → about.modal.d.ts} +1 -1
  253. package/src/app/core/about/about.module.d.ts +10 -0
  254. package/src/app/core/account/account.module.d.ts +11 -0
  255. package/src/app/core/account/{account.d.ts → account.page.d.ts} +5 -1
  256. package/src/app/core/auth/{form/form-auth.d.ts → auth.form.d.ts} +9 -9
  257. package/src/app/core/auth/{modal/modal-auth.d.ts → auth.modal.d.ts} +4 -4
  258. package/src/app/core/auth/auth.module.d.ts +11 -0
  259. package/src/app/core/core.module.d.ts +20 -29
  260. package/src/app/core/core.testing.module.d.ts +1 -1
  261. package/src/app/core/form/{form-buttons-bar.component.d.ts → buttons/form-buttons-bar.component.d.ts} +2 -2
  262. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
  263. package/src/app/core/form/{editor.class.d.ts → entity/editor.class.d.ts} +9 -9
  264. package/src/app/core/form/{entity-editor-modal.class.d.ts → entity/entity-editor-modal.class.d.ts} +8 -8
  265. package/src/app/core/form/{entity-editor.class.d.ts → entity/entity-editor.class.d.ts} +11 -11
  266. package/src/app/core/form/{entity-metadata.component.d.ts → entity/entity-metadata.component.d.ts} +1 -1
  267. package/src/app/core/form/entity/entity.module.d.ts +10 -0
  268. package/src/app/core/form/form.module.d.ts +13 -0
  269. package/src/app/core/form/{list.form.d.ts → list/list.form.d.ts} +3 -3
  270. package/src/app/core/form/list/list.module.d.ts +9 -0
  271. package/src/app/core/form/properties/properties.module.d.ts +9 -0
  272. package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.d.ts +0 -0
  273. package/src/app/core/{text-popover → form/text-popover}/testing/text-popover.testing.module.d.ts +0 -0
  274. package/src/app/core/{text-popover → form/text-popover}/text-form.component.d.ts +4 -3
  275. package/src/app/core/{text-popover → form/text-popover}/text-popover.component.d.ts +7 -2
  276. package/src/app/core/form/text-popover/text-popover.module.d.ts +10 -0
  277. package/src/app/core/home/home.module.d.ts +12 -0
  278. package/src/app/core/install/install-upgrade-card.module.d.ts +6 -7
  279. package/src/app/core/menu/menu.component.d.ts +1 -1
  280. package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
  281. package/src/app/core/peer/select-peer.modal.d.ts +19 -5
  282. package/src/app/core/peer/select-peer.module.d.ts +6 -4
  283. package/src/app/core/register/{confirm/confirm.d.ts → register-confirm.page.d.ts} +4 -4
  284. package/src/app/core/register/{form/form-register.d.ts → register.form.d.ts} +7 -7
  285. package/src/app/core/register/{modal/modal-register.d.ts → register.modal.d.ts} +2 -2
  286. package/src/app/core/register/register.module.d.ts +6 -6
  287. package/src/app/core/services/account.service.d.ts +8 -9
  288. package/src/app/core/services/base-graphql-service.class.d.ts +9 -8
  289. package/src/app/core/services/crypto.service.d.ts +23 -18
  290. package/src/app/core/services/model/entity.decorators.d.ts +1 -9
  291. package/src/app/core/services/network.service.d.ts +3 -4
  292. package/src/app/core/settings/settings.module.d.ts +10 -0
  293. package/src/app/core/settings/settings.page.d.ts +2 -4
  294. package/src/app/core/table/entities-table-datasource.class.d.ts +1 -0
  295. package/src/app/core/table/table.class.d.ts +2 -6
  296. package/src/app/core/table/table.module.d.ts +10 -0
  297. package/src/app/shared/constants.d.ts +1 -1
  298. package/src/app/shared/dates.d.ts +5 -3
  299. package/src/app/shared/image/gallery/image-gallery.component.d.ts +39 -17
  300. package/src/app/shared/image/gallery/image-gallery.module.d.ts +6 -4
  301. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +1 -0
  302. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +1 -0
  303. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +5 -6
  304. package/src/app/shared/modules.d.ts +8 -0
  305. package/src/app/shared/pipes/date-format.pipe.d.ts +22 -11
  306. package/src/app/shared/pipes/pipes.module.d.ts +1 -1
  307. package/src/app/shared/pipes/property.pipes.d.ts +4 -6
  308. package/src/app/shared/pipes/string.pipes.d.ts +10 -0
  309. package/src/app/shared/shared.module.d.ts +2 -1
  310. package/src/assets/i18n/en-US.json +20 -5
  311. package/src/assets/i18n/en.json +18 -4
  312. package/src/assets/i18n/fr.json +17 -6
  313. package/src/theme/_ngx-components.scss +22 -4
  314. package/esm2020/src/app/admin/users/list/users.mjs +0 -233
  315. package/esm2020/src/app/admin/users/list/users.module.mjs +0 -58
  316. package/esm2020/src/app/core/about/modal-about.mjs +0 -71
  317. package/esm2020/src/app/core/account/account.mjs +0 -230
  318. package/esm2020/src/app/core/auth/form/form-auth.mjs +0 -131
  319. package/esm2020/src/app/core/auth/modal/modal-auth.mjs +0 -72
  320. package/esm2020/src/app/core/form/editor.class.mjs +0 -675
  321. package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +0 -421
  322. package/esm2020/src/app/core/form/entity-editor.class.mjs +0 -646
  323. package/esm2020/src/app/core/form/list.form.mjs +0 -222
  324. package/esm2020/src/app/core/register/confirm/confirm.mjs +0 -81
  325. package/esm2020/src/app/core/register/form/form-register.mjs +0 -181
  326. package/esm2020/src/app/core/register/modal/modal-register.mjs +0 -52
  327. package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +0 -45
  328. package/esm2020/src/app/core/text-popover/text-form.component.mjs +0 -84
  329. package/esm2020/src/app/core/text-popover/text-popover.component.mjs +0 -92
  330. package/esm2020/src/app/vendor.mjs +0 -16
  331. package/src/app/admin/users/list/users.module.d.ts +0 -14
  332. package/src/app/vendor.d.ts +0 -11
@@ -1,6 +1,6 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
- import { AuthModal } from '../auth/modal/modal-auth';
3
2
  import { ENVIRONMENT } from '../../../environments/environment.class';
3
+ import { AppAuthModal } from '../auth/auth.modal';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./account.service";
6
6
  import * as i2 from "@ionic/angular";
@@ -46,7 +46,7 @@ export class AuthGuardService {
46
46
  }
47
47
  login(next) {
48
48
  return new Promise(async (resolve) => {
49
- const modal = await this.modalCtrl.create({ component: AuthModal, componentProps: { next } });
49
+ const modal = await this.modalCtrl.create({ component: AppAuthModal, componentProps: { next } });
50
50
  modal.onDidDismiss()
51
51
  .then(() => {
52
52
  if (this.accountService.isLogin()) {
@@ -59,13 +59,13 @@ export class AuthGuardService {
59
59
  });
60
60
  }
61
61
  }
62
- AuthGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AccountService }, { token: i2.ModalController }, { token: i3.Router }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
63
- AuthGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthGuardService, decorators: [{
62
+ AuthGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AccountService }, { token: i2.ModalController }, { token: i3.Router }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ AuthGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: AuthGuardService, decorators: [{
65
65
  type: Injectable,
66
66
  args: [{ providedIn: 'root' }]
67
67
  }], ctorParameters: function () { return [{ type: i1.AccountService }, { type: i2.ModalController }, { type: i3.Router }, { type: undefined, decorators: [{
68
68
  type: Inject,
69
69
  args: [ENVIRONMENT]
70
70
  }] }]; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2F1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUdwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLGNBQThCLEVBQzlCLFNBQTBCLEVBQzFCLE1BQWMsRUFDUyxXQUFXO1FBSGxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ1MsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFFcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FDVCxJQUE0QixFQUM1QixLQUEwQjtRQUcxQiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hDLFVBQVU7aUJBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBK0IsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLElBQUksSUFBSSxDQUFDLE1BQU07d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxVQUFVO2dCQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUErQixDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNGLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25KLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUE2QjtRQUNqQyxPQUFPLElBQUksT0FBTyxDQUFVLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUMsRUFBQyxDQUFDLENBQUM7WUFDMUYsS0FBSyxDQUFDLFlBQVksRUFBRTtpQkFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDZCxPQUFPO2lCQUNSO2dCQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztZQUNMLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkdBM0RVLGdCQUFnQixxR0FPUCxXQUFXO2lIQVBwQixnQkFBZ0IsY0FESixNQUFNOzJGQUNsQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFRakIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TW9kYWxDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0F1dGhNb2RhbH0gZnJvbSAnLi4vYXV0aC9tb2RhbC9tb2RhbC1hdXRoJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7RU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudFxuICApIHtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG5cbiAgICAvLyBJZiBhY2NvdW50IG5vdCBzdGFydGVkOiBsb29wIGFmdGVyIHN0YXJ0ZWRcbiAgICBpZiAoIXRoaXMuYWNjb3VudFNlcnZpY2Uuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKVxuICAgICAgICAvLyBJdGVyYXRlXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuY2FuQWN0aXZhdGUobmV4dCwgc3RhdGUpIGFzIFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+KTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBsb2dpblxuICAgIGlmICghdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1dGgtZ2FyZF0gTmVlZCBhdXRoZW50aWNhdGlvbiBmb3IgcGFnZSAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgICByZXR1cm4gdGhpcy5sb2dpbihuZXh0KVxuICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWdhcmRdIEF1dGhlbnRpY2F0aW9uIGNhbmNlbGxlZC4gQ291bGQgbm90IGFjY2VzcyB0byAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwoJy9ob21lJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEl0ZXJhdGVcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShuZXh0LCBzdGF0ZSkgYXMgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT47XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChuZXh0LmRhdGEgJiYgbmV4dC5kYXRhLnByb2ZpbGUgJiYgIXRoaXMuYWNjb3VudFNlcnZpY2UuaGFzTWluUHJvZmlsZShuZXh0LmRhdGEucHJvZmlsZSkpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1dGgtZ2FyZF0gTm90IGF1dGhvcml6ZWQgYWNjZXNzIHRvIC8nICsgbmV4dC51cmwuam9pbignLycpICsgJy4gTWlzc2luZyByZXF1aXJlZCBwcm9maWxlOiAnICsgbmV4dC5kYXRhLnByb2ZpbGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWdhcmRdIEF1dGhvcml6ZWQgYWNjZXNzIHRvIC8nICsgbmV4dC51cmwuam9pbignLycpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxvZ2luKG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7Y29tcG9uZW50OiBBdXRoTW9kYWwsIGNvbXBvbmVudFByb3BzOiB7bmV4dH19KTtcbiAgICAgIG1vZGFsLm9uRGlkRGlzbWlzcygpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBtb2RhbC5wcmVzZW50KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2F1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUdoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLGNBQThCLEVBQzlCLFNBQTBCLEVBQzFCLE1BQWMsRUFDUyxXQUFXO1FBSGxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ1MsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFFcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FDVCxJQUE0QixFQUM1QixLQUEwQjtRQUcxQiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hDLFVBQVU7aUJBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBK0IsQ0FBQyxDQUFDO1NBQzVFO1FBRUQsY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLElBQUksSUFBSSxDQUFDLE1BQU07d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxVQUFVO2dCQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUErQixDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNGLElBQUksSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25KLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUE2QjtRQUNqQyxPQUFPLElBQUksT0FBTyxDQUFVLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUMsRUFBQyxDQUFDLENBQUM7WUFDN0YsS0FBSyxDQUFDLFlBQVksRUFBRTtpQkFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDZCxPQUFPO2lCQUNSO2dCQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztZQUNMLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkdBM0RVLGdCQUFnQixxR0FPUCxXQUFXO2lIQVBwQixnQkFBZ0IsY0FESixNQUFNOzJGQUNsQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFRakIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TW9kYWxDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtBcHBBdXRoTW9kYWx9IGZyb20gJy4uL2F1dGgvYXV0aC5tb2RhbCc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudFxuICApIHtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG5cbiAgICAvLyBJZiBhY2NvdW50IG5vdCBzdGFydGVkOiBsb29wIGFmdGVyIHN0YXJ0ZWRcbiAgICBpZiAoIXRoaXMuYWNjb3VudFNlcnZpY2Uuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKVxuICAgICAgICAvLyBJdGVyYXRlXG4gICAgICAgIC50aGVuKCgpID0+IHRoaXMuY2FuQWN0aXZhdGUobmV4dCwgc3RhdGUpIGFzIFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+KTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBsb2dpblxuICAgIGlmICghdGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1dGgtZ2FyZF0gTmVlZCBhdXRoZW50aWNhdGlvbiBmb3IgcGFnZSAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgICByZXR1cm4gdGhpcy5sb2dpbihuZXh0KVxuICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWdhcmRdIEF1dGhlbnRpY2F0aW9uIGNhbmNlbGxlZC4gQ291bGQgbm90IGFjY2VzcyB0byAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwoJy9ob21lJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEl0ZXJhdGVcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZShuZXh0LCBzdGF0ZSkgYXMgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT47XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChuZXh0LmRhdGEgJiYgbmV4dC5kYXRhLnByb2ZpbGUgJiYgIXRoaXMuYWNjb3VudFNlcnZpY2UuaGFzTWluUHJvZmlsZShuZXh0LmRhdGEucHJvZmlsZSkpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1dGgtZ2FyZF0gTm90IGF1dGhvcml6ZWQgYWNjZXNzIHRvIC8nICsgbmV4dC51cmwuam9pbignLycpICsgJy4gTWlzc2luZyByZXF1aXJlZCBwcm9maWxlOiAnICsgbmV4dC5kYXRhLnByb2ZpbGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWdhcmRdIEF1dGhvcml6ZWQgYWNjZXNzIHRvIC8nICsgbmV4dC51cmwuam9pbignLycpKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxvZ2luKG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7Y29tcG9uZW50OiBBcHBBdXRoTW9kYWwsIGNvbXBvbmVudFByb3BzOiB7bmV4dH19KTtcbiAgICAgIG1vZGFsLm9uRGlkRGlzbWlzcygpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBtb2RhbC5wcmVzZW50KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -424,9 +424,9 @@ export class BaseEntityService extends BaseGraphqlService {
424
424
  return [this.queries.loadAll, this.queries.loadAllWithTotal].filter(isNotNil);
425
425
  }
426
426
  }
427
- BaseEntityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BaseEntityService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
428
- BaseEntityService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: BaseEntityService, usesInheritance: true, ngImport: i0 });
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BaseEntityService, decorators: [{
427
+ BaseEntityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BaseEntityService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
428
+ BaseEntityService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: BaseEntityService, usesInheritance: true, ngImport: i0 });
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BaseEntityService, decorators: [{
430
430
  type: Directive
431
431
  }], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: i2.PlatformService }, { type: undefined }, { type: undefined }, { type: undefined }]; } });
432
432
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUE0Q3ZFLFdBQVc7QUFFWCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixpQkFTcEIsU0FBUSxrQkFBNEI7SUFrQnBDLFlBQ1ksT0FBdUIsRUFDdkIsUUFBeUIsRUFDekIsUUFBb0IsRUFDcEIsVUFBc0IsRUFDaEMsT0FBaUQ7UUFFakQsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQU5sQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3BCLGVB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Qyx3QkFBd0IsS0FBSyxpQkFBaUI7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0I7UUFFdkQsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRVMsY0FBYztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDOzs4R0EzZ0JtQixpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUZ0QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnJvckNvZGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQgeyBGZXRjaFBvbGljeSwgSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUsIE11dGF0aW9uVXBkYXRlckZuIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5cbmltcG9ydCB7IEJhc2VHcmFwaHFsU2VydmljZSB9IGZyb20gJy4vYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLCBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMsIElFbnRpdGllc1NlcnZpY2UsIElFbnRpdHlTZXJ2aWNlLCBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QXNPYmplY3RPcHRpb25zLCBFbnRpdHlVdGlscyB9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IGNoYWluUHJvbWlzZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtpc0VtcHR5QXJyYXksIGlzTmlsLCBpc05vdE5pbCwgcmVtb3ZlRW5kLCB0b0Jvb2xlYW4sIHRvTnVtYmVyfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hSZXN1bHQgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5RmlsdGVyLCBFbnRpdHlGaWx0ZXJVdGlscyB9IGZyb20gJy4vbW9kZWwvZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuXG5leHBvcnQgdHlwZSBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID0gJ3VwZGF0ZS1jYWNoZScgfCAncmVmZXRjaC1xdWVyaWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5R3JhcGhxbFF1ZXJpZXMge1xuICBsb2FkPzogYW55O1xuICBsb2FkQWxsOiBhbnk7XG4gIGxvYWRBbGxXaXRoVG90YWw/OiBhbnk7XG4gIGNvdW50QWxsPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyB7XG4gIHNhdmU/OiBhbnk7XG4gIGRlbGV0ZT86IGFueTtcbiAgc2F2ZUFsbD86IGFueTtcbiAgZGVsZXRlQWxsPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyB7XG4gIGxpc3RlbkNoYW5nZXM/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFbnRpdHlTZXJ2aWNlT3B0aW9uczxcbiAgVCBleHRlbmRzIEVudGl0eTxhbnksIElEPixcbiAgSUQgPSBudW1iZXIsXG4gIFEgZXh0ZW5kcyBCYXNlRW50aXR5R3JhcGhxbFF1ZXJpZXMgPSBCYXNlRW50aXR5R3JhcGhxbFF1ZXJpZXMsXG4gIE0gZXh0ZW5kcyBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyA9IEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zLFxuICBTIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zID0gQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zPiB7XG4gIHF1ZXJpZXM6IFE7XG4gIG11dGF0aW9ucz86IFBhcnRpYWw8TT47XG4gIHN1YnNjcmlwdGlvbnM/OiBQYXJ0aWFsPFM+O1xuICBlcXVhbHNGbj86IChlMTogVCwgZTI6IFQpID0+IGJvb2xlYW47XG4gIGlzTmV3Rm4/OiAoZTogVCkgPT4gYm9vbGVhbjtcbiAgZGVmYXVsdFNvcnRCeT86IGtleW9mIFQ7XG4gIGRlZmF1bHRTb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcbiAgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5PzogTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlTYXZlT3B0aW9ucyB7XG4gIHJlZmV0Y2hRdWVyaWVzPzogKChyZXN1bHQ6IEZldGNoUmVzdWx0PHtkYXRhOiBhbnl9PikgPT4gSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUpIHwgSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGU7XG4gIGF3YWl0UmVmZXRjaFF1ZXJpZXM/OiBib29sZWFuO1xuICB1cGRhdGU/OiBNdXRhdGlvblVwZGF0ZXJGbjx7IGRhdGE6IGFueTsgfT47XG59XG5cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUVudGl0eVNlcnZpY2U8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQ+LFxuICBGIGV4dGVuZHMgRW50aXR5RmlsdGVyPEYsIFQsIElEPixcbiAgSUQgPSBudW1iZXIsXG4gIFdPIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBMTyBleHRlbmRzIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyA9IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyxcbiAgUSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyA9IEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyxcbiAgTSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsTXV0YXRpb25zID0gQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMsXG4gIFMgZXh0ZW5kcyBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnM+XG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPFQsIEYsIElEPlxuICBpbXBsZW1lbnRzXG4gICAgSUVudGl0aWVzU2VydmljZTxULCBGLCBXTz4sXG4gICAgSUVudGl0eVNlcnZpY2U8VCwgSUQsIExPPiB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90eXBlbmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2xvZ1R5cGVOYW1lOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJpZXM6IFE7XG4gIHByb3RlY3RlZCByZWFkb25seSBtdXRhdGlvbnM6IFBhcnRpYWw8TT47XG4gIHByb3RlY3RlZCByZWFkb25seSBzdWJzY3JpcHRpb25zOiBQYXJ0aWFsPFM+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXF1YWxzRm46IChlMTogVCwgZTI6IFQpID0+IGJvb2xlYW47XG4gIHByb3RlY3RlZCByZWFkb25seSBpc05ld0ZuOiAoZTogVCkgPT4gYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFNvcnRCeToga2V5b2YgVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5OiBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcoKSA9PiBULFxuICAgIHByb3RlY3RlZCBmaWx0ZXJUeXBlOiBuZXcoKSA9PiBGLFxuICAgIG9wdGlvbnM6IEJhc2VFbnRpdHlTZXJ2aWNlT3B0aW9uczxULCBJRCwgUSwgTSwgUz5cbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMucXVlcmllcyA9IG9wdGlvbnMucXVlcmllcztcbiAgICB0aGlzLm11dGF0aW9ucyA9IG9wdGlvbnMubXV0YXRpb25zIHx8IDxQYXJ0aWFsPE0+Pnt9O1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG9wdGlvbnMuc3Vic2NyaXB0aW9ucyB8fCA8UGFydGlhbDxTPj57fTtcbiAgICB0aGlzLmVxdWFsc0ZuID0gb3B0aW9ucy5lcXVhbHNGbiB8fCAoKGUxLCBlMikgPT4gRW50aXR5VXRpbHMuZXF1YWxzKGUxLCBlMiwgJ2lkJykpO1xuICAgIHRoaXMuaXNOZXdGbiA9IG9wdGlvbnMuaXNOZXdGbiB8fCAoKGUpID0+IEVudGl0eVV0aWxzLmlzTm90RW1wdHkoZSwgJ2lkJykpO1xuICAgIHRoaXMuZGVmYXVsdFNvcnRCeSA9IG9wdGlvbnMuZGVmYXVsdFNvcnRCeSB8fCAnaWQnO1xuICAgIHRoaXMuZGVmYXVsdFNvcnREaXJlY3Rpb24gPSBvcHRpb25zLmRlZmF1bHRTb3J0RGlyZWN0aW9uIHx8ICdhc2MnO1xuICAgIHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID0gb3B0aW9ucy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgfHwgJ3VwZGF0ZS1jYWNoZSc7XG5cbiAgICBjb25zdCBvYmogPSBuZXcgZGF0YVR5cGUoKTtcbiAgICB0aGlzLl90eXBlbmFtZSA9IG9iai5fX3R5cGVuYW1lIHx8ICdVbmtub3duVk8nO1xuICAgIHRoaXMuX2xvZ1R5cGVOYW1lID0gcmVtb3ZlRW5kKHRoaXMuX3R5cGVuYW1lLCAnVk8nKTtcblxuICAgIC8vIEZvciBERVYgb25seVxuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICB3YXRjaChpZDogbnVtYmVyLCBvcHRzPzogV08gJiB7IHF1ZXJ5PzogYW55IH0pOiBPYnNlcnZhYmxlPFQ+IHtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRzICYmIG9wdHMucXVlcnkgfHwgdGhpcy5xdWVyaWVzLmxvYWQ7XG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5PHtkYXRhOiBhbnl9Pih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlczogeyBpZCB9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgKG9wdHMuZmV0Y2hQb2xpY3kgYXMgRmV0Y2hQb2xpY3kpIHx8IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdSRUZFUkVOVElBTC5FUlJPUi5MT0FEX0RBVEFfRVJST1InfVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7ZGF0YX0pID0+ICghb3B0cyB8fCBvcHRzLnRvRW50aXR5ICE9PSBmYWxzZSlcbiAgICAgICAgICAgID8gKGRhdGEgJiYgdGhpcy5mcm9tT2JqZWN0KGRhdGEpKVxuICAgICAgICAgICAgOiAoZGF0YSBhcyBUKSlcbiAgICAgICk7XG4gIH1cblxuICBhc3luYyBsb2FkKGlkOiBJRCwgb3B0cz86IExPICYgeyBxdWVyeT86IGFueSB9KTogUHJvbWlzZTxUPiB7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYExvYWRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuICAgIGNvbnN0IHF1ZXJ5ID0gb3B0cyAmJiBvcHRzLnF1ZXJ5IHx8IHRoaXMucXVlcmllcy5sb2FkO1xuXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8e2RhdGE6IGFueX0+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IGlkIH0sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkgfHwgdW5kZWZpbmVkLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ1JFRkVSRU5USUFMLkVSUk9SLkxPQURfREFUQV9FUlJPUid9XG4gICAgfSk7XG5cbiAgICAvLyBDb252ZXJ0IHRvIGVudGl0eVxuICAgIHJldHVybiAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpXG4gICAgICA/IChkYXRhICYmIHRoaXMuZnJvbU9iamVjdChkYXRhKSlcbiAgICAgIDogKGRhdGEgYXMgVCk7XG4gIH1cblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlcixcbiAgICAgICAgICAgc2l6ZTogbnVtYmVyLFxuICAgICAgICAgICBzb3J0Qnk/OiBzdHJpbmcsXG4gICAgICAgICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICBmaWx0ZXI/OiBGLFxuICAgICAgICAgICBvcHRzPzogV08gJiB7IHF1ZXJ5PzogYW55IH1cbiAgKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PiB7XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB2YXJpYWJsZXM6IGFueSA9IHtcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzaXplOiBzaXplIHx8IDEwMCxcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8IHRoaXMuZGVmYXVsdFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfHwgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgfTtcblxuICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCB2YXJpYWJsZXMpO1xuXG4gICAgY29uc3Qgd2l0aFRvdGFsID0gKCFvcHRzIHx8IG9wdHMud2l0aFRvdGFsICE9PSBmYWxzZSkgJiYgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgJiYgdHJ1ZTtcbiAgICBjb25zdCBxdWVyeSA9IChvcHRzICYmIG9wdHMucXVlcnkpIC8vIHVzZSBnaXZlbiBxdWVyeVxuICAgICAgLy8gT3IgZ2V0IGxvYWRBbGwgb3IgbG9hZEFsbFdpdGhUb3RhbCBxdWVyeVxuICAgICAgfHwgKHdpdGhUb3RhbCA/IHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsICA6IHRoaXMucXVlcmllcy5sb2FkQWxsKTtcbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlV2F0Y2hRdWVyeTxMb2FkUmVzdWx0PGFueT4+KHtcbiAgICAgIHF1ZXJ5TmFtZTogd2l0aFRvdGFsID8gJ0xvYWRBbGxXaXRoVG90YWwnIDogJ0xvYWRBbGwnLFxuICAgICAgcXVlcnksXG4gICAgICBhcnJheUZpZWxkTmFtZTogJ2RhdGEnLFxuICAgICAgdG90YWxGaWVsZE5hbWU6IHdpdGhUb3RhbCA/ICd0b3RhbCcgOiB1bmRlZmluZWQsXG4gICAgICBpbnNlcnRGaWx0ZXJGbjogZmlsdGVyICYmIGZpbHRlci5hc0ZpbHRlckZuKCksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnUkVGRVJFTlRJQUwuRVJST1IuTE9BRF9EQVRBX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8IHVuZGVmaW5lZFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7ZGF0YSwgdG90YWx9KSA9PiB7XG4gICAgICAgICAgLy8gQ29udmVydCB0byBlbnRpdHkgKGlmIG5lZWQpXG4gICAgICAgICAgY29uc3QgZW50aXRpZXMgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpXG4gICAgICAgICAgICA/IChkYXRhIHx8IFtdKS5tYXAoanNvbiA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpXG4gICAgICAgICAgICA6IChkYXRhIHx8IFtdKSBhcyBUW107XG5cbiAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCwgZW50aXRpZXMpO1xuICAgICAgICAgICAgbm93ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtkYXRhOiBlbnRpdGllcywgdG90YWx9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRBbGwob2Zmc2V0OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgc2l6ZTogbnVtYmVyLFxuICAgICAgICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgICAgICAgICAgICAgICBmaWx0ZXI/OiBQYXJ0aWFsPEY+LFxuICAgICAgICAgICAgICAgIG9wdHM/OiBMTyAmIHtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5PzogYW55O1xuICAgICAgICAgICAgICAgICAgZGVidWc/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgd2l0aFRvdGFsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICB9XG4gICk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuXG4gICAgY29uc3QgZGVidWcgPSB0aGlzLl9kZWJ1ZyAmJiAoIW9wdHMgfHwgb3B0cy5kZWJ1ZyAhPT0gZmFsc2UpO1xuXG4gICAgZmlsdGVyID0gdGhpcy5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwLFxuICAgICAgc2l6ZTogc2l6ZSB8fCAxMDAsXG4gICAgICBzb3J0Qnk6IHNvcnRCeSB8fCAnaWQnLFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCAnYXNjJyxcbiAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpXG4gICAgfTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBMb2FkaW5nICR7dGhpcy5fbG9nVHlwZU5hbWV9Li4uYCwgdmFyaWFibGVzKTtcblxuICAgIGNvbnN0IHdpdGhUb3RhbCA9ICghb3B0cyB8fCBvcHRzLndpdGhUb3RhbCAhPT0gZmFsc2UpICYmIHRoaXMucXVlcmllcy5sb2FkQWxsV2l0aFRvdGFsICYmIHRydWU7XG4gICAgY29uc3QgcXVlcnkgPSAob3B0cyAmJiBvcHRzLnF1ZXJ5KSAvLyB1c2UgZ2l2ZW4gcXVlcnlcbiAgICAgIC8vIE9yIGdldCBsb2FkQWxsIG9yIGxvYWRBbGxXaXRoVG90YWwgcXVlcnlcbiAgICAgIHx8ICh3aXRoVG90YWwgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCAgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCk7XG4gICAgY29uc3Qge2RhdGEsIHRvdGFsfSA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTxMb2FkUmVzdWx0PGFueT4+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfREFUQV9FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZW50aXRpZXMgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpID9cbiAgICAgIChkYXRhIHx8IFtdKS5tYXAoanNvbiA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpIDpcbiAgICAgIChkYXRhIHx8IFtdKSBhcyBUW107XG4gICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBpdGVtcyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IExvYWRSZXN1bHQ8VD4gPSB7XG4gICAgICBkYXRhOiBlbnRpdGllcyxcbiAgICAgIHRvdGFsOiB0b3RhbCB8fCBlbnRpdGllcy5sZW5ndGhcbiAgICB9O1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgICBpZiAod2l0aFRvdGFsKSB7XG4gICAgICBjb25zdCBuZXh0T2Zmc2V0ID0gKG9mZnNldCB8fCAwKSArIGVudGl0aWVzLmxlbmd0aDtcbiAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzdWx0LnRvdGFsKSB7XG4gICAgICAgIHJlc3VsdC5mZXRjaE1vcmUgPSAoKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBjb3VudEFsbChmaWx0ZXI/OiBQYXJ0aWFsPEY+LCBvcHRzPzogTE8pIHtcbiAgICAvLyBJZiBubyBjb3VudEFsbCBxdWVyeVxuICAgIGlmICghdGhpcy5xdWVyaWVzLmNvdW50QWxsKSB7XG4gICAgICAvLyBGYWlsIGlmIG5vIGxvYWRBbGwgKGNhbm5vdCBjb3VudClcbiAgICAgIGlmICghdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG5cbiAgICAgIC8vIFVzZSBsb2FkQWxsIHF1ZXJ5LCB3aXRoIHNpemUgPSAwO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxvYWRBbGwoMCwgMSwgbnVsbCwgbnVsbCwgZmlsdGVyLFxuICAgICAgICA8TE8gJiB7IHdpdGhUb3RhbDogYm9vbGVhbjsgfT57d2l0aFRvdGFsOiB0cnVlfSkpPy50b3RhbCB8fCAwO1xuICAgIH1cblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXI7fT4oe1xuICAgICAgcXVlcnk6IHRoaXMucXVlcmllcy5jb3VudEFsbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBmaWx0ZXI6IGZpbHRlciAmJiBmaWx0ZXIuYXNQb2RPYmplY3QoKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5DT1VOVF9EQVRBX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGNhblVzZXJXcml0ZShkYXRhOiBULCBvcHRzPzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IFRbXSwgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGVudGl0aWVzKSkgcmV0dXJuIGVudGl0aWVzOyAvLyBOb3RoaW5nIHRvIHNhdmU6IHNraXBcblxuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgLy8gU2F2ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pXG4gICAgICAgIC5tYXAoZW50aXR5ID0+ICgoKSA9PiB0aGlzLnNhdmUoZW50aXR5LCBvcHRzKSkpKTtcbiAgICB9XG5cbiAgICBsZXQgaGFzTmV3RW50aXRpZXMgPSBmYWxzZTtcbiAgICBjb25zdCBqc29uID0gZW50aXRpZXMubWFwKGVudGl0eSA9PiB7XG4gICAgICBoYXNOZXdFbnRpdGllcyA9IGhhc05ld0VudGl0aWVzIHx8IHRoaXMuaXNOZXdGbihlbnRpdHkpO1xuICAgICAgdGhpcy5maWxsRGVmYXVsdFByb3BlcnRpZXMoZW50aXR5KTtcbiAgICAgIHJldHVybiB0aGlzLmFzT2JqZWN0KGVudGl0eSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgU2F2aW5nIGFsbCAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGpzb24pO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxMb2FkUmVzdWx0PGFueT4+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5zYXZlQWxsLFxuICAgICAgcmVmZXRjaFF1ZXJpZXM6IHRoaXMuZ2V0UmVmZXRjaFF1ZXJpZXNGb3JNdXRhdGlvbihvcHRzKSxcbiAgICAgIGF3YWl0UmVmZXRjaFF1ZXJpZXM6IG9wdHMgJiYgb3B0cy5hd2FpdFJlZmV0Y2hRdWVyaWVzLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb25cbiAgICAgIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuU0FWRV9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuU0FWRV9EQVRBX0VSUk9SJ30sXG4gICAgICB1cGRhdGU6IChwcm94eSwge2RhdGF9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXRpZXMgPSBkYXRhICYmIGRhdGEuZGF0YTtcbiAgICAgICAgaWYgKHNhdmVkRW50aXRpZXMpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgZW50aXRpZXMgKGlkIGFuZCB1cGRhdGUgZGF0ZSlcbiAgICAgICAgICBlbnRpdGllcy5mb3JFYWNoKGVudGl0eSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IHNhdmVkRW50aXRpZXMuZmluZChlID0+IHRoaXMuZXF1YWxzRm4oZSwgZW50aXR5KSk7XG4gICAgICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoaGFzTmV3RW50aXRpZXMgJiYgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlXG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhwcm94eSwge1xuICAgICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICAgIGRhdGE6IHNhdmVkRW50aXRpZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUocHJveHksIHtkYXRhfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nVHlwZU5hbWV9IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0aWVzKTtcblxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSByZWZlcmVudGlhbCBlbnRpdHlcbiAgICpcbiAgICogQHBhcmFtIGVudGl0eVxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZSkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlQWxsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2F2ZUFsbChbZW50aXR5XSwgb3B0cyk7XG4gICAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICAgIH1cblxuICAgIC8vIEZpbGwgZGVmYXVsdCBwcm9wZXJ0aWVzXG4gICAgdGhpcy5maWxsRGVmYXVsdFByb3BlcnRpZXMoZW50aXR5KTtcblxuICAgIC8vIFRyYW5zZm9ybSBpbnRvIGpzb25cbiAgICBjb25zdCBqc29uID0gdGhpcy5hc09iamVjdChlbnRpdHkpO1xuXG4gICAgY29uc3QgaXNOZXcgPSB0aGlzLmlzTmV3Rm4oanNvbik7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgU2F2aW5nICR7dGhpcy5fbG9nVHlwZU5hbWV9Li4uYCwganNvbik7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHtkYXRhOiBhbnl9Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZSxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLlNBVkVfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLlNBVkVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUsIHtkYXRhfSkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgZW50aXR5XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcblxuICAgICAgICAvLyBJbnNlcnQgaW50byB0aGUgY2FjaGVcbiAgICAgICAgaWYgKGlzTmV3ICYmIHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKGNhY2hlLCB7XG4gICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICBkYXRhOiBzYXZlZEVudGl0eVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy51cGRhdGUpIHtcbiAgICAgICAgICBvcHRzLnVwZGF0ZShjYWNoZSwge2RhdGF9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHtlbnRpdHkuX190eXBlbmFtZX0gc2F2ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCwgZW50aXR5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHJlZmVyZW50aWFsIGVudGl0aWVzXG4gICAqL1xuICBhc3luYyBkZWxldGVBbGwoZW50aXRpZXM6IFRbXSwgb3B0cz86IFBhcnRpYWw8e1xuICAgIHVwZGF0ZTogTXV0YXRpb25VcGRhdGVyRm48YW55PjtcbiAgfT4gfCBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlQWxsKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIC8vIERlbGV0ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pXG4gICAgICAgIC5tYXAoZW50aXR5ID0+ICgoKSA9PiB0aGlzLmRlbGV0ZShlbnRpdHksIG9wdHMpKSkpO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBzYXZlZCBlbnRpdGllc1xuICAgIGVudGl0aWVzID0gZW50aXRpZXMgJiYgZW50aXRpZXMuZmlsdGVyKGUgPT4gaXNOb3ROaWwoZS5pZCkpO1xuXG4gICAgLy8gTm90aGluZyB0byBzYXZlOiBza2lwXG4gICAgaWYgKGlzRW1wdHlBcnJheShlbnRpdGllcykpIHJldHVybjtcblxuICAgIGNvbnN0IGlkcyA9IGVudGl0aWVzLm1hcCh0ID0+IHQuaWQpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBEZWxldGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGlkcyk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczogeyBpZHMgfSxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5ERUxFVEVfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkRFTEVURV9EQVRBX0VSUk9SJ30sXG4gICAgICB1cGRhdGU6IChjYWNoZSwgcmVzKSA9PiB7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMoY2FjaGUsIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy51cGRhdGUpIHtcbiAgICAgICAgICBvcHRzLnVwZGF0ZShjYWNoZSwgcmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHt0aGlzLl9sb2dUeXBlTmFtZX0gZGVsZXRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSByZWZlcmVudGlhbCBlbnRpdHlcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyB8IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCF0aGlzLm11dGF0aW9ucy5kZWxldGUpIHtcbiAgICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlQWxsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZGVsZXRlQWxsKFtlbnRpdHldLCBvcHRzKTtcbiAgICAgIHJldHVybiBkYXRhICYmIGRhdGFbMF07XG4gICAgfVxuXG4gICAgLy8gTm90aGluZyB0byBzYXZlOiBza2lwXG4gICAgaWYgKCFlbnRpdHkgfHwgaXNOaWwoZW50aXR5LmlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaWQgPSBlbnRpdHkuaWQ7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYERlbGV0aW5nICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX0uLi5gKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuZGVsZXRlLFxuICAgICAgcmVmZXRjaFF1ZXJpZXM6IHRoaXMuZ2V0UmVmZXRjaFF1ZXJpZXNGb3JNdXRhdGlvbihvcHRzKSxcbiAgICAgIGF3YWl0UmVmZXRjaFF1ZXJpZXM6IG9wdHMgJiYgb3B0cy5hd2FpdFJlZmV0Y2hRdWVyaWVzLFxuICAgICAgdmFyaWFibGVzOiB7IGlkIH0sXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUid9LFxuICAgICAgdXBkYXRlOiAocHJveHksIHJlcykgPT4ge1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKHByb3h5LCB7XG4gICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICBpZHM6IFtpZF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUocHJveHksIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIG5vdy5nZXRUaW1lKCl9bXNgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoaWQ6IElELCBvcHRzPzoge1xuICAgIHF1ZXJ5PzogYW55O1xuICAgIHZhcmlhYmxlcz86IGFueTtcbiAgICBpbnRlcnZhbD86IG51bWJlcjtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICAgIHRvRW50aXR5PzogYm9vbGVhbjtcbiAgfSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChpc05pbChpZCkpIHRocm93IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFxcJ2lkXFwnICcpO1xuICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zLmxpc3RlbkNoYW5nZXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9Lmxpc3RlbkNoYW5nZXMoKSBub3QgaW1wbGVtZW50ZWQgeWV0LiBXaWxsIGVtcHR5IG9ic2VydmFibGVgKTtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IG9wdHM/LnZhcmlhYmxlcyB8fCB7XG4gICAgICBpZCxcbiAgICAgIGludGVydmFsOiB0b051bWJlcihvcHRzICYmIG9wdHMuaW50ZXJ2YWwsIDApIC8vIG5vIHRpbWVyIGJ5IGRlZmF1bHRcbiAgICB9O1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBMaXN0ZW5pbmcgZm9yIGNoYW5nZXMgb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5zdWJzY3JpYmU8e2RhdGE6IGFueX0+KHtcbiAgICAgIHF1ZXJ5OiBvcHRzPy5xdWVyeSB8fCB0aGlzLnN1YnNjcmlwdGlvbnMubGlzdGVuQ2hhbmdlcyxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzPy5mZXRjaFBvbGljeSB8fCAnbm8tY2FjaGUnLFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5TVUJTQ1JJQkVfREFUQV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNVQlNDUklCRV9EQVRBX0VSUk9SJ1xuICAgICAgfVxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7ZGF0YX0pID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSAoIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UpID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiBkYXRhO1xuICAgICAgICAgIC8vaWYgKGVudGl0eSAmJiB0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBSZWNlaXZlZCBjaGFuZ2VzIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX1gLCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gVE9ETzogbWlzc2luZyA9IGRlbGV0ZWQgP1xuICAgICAgICAgIGlmICghZW50aXR5KSBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgYFtXU10gUmVjZWl2ZWQgZGVsZXRpb24gb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fSAtIFRPRE8gY2hlY2sgaW1wbGVtZW50YXRpb25gKTtcblxuICAgICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IFQsIHRhcmdldDogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgKGlkIGFuZCB1cGRhdGVEYXRlKVxuICAgIEVudGl0eVV0aWxzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlLCB0YXJnZXQpO1xuICB9XG5cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KTogVCB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiBzb3VyY2U7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IHRoaXMuZGF0YVR5cGUoKTtcbiAgICB0YXJnZXQuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBhc0ZpbHRlcihzb3VyY2U6IGFueSk6IEYge1xuICAgIHJldHVybiBFbnRpdHlGaWx0ZXJVdGlscy5mcm9tT2JqZWN0KHNvdXJjZSwgdGhpcy5maWx0ZXJUeXBlKTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBmdW5jdGlvbnMgLS0gKi9cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCkge1xuICAgIC8vIE5vIGxpbWl0IGZvciB1cGRhdGFibGUgd2F0Y2ggcXVlcmllcywgaWYgZGVza3RvcFxuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5tb2JpbGUpIHtcbiAgICAgIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxsRGVmYXVsdFByb3BlcnRpZXMoc291cmNlOiBUKSB7XG4gICAgLy8gQ2FuIGJlIG92ZXJyaWRlIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhc09iamVjdChlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzXG4gICAgcmV0dXJuIGVudGl0eS5hc09iamVjdChvcHRzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6ICgocmVzdWx0OiBGZXRjaFJlc3VsdDx7ZGF0YTogYW55fT4pID0+IEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlKSB8IEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlIHtcbiAgICBpZiAob3B0cyAmJiBvcHRzLnJlZmV0Y2hRdWVyaWVzKSByZXR1cm4gb3B0cy5yZWZldGNoUXVlcmllcztcblxuICAgIC8vIFNraXAgaWYgdXBkYXRlIHBvbGljeSBub3QgdXNlZCByZWZlY3RoIHF1ZXJpZXNcbiAgICBpZiAodGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgIT09ICdyZWZldGNoLXF1ZXJpZXMnKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkOyAvLyBTa2lwIGlmIGVtcHR5XG5cbiAgICAvLyBGaW5kIHRoZSByZWZldGNoIHF1ZXJpZXMgZGVmaW5pdGlvblxuICAgIHJldHVybiB0aGlzLmZpbmRSZWZldGNoUXVlcmllcyh7cXVlcmllc30pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExvYWRRdWVyaWVzKCk6IERvY3VtZW50Tm9kZVtdIHtcbiAgICByZXR1cm4gW3RoaXMucXVlcmllcy5sb2FkQWxsLCB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbF0uZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxuXG59XG4iXX0=
@@ -3,9 +3,9 @@ import { isNotEmptyArray, isNotNil, toBoolean } from '../../shared/functions';
3
3
  import { environment } from '../../../environments/environment';
4
4
  import { Directive, Optional } from '@angular/core';
5
5
  import { StartableService } from '../../shared/services/startable-service.class';
6
+ import { CryptoService } from './crypto.service';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../graphql/graphql.service";
8
- const sha256 = require('hash.js/lib/hash/sha/256');
9
9
  export class BaseGraphqlServiceOptions {
10
10
  }
11
11
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -78,7 +78,7 @@ export class BaseGraphqlService extends StartableService {
78
78
  queries.forEach(query => {
79
79
  if (Array.isArray(opts.data)) {
80
80
  // Filter values, if a filter function exists
81
- const data = query.insertFilterFn ? opts.data.filter(i => query.insertFilterFn(i)) : opts.data;
81
+ const data = query.insertFilterFn ? opts.data.filter(d => query.insertFilterFn(d)) : opts.data;
82
82
  if (isNotEmptyArray(data)) {
83
83
  if (this._debug)
84
84
  console.debug(`[base-data-service] Inserting data into watching query: `, query.id);
@@ -154,8 +154,8 @@ export class BaseGraphqlService extends StartableService {
154
154
  }
155
155
  /* -- protected methods -- */
156
156
  computeMutableWatchQueryId(opts) {
157
- const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
158
- const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
157
+ const queryName = opts.queryName || CryptoService.sha256(JSON.stringify(opts.query)).substring(0, 8);
158
+ const variablesKey = opts.variables && CryptoService.sha256(JSON.stringify(opts.variables)).substring(0, 8) || '';
159
159
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
160
160
  }
161
161
  findMutableWatchQueries(opts) {
@@ -209,11 +209,11 @@ export class BaseGraphqlService extends StartableService {
209
209
  return Promise.resolve(null);
210
210
  }
211
211
  }
212
- BaseGraphqlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BaseGraphqlService, deps: [{ token: i1.GraphqlService }, { token: BaseGraphqlServiceOptions, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
213
- BaseGraphqlService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: BaseGraphqlService, usesInheritance: true, ngImport: i0 });
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BaseGraphqlService, decorators: [{
212
+ BaseGraphqlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BaseGraphqlService, deps: [{ token: i1.GraphqlService }, { token: BaseGraphqlServiceOptions, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
213
+ BaseGraphqlService.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: BaseGraphqlService, usesInheritance: true, ngImport: i0 });
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BaseGraphqlService, decorators: [{
215
215
  type: Directive
216
216
  }], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: BaseGraphqlServiceOptions, decorators: [{
217
217
  type: Optional
218
218
  }] }]; } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBRS9FLE1BQU0sTUFBTSxHQUFJLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBOENwRCxNQUFNLE9BQU8seUJBQXlCO0NBRXJDO0FBR0Qsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0Isa0JBQXlELFNBQVEsZ0JBQW1CO0lBV3hHLFlBQ1ksT0FBdUIsRUFDckIsT0FBbUM7UUFFL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSEwsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFUekIseUJBQW9CLEdBQXdDLEVBQUUsQ0FBQztRQUV6RSx3Q0FBd0M7UUFDeEMsbURBQW1EO1FBQ25ELGlDQUFpQztRQUNqQyw2R0FBNkc7UUFDbkcsaUNBQTRCLEdBQUcsQ0FBQyxDQUFDO1FBUXpDLGVBQWU7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQXlCLENBQUM7SUFDOUMsQ0FB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QVM7OzBCQWVMLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0dyYXBocWxTZXJ2aWNlLCBNdXRhdGVRdWVyeU9wdGlvbnMsIFdhdGNoUXVlcnlPcHRpb25zfSBmcm9tICcuLi9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0VtcHR5T2JqZWN0fSBmcm9tICdhcG9sbG8tYW5ndWxhci90eXBlcyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGZXRjaFJlc3VsdH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9jb3JlJztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7QXBvbGxvQ2FjaGUsIEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7aXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7ZW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtRdWVyeVJlZn0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHtQdXJlUXVlcnlPcHRpb25zfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzJztcbmltcG9ydCB7RG9jdW1lbnROb2RlfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7U3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcblxuY29uc3Qgc2hhMjU2ID0gIHJlcXVpcmUoJ2hhc2guanMvbGliL2hhc2gvc2hhLzI1NicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VmFyaWFibGVzPEY9IGFueT4gZXh0ZW5kcyBQYXJ0aWFsPFBhZ2U+IHtcbiAgZmlsdGVyPzogRjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVF1ZXJ5V2l0aENhY2hlVXBkYXRlT3B0aW9uczxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFY+IHtcbiAgY2FjaGVJbnNlcnQ/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaERhdGE6ICh2YXJpYWJsZXM6IFYsIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4gYW55O1xuICB9W107XG5cbiAgY2FjaGVSZW1vdmU/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaElkczogKHZhcmlhYmxlczogVikgPT4gbnVtYmVyIHwgbnVtYmVyW107XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFdhdGNoUXVlcnlPcHRpb25zPFY+IHtcbiAgcXVlcnlOYW1lOiBzdHJpbmc7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQgO1xuICBpbnNlcnRGaWx0ZXJGbj86IChkYXRhOiBUKSA9PiBib29sZWFuO1xuICBzb3J0Rm4/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFB1cmVRdWVyeU9wdGlvbnMge1xuICBpZD86IHN0cmluZztcbiAgcXVlcnk6IERvY3VtZW50Tm9kZTtcbiAgcXVlcnlSZWY6IFF1ZXJ5UmVmPEQsIFY+O1xuICB2YXJpYWJsZXM6IFY7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQ7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFQpID0+IGJvb2xlYW47XG4gIHNvcnRGbj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG4gIGNvdW50ZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMge1xuICBxdWVyeT86IERvY3VtZW50Tm9kZTtcbiAgcXVlcmllcz86IERvY3VtZW50Tm9kZVtdO1xuICBxdWVyeU5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMge1xuICBwcm9kdWN0aW9uPzogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCA9IGFueSwgRiA9IGFueSwgSUQgPSBhbnksIFMgPSB2b2lkPiBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8Uz4ge1xuXG4gIHByb3RlY3RlZCBfbG9nUHJlZml4OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfbXV0YWJsZVdhdGNoUXVlcmllczogTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxhbnk+W10gPSBbXTtcblxuICAvLyBNYXggdXBkYXRlZCBxdWVyaWVzLCBmb3IgdGhpcyBlbnRpdHkuXG4gIC8vIC0gQ2FuIGJlIG92ZXJyaWRlIGJ5IHN1YmNsYXNzZXMgKGluIGNvbnN0cnVjdG9yKVxuICAvLyAtIFVzZSB2YWx1ZSAtMSBmb3Igbm8gbWF4IHNpemVcbiAgLy8gLSBEZWZhdWx0IHZhbHVlIHRvIDMsIGJlY2F1c2UgaXQgdXN1YWxseSBlbm91Z2ggKGUuZy4gT3BlcmF0aW9uU2VydmljZSBhbmQgTGFuZGluZ1NlcnZpY2UgbmVlZCBhdCBsZWFzdCAyKVxuICBwcm90ZWN0ZWQgX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCA9IDM7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBvcHRpb25zPzogQmFzZUdyYXBocWxTZXJ2aWNlT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihncmFwaHFsKTtcblxuICAgIC8vIGZvciBERVYgb25seVxuICAgIHRoaXMuX2RlYnVnID0gdG9Cb29sZWFuKG9wdGlvbnMgJiYgIW9wdGlvbnMucHJvZHVjdGlvbiwgIWVudmlyb25tZW50LnByb2R1Y3Rpb24pO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9IGBbYmFzZS1ncmFwaHFsLXNlcnZpY2VdIGA7XG4gIH1cblxuICBtdXRhYmxlV2F0Y2hRdWVyeTxELCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IE11dGFibGVXYXRjaFF1ZXJ5T3B0aW9uczxELCBULCBWPik6IE9ic2VydmFibGU8RD4ge1xuICAgIG9wdHMuZmV0Y2hQb2xpY3kgPSBvcHRzLmZldGNoUG9saWN5IHx8IHRoaXMuZ3JhcGhxbC5kZWZhdWx0RmV0Y2hQb2xpY3k7XG5cbiAgICAvLyBTdGFuZGFyZCBxdWVyeSAobm8gY2FjaGUpXG4gICAgaWYgKG9wdHMuZmV0Y2hQb2xpY3kgPT09ICduby1jYWNoZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyYXBocWwud2F0Y2hRdWVyeShvcHRzKTtcbiAgICB9XG5cbiAgICAvLyBObyBhcnJheUZpZWxkTmFtZVxuICAgIGlmICghb3B0cy5hcnJheUZpZWxkTmFtZSkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgJ8yATWlzc2luZyBcXCdvcHRzLmFycmF5RmllbGROYW1lXFwnIDogdW5hYmxlIHRvIGNyZWF0ZSBhIG11dGFibGUgd2F0Y2ggcXVlcnknKTtcbiAgICAgIHJldHVybiB0aGlzLmdyYXBocWwud2F0Y2hRdWVyeShvcHRzKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHF1ZXJ5IGlkXG4gICAgY29uc3QgcXVlcnlJZCA9IHRoaXMuY29tcHV0ZU11dGFibGVXYXRjaFF1ZXJ5SWQob3B0cyk7XG4gICAgY29uc3QgZXhhY3RNYXRjaFF1ZXJpZXMgPSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcihxID0+IHEuaWQgPT09IHF1ZXJ5SWQpO1xuXG4gICAgbGV0IG11dGFibGVRdWVyeTogTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxELCBULCBWPjtcbiAgICBsZXQgcXVlcnlSZWY6IFF1ZXJ5UmVmPEQsIFY+O1xuXG4gICAgaWYgKGV4YWN0TWF0Y2hRdWVyaWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgbXV0YWJsZVF1ZXJ5ID0gZXhhY3RNYXRjaFF1ZXJpZXNbMF0gYXMgTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxELCBULCBWPjtcbiAgICAgIG11dGFibGVRdWVyeS5jb3VudGVyICs9IDE7XG4gICAgICBxdWVyeVJlZiA9IG11dGFibGVRdWVyeS5xdWVyeVJlZjtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgRmluZCBzYW1lIG11dGFibGUgd2F0Y2ggcXVlcnkgKHNhbWUgdmFyaWFibGVzKSB7JHtxdWVyeUlkfX0uIFNraXAgcmVnaXN0ZXJgKTtcblxuICAgICAgLy8gUmVmZXRjaCBpZiBuZWVkIGRhdGEgZnJvbSBuZXR3b3JrXG4gICAgICBpZiAob3B0cy5mZXRjaFBvbGljeSA9PT0gJ25ldHdvcmstb25seScgfHwgb3B0cy5mZXRjaFBvbGljeSA9PT0gJ2NhY2hlLWFuZC1uZXR3b3JrJykge1xuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgJyBNdXRhYmxlIHF1ZXJ5IGFscmVhZHkgZXhpc3RzLCBhbmQgZmV0Y2hQb2xpY3k9JyArIG9wdHMuZmV0Y2hQb2xpY3kgKyAnLiBGb3JjZSByZWZldGNoIHF1ZXJ5Li4uJyk7XG4gICAgICAgIHF1ZXJ5UmVmLnJlZmV0Y2gobXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcyk7XG4gICAgICB9XG4gICAgICAvL2lmIChtdXRhYmxlUXVlcnkuY291bnRlciA+IDMpIHtcbiAgICAgIC8vICBjb25zb2xlLndhcm4odGhpcy5fZGVidWdQcmVmaXggKyAnVE9ETzogY2xlYW4gcHJldmlvdXMgcXVlcmllcyB3aXRoIG5hbWU6ICcgKyBxdWVyeU5hbWUpO1xuICAgICAgLy99XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcXVlcnlSZWYgPSB0aGlzLmdyYXBocWwud2F0Y2hRdWVyeVJlZjxELCBWPihvcHRzKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJOZXdNdXRhYmxlV2F0Y2hRdWVyeSh7XG4gICAgICAgIGlkOiBxdWVyeUlkLFxuICAgICAgICBxdWVyeTogb3B0cy5xdWVyeSxcbiAgICAgICAgcXVlcnlSZWYsXG4gICAgICAgIHZhcmlhYmxlczogb3B0cy52YXJpYWJsZXMsXG4gICAgICAgIGFycmF5RmllbGROYW1lOiBvcHRzLmFycmF5RmllbGROYW1lLFxuICAgICAgICB0b3RhbEZpZWxkTmFtZTogb3B0cy50b3RhbEZpZWxkTmFtZSxcbiAgICAgICAgaW5zZXJ0RmlsdGVyRm46IG9wdHMuaW5zZXJ0RmlsdGVyRm4sXG4gICAgICAgIHNvcnRGbjogb3B0cy5zb3J0Rm4sXG4gICAgICAgIGNvdW50ZXI6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKTtcbiAgfVxuXG4gIGluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZTogQXBvbGxvQ2FjaGU8YW55Piwgb3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYge1xuICAgIGRhdGE6IFRbXSB8IFQ7XG4gIH0pIHtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSAgcmV0dXJuO1xuXG4gICAgcXVlcmllcy5mb3JFYWNoKHF1ZXJ5ID0+IHtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRzLmRhdGEpKSB7XG4gICAgICAgICAgLy8gRmlsdGVyIHZhbHVlcywgaWYgYSBmaWx0ZXIgZnVuY3Rpb24gZXhpc3RzXG4gICAgICAgICAgY29uc3QgZGF0YSA9IHF1ZXJ5Lmluc2VydEZpbHRlckZuID8gb3B0cy5kYXRhLmZpbHRlcihpID0+IHF1ZXJ5Lmluc2VydEZpbHRlckZuKGkpKSA6IG9wdHMuZGF0YTtcbiAgICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtiYXNlLWRhdGEtc2VydmljZV0gSW5zZXJ0aW5nIGRhdGEgaW50byB3YXRjaGluZyBxdWVyeTogYCwgcXVlcnkuaWQpO1xuICAgICAgICAgICAgdGhpcy5ncmFwaHFsLmFkZE1hbnlUb1F1ZXJ5Q2FjaGUoY2FjaGUsIHtcbiAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHF1ZXJ5LmFycmF5RmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgc29ydEZuOiBxdWVyeS5zb3J0Rm4sXG4gICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGaWx0ZXIgdmFsdWUsIGlmIGEgZmlsdGVyIGZ1bmN0aW9uIGV4aXN0c1xuICAgICAgICBlbHNlIGlmICghcXVlcnkuaW5zZXJ0RmlsdGVyRm4gfHwgcXVlcnkuaW5zZXJ0RmlsdGVyRm4ob3B0cy5kYXRhKSkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBJbnNlcnRpbmcgZGF0YSBpbnRvIHdhdGNoaW5nIHF1ZXJ5OiBgLCBxdWVyeS5pZCk7XG4gICAgICAgICAgdGhpcy5ncmFwaHFsLmluc2VydEludG9RdWVyeUNhY2hlKGNhY2hlLCB7XG4gICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFycmF5RmllbGROYW1lOiBxdWVyeS5hcnJheUZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgc29ydEZuOiBxdWVyeS5zb3J0Rm4sXG4gICAgICAgICAgICBkYXRhOiBvcHRzLmRhdGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICByZW1vdmVGcm9tTXV0YWJsZUNhY2hlZFF1ZXJpZXNCeUlkcyhjYWNoZTogQXBvbGxvQ2FjaGU8YW55Piwgb3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYge1xuICAgIGlkczogSUR8SURbXTtcbiAgfSk6IG51bWJlciB7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBSZW1vdmluZyBkYXRhIGZyb20gd2F0Y2hpbmcgcXVlcmllczogYCwgcXVlcmllcyk7XG4gICAgcmV0dXJuIHF1ZXJpZXMubWFwKHF1ZXJ5ID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuaWRzKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLnJlbW92ZUZyb21DYWNoZWRRdWVyeUJ5SWRzKGNhY2hlLCB7XG4gICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgIGFycmF5RmllbGROYW1lOiBxdWVyeS5hcnJheUZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICBpZHM6IG9wdHMuaWRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXBocWwucmVtb3ZlRnJvbUNhY2hlZFF1ZXJ5QnlJZChjYWNoZSwge1xuICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgaWRzOiBvcHRzLmlkc1xuICAgICAgICB9KSA/IDEgOiAwO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gU3VtXG4gICAgLnJlZHVjZSgocmVzLCBjb3VudCkgPT4gcmVzICsgY291bnQsIDApO1xuICB9XG5cbiAgYXN5bmMgcmVmZXRjaE11dGFibGVXYXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYgeyB2YXJpYWJsZXM/OiBhbnkgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJldHJpZXZlIHF1ZXJpZXMgdG8gcmVmZXRjaFxuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuXG4gICAgLy8gU2tpcCBpZiBub3RoaW5nIHRvIHJlZmV0Y2hcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocXVlcmllcy5tYXAocXVlcnkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFJlZmV0Y2hpbmcgbXV0YWJsZSB3YXRjaCBxdWVyeSB7JHtxdWVyeS5pZH19YCk7XG4gICAgICAgIHJldHVybiBxdWVyeS5xdWVyeVJlZi5yZWZldGNoKHsuLi5xdWVyeS52YXJpYWJsZXMsIC4uLm9wdHMudmFyaWFibGVzfSk7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5fbG9nUHJlZml4ICsgJ0Vycm9yIHdoaWxlIHJlZmV0Y2hpbmcgbXV0YWJsZSB3YXRjaCBxdWVyaWVzJywgZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBjb21wdXRlTXV0YWJsZVdhdGNoUXVlcnlJZDxELCBULCBWID0gRW1wdHlPYmplY3Q+KG9wdHM6IE11dGFibGVXYXRjaFF1ZXJ5T3B0aW9uczxELCBULCBWPikge1xuICAgIGNvbnN0IHF1ZXJ5TmFtZSA9IG9wdHMucXVlcnlOYW1lIHx8IHNoYTI1NigpLnVwZGF0ZShKU09OLnN0cmluZ2lmeShvcHRzLnF1ZXJ5KSkuZGlnZXN0KCdoZXgnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgY29uc3QgdmFyaWFibGVzS2V5ID0gb3B0cy52YXJpYWJsZXMgJiYgc2hhMjU2KCkudXBkYXRlKEpTT04uc3RyaW5naWZ5KG9wdHMudmFyaWFibGVzKSkuZGlnZXN0KCdoZXgnKS5zdWJzdHJpbmcoMCwgOCkgfHwgJyc7XG4gICAgcmV0dXJuIFtxdWVyeU5hbWUsIG9wdHMuYXJyYXlGaWVsZE5hbWUsIHZhcmlhYmxlc0tleV0uam9pbignfCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55PltdIHtcbiAgICAvLyBTZWFyY2ggYnkgcXVlcnlOYW1lXG4gICAgaWYgKG9wdHMucXVlcnlOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIocSA9PiBxLmlkLnN0YXJ0c1dpdGgob3B0cy5xdWVyeU5hbWUgKyAnfCcpKTtcbiAgICB9XG4gICAgaWYgKG9wdHMucXVlcnlOYW1lcykge1xuICAgICAgcmV0dXJuIG9wdHMucXVlcnlOYW1lcy5tYXAocXVlcnlOYW1lID0+IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5pZC5zdGFydHNXaXRoKHF1ZXJ5TmFtZSArICd8JykpKVxuICAgICAgICAvLyBmbGF0TWFwXG4gICAgICAgIC5yZWR1Y2UoKHJlcywgYXJyYXkpID0+IHJlcy5jb25jYXQoLi4uYXJyYXkpLCBbXSk7XG4gICAgfVxuXG4gICAgLy8gU2VhcmNoIGJ5IHF1ZXJ5XG4gICAgaWYgKG9wdHMucXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcihxID0+IHEucXVlcnkgPT09IG9wdHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAob3B0cy5xdWVyaWVzKSB7XG4gICAgICByZXR1cm4gb3B0cy5xdWVyaWVzXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgIC5tYXAocXVlcnkgPT4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIocSA9PiBxLnF1ZXJ5ID09PSBxdWVyeSkpXG4gICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgLnJlZHVjZSgocmVzLCBhcnJheSkgPT4gcmVzLmNvbmNhdCguLi5hcnJheSksIFtdKTtcbiAgICB9XG4gICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgb3B0aW9uczogb25seSBvbmUgcHJvcGVydHkgbXVzdCBiZSBzZXQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3Rlck5ld011dGFibGVXYXRjaFF1ZXJ5KG11dGFibGVRdWVyeTogTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxhbnk+KSB7XG5cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFJlZ2lzdGVyIG5ldyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske211dGFibGVRdWVyeS5pZH19YCk7XG5cbiAgICAvLyBJZiBleGNlZWQgdGhlIG1heCBzaXplIG9mIG11dGFibGUgcXVlcmllczogcmVtb3ZlIHNvbWVcbiAgICBpZiAodGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50ID4gMCAmJiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmxlbmd0aCA+PSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRXYXRjaFF1ZXJpZXMgPSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnNwbGljZSgwLCAxICsgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5sZW5ndGggLSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpO1xuXG4gICAgICAvLyBXYXJuLCBhcyBpdCBzaG91bGRuJ3QgYmUgaGFwcGVuIG9mdGVuLCB3aGVuIG1heCBpcyBjb3JyZWN0bHkgc2V0XG4gICAgICBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgYFJlbW92aW5nIG9sZGVyIG11dGFibGUgd2F0Y2hpbmcgcXVlcmllcyAoc3RhY2sgZXhjZWVkIG1heCBvZiAke3RoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudH0pOiBgLFxuICAgICAgICByZW1vdmVkV2F0Y2hRdWVyaWVzLm1hcChxID0+IHEuaWQpKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHNvcnQgZnVuY3Rpb24gKHRvIGJlIHVzZWQgaW4gaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyeSgpKVxuICAgIGlmICghbXV0YWJsZVF1ZXJ5LnNvcnRGbiAmJiBtdXRhYmxlUXVlcnkudmFyaWFibGVzICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5KSB7XG4gICAgICBtdXRhYmxlUXVlcnkuc29ydEZuID0gbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcyAmJiBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnRCeVxuICAgICAgJiYgRW50aXR5VXRpbHMuc29ydENvbXBhcmF0b3IobXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnksIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydERpcmVjdGlvbiB8fCAnYXNjJyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBuZXcgbXV0YWJsZSBxdWVyeSB0byBhcnJheVxuICAgIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMucHVzaChtdXRhYmxlUXVlcnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbmRSZWZldGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMpOiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cylcbiAgICAgIC8vIFdvcmthcm91bmQsIHRvIG1ha2UgcmVmZXRjaCBxdWVyaWVzIHdvcmtzOiB0cmFuc2Zvcm0gaW50byBhIHNpbXBsZSB7cXVlcnksIHZhcmlhYmxlc31cbiAgICAgIC5tYXAoKHtxdWVyeSwgdmFyaWFibGVzfSkgPT4ge1xuICAgICAgICByZXR1cm4geyBxdWVyeSwgdmFyaWFibGVzIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RhcnQoKTogUHJvbWlzZTxTPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsIGFzIFMpO1xuICB9XG59XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7OztBQThDL0MsTUFBTSxPQUFPLHlCQUF5QjtDQUVyQztBQUdELGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLGtCQUF5RCxTQUFRLGdCQUFtQjtJQVd4RyxZQUNZLE9BQXVCLEVBQ3JCLE9BQW1DO1FBRS9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhMLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBVHpCLHlCQUFvQixHQUF3QyxFQUFFLENBQUM7UUFFekUsd0NBQXdDO1FBQ3hDLG1EQUFtRDtRQUNuRCxpQ0FBaUM7UUFDakMsNkdBQTZHO1FBQ25HLGlDQUE0QixHQUFHLENBQUMsQ0FBQztRQVF6QyxlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsVUFBVSxHQUFHLHlCQUF5QixDQUFDO0lBQzlDLENBQUM7SUFF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UXVlcnlPcHRpb25zLCBXYXRjaFF1ZXJ5T3B0aW9uc30gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtFbXB0eU9iamVjdH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvdHlwZXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmV0Y2hSZXN1bHR9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQge0VudGl0eVV0aWxzfSBmcm9tICcuL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0Fwb2xsb0NhY2hlLCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZX0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge2lzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIHRvQm9vbGVhbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UXVlcnlSZWZ9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7UHVyZVF1ZXJ5T3B0aW9uc30gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZS90eXBlcyc7XG5pbXBvcnQge0RvY3VtZW50Tm9kZX0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQge1N0YXJ0YWJsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge1R5cGVkRG9jdW1lbnROb2RlfSBmcm9tICdAZ3JhcGhxbC10eXBlZC1kb2N1bWVudC1ub2RlL2NvcmUnO1xuaW1wb3J0IHtDcnlwdG9TZXJ2aWNlfSBmcm9tICcuL2NyeXB0by5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVZhcmlhYmxlczxGPSBhbnk+IGV4dGVuZHMgUGFydGlhbDxQYWdlPiB7XG4gIGZpbHRlcj86IEY7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhdGVRdWVyeVdpdGhDYWNoZVVwZGF0ZU9wdGlvbnM8VCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIE11dGF0ZVF1ZXJ5T3B0aW9uczxULCBWPiB7XG4gIGNhY2hlSW5zZXJ0Pzoge1xuICAgIHF1ZXJ5OiBhbnk7XG4gICAgZmV0Y2hEYXRhOiAodmFyaWFibGVzOiBWLCBtdXRhdGlvblJlc3VsdDogRmV0Y2hSZXN1bHQ8VD4pID0+IGFueTtcbiAgfVtdO1xuXG4gIGNhY2hlUmVtb3ZlPzoge1xuICAgIHF1ZXJ5OiBhbnk7XG4gICAgZmV0Y2hJZHM6ICh2YXJpYWJsZXM6IFYpID0+IG51bWJlciB8IG51bWJlcltdO1xuICB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQgPSBhbnksIFYgPSBFbXB0eU9iamVjdD4gZXh0ZW5kcyBXYXRjaFF1ZXJ5T3B0aW9uczxWPiB7XG4gIHF1ZXJ5TmFtZTogc3RyaW5nO1xuICBhcnJheUZpZWxkTmFtZToga2V5b2YgRDtcbiAgdG90YWxGaWVsZE5hbWU/OiBrZXlvZiBEIDtcbiAgaW5zZXJ0RmlsdGVyRm4/OiAoZGF0YTogVCkgPT4gYm9vbGVhbjtcbiAgc29ydEZuPzogKGE6IFQsIGI6IFQpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPFREYXRhLCBURW50aXR5Q2xhc3MgPSBhbnksIFRWYXJpYWJsZXMgPSBFbXB0eU9iamVjdD4gZXh0ZW5kcyBQdXJlUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiB7XG4gIGlkPzogc3RyaW5nO1xuICBxdWVyeTogRG9jdW1lbnROb2RlIHwgVHlwZWREb2N1bWVudE5vZGU8VERhdGEsIFRWYXJpYWJsZXM+O1xuICBxdWVyeVJlZjogUXVlcnlSZWY8VERhdGEsIFRWYXJpYWJsZXM+O1xuICB2YXJpYWJsZXM6IFRWYXJpYWJsZXM7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBURGF0YTtcbiAgdG90YWxGaWVsZE5hbWU/OiBrZXlvZiBURGF0YTtcbiAgaW5zZXJ0RmlsdGVyRm4/OiAoZGF0YTogVEVudGl0eUNsYXNzKSA9PiBib29sZWFuO1xuICBzb3J0Rm4/OiAoYTogVEVudGl0eUNsYXNzLCBiOiBURW50aXR5Q2xhc3MpID0+IG51bWJlcjtcbiAgY291bnRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyB7XG4gIHF1ZXJ5PzogRG9jdW1lbnROb2RlO1xuICBxdWVyaWVzPzogRG9jdW1lbnROb2RlW107XG4gIHF1ZXJ5TmFtZT86IHN0cmluZztcbiAgcXVlcnlOYW1lcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgQmFzZUdyYXBocWxTZXJ2aWNlT3B0aW9ucyB7XG4gIHByb2R1Y3Rpb24/OiBib29sZWFuO1xufVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VHcmFwaHFsU2VydmljZTxUID0gYW55LCBGID0gYW55LCBJRCA9IGFueSwgUyA9IHZvaWQ+IGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTxTPiB7XG5cbiAgcHJvdGVjdGVkIF9sb2dQcmVmaXg6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9tdXRhYmxlV2F0Y2hRdWVyaWVzOiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT5bXSA9IFtdO1xuXG4gIC8vIE1heCB1cGRhdGVkIHF1ZXJpZXMsIGZvciB0aGlzIGVudGl0eS5cbiAgLy8gLSBDYW4gYmUgb3ZlcnJpZGUgYnkgc3ViY2xhc3NlcyAoaW4gY29uc3RydWN0b3IpXG4gIC8vIC0gVXNlIHZhbHVlIC0xIGZvciBubyBtYXggc2l6ZVxuICAvLyAtIERlZmF1bHQgdmFsdWUgdG8gMywgYmVjYXVzZSBpdCB1c3VhbGx5IGVub3VnaCAoZS5nLiBPcGVyYXRpb25TZXJ2aWNlIGFuZCBMYW5kaW5nU2VydmljZSBuZWVkIGF0IGxlYXN0IDIpXG4gIHByb3RlY3RlZCBfbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50ID0gMztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIG9wdGlvbnM/OiBCYXNlR3JhcGhxbFNlcnZpY2VPcHRpb25zXG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwpO1xuXG4gICAgLy8gZm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSB0b0Jvb2xlYW4ob3B0aW9ucyAmJiAhb3B0aW9ucy5wcm9kdWN0aW9uLCAhZW52aXJvbm1lbnQucHJvZHVjdGlvbik7XG4gICAgdGhpcy5fbG9nUHJlZml4ID0gYFtiYXNlLWdyYXBocWwtc2VydmljZV0gYDtcbiAgfVxuXG4gIG11dGFibGVXYXRjaFF1ZXJ5PEQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQsIFY+KTogT2JzZXJ2YWJsZTxEPiB7XG4gICAgb3B0cy5mZXRjaFBvbGljeSA9IG9wdHMuZmV0Y2hQb2xpY3kgfHwgdGhpcy5ncmFwaHFsLmRlZmF1bHRGZXRjaFBvbGljeTtcblxuICAgIC8vIFN0YW5kYXJkIHF1ZXJ5IChubyBjYWNoZSlcbiAgICBpZiAob3B0cy5mZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5KG9wdHMpO1xuICAgIH1cblxuICAgIC8vIE5vIGFycmF5RmllbGROYW1lXG4gICAgaWYgKCFvcHRzLmFycmF5RmllbGROYW1lKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUud2Fybih0aGlzLl9sb2dQcmVmaXggKyAnzIBNaXNzaW5nIFxcJ29wdHMuYXJyYXlGaWVsZE5hbWVcXCcgOiB1bmFibGUgdG8gY3JlYXRlIGEgbXV0YWJsZSB3YXRjaCBxdWVyeScpO1xuICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5KG9wdHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcXVlcnkgaWRcbiAgICBjb25zdCBxdWVyeUlkID0gdGhpcy5jb21wdXRlTXV0YWJsZVdhdGNoUXVlcnlJZChvcHRzKTtcbiAgICBjb25zdCBleGFjdE1hdGNoUXVlcmllcyA9IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5pZCA9PT0gcXVlcnlJZCk7XG5cbiAgICBsZXQgbXV0YWJsZVF1ZXJ5OiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPEQsIFQsIFY+O1xuICAgIGxldCBxdWVyeVJlZjogUXVlcnlSZWY8RCwgVj47XG5cbiAgICBpZiAoZXhhY3RNYXRjaFF1ZXJpZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBtdXRhYmxlUXVlcnkgPSBleGFjdE1hdGNoUXVlcmllc1swXSBhcyBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPEQsIFQsIFY+O1xuICAgICAgbXV0YWJsZVF1ZXJ5LmNvdW50ZXIgKz0gMTtcbiAgICAgIHF1ZXJ5UmVmID0gbXV0YWJsZVF1ZXJ5LnF1ZXJ5UmVmO1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBGaW5kIHNhbWUgbXV0YWJsZSB3YXRjaCBxdWVyeSAoc2FtZSB2YXJpYWJsZXMpIHske3F1ZXJ5SWR9fS4gU2tpcCByZWdpc3RlcmApO1xuXG4gICAgICAvLyBSZWZldGNoIGlmIG5lZWQgZGF0YSBmcm9tIG5ldHdvcmtcbiAgICAgIGlmIChvcHRzLmZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5JyB8fCBvcHRzLmZldGNoUG9saWN5ID09PSAnY2FjaGUtYW5kLW5ldHdvcmsnKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9sb2dQcmVmaXggKyAnIE11dGFibGUgcXVlcnkgYWxyZWFkeSBleGlzdHMsIGFuZCBmZXRjaFBvbGljeT0nICsgb3B0cy5mZXRjaFBvbGljeSArICcuIEZvcmNlIHJlZmV0Y2ggcXVlcnkuLi4nKTtcbiAgICAgICAgcXVlcnlSZWYucmVmZXRjaChtdXRhYmxlUXVlcnkudmFyaWFibGVzKTtcbiAgICAgIH1cbiAgICAgIC8vaWYgKG11dGFibGVRdWVyeS5jb3VudGVyID4gMykge1xuICAgICAgLy8gIGNvbnNvbGUud2Fybih0aGlzLl9kZWJ1Z1ByZWZpeCArICdUT0RPOiBjbGVhbiBwcmV2aW91cyBxdWVyaWVzIHdpdGggbmFtZTogJyArIHF1ZXJ5TmFtZSk7XG4gICAgICAvL31cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBxdWVyeVJlZiA9IHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5UmVmPEQsIFY+KG9wdHMpO1xuICAgICAgdGhpcy5yZWdpc3Rlck5ld011dGFibGVXYXRjaFF1ZXJ5KHtcbiAgICAgICAgaWQ6IHF1ZXJ5SWQsXG4gICAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgICBxdWVyeVJlZixcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgYXJyYXlGaWVsZE5hbWU6IG9wdHMuYXJyYXlGaWVsZE5hbWUsXG4gICAgICAgIHRvdGFsRmllbGROYW1lOiBvcHRzLnRvdGFsRmllbGROYW1lLFxuICAgICAgICBpbnNlcnRGaWx0ZXJGbjogb3B0cy5pbnNlcnRGaWx0ZXJGbixcbiAgICAgICAgc29ydEZuOiBvcHRzLnNvcnRGbixcbiAgICAgICAgY291bnRlcjogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5xdWVyeVJlZlZhbHVlc0NoYW5nZXMocXVlcnlSZWYsIG9wdHMpO1xuICB9XG5cbiAgaW5zZXJ0SW50b011dGFibGVDYWNoZWRRdWVyaWVzKGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LCBvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7XG4gICAgZGF0YTogVFtdIHwgVDtcbiAgfSkge1xuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuICAgIGlmICghcXVlcmllcy5sZW5ndGgpICByZXR1cm47XG5cbiAgICBxdWVyaWVzLmZvckVhY2gocXVlcnkgPT4ge1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuZGF0YSkpIHtcbiAgICAgICAgICAvLyBGaWx0ZXIgdmFsdWVzLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgICAgICBjb25zdCBkYXRhID0gcXVlcnkuaW5zZXJ0RmlsdGVyRm4gPyBvcHRzLmRhdGEuZmlsdGVyKGQgPT4gcXVlcnkuaW5zZXJ0RmlsdGVyRm4oZCkpIDogb3B0cy5kYXRhO1xuICAgICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBJbnNlcnRpbmcgZGF0YSBpbnRvIHdhdGNoaW5nIHF1ZXJ5OiBgLCBxdWVyeS5pZCk7XG4gICAgICAgICAgICB0aGlzLmdyYXBocWwuYWRkTWFueVRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBzb3J0Rm46IHF1ZXJ5LnNvcnRGbixcbiAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEZpbHRlciB2YWx1ZSwgaWYgYSBmaWx0ZXIgZnVuY3Rpb24gZXhpc3RzXG4gICAgICAgIGVsc2UgaWYgKCFxdWVyeS5pbnNlcnRGaWx0ZXJGbiB8fCBxdWVyeS5pbnNlcnRGaWx0ZXJGbihvcHRzLmRhdGEpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIEluc2VydGluZyBkYXRhIGludG8gd2F0Y2hpbmcgcXVlcnk6IGAsIHF1ZXJ5LmlkKTtcbiAgICAgICAgICB0aGlzLmdyYXBocWwuaW5zZXJ0SW50b1F1ZXJ5Q2FjaGUoY2FjaGUsIHtcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHF1ZXJ5LmFycmF5RmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBzb3J0Rm46IHF1ZXJ5LnNvcnRGbixcbiAgICAgICAgICAgIGRhdGE6IG9wdHMuZGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LCBvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7XG4gICAgaWRzOiBJRHxJRFtdO1xuICB9KTogbnVtYmVyIHtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIFJlbW92aW5nIGRhdGEgZnJvbSB3YXRjaGluZyBxdWVyaWVzOiBgLCBxdWVyaWVzKTtcbiAgICByZXR1cm4gcXVlcmllcy5tYXAocXVlcnkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cy5pZHMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXBocWwucmVtb3ZlRnJvbUNhY2hlZFF1ZXJ5QnlJZHMoY2FjaGUsIHtcbiAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgYXJyYXlGaWVsZE5hbWU6IHF1ZXJ5LmFycmF5RmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIGlkczogb3B0cy5pZHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5yZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkKGNhY2hlLCB7XG4gICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgIGFycmF5RmllbGROYW1lOiBxdWVyeS5hcnJheUZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICBpZHM6IG9wdHMuaWRzXG4gICAgICAgIH0pID8gMSA6IDA7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBTdW1cbiAgICAucmVkdWNlKChyZXMsIGNvdW50KSA9PiByZXMgKyBjb3VudCwgMCk7XG4gIH1cblxuICBhc3luYyByZWZldGNoTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7IHZhcmlhYmxlcz86IGFueSB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmV0cmlldmUgcXVlcmllcyB0byByZWZldGNoXG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG5cbiAgICAvLyBTa2lwIGlmIG5vdGhpbmcgdG8gcmVmZXRjaFxuICAgIGlmICghcXVlcmllcy5sZW5ndGgpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChxdWVyaWVzLm1hcChxdWVyeSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgUmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske3F1ZXJ5LmlkfX1gKTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5LnF1ZXJ5UmVmLnJlZmV0Y2goey4uLnF1ZXJ5LnZhcmlhYmxlcywgLi4ub3B0cy52YXJpYWJsZXN9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnRXJyb3Igd2hpbGUgcmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJpZXMnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVNdXRhYmxlV2F0Y2hRdWVyeUlkPEQsIFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQsIFY+KSB7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gb3B0cy5xdWVyeU5hbWUgfHwgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy5xdWVyeSkpLnN1YnN0cmluZygwLCA4KTtcbiAgICBjb25zdCB2YXJpYWJsZXNLZXkgPSBvcHRzLnZhcmlhYmxlcyAmJiBDcnlwdG9TZXJ2aWNlLnNoYTI1NihKU09OLnN0cmluZ2lmeShvcHRzLnZhcmlhYmxlcykpLnN1YnN0cmluZygwLCA4KSB8fCAnJztcbiAgICByZXR1cm4gW3F1ZXJ5TmFtZSwgb3B0cy5hcnJheUZpZWxkTmFtZSwgdmFyaWFibGVzS2V5XS5qb2luKCd8Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zKTogTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxhbnk+W10ge1xuICAgIC8vIFNlYXJjaCBieSBxdWVyeU5hbWVcbiAgICBpZiAob3B0cy5xdWVyeU5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcihxID0+IHEuaWQuc3RhcnRzV2l0aChvcHRzLnF1ZXJ5TmFtZSArICd8JykpO1xuICAgIH1cbiAgICBpZiAob3B0cy5xdWVyeU5hbWVzKSB7XG4gICAgICByZXR1cm4gb3B0cy5xdWVyeU5hbWVzLm1hcChxdWVyeU5hbWUgPT4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIocSA9PiBxLmlkLnN0YXJ0c1dpdGgocXVlcnlOYW1lICsgJ3wnKSkpXG4gICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgLnJlZHVjZSgocmVzLCBhcnJheSkgPT4gcmVzLmNvbmNhdCguLi5hcnJheSksIFtdKTtcbiAgICB9XG5cbiAgICAvLyBTZWFyY2ggYnkgcXVlcnlcbiAgICBpZiAob3B0cy5xdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKHEgPT4gcS5xdWVyeSA9PT0gb3B0cy5xdWVyeSk7XG4gICAgfVxuICAgIGlmIChvcHRzLnF1ZXJpZXMpIHtcbiAgICAgIHJldHVybiBvcHRzLnF1ZXJpZXNcbiAgICAgICAgLmZpbHRlcihpc05vdE5pbClcbiAgICAgICAgLm1hcChxdWVyeSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcihxID0+IHEucXVlcnkgPT09IHF1ZXJ5KSlcbiAgICAgICAgLy8gZmxhdE1hcFxuICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb25zOiBvbmx5IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTmV3TXV0YWJsZVdhdGNoUXVlcnkobXV0YWJsZVF1ZXJ5OiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT4pIHtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgUmVnaXN0ZXIgbmV3IG11dGFibGUgd2F0Y2ggcXVlcnkgeyR7bXV0YWJsZVF1ZXJ5LmlkfX1gKTtcblxuICAgIC8vIElmIGV4Y2VlZCB0aGUgbWF4IHNpemUgb2YgbXV0YWJsZSBxdWVyaWVzOiByZW1vdmUgc29tZVxuICAgIGlmICh0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPiAwICYmIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMubGVuZ3RoID49IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCkge1xuICAgICAgY29uc3QgcmVtb3ZlZFdhdGNoUXVlcmllcyA9IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuc3BsaWNlKDAsIDEgKyB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmxlbmd0aCAtIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXNNYXhDb3VudCk7XG5cbiAgICAgIC8vIFdhcm4sIGFzIGl0IHNob3VsZG4ndCBiZSBoYXBwZW4gb2Z0ZW4sIHdoZW4gbWF4IGlzIGNvcnJlY3RseSBzZXRcbiAgICAgIGNvbnNvbGUud2Fybih0aGlzLl9sb2dQcmVmaXggKyBgUmVtb3Zpbmcgb2xkZXIgbXV0YWJsZSB3YXRjaGluZyBxdWVyaWVzIChzdGFjayBleGNlZWQgbWF4IG9mICR7dGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50fSk6IGAsXG4gICAgICAgIHJlbW92ZWRXYXRjaFF1ZXJpZXMubWFwKHEgPT4gcS5pZCkpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgc29ydCBmdW5jdGlvbiAodG8gYmUgdXNlZCBpbiBpbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJ5KCkpXG4gICAgaWYgKCFtdXRhYmxlUXVlcnkuc29ydEZuICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMgJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnkpIHtcbiAgICAgIG11dGFibGVRdWVyeS5zb3J0Rm4gPSBtdXRhYmxlUXVlcnkudmFyaWFibGVzICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5XG4gICAgICAmJiBFbnRpdHlVdGlscy5zb3J0Q29tcGFyYXRvcihtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnRCeSwgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0RGlyZWN0aW9uIHx8ICdhc2MnKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIG5ldyBtdXRhYmxlIHF1ZXJ5IHRvIGFycmF5XG4gICAgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5wdXNoKG11dGFibGVRdWVyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmluZFJlZmV0Y2hRdWVyaWVzKG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyk6IEludGVybmFsUmVmZXRjaFF1ZXJpZXNJbmNsdWRlIHtcbiAgICByZXR1cm4gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKVxuICAgICAgLy8gV29ya2Fyb3VuZCwgdG8gbWFrZSByZWZldGNoIHF1ZXJpZXMgd29ya3M6IHRyYW5zZm9ybSBpbnRvIGEgc2ltcGxlIHtxdWVyeSwgdmFyaWFibGVzfVxuICAgICAgLm1hcCgoe3F1ZXJ5LCB2YXJpYWJsZXN9KSA9PiB7XG4gICAgICAgIHJldHVybiB7IHF1ZXJ5LCB2YXJpYWJsZXMgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25TdGFydCgpOiBQcm9taXNlPFM+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwgYXMgUyk7XG4gIH1cbn1cbiJdfQ==
@@ -45,7 +45,7 @@ export class Base58 {
45
45
  }
46
46
  static decode(string) {
47
47
  if (string.length === 0)
48
- return (new Uint8Array());
48
+ return (new Uint8Array(0));
49
49
  const input = string.split('').map(function (c) {
50
50
  return Base58.getAlphabetMap()[c];
51
51
  });
@@ -75,4 +75,4 @@ export class Base58 {
75
75
  }
76
76
  }
77
77
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTU4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2U1OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsZ0RBQWdEO0FBQ2hELGdDQUFnQztBQUNoQyx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLGdDQUFnQztBQUNoQyw2Q0FBNkM7QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxNQUFNO0lBS1QsTUFBTSxDQUFDLGNBQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBa0I7UUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFBRSxN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O2dCQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQzthQUNsQjtTQUNGO1FBRUQsMEJBQTBCO1FBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O0FBdEVjLGVBQVEsR0FBRyw0REFBNEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJhc2U1OCBlbmNvZGluZy9kZWNvZGluZ1xuLy8gT3JpZ2luYWxseSB3cml0dGVuIGJ5IE1pa2UgSGVhcm4gZm9yIEJpdGNvaW5KXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluY1xuLy8gUG9ydGVkIHRvIEphdmFTY3JpcHQgYnkgU3RlZmFuIFRob21hc1xuLy8gTWVyZ2VkIEJ1ZmZlciByZWZhY3RvcmluZ3MgZnJvbSBiYXNlNTgtbmF0aXZlIGJ5IFN0ZXBoZW4gUGFpclxuLy8gQ29weXJpZ2h0IChjKSAyMDEzIEJpdFBheSBJbmNcbi8vIFJld3JpdHRlbiBpbiBUeXBlU2NyaXB0IGJ5IEx1ZG92aWMgUGVjcXVvdFxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEJhc2U1OCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxwaGFiZXQgPSAnMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eic7XG4gIHByaXZhdGUgc3RhdGljIGFscGhhYmV0TWFwO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldEFscGhhYmV0TWFwKCkge1xuICAgIGlmICghQmFzZTU4LmFscGhhYmV0TWFwKXtcbiAgICAgIHRoaXMuYWxwaGFiZXRNYXAgPSB7fTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQmFzZTU4LmFscGhhYmV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIEJhc2U1OC5hbHBoYWJldE1hcFtCYXNlNTguYWxwaGFiZXQuY2hhckF0KGkpXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBCYXNlNTguYWxwaGFiZXRNYXA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuY29kZShidWZmZXI6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG5cbiAgICBsZXQgaTsgbGV0IGo7IGNvbnN0IGRpZ2l0cyA9IFswXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgZGlnaXRzLmxlbmd0aDsgaisrKSBkaWdpdHNbal0gPDw9IDg7XG4gICAgICBkaWdpdHNbZGlnaXRzLmxlbmd0aCAtIDFdICs9IGJ1ZmZlcltpXTtcblxuICAgICAgbGV0IGNhcnJ5ID0gMDtcbiAgICAgIGZvciAoaiA9IGRpZ2l0cy5sZW5ndGggLSAxOyBqID49IDA7IGotLSl7XG4gICAgICAgIGRpZ2l0c1tqXSArPSBjYXJyeTtcbiAgICAgICAgY2FycnkgPSAoZGlnaXRzW2pdIC8gNTgpIHwgMDtcbiAgICAgICAgZGlnaXRzW2pdICU9IDU4O1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoY2FycnkpIHtcbiAgICAgICAgZGlnaXRzLnVuc2hpZnQoY2FycnkpO1xuICAgICAgICBjYXJyeSA9IChkaWdpdHNbMF0gLyA1OCkgfCAwO1xuICAgICAgICBkaWdpdHNbMF0gJT0gNTg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIGxlYWRpbmcgemVyb3NcbiAgICBmb3IgKGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aCAtIDEgJiYgYnVmZmVyW2ldID09PSAwOyBpKyspIGRpZ2l0cy51bnNoaWZ0KDApO1xuXG4gICAgcmV0dXJuIGRpZ2l0cy5tYXAoZnVuY3Rpb24oZGlnaXQpIHsgcmV0dXJuIEJhc2U1OC5hbHBoYWJldFtkaWdpdF07IH0pLmpvaW4oJycpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBkZWNvZGUoc3RyaW5nOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkgcmV0dXJuIChuZXcgVWludDhBcnJheSgpKTtcblxuICAgIGNvbnN0IGlucHV0ID0gc3RyaW5nLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24oYyl7XG4gICAgICByZXR1cm4gQmFzZTU4LmdldEFscGhhYmV0TWFwKClbY107XG4gICAgfSk7XG5cbiAgICBsZXQgaTsgbGV0IGo7IGNvbnN0IGJ5dGVzID0gWzBdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGJ5dGVzLmxlbmd0aDsgaisrKSBieXRlc1tqXSAqPSA1ODtcbiAgICAgIGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICs9IGlucHV0W2ldO1xuXG4gICAgICBsZXQgY2FycnkgPSAwO1xuICAgICAgZm9yIChqID0gYnl0ZXMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pe1xuICAgICAgICBieXRlc1tqXSArPSBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBieXRlc1tqXSA+PiA4O1xuICAgICAgICBieXRlc1tqXSAmPSAweGZmO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoY2FycnkpIHtcbiAgICAgICAgYnl0ZXMudW5zaGlmdChjYXJyeSk7XG4gICAgICAgIGNhcnJ5ID0gYnl0ZXNbMF0gPj4gODtcbiAgICAgICAgYnl0ZXNbMF0gJj0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZWFsIHdpdGggbGVhZGluZyB6ZXJvc1xuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGggLSAxICYmIGlucHV0W2ldID09PSAwOyBpKyspIGJ5dGVzLnVuc2hpZnQoMCk7XG4gICAgcmV0dXJuIChuZXcgVWludDhBcnJheShieXRlcykpO1xuICB9XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTU4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2Jhc2U1OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsZ0RBQWdEO0FBQ2hELGdDQUFnQztBQUNoQyx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLGdDQUFnQztBQUNoQyw2Q0FBNkM7QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxNQUFNO0lBS1QsTUFBTSxDQUFDLGNBQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBa0I7UUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFBRSxN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LENBQUMsQ0FBQztnQkFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7YUFDbEI7U0FDRjtRQUVELDBCQUEwQjtRQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDOztBQXRFYyxlQUFRLEdBQUcsNERBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCYXNlNTggZW5jb2RpbmcvZGVjb2Rpbmdcbi8vIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBNaWtlIEhlYXJuIGZvciBCaXRjb2luSlxuLy8gQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmNcbi8vIFBvcnRlZCB0byBKYXZhU2NyaXB0IGJ5IFN0ZWZhbiBUaG9tYXNcbi8vIE1lcmdlZCBCdWZmZXIgcmVmYWN0b3JpbmdzIGZyb20gYmFzZTU4LW5hdGl2ZSBieSBTdGVwaGVuIFBhaXJcbi8vIENvcHlyaWdodCAoYykgMjAxMyBCaXRQYXkgSW5jXG4vLyBSZXdyaXR0ZW4gaW4gVHlwZVNjcmlwdCBieSBMdWRvdmljIFBlY3F1b3RcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBCYXNlNTgge1xuXG4gIHByaXZhdGUgc3RhdGljIGFscGhhYmV0ID0gJzEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXonO1xuICBwcml2YXRlIHN0YXRpYyBhbHBoYWJldE1hcDtcblxuICBwcml2YXRlIHN0YXRpYyBnZXRBbHBoYWJldE1hcCgpIHtcbiAgICBpZiAoIUJhc2U1OC5hbHBoYWJldE1hcCl7XG4gICAgICB0aGlzLmFscGhhYmV0TWFwID0ge307XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEJhc2U1OC5hbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICAgICAgICBCYXNlNTguYWxwaGFiZXRNYXBbQmFzZTU4LmFscGhhYmV0LmNoYXJBdChpKV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gQmFzZTU4LmFscGhhYmV0TWFwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbmNvZGUoYnVmZmVyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuXG4gICAgbGV0IGk7IGxldCBqOyBjb25zdCBkaWdpdHMgPSBbMF07XG4gICAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGRpZ2l0cy5sZW5ndGg7IGorKykgZGlnaXRzW2pdIDw8PSA4O1xuICAgICAgZGlnaXRzW2RpZ2l0cy5sZW5ndGggLSAxXSArPSBidWZmZXJbaV07XG5cbiAgICAgIGxldCBjYXJyeSA9IDA7XG4gICAgICBmb3IgKGogPSBkaWdpdHMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pe1xuICAgICAgICBkaWdpdHNbal0gKz0gY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gKGRpZ2l0c1tqXSAvIDU4KSB8IDA7XG4gICAgICAgIGRpZ2l0c1tqXSAlPSA1ODtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGNhcnJ5KSB7XG4gICAgICAgIGRpZ2l0cy51bnNoaWZ0KGNhcnJ5KTtcbiAgICAgICAgY2FycnkgPSAoZGlnaXRzWzBdIC8gNTgpIHwgMDtcbiAgICAgICAgZGlnaXRzWzBdICU9IDU4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlYWwgd2l0aCBsZWFkaW5nIHplcm9zXG4gICAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGggLSAxICYmIGJ1ZmZlcltpXSA9PT0gMDsgaSsrKSBkaWdpdHMudW5zaGlmdCgwKTtcblxuICAgIHJldHVybiBkaWdpdHMubWFwKGZ1bmN0aW9uKGRpZ2l0KSB7IHJldHVybiBCYXNlNTguYWxwaGFiZXRbZGlnaXRdOyB9KS5qb2luKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZGVjb2RlKHN0cmluZzogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHJldHVybiAobmV3IFVpbnQ4QXJyYXkoMCkpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBzdHJpbmcuc3BsaXQoJycpLm1hcChmdW5jdGlvbihjKXtcbiAgICAgIHJldHVybiBCYXNlNTguZ2V0QWxwaGFiZXRNYXAoKVtjXTtcbiAgICB9KTtcblxuICAgIGxldCBpOyBsZXQgajsgY29uc3QgYnl0ZXMgPSBbMF07XG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgYnl0ZXMubGVuZ3RoOyBqKyspIGJ5dGVzW2pdICo9IDU4O1xuICAgICAgYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gKz0gaW5wdXRbaV07XG5cbiAgICAgIGxldCBjYXJyeSA9IDA7XG4gICAgICBmb3IgKGogPSBieXRlcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSl7XG4gICAgICAgIGJ5dGVzW2pdICs9IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IGJ5dGVzW2pdID4+IDg7XG4gICAgICAgIGJ5dGVzW2pdICY9IDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChjYXJyeSkge1xuICAgICAgICBieXRlcy51bnNoaWZ0KGNhcnJ5KTtcbiAgICAgICAgY2FycnkgPSBieXRlc1swXSA+PiA4O1xuICAgICAgICBieXRlc1swXSAmPSAweGZmO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlYWwgd2l0aCBsZWFkaW5nIHplcm9zXG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aCAtIDEgJiYgaW5wdXRbaV0gPT09IDA7IGkrKykgYnl0ZXMudW5zaGlmdCgwKTtcbiAgICByZXR1cm4gKG5ldyBVaW50OEFycmF5KGJ5dGVzKSk7XG4gIH1cbn1cbiJdfQ==
@@ -334,9 +334,9 @@ export class ConfigService extends BaseGraphqlService {
334
334
  await Toasts.show(this.toastController, this.translate, opts);
335
335
  }
336
336
  }
337
- ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ConfigService, deps: [{ token: i1.Platform }, { token: i2.GraphqlService }, { token: i3.Storage }, { token: i4.NetworkService }, { token: i5.FileService }, { token: i1.ToastController }, { token: i6.TranslateService }, { token: i7.AccountService }, { token: ENVIRONMENT }, { token: APP_CONFIG_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
338
- ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ConfigService, providedIn: 'root' });
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ConfigService, decorators: [{
337
+ ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ConfigService, deps: [{ token: i1.Platform }, { token: i2.GraphqlService }, { token: i3.Storage }, { token: i4.NetworkService }, { token: i5.FileService }, { token: i1.ToastController }, { token: i6.TranslateService }, { token: i7.AccountService }, { token: ENVIRONMENT }, { token: APP_CONFIG_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
338
+ ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ConfigService, providedIn: 'root' });
339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: ConfigService, decorators: [{
340
340
  type: Injectable,
341
341
  args: [{
342
342
  providedIn: 'root',
@@ -351,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
351
351
  type: Inject,
352
352
  args: [APP_CONFIG_OPTIONS]
353
353
  }] }]; } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHcEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHaEUsT0FBTyxFQUFDLFFBQVEsRUFBWSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFHM0QsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFbEQ7O3lDQUV5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JWO0NBQ0YsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFRLEdBQUcsQ0FBQTs7Ozs7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QUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMzRztTQUNGO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBc0I7UUFDOUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDOzswR0E5VFUsYUFBYSxxUEFzQmQsV0FBVyxhQUNDLGtCQUFrQjs4R0F2QjdCLGFBQWEsY0FIWixNQUFNOzJGQUdQLGFBQWE7a0JBSnpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUMzQjs7MEJBdUJJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2dxbH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4vbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Vycm9yQ29kZXN9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7R3JhcGhxbFNlcnZpY2V9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvbk1hcH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7RmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4vY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7UGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtTaG93VG9hc3RPcHRpb25zLCBUb2FzdHN9IGZyb20gJy4uLy4uL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0eVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtCYXNlR3JhcGhxbFNlcnZpY2V9IGZyb20gJy4vYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtJU3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7aXNNb2JpbGUsIGlzV2luZG93c30gZnJvbSAnLi4vLi4vc2hhcmVkL3BsYXRmb3Jtcyc7XG5cblxuY29uc3QgQ09ORklHVVJBVElPTl9TVE9SQUdFX0tFWSA9ICdjb25maWd1cmF0aW9uJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBHcmFwaFFMIHF1ZXJpZXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5leHBvcnQgY29uc3QgRnJhZ21lbnRzID0ge1xuICBjb25maWc6IGdxbGBcbiAgICBmcmFnbWVudCBDb25maWdGcmFnbWVudCBvbiBDb25maWd1cmF0aW9uVk8ge1xuICAgICAgaWRcbiAgICAgIGxhYmVsXG4gICAgICBuYW1lXG4gICAgICBkZXNjcmlwdGlvblxuICAgICAgY29tbWVudHNcbiAgICAgIHByb3BlcnRpZXNcbiAgICAgIHNtYWxsTG9nb1xuICAgICAgbGFyZ2VMb2dvXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2VzXG4gICAgICBwYXJ0bmVycyB7XG4gICAgICAgIGlkXG4gICAgICAgIGxhYmVsXG4gICAgICAgIG5hbWVcbiAgICAgICAgbG9nb1xuICAgICAgICBzaXRlVXJsXG4gICAgICAgIF9fdHlwZW5hbWVcbiAgICAgIH1cbiAgICAgIHVwZGF0ZURhdGVcbiAgICAgIGNyZWF0aW9uRGF0ZVxuICAgICAgc3RhdHVzSWRcbiAgICAgIF9fdHlwZW5hbWVcbiAgICB9XG4gIGBcbn07XG5cbmNvbnN0IExvYWRRdWVyeTogYW55ID0gZ3FsYFxucXVlcnkgQ29uZmlndXJhdGlvbntcbiAgZGF0YTogY29uZmlndXJhdGlvbntcbiAgICAuLi5Db25maWdGcmFnbWVudFxuICB9XG59XG4gICR7RnJhZ21lbnRzLmNvbmZpZ31cbmA7XG5cbi8vIFNhdmUgKGNyZWF0ZSBvciB1cGRhdGUpIGFjY291bnQgbXV0YXRpb25cbmNvbnN0IFNhdmVNdXRhdGlvbjogYW55ID0gZ3FsYFxuICBtdXRhdGlvbiBTYXZlQ29uZmlndXJhdGlvbigkZGF0YTogQ29uZmlndXJhdGlvblZPSW5wdXQpe1xuICAgIGRhdGE6IHNhdmVDb25maWd1cmF0aW9uKGNvbmZpZzogJGRhdGEpe1xuICAgICAgIC4uLkNvbmZpZ0ZyYWdtZW50XG4gICAgfVxuICB9XG4gICR7RnJhZ21lbnRzLmNvbmZpZ31cbmA7XG5cbmNvbnN0IENsZWFyQ2FjaGU6IGFueSA9IGdxbGBcbiAgcXVlcnkgQ2xlYXJDYWNoZSgkbmFtZTogU3RyaW5nKSB7XG4gICAgY2xlYXJDYWNoZShuYW1lOiAkbmFtZSlcbiAgfVxuYDtcblxuY29uc3QgQ2FjaGVTdGF0aXN0aWNzOiBhbnkgPSBncWxgXG4gIHF1ZXJ5IENhY2hlU3RhdGlzdGljcyB7XG4gICAgY2FjaGVTdGF0aXN0aWNzXG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBBUFBfQ09ORklHX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9ybUZpZWxkRGVmaW5pdGlvbk1hcD4oJ2RlZmF1bHRPcHRpb25zJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBkZXBzOiBbQVBQX0NPTkZJR19PUFRJT05TXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlXG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPENvbmZpZ3VyYXRpb24sIGFueSwgbnVtYmVyLCBDb25maWd1cmF0aW9uPlxuICBpbXBsZW1lbnRzIElFbnRpdHlTZXJ2aWNlPENvbmZpZ3VyYXRpb24+LCBJU3RhcnRhYmxlU2VydmljZTxDb25maWd1cmF0aW9uPiB7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uRGVmczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBwcml2YXRlICRkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmF0aW9uPihudWxsKTtcblxuICBnZXQgY29uZmlnKCk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbj4ge1xuICAgIC8vIElmIGZpcnN0IGNhbGw6IHN0YXJ0IGxvYWRpbmdcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgdGhpcy5zdGFydCgpO1xuICAgIHJldHVybiB0aGlzLiRkYXRhLnBpcGUoZmlsdGVyKGlzTm90TmlsKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZpbGU6IEZpbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0NPTkZJR19PUFRJT05TKSBkZWZhdWx0T3B0aW9uc01hcDogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG5cbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ3JlYXRpbmcgc2VydmljZScpO1xuXG4gICAgdGhpcy5fb3B0aW9uRGVmcyA9IE9iamVjdC52YWx1ZXMoey4uLkNPUkVfQ09ORklHX09QVElPTlMsIC4uLmRlZmF1bHRPcHRpb25zTWFwfSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS5pbmZvKCdbY29uZmlnXSBTdGFydGluZyBjb25maWd1cmF0aW9uLi4uJyk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkT3JSZXN0b3JlTG9jYWxseSgpO1xuICAgIHRoaXMuJGRhdGEubmV4dChkYXRhKTtcblxuICAgIC8vIFJlc3RhcnQgaWYgZ3JhcGhxbCBzZXJ2aWNlIHJlc3RhcnRcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5ncmFwaHFsLnN0b3BTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc3RhcnQoKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBsb2FkRGVmYXVsdChcbiAgICBvcHRzPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBMb2FkaW5nIFBvZCBjb25maWd1cmF0aW9uLi4uJyk7XG5cbiAgICBjb25zdCBxdWVyeSA9IG9wdHMgJiYgb3B0cy5xdWVyeSB8fCBMb2FkUXVlcnk7XG4gICAgY29uc3QgdmFyaWFibGVzID0gb3B0cyAmJiBvcHRzLnZhcmlhYmxlcyB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PHsgZGF0YTogYW55IH0+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiBvcHRzICYmIG9wdHMuZmV0Y2hQb2xpY3kgfHwgdW5kZWZpbmVkLypkZWZhdWx0Ki9cbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSByZXMgJiYgcmVzLmRhdGEgPyBDb25maWd1cmF0aW9uLmZyb21PYmplY3QocmVzLmRhdGEpIDogdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gUG9kIGNvbmZpZ3VyYXRpb24gbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoXG4gICAgaWQ6IG51bWJlcixcbiAgICBvcHRzPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zICYgeyBxdWVyeT86IGFueSB9KTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS53YXJuKCdbY29uZmlnXSBJbnZhbGlkIGNhbGwgb2YgY29uZmlnU2VydmljZS5sb2FkKGlkKS4gUGxlYXNlIHVzZSBsb2FkRGVmYXVsdCgpIGluc3RlYWQnKTtcblxuICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KCk7XG4gIH1cblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogQ29uZmlndXJhdGlvbiwgb3B0cz86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBhc3luYyBzYXZlKGNvbmZpZzogQ29uZmlndXJhdGlvbik6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gU2F2aW5nIFBvZCBjb25maWd1cmF0aW9uLi4uJywgY29uZmlnKTtcblxuICAgIGNvbnN0IGpzb24gPSBjb25maWcuYXNPYmplY3QoKTtcblxuICAgIC8vIEV4ZWN1dGUgbXV0YXRpb25cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiBTYXZlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZGF0YToganNvblxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IEVycm9yQ29kZXMuU0FWRV9DT05GSUdfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0NPTkZJR19FUlJPUidcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gcmVzICYmIHJlcy5kYXRhO1xuXG4gICAgLy8gQ29weSB1cGRhdGUgcHJvcGVydGllc1xuICAgIGNvbmZpZy5pZCA9IHNhdmVkQ29uZmlnICYmIHNhdmVkQ29uZmlnLmlkIHx8IGNvbmZpZy5pZDtcbiAgICBjb25maWcudXBkYXRlRGF0ZSA9IHNhdmVkQ29uZmlnICYmIHNhdmVkQ29uZmlnLnVwZGF0ZURhdGUgfHwgY29uZmlnLnVwZGF0ZURhdGU7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBQb2QgY29uZmlndXJhdGlvbiBzYXZlZCEnKTtcblxuICAgIGNvbnN0IHJlbG9hZGVkQ29uZmlnID0gYXdhaXQgdGhpcy5sb2FkRGVmYXVsdCh7ZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknfSk7XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBkZWZhdWx0IGNvbmZpZ1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSB0aGlzLiRkYXRhLnZhbHVlO1xuICAgIGlmIChpc05vdE5pbChkZWZhdWx0Q29uZmlnKSAmJiByZWxvYWRlZENvbmZpZy5sYWJlbCA9PT0gZGVmYXVsdENvbmZpZy5sYWJlbCkge1xuXG4gICAgICAvLyBFbWl0IHVwZGF0ZSBldmVudCB3aGVuIGlzIGRlZmF1bHQgY29uZmlnXG4gICAgICB0aGlzLiRkYXRhLm5leHQocmVsb2FkZWRDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZWxvYWRlZENvbmZpZztcbiAgfVxuXG4gIGFzeW5jIGdldENhY2hlU3RhdGlzdGljcygpOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBMb2FkaW5nIHNlcnZlciBjYWNoZSBzdGF0aXN0aWNzLi4uJyk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBjYWNoZVN0YXRpc3RpY3M6IGFueSB9Pih7XG4gICAgICBxdWVyeTogQ2FjaGVTdGF0aXN0aWNzLFxuICAgICAgdmFyaWFibGVzOiBudWxsLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcyAmJiByZXMuY2FjaGVTdGF0aXN0aWNzIHx8IHVuZGVmaW5lZDtcbiAgICBjb25zb2xlLmluZm8oYFtjb25maWddIFNlcnZlciBjYWNoZSBzdGF0aXN0aWNzIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXM6YCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBjbGVhckNhY2hlKG9wdHM/OiB7Y2FjaGVOYW1lPzogc3RyaW5nfSkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlLi4uJyk7XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSBvcHRzICYmIG9wdHMuY2FjaGVOYW1lICYmIHtuYW1lOiBvcHRzLmNhY2hlTmFtZX0gfHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PHsgY2xlYXJDYWNoZTogYm9vbGVhbiB9Pih7XG4gICAgICBxdWVyeTogQ2xlYXJDYWNoZSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJ1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcyAmJiByZXMuY2xlYXJDYWNoZSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBDbGVhciBzZXJ2ZXIgY2FjaGUgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZGVsZXRlKGRhdGE6IENvbmZpZ3VyYXRpb24sIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkIHlldCEnKTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoaWQ6IG51bWJlciwgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBuZXcgU3ViamVjdCgpOyAvLyBUT0RPXG4gIH1cblxuICBnZXQgb3B0aW9uRGVmcygpOiBGb3JtRmllbGREZWZpbml0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25EZWZzO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZCAtLSAqL1xuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9yUmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE7XG4gICAgbGV0IHdhc0p1c3RMb2FkZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERlZmF1bHQoeyBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScgfSk7XG4gICAgICB3YXNKdXN0TG9hZGVkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgY29uc29sZS5lcnJvcihlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyLCBlcnIpO1xuICAgIH1cblxuICAgIC8vIFNhdmUgaXQgaW50byBsb2NhbCBzdG9yYWdlLCBmb3IgbmV4dCBzdGFydHVwXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdG9yZUxvY2FsbHkoZGF0YSksIDEwMDApO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBsb2FkZWQgcmVtb3RlbHk6IHRyeSB0byByZXN0b3JlIGl0XG4gICAgZWxzZSB7XG4gICAgICBkYXRhID0gYXdhaXQgdGhpcy5yZXN0b3JlTG9jYWxseSgpO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBsYWJlbCBoYXMgYmVlbiBmaWxsZWRcbiAgICBkYXRhLmxhYmVsID0gZGF0YS5sYWJlbCB8fCB0aGlzLmVudmlyb25tZW50Lm5hbWU7XG5cbiAgICAvLyBSZXNldCBuYW1lIChpZiBzYW1lIGFzIGxhYmVsKVxuICAgIGRhdGEubmFtZSA9IChkYXRhLm5hbWUgIT09IGRhdGEubGFiZWwpID8gZGF0YS5uYW1lIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2hlY2sgY29tcGF0aWJsZSB2ZXJzaW9uXG4gICAgaWYgKHdhc0p1c3RMb2FkZWQpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE6IENvbmZpZ3VyYXRpb247XG5cbiAgICAvLyBUcnkgdG8gbG9hZCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICBjb25zdCB2YWx1ZTogYW55ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIGZyb20gbG9jYWwgc3RvcmFnZS4uLicpO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KEpTT04ucGFyc2UodmFsdWUpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIGNvbmZpZyBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlOiAke2VyciAmJiBlcnIubWVzc2FnZSB8fCBlcnJ9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUmVzdG9yaW5nIGNvbmZpZ3VyYXRpb24gW09LXScpO1xuICAgIH1cblxuICAgIC8vIE9yIGxvYWQgZGVmYXVsdCB2YWx1ZSwgZnJvbSB0aGUgZW52aXJvbm1lbnRcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIE5vIGNvbmZpZ3VyYXRpb24gZm91bmQuIFVzaW5nIGVudmlyb25tZW50Li4uJyk7XG4gICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHRoaXMuZW52aXJvbm1lbnQgYXMgYW55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVMb2NhbGx5KGRhdGE/OiBDb25maWd1cmF0aW9uKSB7XG4gICAgLy8gTm90aGluZyB0byBzdG9yZSA6IHJlc2V0XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlKENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkpO1xuICAgIH1cbiAgICAvLyBDb25maWcgZXhpc3RzOiBzdG9yZSBpdCBpbiB0aGUgbG9jYWwgc3RvcmFnZVxuICAgIGVsc2Uge1xuICAgICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG5cbiAgICAgIC8vIENvbnZlcnQgaW1hZ2VzLCBmb3Igb2ZmbGluZSB1c2FnZVxuICAgICAgaWYgKHRoaXMubmV0d29yay5vbmxpbmUgJiYgaXNNb2JpbGUod2luZG93KSkge1xuICAgICAgICBjb25zdCBqb2JzID0gW107XG5cbiAgICAgICAgLy8gRG93bmxvYWQgbG9nb3NcbiAgICAgICAgaWYgKGRhdGEubGFyZ2VMb2dvICYmIGRhdGEubGFyZ2VMb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgIGpvYnMucHVzaCh0aGlzLmZpbGUuZ2V0SW1hZ2UoZGF0YS5sYXJnZUxvZ28pXG4gICAgICAgICAgICAudGhlbihpbWdVcmwgPT4gZGF0YS5sYXJnZUxvZ28gPSBpbWdVcmwpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5zbWFsbExvZ28gJiYgZGF0YS5zbWFsbExvZ28uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShkYXRhLnNtYWxsTG9nbylcbiAgICAgICAgICAgIC50aGVuKGltZ1VybCA9PiBkYXRhLnNtYWxsTG9nbyA9IGltZ1VybCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmFja2dyb3VuZCBpbWFnZXNcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhLmJhY2tncm91bmRJbWFnZXMpKSB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLnBsYXRmb3JtLndpZHRoKCksXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHRoaXMucGxhdGZvcm0uaGVpZ2h0KClcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gQ29udmVydCB0aGUgRklSU1QgaW1hZ2UgZm91bmRcbiAgICAgICAgICAvLyBXQVJOOiBpdCdzIE5PVCBuZWNlc3NhcnkgdG8gY29udmVydCBBTCBpbWFnZSwgYnV0IG9ubHkgb25lLCBmb3Igc21hbGxlciBtZW1vcnkgZm9vdHByaW50XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmJhY2tncm91bmRJbWFnZXMuZmluZEluZGV4KChpbWcpID0+IGltZyAmJiBpbWcuc3RhcnRzV2l0aCgnaHR0cCcpKTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBkYXRhLmJhY2tncm91bmRJbWFnZXMgPSBkYXRhLmJhY2tncm91bmRJbWFnZXMuc2xpY2UoKTsgLy8gQ29weVxuICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICB0aGlzLmZpbGUuZ2V0SW1hZ2UoZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzW2luZGV4XSwgb3B0aW9ucylcbiAgICAgICAgICAgICAgICAudGhlbihkYXRhVXJsID0+IGRhdGEuYmFja2dyb3VuZEltYWdlc1tpbmRleF0gPSBkYXRhVXJsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQYXJ0bmVyc1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEucGFydG5lcnMpKSB7XG4gICAgICAgICAgZGF0YS5wYXJ0bmVycy5mb3JFYWNoKChkZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZGVwICYmIGRlcC5sb2dvICYmIGRlcC5sb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGRlcC5sb2dvLCB7XG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiA1MC8qc2VlIGhvbWUgcGFnZSBDU1MgKi9cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRoZW4oaW1nID0+IGRlcC5sb2dvID0gaW1nKVxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkZXAubG9nbztcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpvYnMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBGZXRjaGluZyAke2pvYnMubGVuZ3RofSBpbWFnZXMuLi5gKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoam9icyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIEZldGNoaW5nICR7am9icy5sZW5ndGh9IGltYWdlcyBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbY29uZmlnXSBGYWlsZWQgdG8gZmV0Y2ggaW1hZ2Uocyk6ICR7ZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycn1gLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTYXZpbmcgY29uZmlnIHRvIHN0b3JhZ2VcbiAgICAgIHtcbiAgICAgICAgbm93ID0gdGhpcy5fZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBTYXZpbmcgY29uZmlnIGludG8gbG9jYWwgc3RvcmFnZS4uLicpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVksIGRhdGEuYXNPYmplY3QoKSk7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gU2F2aW5nIGNvbmZpZyBpbnRvIGxvY2FsIHN0b3JhZ2UgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1RvYXN0KG9wdHM6IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICBhd2FpdCBUb2FzdHMuc2hvdyh0aGlzLnRvYXN0Q29udHJvbGxlciwgdGhpcy50cmFuc2xhdGUsIG9wdHMpO1xuICB9XG59XG4iXX0=
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHcEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFHaEQsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFbEQ7O3lDQUV5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JWO0NBQ0YsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFRLEdBQUcsQ0FBQTs7Ozs7O0lBTXRCLFNBQVMsQ0FBQyxNQUFNO0NBQ25CLENBQUM7QUFFRiwyQ0FBMkM7QUFDM0MsTUFBTSxZQUFZLEdBQVEsR0FBRyxDQUFBOzs7Ozs7SUFNekIsU0FBUyxDQUFDLE1BQU07Q0FDbkIsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFRLEdBQUcsQ0FBQTs7OztDQUkxQixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQVEsR0FBRyxDQUFBOzs7O0NBSS9CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsZ0JBQWdCLENBQUMsQ0FBQztBQU0vRixNQUFNLE9BQU8sYUFDWCxTQUFRLGtCQUE2RDtJQVlyRSxZQUNZLFFBQWtCLEVBQ2xCLE9BQXVCLEVBQ3ZCLE9BQWdCLEVBQ2hCLE9BQXVCLEVBQ3ZCLElBQWlCLEVBQ2pCLGVBQWdDLEVBQ2hDLFNBQTJCLEVBQzNCLGNBQThCLEVBQ1QsV0FBVyxFQUNGLGlCQUF5QztRQUVqRixLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBWGxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDVCxnQkFBVyxHQUFYLFdBQVcsQ0FBQTtRQWpCcEMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQXNCdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxHQUFHLG1CQUFtQixFQUFFLEdBQUcsaUJBQWlCLEVBQUMsQ0FBQyxDQUFDO0lBRW5GLENBQUM7SUF6QkQsSUFBSSxNQUFNO1FBQ1IsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUF1QlMsS0FBSyxDQUFDLFNBQVM7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUN6RCxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FDZixJQUErQjtRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBRXZELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBZ0I7WUFDbEQsS0FBSztZQUNMLFNBQVM7WUFDVCxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBQztZQUMvRSxXQUFXLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFBLFdBQVc7U0FDOUQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDOUUsT0FBTyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsRUFBVSxFQUNWLElBQWlEO1FBQ2pELE9BQU8sQ0FBQyxJQUFJLENBQUMsbUZBQW1GLENBQUMsQ0FBQztRQUVsRyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQW1CLEVBQUUsSUFBVTtRQUMxQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQXFCO1FBRTlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRS9CLG1CQUFtQjtRQUNuQixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFnQjtZQUNuRCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDWDtZQUNELEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjtnQkFDbEMsT0FBTyxFQUFFLHlCQUF5QjthQUNuQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBRXBDLHlCQUF5QjtRQUN6QixNQUFNLENBQUMsRUFBRSxHQUFHLFdBQVcsSUFBSSxXQUFXLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxDQUFDLFVBQVUsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDO1FBRS9FLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUVuRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFDLENBQUMsQ0FBQztRQUU3RSxnQ0FBZ0M7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDdkMsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBRTNFLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFFN0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBMkI7WUFDN0QsS0FBSyxFQUFFLGVBQWU7WUFDdEIsU0FBUyxFQUFFLElBQUk7WUFDZixLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBQztZQUMvRSxXQUFXLEVBQUUsY0FBYztTQUM1QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLGVBQWUsSUFBSSxTQUFTLENBQUM7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBMkI7UUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUVoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFDLElBQUksU0FBUyxDQUFDO1FBRWhGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQTBCO1lBQzVELEtBQUssRUFBRSxVQUFVO1lBQ2pCLFNBQVM7WUFDVCxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBQztZQUMvRSxXQUFXLEVBQUUsVUFBVTtTQUN4QixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUM7UUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFtQixFQUFFLE9BQWE7UUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVSxFQUFFLE9BQWE7UUFDckMsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztJQUMvQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCw0QkFBNEI7SUFFcEIsS0FBSyxDQUFDLG9CQUFvQjtRQUNoQyxJQUFJLElBQUksQ0FBQztRQUNULElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJO1lBQ0YsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdEI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLHFCQUFxQjtZQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELCtDQUErQztRQUMvQyxJQUFJLElBQUksRUFBRTtZQUNSLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsNENBQTRDO2FBQ3ZDO1lBQ0gsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3BDO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUVqRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFL0QsMkJBQTJCO1FBQzNCLElBQUksYUFBYSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjO1FBQzFCLElBQUksSUFBbUIsQ0FBQztRQUV4QixpQ0FBaUM7UUFDakMsTUFBTSxLQUFLLEdBQVEsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1lBQ3hFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUM3QixJQUFJO29CQUNGLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDcEQ7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxrREFBa0QsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQ25HO2FBQ0Y7aUJBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQ2xDLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsOENBQThDO1FBQzlDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDdkUsSUFBSSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQWtCLENBQUMsQ0FBQztTQUMxRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBb0I7UUFDN0MsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDdEQ7UUFDRCwrQ0FBK0M7YUFDMUM7WUFDSCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVwQyxvQ0FBb0M7WUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFFaEIsaUJBQWlCO2dCQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt5QkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM3QztnQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt5QkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM3QztnQkFFRCxvQkFBb0I7Z0JBQ3BCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO29CQUMxQyxNQUFNLE9BQU8sR0FBRzt3QkFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7d0JBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtxQkFDbEMsQ0FBQztvQkFFRixnQ0FBZ0M7b0JBQ2hDLDJGQUEyRjtvQkFDM0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDdEYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUM5RCxJQUFJLENBQUMsSUFBSSxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUM7NkJBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUM3RDtpQkFDSjtnQkFFRCxXQUFXO2dCQUNYLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ25DLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7NEJBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtnQ0FDckMsU0FBUyxFQUFFLEVBQUUsQ0FBQSxzQkFBc0I7NkJBQ3BDLENBQUM7aUNBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7aUNBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dDQUN6QyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7NEJBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ0w7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNmLElBQUksSUFBSSxDQUFDLE1BQU07d0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUM7b0JBQzdFLElBQUk7d0JBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNOzRCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLElBQUksQ0FBQyxNQUFNLG1CQUFtQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztxQkFDekc7b0JBQ0QsT0FBTyxHQUFHLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7cUJBQ3ZGO2lCQUNGO2FBQ0Y7WUFFRCwyQkFBMkI7WUFDM0I7Z0JBQ0UsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDL0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMzRztTQUNGO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBc0I7UUFDOUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDOzswR0E5VFUsYUFBYSxxUEFzQmQsV0FBVyxhQUNDLGtCQUFrQjs4R0F2QjdCLGFBQWEsY0FIWixNQUFNOzJGQUdQLGFBQWE7a0JBSnpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUMzQjs7MEJBdUJJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2dxbH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4vbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnQGlvbmljL3N0b3JhZ2UtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Vycm9yQ29kZXN9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7R3JhcGhxbFNlcnZpY2V9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvbk1hcH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7RmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4vY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7UGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtTaG93VG9hc3RPcHRpb25zLCBUb2FzdHN9IGZyb20gJy4uLy4uL3NoYXJlZC90b2FzdC90b2FzdHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0eVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtCYXNlR3JhcGhxbFNlcnZpY2V9IGZyb20gJy4vYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtJU3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7aXNNb2JpbGV9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuXG5cbmNvbnN0IENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkgPSAnY29uZmlndXJhdGlvbic7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogR3JhcGhRTCBxdWVyaWVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuZXhwb3J0IGNvbnN0IEZyYWdtZW50cyA9IHtcbiAgY29uZmlnOiBncWxgXG4gICAgZnJhZ21lbnQgQ29uZmlnRnJhZ21lbnQgb24gQ29uZmlndXJhdGlvblZPIHtcbiAgICAgIGlkXG4gICAgICBsYWJlbFxuICAgICAgbmFtZVxuICAgICAgZGVzY3JpcHRpb25cbiAgICAgIGNvbW1lbnRzXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgICBzbWFsbExvZ29cbiAgICAgIGxhcmdlTG9nb1xuICAgICAgYmFja2dyb3VuZEltYWdlc1xuICAgICAgcGFydG5lcnMge1xuICAgICAgICBpZFxuICAgICAgICBsYWJlbFxuICAgICAgICBuYW1lXG4gICAgICAgIGxvZ29cbiAgICAgICAgc2l0ZVVybFxuICAgICAgICBfX3R5cGVuYW1lXG4gICAgICB9XG4gICAgICB1cGRhdGVEYXRlXG4gICAgICBjcmVhdGlvbkRhdGVcbiAgICAgIHN0YXR1c0lkXG4gICAgICBfX3R5cGVuYW1lXG4gICAgfVxuICBgXG59O1xuXG5jb25zdCBMb2FkUXVlcnk6IGFueSA9IGdxbGBcbnF1ZXJ5IENvbmZpZ3VyYXRpb257XG4gIGRhdGE6IGNvbmZpZ3VyYXRpb257XG4gICAgLi4uQ29uZmlnRnJhZ21lbnRcbiAgfVxufVxuICAke0ZyYWdtZW50cy5jb25maWd9XG5gO1xuXG4vLyBTYXZlIChjcmVhdGUgb3IgdXBkYXRlKSBhY2NvdW50IG11dGF0aW9uXG5jb25zdCBTYXZlTXV0YXRpb246IGFueSA9IGdxbGBcbiAgbXV0YXRpb24gU2F2ZUNvbmZpZ3VyYXRpb24oJGRhdGE6IENvbmZpZ3VyYXRpb25WT0lucHV0KXtcbiAgICBkYXRhOiBzYXZlQ29uZmlndXJhdGlvbihjb25maWc6ICRkYXRhKXtcbiAgICAgICAuLi5Db25maWdGcmFnbWVudFxuICAgIH1cbiAgfVxuICAke0ZyYWdtZW50cy5jb25maWd9XG5gO1xuXG5jb25zdCBDbGVhckNhY2hlOiBhbnkgPSBncWxgXG4gIHF1ZXJ5IENsZWFyQ2FjaGUoJG5hbWU6IFN0cmluZykge1xuICAgIGNsZWFyQ2FjaGUobmFtZTogJG5hbWUpXG4gIH1cbmA7XG5cbmNvbnN0IENhY2hlU3RhdGlzdGljczogYW55ID0gZ3FsYFxuICBxdWVyeSBDYWNoZVN0YXRpc3RpY3Mge1xuICAgIGNhY2hlU3RhdGlzdGljc1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQVBQX0NPTkZJR19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZERlZmluaXRpb25NYXA+KCdkZWZhdWx0T3B0aW9ucycpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZGVwczogW0FQUF9DT05GSUdfT1BUSU9OU11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZVxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxDb25maWd1cmF0aW9uLCBhbnksIG51bWJlciwgQ29uZmlndXJhdGlvbj5cbiAgaW1wbGVtZW50cyBJRW50aXR5U2VydmljZTxDb25maWd1cmF0aW9uPiwgSVN0YXJ0YWJsZVNlcnZpY2U8Q29uZmlndXJhdGlvbj4ge1xuXG4gIHByaXZhdGUgX29wdGlvbkRlZnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgcHJpdmF0ZSAkZGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29uZmlndXJhdGlvbj4obnVsbCk7XG5cbiAgZ2V0IGNvbmZpZygpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb24+IHtcbiAgICAvLyBJZiBmaXJzdCBjYWxsOiBzdGFydCBsb2FkaW5nXG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIHRoaXMuc3RhcnQoKTtcbiAgICByZXR1cm4gdGhpcy4kZGF0YS5waXBlKGZpbHRlcihpc05vdE5pbCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBmaWxlOiBGaWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9DT05GSUdfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnNNYXA6IEZvcm1GaWVsZERlZmluaXRpb25NYXBcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIENyZWF0aW5nIHNlcnZpY2UnKTtcblxuICAgIHRoaXMuX29wdGlvbkRlZnMgPSBPYmplY3QudmFsdWVzKHsuLi5DT1JFX0NPTkZJR19PUFRJT05TLCAuLi5kZWZhdWx0T3B0aW9uc01hcH0pO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnNvbGUuaW5mbygnW2NvbmZpZ10gU3RhcnRpbmcgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubG9hZE9yUmVzdG9yZUxvY2FsbHkoKTtcbiAgICB0aGlzLiRkYXRhLm5leHQoZGF0YSk7XG5cbiAgICAvLyBSZXN0YXJ0IGlmIGdyYXBocWwgc2VydmljZSByZXN0YXJ0XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuZ3JhcGhxbC5zdG9wU3ViamVjdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXN0YXJ0KCkpXG4gICAgKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgbG9hZERlZmF1bHQoXG4gICAgb3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gTG9hZGluZyBQb2QgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRzICYmIG9wdHMucXVlcnkgfHwgTG9hZFF1ZXJ5O1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IG9wdHMgJiYgb3B0cy52YXJpYWJsZXMgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8IHVuZGVmaW5lZC8qZGVmYXVsdCovXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gcmVzICYmIHJlcy5kYXRhID8gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHJlcy5kYXRhKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zb2xlLmluZm8oYFtjb25maWddIFBvZCBjb25maWd1cmF0aW9uIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXM6YCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBsb2FkKFxuICAgIGlkOiBudW1iZXIsXG4gICAgb3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyAmIHsgcXVlcnk/OiBhbnkgfSk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnNvbGUud2FybignW2NvbmZpZ10gSW52YWxpZCBjYWxsIG9mIGNvbmZpZ1NlcnZpY2UubG9hZChpZCkuIFBsZWFzZSB1c2UgbG9hZERlZmF1bHQoKSBpbnN0ZWFkJyk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdCgpO1xuICB9XG5cbiAgY2FuVXNlcldyaXRlKGRhdGE6IENvbmZpZ3VyYXRpb24sIG9wdHM/OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5pc0FkbWluKCk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgYXN5bmMgc2F2ZShjb25maWc6IENvbmZpZ3VyYXRpb24pOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFNhdmluZyBQb2QgY29uZmlndXJhdGlvbi4uLicsIGNvbmZpZyk7XG5cbiAgICBjb25zdCBqc29uID0gY29uZmlnLmFzT2JqZWN0KCk7XG5cbiAgICAvLyBFeGVjdXRlIG11dGF0aW9uXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBtdXRhdGlvbjogU2F2ZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb25cbiAgICAgIH0sXG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBFcnJvckNvZGVzLlNBVkVfQ09ORklHX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnRVJST1IuU0FWRV9DT05GSUdfRVJST1InXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzYXZlZENvbmZpZyA9IHJlcyAmJiByZXMuZGF0YTtcblxuICAgIC8vIENvcHkgdXBkYXRlIHByb3BlcnRpZXNcbiAgICBjb25maWcuaWQgPSBzYXZlZENvbmZpZyAmJiBzYXZlZENvbmZpZy5pZCB8fCBjb25maWcuaWQ7XG4gICAgY29uZmlnLnVwZGF0ZURhdGUgPSBzYXZlZENvbmZpZyAmJiBzYXZlZENvbmZpZy51cGRhdGVEYXRlIHx8IGNvbmZpZy51cGRhdGVEYXRlO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUG9kIGNvbmZpZ3VyYXRpb24gc2F2ZWQhJyk7XG5cbiAgICBjb25zdCByZWxvYWRlZENvbmZpZyA9IGF3YWl0IHRoaXMubG9hZERlZmF1bHQoe2ZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5J30pO1xuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgZGVmYXVsdCBjb25maWdcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gdGhpcy4kZGF0YS52YWx1ZTtcbiAgICBpZiAoaXNOb3ROaWwoZGVmYXVsdENvbmZpZykgJiYgcmVsb2FkZWRDb25maWcubGFiZWwgPT09IGRlZmF1bHRDb25maWcubGFiZWwpIHtcblxuICAgICAgLy8gRW1pdCB1cGRhdGUgZXZlbnQgd2hlbiBpcyBkZWZhdWx0IGNvbmZpZ1xuICAgICAgdGhpcy4kZGF0YS5uZXh0KHJlbG9hZGVkQ29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVsb2FkZWRDb25maWc7XG4gIH1cblxuICBhc3luYyBnZXRDYWNoZVN0YXRpc3RpY3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gTG9hZGluZyBzZXJ2ZXIgY2FjaGUgc3RhdGlzdGljcy4uLicpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PHsgY2FjaGVTdGF0aXN0aWNzOiBhbnkgfT4oe1xuICAgICAgcXVlcnk6IENhY2hlU3RhdGlzdGljcyxcbiAgICAgIHZhcmlhYmxlczogbnVsbCxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seSdcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSByZXMgJiYgcmVzLmNhY2hlU3RhdGlzdGljcyB8fCB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBTZXJ2ZXIgY2FjaGUgc3RhdGlzdGljcyBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgY2xlYXJDYWNoZShvcHRzPzoge2NhY2hlTmFtZT86IHN0cmluZ30pIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIENsZWFyIHNlcnZlciBjYWNoZS4uLicpO1xuXG4gICAgY29uc3QgdmFyaWFibGVzID0gb3B0cyAmJiBvcHRzLmNhY2hlTmFtZSAmJiB7bmFtZTogb3B0cy5jYWNoZU5hbWV9IHx8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGNsZWFyQ2FjaGU6IGJvb2xlYW4gfT4oe1xuICAgICAgcXVlcnk6IENsZWFyQ2FjaGUsXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9DT05GSUdfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5MT0FEX0NPTkZJR19FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduby1jYWNoZSdcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSByZXMgJiYgcmVzLmNsZWFyQ2FjaGUgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRlbGV0ZShkYXRhOiBDb25maWd1cmF0aW9uLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQhJyk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBudW1iZXIsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IFN1YmplY3QoKTsgLy8gVE9ET1xuICB9XG5cbiAgZ2V0IG9wdGlvbkRlZnMoKTogRm9ybUZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uRGVmcztcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPclJlc3RvcmVMb2NhbGx5KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGxldCBkYXRhO1xuICAgIGxldCB3YXNKdXN0TG9hZGVkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmxvYWREZWZhdWx0KHsgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknIH0pO1xuICAgICAgd2FzSnVzdExvYWRlZCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICB9XG5cbiAgICAvLyBTYXZlIGl0IGludG8gbG9jYWwgc3RvcmFnZSwgZm9yIG5leHQgc3RhcnR1cFxuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3RvcmVMb2NhbGx5KGRhdGEpLCAxMDAwKTtcbiAgICB9XG5cbiAgICAvLyBJZiBub3QgbG9hZGVkIHJlbW90ZWx5OiB0cnkgdG8gcmVzdG9yZSBpdFxuICAgIGVsc2Uge1xuICAgICAgZGF0YSA9IGF3YWl0IHRoaXMucmVzdG9yZUxvY2FsbHkoKTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgbGFiZWwgaGFzIGJlZW4gZmlsbGVkXG4gICAgZGF0YS5sYWJlbCA9IGRhdGEubGFiZWwgfHwgdGhpcy5lbnZpcm9ubWVudC5uYW1lO1xuXG4gICAgLy8gUmVzZXQgbmFtZSAoaWYgc2FtZSBhcyBsYWJlbClcbiAgICBkYXRhLm5hbWUgPSAoZGF0YS5uYW1lICE9PSBkYXRhLmxhYmVsKSA/IGRhdGEubmFtZSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIENoZWNrIGNvbXBhdGlibGUgdmVyc2lvblxuICAgIGlmICh3YXNKdXN0TG9hZGVkKSB7XG4gICAgICAvLyBUT0RPXG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RvcmVMb2NhbGx5KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGxldCBkYXRhOiBDb25maWd1cmF0aW9uO1xuXG4gICAgLy8gVHJ5IHRvIGxvYWQgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgY29uc3QgdmFsdWU6IGFueSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoQ09ORklHVVJBVElPTl9TVE9SQUdFX0tFWSk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBSZXN0b3JpbmcgY29uZmlndXJhdGlvbiBmcm9tIGxvY2FsIHN0b3JhZ2UuLi4nKTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdChKU09OLnBhcnNlKHZhbHVlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBwYXJzZSBjb25maWcgZm91bmQgaW4gbG9jYWwgc3RvcmFnZTogJHtlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIFtPS10nKTtcbiAgICB9XG5cbiAgICAvLyBPciBsb2FkIGRlZmF1bHQgdmFsdWUsIGZyb20gdGhlIGVudmlyb25tZW50XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBObyBjb25maWd1cmF0aW9uIGZvdW5kLiBVc2luZyBlbnZpcm9ubWVudC4uLicpO1xuICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh0aGlzLmVudmlyb25tZW50IGFzIGFueSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0b3JlTG9jYWxseShkYXRhPzogQ29uZmlndXJhdGlvbikge1xuICAgIC8vIE5vdGhpbmcgdG8gc3RvcmUgOiByZXNldFxuICAgIGlmICghZGF0YSkge1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICB9XG4gICAgLy8gQ29uZmlnIGV4aXN0czogc3RvcmUgaXQgaW4gdGhlIGxvY2FsIHN0b3JhZ2VcbiAgICBlbHNlIHtcbiAgICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuXG4gICAgICAvLyBDb252ZXJ0IGltYWdlcywgZm9yIG9mZmxpbmUgdXNhZ2VcbiAgICAgIGlmICh0aGlzLm5ldHdvcmsub25saW5lICYmIGlzTW9iaWxlKHdpbmRvdykpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IFtdO1xuXG4gICAgICAgIC8vIERvd25sb2FkIGxvZ29zXG4gICAgICAgIGlmIChkYXRhLmxhcmdlTG9nbyAmJiBkYXRhLmxhcmdlTG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGRhdGEubGFyZ2VMb2dvKVxuICAgICAgICAgICAgLnRoZW4oaW1nVXJsID0+IGRhdGEubGFyZ2VMb2dvID0gaW1nVXJsKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc21hbGxMb2dvICYmIGRhdGEuc21hbGxMb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgIGpvYnMucHVzaCh0aGlzLmZpbGUuZ2V0SW1hZ2UoZGF0YS5zbWFsbExvZ28pXG4gICAgICAgICAgICAudGhlbihpbWdVcmwgPT4gZGF0YS5zbWFsbExvZ28gPSBpbWdVcmwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzXG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzKSkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy5wbGF0Zm9ybS53aWR0aCgpLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiB0aGlzLnBsYXRmb3JtLmhlaWdodCgpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIENvbnZlcnQgdGhlIEZJUlNUIGltYWdlIGZvdW5kXG4gICAgICAgICAgLy8gV0FSTjogaXQncyBOT1QgbmVjZXNzYXJ5IHRvIGNvbnZlcnQgQUwgaW1hZ2UsIGJ1dCBvbmx5IG9uZSwgZm9yIHNtYWxsZXIgbWVtb3J5IGZvb3RwcmludFxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzLmZpbmRJbmRleCgoaW1nKSA9PiBpbWcgJiYgaW1nLnN0YXJ0c1dpdGgoJ2h0dHAnKSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzID0gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzLnNsaWNlKCk7IC8vIENvcHlcbiAgICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgICAgdGhpcy5maWxlLmdldEltYWdlKGRhdGEuYmFja2dyb3VuZEltYWdlc1tpbmRleF0sIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oZGF0YVVybCA9PiBkYXRhLmJhY2tncm91bmRJbWFnZXNbaW5kZXhdID0gZGF0YVVybCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFydG5lcnNcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhLnBhcnRuZXJzKSkge1xuICAgICAgICAgIGRhdGEucGFydG5lcnMuZm9yRWFjaCgoZGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRlcCAmJiBkZXAubG9nbyAmJiBkZXAubG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShkZXAubG9nbywge1xuICAgICAgICAgICAgICAgIG1heEhlaWdodDogNTAvKnNlZSBob21lIHBhZ2UgQ1NTICovXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKGltZyA9PiBkZXAubG9nbyA9IGltZylcbiAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGVwLmxvZ287XG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqb2JzLmxlbmd0aCkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gRmV0Y2hpbmcgJHtqb2JzLmxlbmd0aH0gaW1hZ2VzLi4uYCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGpvYnMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBGZXRjaGluZyAke2pvYnMubGVuZ3RofSBpbWFnZXMgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW2NvbmZpZ10gRmFpbGVkIHRvIGZldGNoIGltYWdlKHMpOiAke2VyciAmJiBlcnIubWVzc2FnZSB8fCBlcnJ9YCwgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2F2aW5nIGNvbmZpZyB0byBzdG9yYWdlXG4gICAgICB7XG4gICAgICAgIG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gU2F2aW5nIGNvbmZpZyBpbnRvIGxvY2FsIHN0b3JhZ2UuLi4nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZLCBkYXRhLmFzT2JqZWN0KCkpO1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIFNhdmluZyBjb25maWcgaW50byBsb2NhbCBzdG9yYWdlIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNob3dUb2FzdChvcHRzOiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCBvcHRzKTtcbiAgfVxufVxuIl19