@eo-sdk/client 10.6.10 → 10.6.12

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 (258) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  3. package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
  4. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  5. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
  6. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  7. package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
  8. package/app/eo-framework/util/services/utilities.service.d.ts +190 -0
  9. package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
  10. package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
  11. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -1
  12. package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
  13. package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
  14. package/esm2020/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +2 -1
  15. package/esm2020/app/eo-framework/grid/grid.component.mjs +2 -2
  16. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -1
  17. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  18. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +10 -3
  19. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
  20. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +7 -7
  21. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
  22. package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
  23. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +2 -2
  24. package/esm2020/app/eo-framework/util/services/utilities.service.mjs +4 -1
  25. package/fesm2015/eo-sdk-client.mjs +74 -46
  26. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  27. package/fesm2020/eo-sdk-client.mjs +74 -46
  28. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  29. package/misc/scripts/exclude-core-ng-package.js +11 -0
  30. package/misc/scripts/prebuild-about-state.js +2 -3
  31. package/package.json +3 -11
  32. package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
  33. package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
  34. package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
  35. package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
  36. package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
  37. package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
  38. package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
  39. package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
  40. package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
  41. package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
  42. package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
  43. package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
  44. package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
  45. package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
  46. package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
  47. package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
  48. package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
  49. package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
  50. package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
  51. package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
  52. package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -138
  53. package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
  54. package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
  55. package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
  56. package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
  57. package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
  58. package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
  59. package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
  60. package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
  61. package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
  62. package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
  63. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
  64. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
  65. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
  66. package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
  67. package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -360
  68. package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
  69. package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
  70. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
  71. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
  72. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
  73. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
  74. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
  75. package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
  76. package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
  77. package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
  78. package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
  79. package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
  80. package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
  81. package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
  82. package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
  83. package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
  84. package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
  85. package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
  86. package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
  87. package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
  88. package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
  89. package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
  90. package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -484
  91. package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
  92. package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
  93. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
  94. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
  95. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
  96. package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
  97. package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
  98. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
  99. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
  100. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
  101. package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
  102. package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
  103. package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
  104. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
  105. package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
  106. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6124
  107. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  108. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6139
  109. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  110. package/projects/eo-sdk/core/README.md +0 -113
  111. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
  112. package/projects/eo-sdk/core/index.d.ts +0 -6
  113. package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
  114. package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
  115. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
  116. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
  117. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
  118. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
  119. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
  120. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
  121. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
  122. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
  123. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
  124. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
  125. package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
  126. package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
  127. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
  128. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
  129. package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
  130. package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
  131. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
  132. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
  133. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
  134. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
  135. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
  136. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
  137. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
  138. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
  139. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
  140. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
  141. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
  142. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
  143. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
  144. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
  145. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
  146. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
  147. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
  148. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
  149. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
  150. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
  151. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
  152. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
  153. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
  154. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
  155. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
  156. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
  157. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
  158. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
  159. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
  160. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
  161. package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
  162. package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
  163. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
  164. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
  165. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
  166. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
  167. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
  168. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
  169. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
  170. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
  171. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
  172. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
  173. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
  174. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
  175. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
  176. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
  177. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
  178. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
  179. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
  180. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
  181. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
  182. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
  183. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
  184. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
  185. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
  186. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
  187. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
  188. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
  189. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
  190. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
  191. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
  192. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
  193. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
  194. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
  195. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
  196. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
  197. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
  198. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
  199. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
  200. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
  201. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
  202. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
  203. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
  204. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
  205. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
  206. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
  207. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
  208. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
  209. package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
  210. package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
  211. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
  212. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
  213. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
  214. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
  215. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
  216. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
  217. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
  218. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
  219. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
  220. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
  221. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
  222. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
  223. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
  224. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
  225. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
  226. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
  227. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
  228. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
  229. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
  230. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
  231. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
  232. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
  233. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
  234. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
  235. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
  236. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
  237. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
  238. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
  239. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
  240. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
  241. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
  242. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
  243. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
  244. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
  245. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
  246. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
  247. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
  248. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
  249. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
  250. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
  251. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
  252. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
  253. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
  254. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
  255. package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
  256. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
  257. package/projects/eo-sdk/core/public_api.d.ts +0 -82
  258. package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
@@ -188,6 +188,7 @@ let InboxDetailsComponent = class InboxDetailsComponent {
188
188
  this.setupWorkItem();
189
189
  this.setFormOptions(form, data, actions);
190
190
  this.updateInboxSate();
191
+ this.eventService.trigger(EnaioEvent.INBOX_ITEM_LOCKED);
191
192
  }, error => {
192
193
  if (error.status === 409) {
193
194
  Utils.throw(null, this.translate.instant('eo.bpm.event.script.execution.error'), this.workItem.title).call(this, {});
@@ -208,6 +209,7 @@ let InboxDetailsComponent = class InboxDetailsComponent {
208
209
  this.workItem = res;
209
210
  this.setupWorkItem();
210
211
  this.updateInboxSate();
212
+ this.eventService.trigger(EnaioEvent.INBOX_ITEM_UNLOCKED);
211
213
  }, Utils.throw(null, this.translate.instant('eo.process.activity.unlock.denied'), this.workItem.title));
212
214
  }
213
215
  }
@@ -454,4 +456,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
454
456
  type: HostBinding,
455
457
  args: ['attr.data-type']
456
458
  }] } });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBRUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxlQUFlLEVBRWYsVUFBVSxFQUdWLFNBQVMsRUFNVCxLQUFLLEVBSU4sTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU8vQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRNUQsSUFBTSxxQkFBcUIsR0FBM0IsTUFBTSxxQkFBcUI7SUF5Q2hDLElBQ0ksSUFBSSxDQUFDLENBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsRUFBRTtZQUNMLGVBQWU7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FB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QUFTLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7O2tIQTlmVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixxVUM3Q2xDLHk0U0FzTUE7QUR6SmEscUJBQXFCO0lBTmpDLFlBQVksRUFBRTtHQU1GLHFCQUFxQixDQStmakM7U0EvZlkscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOzRZQUtOLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUztnQkFtQ1gsT0FBTztzQkFBZixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7dUJBQUMsTUFBTTtnQkFrQnNCLFFBQVE7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCcG1TZXJ2aWNlLFxuICBDbGlwYm9hcmQsXG4gIENsaXBib2FyZEFjdGlvbixcbiAgQ2xpcGJvYXJkU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBGaWxlRW50cnksXG4gIEluYm94SXRlbSxcbiAgSW5ib3hTZXJ2aWNlLFxuICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFV0aWxzLFxuICBXb3JrSXRlbSxcbiAgV29ya0l0ZW1BY3Rpb24sXG4gIFdvcmtJdGVtSGlzdG9yeUVudHJ5XG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge1NlbGVjdGlvbkNvbmZpZywgU2VsZWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8taW5ib3gtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5ib3gtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluYm94RGV0YWlsc0NvbXBvbmVudCAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdicG1Gb3JtJykgYnBtRm9ybUVsOiBPYmplY3RGb3JtQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgZGVmYXVsdFdvcmtJdGVtQWN0aW9uOiBXb3JrSXRlbUFjdGlvbjtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfaXRlbTogSW5ib3hJdGVtO1xuICB3b3JrSXRlbTogV29ya0l0ZW07XG4gIGhpc3Rvcnk6IFdvcmtJdGVtSGlzdG9yeUVudHJ5W107XG4gIC8vIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgd29yayBpdGVtIGlzIGxvY2tlZCBieSB0aGUgdXNlclxuICBsb2NrZWQ6IGJvb2xlYW47XG4gIC8vIENPT0wtMTE1MDZcbiAgcHJldmVudENsaWNrVGhyb3VnaDogYm9vbGVhbjtcbiAgLy8gY3VycmVudCBjbGlwYm9hcmQgY29udGVudHNcbiAgY2xpcGJvYXJkOiBDbGlwYm9hcmQ7XG5cbiAgLy8gdXNlZCBmb3IgaGFuZGxpbmcgU1VCU0NSSVBUSU9OUyBhbmQgUkVTVUJNSVNTSU9OU1xuICBzZXR0aW5nczoge1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYWN0aW9uVGl0bGU6IHN0cmluZztcbiAgfTtcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIHNlbGVjdGVkQ29udGVudEZpbGVJZDogc3RyaW5nO1xuICB3b3JrSXRlbUluZGV4ZGF0YTogSW5kZXhEYXRhO1xuICBwZXJmb3JtZXJTaG93OiBib29sZWFuO1xuICBzdWJzdGl0dXRlU2hvdzogYm9vbGVhbjtcbiAgYWN0aW9uUHJvY2Vzc2luZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGluaXRpYWxpemluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGZpbGVzQWRkaW5nOiBTdWJzY3JpcHRpb24gfCBhbnkgPSB7Y2xvc2VkOiB0cnVlfTtcbiAgbG9hZEVycm9yOiBib29sZWFuO1xuICBzdG9yYWdlS2V5TGFzdEl0ZW1JRCA9ICdlby5pbmJveC5sYXN0SXRlbUlEJztcblxuICBASW5wdXQoKSBwbHVnaW5zOiBhbnlbXTtcblxuICBASW5wdXQoKSBlbXB0eVN0YXRlOiBFbXB0eVN0YXRlO1xuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBpdGVtKGk6IEluYm94SXRlbSkge1xuICAgIHRoaXMuX2l0ZW0gPSBpO1xuICAgIGlmIChpKSB7XG4gICAgICAvLyByZXNldCB2YWx1ZXNcbiAgICAgIHRoaXMud29ya0l0ZW0gPSBudWxsO1xuICAgICAgdGhpcy5oaXN0b3J5ID0gW107XG4gICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByb2Nlc3MoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpdGVtKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHlwZScpIGdldCBkYXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtID8gdGhpcy5pdGVtLnR5cGUgOiAnbm9uZSc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbiA9IHtcbiAgICAgIGNvZGU6IDAsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy50YXNrLmFjdGlvbnMuZGVmYXVsdC50aXRsZScpLFxuICAgICAgdHlwZTogJ0ZPUldBUkQnXG4gICAgfTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXRlbS50eXBlID09PSBJbmJveEl0ZW0uVFlQRV9CUE0pIHtcbiAgICAgIHRoaXMuY3JlYXRlQlBNV29ya0l0ZW0oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtID0gdGhpcy5faXRlbTtcbiAgICB9XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuZm9ybVN0YXRlID0gZXZ0O1xuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgLy8gYmVjYXVzZSB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmb3JtIHN0YXR1cyBjaGFuZ2VzLFxuICAgIC8vIHBlbmRpbmcgdGFzayB3aWxsIG9ubHkgYmUgc3RhcnRlZCBvbmNlIHVudGlsIGl0IHdhcyBmaW5pc2hlZFxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xuICAgICAgdGhpcy5wZW5kaW5nVGFza0lkID0gdGhpcy5wZW5kaW5nQ2hhbmdlcy5zdGFydFRhc2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyB0aGUgY3VycmVudCBpbmJveCBpdGVtXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3MoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSBmYWxzZTtcblxuICAgIHN3aXRjaCAodGhpcy5pdGVtLnR5cGUpIHtcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfQlBNOiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfU1VCU0NSSVBUSU9OOiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRE1TSXRlbSgnc3Vic2NyaXB0aW9uJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9SRVNVQk1JU1NJT046IHtcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdyZXN1Ym1pc3Npb24nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRE1TSXRlbShkbXNUeXBlKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBgZW8ucHJvY2Vzcy5kZXRhaWxzLnRhc2suJHtkbXNUeXBlfS5kZXNjcmlwdGlvbmBcbiAgICAgICksXG4gICAgICBhY3Rpb25UaXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy5idXR0b24uJHtkbXNUeXBlfS5yZW1vdmVgXG4gICAgICApXG4gICAgfTtcbiAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy5pdGVtLnRhcmdldCk7XG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkgPSAocmVzOiBXb3JrSXRlbSk6IFdvcmtJdGVtID0+IHtcbiAgICBpZiAoIXJlcy5hY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJlcy5hY3Rpb25zID0gW3RoaXMuZGVmYXVsdFdvcmtJdGVtQWN0aW9uXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIGZvciBpdGVtcyBvZiB0eXBlICdCUE0nIGZldGNoIHdvcmsgaXRlbSBmb3IgbW9yZSBpbmZvcm1hdGlvbnNcbiAgY3JlYXRlQlBNV29ya0l0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZVxuICAgICAgLmdldFdvcmtJdGVtKHRoaXMuaXRlbS5zb3VyY2VJZCwgdGhpcy5pdGVtLmlkKVxuICAgICAgLnBpcGUobWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZvcm0sXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEsXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmFjdGlvbnNcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIGF1dG8tc2VsZWN0IGZpcnN0IGF0dGFjaGVkIGNvbnRlbnRcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQoXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ub3RpZnkuZXJyb3IoXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsJyksXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbC5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtT3B0aW9ucyhmb3JtLCBkYXRhLCBhY3Rpb25zOiBXb3JrSXRlbUFjdGlvbltdKSB7XG4gICAgaWYgKGZvcm0pIHtcbiAgICAgIGZvcm0uc2l0dWF0aW9uID0gJ0VESVQnO1xuICAgICAgdGhpcy5mb3JtT3B0aW9ucyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIGZvcm1Nb2RlbDogZm9ybSxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgPyB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykgOiB7fSxcbiAgICAgICAgICAvLyBmb3JtIHNjcmlwdCB3aWxsIGJlIHByb3ZpZGVkIHdpdGggdGhlIGxpc3Qgb2YgZmlsZSBlbnRyaWVzXG4gICAgICAgICAgLy8gYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQgd29yayBpdGVtXG4gICAgICAgICAgb2JqZWN0czogdGhpcy53b3JrSXRlbS5maWxlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluYm94U2F0ZSgpIHtcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIHtcbiAgICBsZXQgdHJhbnNmb3JtZWRBY3Rpb25zID0ge307XG4gICAgYWN0aW9ucy5mb3JFYWNoKGEgPT4ge1xuICAgICAgaWYgKGEuZmVhc2libGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhLmZlYXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGEuZmVhc2liaWxpdHkgPSB2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYS5mZWFzaWJsZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmZlYXNpYmxlO1xuICAgICAgfTtcbiAgICAgIHRyYW5zZm9ybWVkQWN0aW9uc1thLmNvZGUudG9TdHJpbmcoKV0gPSBhO1xuICAgIH0pO1xuICAgIHJldHVybiB0cmFuc2Zvcm1lZEFjdGlvbnM7XG4gIH1cblxuICAvKiBMb2NrcyBhIHdvcmsgaXRlbSAocGVyc29uYWxpemUpICovXG4gIGxvY2tXb3JrSXRlbSgpIHtcbiAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5sb2NrV29ya0l0ZW0odGhpcy53b3JrSXRlbSlcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgY29uc3Qge2FjdGlvbnMsIGRhdGEsIGZvcm19ID0gcmVzO1xuICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xuICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhmb3JtLCBkYXRhLCBhY3Rpb25zKTtcbiAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA5KSB7XG4gICAgICAgICAgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmV2ZW50LnNjcmlwdC5leGVjdXRpb24uZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkuY2FsbCh0aGlzLCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKS5jYWxsKHRoaXMsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVW4tTG9ja3MgYSB3b3JrIGl0ZW0gKGRlLXBlcnNvbmFsaXplKVxuICAgKi9cbiAgdW5sb2NrV29ya0l0ZW0oKSB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmNoZWNrKCkpIHtcbiAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxuICAgICAgICAudW5sb2NrV29ya0l0ZW0odGhpcy53b3JrSXRlbSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMud29ya0l0ZW0gPSByZXM7XG4gICAgICAgICAgdGhpcy5zZXR1cFdvcmtJdGVtKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS51bmxvY2suZGVuaWVkJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSB3b3JrIGl0ZW1zIGFjdGlvbi5cbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIHRvIGJlIGV4ZWN1dGVzXG4gICAqL1xuICBleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uOiBXb3JrSXRlbUFjdGlvbikge1xuICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcbiAgICB9LCAxMDAwKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcbiAgICAgICAgaWYgKGFjdGlvbi51cmwpIHtcbiAgICAgICAgICAvLyBwcm9jZXNzIGV4dGVybmFsIGFjdGlvbiBieSBzYXZpbmcgd29yayBpdGVtIGFuZCByZWRpcmVjdCB0byBhY3Rpb25zIHVybFxuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5zYXZlV29ya0l0ZW0oKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuQWN0aW9uVXJsKGFjdGlvbi51cmwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5icG1Gb3JtRWwpIHtcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZGF0YSA9IHRoaXMuYnBtRm9ybUVsLmdldEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5nIHRhc2sgYmVjYXVzZSB0aGUgZm9ybSB3aWxsIGJlIGRlc3Ryb3llZCB3aXRob3V0IHNhdmluZ1xuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYnBtU2VydmljZVxuICAgICAgICAgICAgLmZvcndhcmRXb3JrSXRlbSh0aGlzLndvcmtJdGVtLCBhY3Rpb24pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuZm9yd2FyZC5zdWNjZXNzJyksXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnRpdGxlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLmVycm9yJyksIHRoaXMud29ya0l0ZW0udGl0bGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5BY3Rpb25VcmwodXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodXJsLnN1YnN0cigwLCA0KSA9PT0gJ2h0dHAnKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIGEgd29yayBpdGVtcyBmaWxlIGVudHJ5LlxuICAgKiBAcGFyYW0gZmlsZSBGaWxlRW50cnkgZWxlbWVudCB0byBiZSBzZWxlY3RlZFxuICAgKi9cbiAgb3BlbldvcmtJdGVtQ29udGVudChmaWxlPzogRmlsZUVudHJ5KSB7XG4gICAgaWYgKCFmaWxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IG51bGw7XG4gICAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBmaWxlLmlkO1xuICAgICAgbGV0IHBhcmFtcyA9IHtcbiAgICAgICAgaWQ6IGZpbGUuaWQsXG4gICAgICAgIHR5cGU6IGZpbGUudHlwZVxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBmaWxlIChhdHRhY2hlZCBETVNPYmplY3QpIGluIG9iamVjdCBzdGF0ZVxuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgb3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dChldnQpIHtcbiAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YSB8fCB7fTtcbiAgICBjb25zdCBmaWxlVHlwZTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczoge3R5cGU6IGZpbGUudHlwZX19O1xuICAgIGlmIChldnQuY3RybEtleSkge1xuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNsaXBib2FyZCBjb250ZW50IHRvIHRoZSB3b3JrIGl0ZW1cbiAgICovXG4gIGFkZEZyb21DbGlwYm9hcmQoKSB7XG4gICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAuYWRkRmlsZUVsZW1lbnRzRnJvbUNsaXBib2FyZCh0aGlzLndvcmtJdGVtLCB0aGlzLmNsaXBib2FyZClcbiAgICAgIC5zdWJzY3JpYmUod29ya0l0ZW0gPT4ge1xuICAgICAgICB0aGlzLndvcmtJdGVtID0gd29ya0l0ZW07XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jbGVhcigpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQpIHtcbiAgICAgICAgICAvLyBvcGVuIGZpcnN0IGl0ZW0gd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkXG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMud29ya0l0ZW0uZmlsZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uZXJyb3InKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5hZGQubWVzc2FnZScpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgZmlsZSBlbnRyeSBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGVcbiAgICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgZW50cnkgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gZXZ0IFRoZSBjbGljayBldmVudFxuICAgKi9cbiAgcmVtb3ZlV29ya0l0ZW1Db250ZW50KGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZXZ0LmRhdGEpIHtcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhO1xuICAgICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAgIC5yZW1vdmVGaWxlRWxlbWVudCh0aGlzLndvcmtJdGVtLnByb2Nlc3NJZCwgdGhpcy53b3JrSXRlbS5pZCwgZmlsZS5pZClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlID0gdGhpcy53b3JrSXRlbS5maWxlLmZpbHRlcihmID0+IGYuaWQgIT09IGZpbGUuaWQpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9PT0gZmlsZS5pZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KFxuICAgICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlLm1lc3NhZ2UnKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSB3b3JrIGl0ZW1zIGZvcm0gZGF0YVxuICAgKi9cbiAgc2F2ZVdvcmtJdGVtRGF0YSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCAmJiB0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xuICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHByZXBhcmVOZXdXb3JrSXRlbSh3b3JrSXRlbTogV29ya0l0ZW0pOiBib29sZWFuIHtcbiAgICB0aGlzLndvcmtJdGVtID0gd29ya0l0ZW07XG4gICAgY29uc3Qge2FjdGlvbnMsIGZvcm0sIGRhdGF9ID0gdGhpcy53b3JrSXRlbTtcbiAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICB0aGlzLnNldEZvcm1PcHRpb25zKGZvcm0sIGRhdGEsIGFjdGlvbnMpO1xuICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3MoXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuc3VjY2VzcycpXG4gICAgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgY3VycmVudCB3b3JrIGl0ZW1cbiAgICovXG4gIHByaXZhdGUgc2F2ZVdvcmtJdGVtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcbiAgICByZXR1cm4gdGhpcy5icG1TZXJ2aWNlLnNhdmVXb3JrSXRlbSh0aGlzLndvcmtJdGVtKS5waXBlKFxuICAgICAgbWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpLFxuICAgICAgbWFwKHdvcmtJdGVtID0+IHRoaXMucHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtKSksXG4gICAgICBjYXRjaEVycm9yKFxuICAgICAgICBVdGlscy5jYXRjaChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5pbmRleGRhdGEuc2F2ZS5lcnJvcicpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSBpbmJveC5cbiAgICovXG4gIGNvbmZpcm1JbmJveEl0ZW0oKSB7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuaW5ib3hTZXJ2aWNlXG4gICAgICAucmVtb3ZlSXRlbSh0aGlzLml0ZW0pXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5hY3Rpdml0eS5jb25maXJtLnN1Y2Nlc3MnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQsIHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuaXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgICAgIH0sIFV0aWxzLmNhdGNoKG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuaXRlbS5yZW1vdmUuZmFpbCcpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBzdGF0ZSBhbmQgZGF0YSBmb3IgdGhlIGN1cnJlbnQgd29yayBpdGVtLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFdvcmtJdGVtKCkge1xuICAgIHRoaXMubG9ja2VkID0gdGhpcy53b3JrSXRlbS5zdGF0ZSA9PT0gJ1BFUlNPTic7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlLCAxMDAwKTtcbiAgICBjb25zdCB7Zm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xuICAgIGNvbnN0IHdvcmtJdGVtID0ge2Zvcm0sIGRhdGF9O1xuICAgIHRoaXMud29ya0l0ZW1JbmRleGRhdGEgPSBmb3JtICYmIGRhdGEgPyB3b3JrSXRlbSA6IG51bGw7XG5cbiAgICAvLyBmZXRjaCBoaXN0b3J5XG4gICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0hpc3RvcnkodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQpXG4gICAgICAucGlwZShtYXAocmVzID0+IHtcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0uZWRpdG9yKSB7XG4gICAgICAgICAgICBpdGVtLmRhdGEuaW1hZ2UgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaShpdGVtLmVkaXRvci5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gc29ydCBieSBudW1iZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBhdXRvLWluY3JlbWVudGluZ1xuICAgICAgICAvLyBpbmRleCBvZiBhZGRlZCBoaXN0b3J5IGVudHJpZXNcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0gcmVzLnNvcnQoKGEsIGIpID0+IGIubnVtYmVyIC0gYS5udW1iZXIpO1xuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmNvZGU7XG4gIH1cblxuICB0cmFja0J5SWQoaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHN1YnNjcmliZSBmb3IgY2hhbmdlcyB0byB0aGUgY2xpcGJvYXJkIHRvIGVuYWJsZSBhZGRpbmcgY29udGVudHMgdG8gdGhlIHdvcmsgaXRlbVxuICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jbGlwYm9hcmQkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChjbGlwYm9hcmQ6IENsaXBib2FyZCkgPT5cbiAgICAgICAgKHRoaXMuY2xpcGJvYXJkID1cbiAgICAgICAgICBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSA/IGNsaXBib2FyZCA6IG51bGwpXG4gICAgICApO1xuICAgIC8vIGNvbXBvbmVudCBpcyBvbmx5IGludGVyZXN0ZWQgaW4gY29waWVkIGl0ZW1zXG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcbiAgICAgICAgLmZvY3VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pdGVtID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlELCB0aGlzLml0ZW0uaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5ib3gtZGV0YWlsc1wiICpuZ0lmPVwiaXRlbTsgZWxzZSBub0l0ZW1cIiBbbmdDbGFzc109XCJ7YnBtOiBpdGVtLnR5cGUgPT09ICdCUE0nfVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJlby1oZWFkXCIgW25nQ2xhc3NdPVwieydlby1oZWFkLXRhYnMnOiBpdGVtLnR5cGUgPT09ICdCUE0nfVwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJlby1oZWFkZXJcIj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiAqbmdJZj1cIiFpdGVtLmljb25JZFwiIHRpdGxlPVwie3tpdGVtPy50eXBlfX1cIlxuICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19sb29wLnN2ZydcIj48L2VvLWljb24+XG4gICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25JZFwiIHRpdGxlPVwie3tpdGVtPy50eXBlfX1cIiBbaWNvbklkXT1cIml0ZW0uaWNvbklkXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvblwiIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgICA8aDMgKm5nSWY9XCJ3b3JrSXRlbSAmJiAhaXRlbS5kZXNjcmlwdGlvblwiIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3t3b3JrSXRlbS5wcm9jZXNzVGl0bGUgPyB3b3JrSXRlbS5wcm9jZXNzVGl0bGUgOiB3b3JrSXRlbS5xbW9kZWxuYW1lfX08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcmVmcmVzaC1idXR0b25cIiAqbmdJZj1cImluaXRpYWxpemluZy5jbG9zZWRcIiAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIiAqbmdJZj1cImluaXRpYWxpemluZy5jbG9zZWRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJsb2FkLWVycm9yXCIgKm5nSWY9XCJsb2FkRXJyb3JcIj5cbiAgICAgIDxlby1lcnJvci1tZXNzYWdlPjwvZW8tZXJyb3ItbWVzc2FnZT5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gZGV0YWlscyBmb3IgQlBNIGl0ZW1zIC0tPlxuICAgIDx5dmMtdGFicyAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ0JQTSc7IGVsc2UgZG1zVGFza1wiIGxheW91dFNldHRpbmdzSUQ9XCJlby5pbmJveC5kZXRhaWxzLnRhYnNcIj5cbiAgICAgIDwhLS0gdGFzayAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3Rhc2snLCBsYWJlbDogJ2VvLnByb2Nlc3MuZGV0YWlscy50YWIudGFzaycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgdGFza1wiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1kZXNjcmlwdGlvblwiICpuZ0lmPVwid29ya0l0ZW0/LmRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrLmRlc2NyaXB0aW9uPC9oMz5cbiAgICAgICAgICAgICAgPGRpdj57e3dvcmtJdGVtLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZW8tZHVldGltZUluZm8gKm5nSWY9XCJpdGVtPy5kdWV0aW1lXCIgW2l0ZW1dPVwiaXRlbVwiPjwvZW8tZHVldGltZUluZm8+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLXBlcmZvcm1lclwiICpuZ0lmPVwid29ya0l0ZW0/LmluU3Vic3RpdHV0ZU9mPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRcIiBbbmdDbGFzc109XCJ7cGVyZm9ybWVyU2hvdzogc3Vic3RpdHV0ZVNob3d9XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3Muc3Vic3RpdHV0ZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25cIiAoY2xpY2spPVwic3Vic3RpdHV0ZVNob3cgPSAhc3Vic3RpdHV0ZVNob3dcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7d29ya0l0ZW0uaW5TdWJzdGl0dXRlT2YubGVuZ3RofX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJzdWJzdGl0dXRlU2hvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtZXJcIiAqbmdGb3I9XCJsZXQgdSBvZiB3b3JrSXRlbS5pblN1YnN0aXR1dGVPZlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX3VzZXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3UuZmlyc3RuYW1lfX0ge3t1Lmxhc3RuYW1lfX0gPHNwYW4gY2xhc3M9XCJxbmFtZVwiPnt7dS5uYW1lfX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2NrZWQ7IGVsc2UgdW5sb2NrZWRcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1mb3JtXCI+XG4gICAgICAgICAgICAgICAgPGVvLW9iamVjdC1mb3JtIFtmb3JtT3B0aW9uc109XCJmb3JtT3B0aW9uc1wiICpuZ0lmPVwid29ya0l0ZW0/LmZvcm1cIlxuICAgICAgICAgICAgICAgICAgKHN0YXR1c0NoYW5nZWQpPVwib25Gb3JtU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCIgI2JwbUZvcm0+PC9lby1vYmplY3QtZm9ybT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1bmxvY2tlZD5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWNlXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MudGFzay5jb250aW51ZTwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLXBlcmZvcm1lclwiICpuZ0lmPVwid29ya0l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZFwiIFtuZ0NsYXNzXT1cIntwZXJmb3JtZXJTaG93OiBwZXJmb3JtZXJTaG93fVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MucmVjaXBpZW50czwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvblwiIChjbGljayk9XCJwZXJmb3JtZXJTaG93ID0gIXBlcmZvcm1lclNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t3b3JrSXRlbS5wZXJmb3JtZXIudXNlcnMubGVuZ3RoICsgd29ya0l0ZW0ucGVyZm9ybWVyLnJvbGVzLmxlbmd0aCArXG4gICAgICAgICAgICAgICAgICAgICAgd29ya0l0ZW0ucGVyZm9ybWVyLmdyb3Vwcy5sZW5ndGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hcnJvd19kb3duLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwicGVyZm9ybWVyU2hvd1wiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IGcgb2Ygd29ya0l0ZW0ucGVyZm9ybWVyLmdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV9ncm91cC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e2cubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1lclwiICpuZ0Zvcj1cImxldCByIG9mIHdvcmtJdGVtLnBlcmZvcm1lci5yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3JnYV9yb2xlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7ci5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IHUgb2Ygd29ya0l0ZW0ucGVyZm9ybWVyLnVzZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX3VzZXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t1LmZpcnN0bmFtZX19IHt7dS5sYXN0bmFtZX19IDxzcGFuIGNsYXNzPVwicW5hbWVcIj57e3UubmFtZX19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmRleGRhdGFcIiAqbmdJZj1cIndvcmtJdGVtSW5kZXhkYXRhPy5kYXRhXCI+XG4gICAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRldGFpbHMudGFiLnRhc2suaW5kZXhkYXRhPC9oMz5cbiAgICAgICAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJ3b3JrSXRlbUluZGV4ZGF0YVwiPjwvZW8taW5kZXhkYXRhLXN1bW1hcnk+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZDsgZWxzZSB1bmxvY2tlZEFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICFhY3Rpb25Qcm9jZXNzaW5nLmNsb3NlZH1cIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi11bmxvY2tcIiAoY2xpY2spPVwidW5sb2NrV29ya0l0ZW0oKVwiIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRlcGVyc29uYWxpemU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXNhdmVcIiAoY2xpY2spPVwic2F2ZVdvcmtJdGVtRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya0l0ZW0/LmZvcm0gJiYgIWZvcm1TdGF0ZT8uaW52YWxpZCAmJiBmb3JtU3RhdGU/LmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5vYmplY3QuaW5kZXhkYXRhLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IHByZXZlbnRDbGlja1Rocm91Z2h9XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWV4ZWN1dGVcIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHdvcmtJdGVtLmFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlDb2RlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uKVwiIFtuZ0NsYXNzXT1cIntleHQ6IGFjdGlvbi51cmx9XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoISFmb3JtU3RhdGUgJiYgZm9ybVN0YXRlPy5pbnZhbGlkKSB8fCAhYWN0aW9uLmZlYXNpYmxlXCI+e3thY3Rpb24udGl0bGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN1bmxvY2tlZEFjdGlvbnM+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1hY3Rpb25zXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhYWN0aW9uUHJvY2Vzc2luZy5jbG9zZWQgfHwgIXdvcmtJdGVtfVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sb2NrXCIgKGNsaWNrKT1cImxvY2tXb3JrSXRlbSgpXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MucGVyc29uYWxpemU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi5wcm9ncmVzcycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcHJvY2Vzcy1oaXN0b3J5XCI+XG4gICAgICAgICAgICA8ZW8tcHJvY2Vzcy1oaXN0b3J5IFtoaXN0b3J5XT1cImhpc3RvcnlcIj48L2VvLXByb2Nlc3MtaGlzdG9yeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGF0dGFjaG1lbnRzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnZmlsZScsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi5hdHRhY2htZW50cycgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcHJvY2Vzcy1maWxlc1wiPlxuICAgICAgICAgICAgPGVvLXByb2Nlc3MtZmlsZSBbcHJvY2Vzc0ZpbGVdPVwid29ya0l0ZW0/LmZpbGVcIiBbcGVybWlzc2lvbnNdPVwid29ya0l0ZW0/LmZpbGVFbnRyeVBlcm1pc3Npb25zXCJcbiAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiIWZpbGVzQWRkaW5nLmNsb3NlZFwiIFtjbGlwYm9hcmRdPVwiY2xpcGJvYXJkXCIgW2VkaXRhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRDb250ZW50RmlsZUlkXT1cInNlbGVjdGVkQ29udGVudEZpbGVJZFwiXG4gICAgICAgICAgICAgIChvbk9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQpPVwib3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG9uT3BlbldvcmtJdGVtQ29udGVudCk9XCJvcGVuV29ya0l0ZW1Db250ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAob25SZW1vdmVXb3JrSXRlbUNvbnRlbnQpPVwicmVtb3ZlV29ya0l0ZW1Db250ZW50KCRldmVudClcIiAob25QYXN0ZVByb2Nlc3NGaWxlKT1cImFkZEZyb21DbGlwYm9hcmQoKVwiPlxuICAgICAgICAgICAgPC9lby1wcm9jZXNzLWZpbGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBwbHVnaW4gdGFicyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgcCBvZiBwbHVnaW5zXCIgW3l2Y1RhYl09XCJ7aWQ6IHAuaWQsIGxhYmVsOiBwLmlkIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tcGx1Z2luIFtpZF09XCJwLmlkXCIgW3BhcmVudF09XCJ0aGlzXCI+PC9lby1wbHVnaW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwveXZjLXRhYnM+XG5cbiAgICA8IS0tIGJvZHkgd2hlbiB3ZSBoYXZlIGEgc3Vic2NyaXB0aW9uIG9yIGEgcmVzdWJtaXNzaW9uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZG1zVGFzaz5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrLmRlc2NyaXB0aW9uPC9oMz5cbiAgICAgICAgICAgIDxkaXY+e3tzZXR0aW5ncz8uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaXRlbSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtYWN0aW9uc1wiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogIWFjdGlvblByb2Nlc3NpbmcuY2xvc2VkfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tY29uZmlybVwiIFtkaXNhYmxlZF09XCJwcmV2ZW50Q2xpY2tUaHJvdWdoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1JbmJveEl0ZW0oKVwiPnt7c2V0dGluZ3M/LmFjdGlvblRpdGxlfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9JdGVtPlxuICA8ZW8tZXJyb3ItbWVzc2FnZSBbZW1wdHlTdGF0ZV09XCJ7aWNvbjogZW1wdHlTdGF0ZS5pY29uLCB0ZXh0OiBlbXB0eVN0YXRlLnRleHQsIGNsYXNzTmFtZTogZW1wdHlTdGF0ZS5jbGFzc05hbWV9XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmVycm9yXCI+PC9uZy1jb250ZW50PlxuICA8L2VvLWVycm9yLW1lc3NhZ2U+XG48L25nLXRlbXBsYXRlPlxuIl19
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBRUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxlQUFlLEVBRWYsVUFBVSxFQUdWLFNBQVMsRUFNVCxLQUFLLEVBSU4sTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU8vQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRNUQsSUFBTSxxQkFBcUIsR0FBM0IsTUFBTSxxQkFBcUI7SUF5Q2hDLElBQ0ksSUFBSSxDQUFDLENBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsRUFBRTtZQUNMLGVBQWU7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FB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LFNBQVM7aUJBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2lCQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxFQUFFO29CQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO29CQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDdEU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZixDQUFDOztrSEFoZ0JVLHFCQUFxQjtzR0FBckIscUJBQXFCLHFVQzdDbEMseTRTQXNNQTtBRHpKYSxxQkFBcUI7SUFOakMsWUFBWSxFQUFFO0dBTUYscUJBQXFCLENBaWdCakM7U0FqZ0JZLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjs0WUFLTixTQUFTO3NCQUE5QixTQUFTO3VCQUFDLFNBQVM7Z0JBbUNYLE9BQU87c0JBQWYsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0YsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBa0JzQixRQUFRO3NCQUExQyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQnBtU2VydmljZSxcbiAgQ2xpcGJvYXJkLFxuICBDbGlwYm9hcmRBY3Rpb24sXG4gIENsaXBib2FyZFNlcnZpY2UsXG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgRmlsZUVudHJ5LFxuICBJbmJveEl0ZW0sXG4gIEluYm94U2VydmljZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlscyxcbiAgV29ya0l0ZW0sXG4gIFdvcmtJdGVtQWN0aW9uLFxuICBXb3JrSXRlbUhpc3RvcnlFbnRyeVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RW1wdHlTdGF0ZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0Zvcm1TdGF0dXNDaGFuZ2VkRXZlbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL2Zvcm0tc3RhdHVzLWNoYW5nZWQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Q2VsbFJlbmRlcmVyfSBmcm9tICcuLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtJbmRleERhdGF9IGZyb20gJy4uL3VpL2luZGV4ZGF0YS1zdW1tYXJ5L2luZGV4ZGF0YS1zdW1tYXJ5LmNvbXBvbmVudCc7XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWluYm94LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5ib3gtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luYm94LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbmJveERldGFpbHNDb21wb25lbnQgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnYnBtRm9ybScpIGJwbUZvcm1FbDogT2JqZWN0Rm9ybUNvbXBvbmVudDtcblxuICBwcml2YXRlIGRlZmF1bHRXb3JrSXRlbUFjdGlvbjogV29ya0l0ZW1BY3Rpb247XG5cbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIGluZGV4ZGF0YVxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXG4gIHByaXZhdGUgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2l0ZW06IEluYm94SXRlbTtcbiAgd29ya0l0ZW06IFdvcmtJdGVtO1xuICBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xuICAvLyBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHdvcmsgaXRlbSBpcyBsb2NrZWQgYnkgdGhlIHVzZXJcbiAgbG9ja2VkOiBib29sZWFuO1xuICAvLyBDT09MLTExNTA2XG4gIHByZXZlbnRDbGlja1Rocm91Z2g6IGJvb2xlYW47XG4gIC8vIGN1cnJlbnQgY2xpcGJvYXJkIGNvbnRlbnRzXG4gIGNsaXBib2FyZDogQ2xpcGJvYXJkO1xuXG4gIC8vIHVzZWQgZm9yIGhhbmRsaW5nIFNVQlNDUklQVElPTlMgYW5kIFJFU1VCTUlTU0lPTlNcbiAgc2V0dGluZ3M6IHtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGFjdGlvblRpdGxlOiBzdHJpbmc7XG4gIH07XG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBzZWxlY3RlZENvbnRlbnRGaWxlSWQ6IHN0cmluZztcbiAgd29ya0l0ZW1JbmRleGRhdGE6IEluZGV4RGF0YTtcbiAgcGVyZm9ybWVyU2hvdzogYm9vbGVhbjtcbiAgc3Vic3RpdHV0ZVNob3c6IGJvb2xlYW47XG4gIGFjdGlvblByb2Nlc3Npbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xuICBpbml0aWFsaXppbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xuICBmaWxlc0FkZGluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XG4gIGxvYWRFcnJvcjogYm9vbGVhbjtcbiAgc3RvcmFnZUtleUxhc3RJdGVtSUQgPSAnZW8uaW5ib3gubGFzdEl0ZW1JRCc7XG5cbiAgQElucHV0KCkgcGx1Z2luczogYW55W107XG5cbiAgQElucHV0KCkgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZTtcbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcblxuICBASW5wdXQoJ2l0ZW0nKVxuICBzZXQgaXRlbShpOiBJbmJveEl0ZW0pIHtcbiAgICB0aGlzLl9pdGVtID0gaTtcbiAgICBpZiAoaSkge1xuICAgICAgLy8gcmVzZXQgdmFsdWVzXG4gICAgICB0aGlzLndvcmtJdGVtID0gbnVsbDtcbiAgICAgIHRoaXMuaGlzdG9yeSA9IFtdO1xuICAgICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXRlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlIDogJ25vbmUnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWxlY3Rpb246IFNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZnk6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5kZWZhdWx0V29ya0l0ZW1BY3Rpb24gPSB7XG4gICAgICBjb2RlOiAwLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MudGFzay5hY3Rpb25zLmRlZmF1bHQudGl0bGUnKSxcbiAgICAgIHR5cGU6ICdGT1JXQVJEJ1xuICAgIH07XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIGlmICh0aGlzLml0ZW0udHlwZSA9PT0gSW5ib3hJdGVtLlRZUEVfQlBNKSB7XG4gICAgICB0aGlzLmNyZWF0ZUJQTVdvcmtJdGVtKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbSA9IHRoaXMuX2l0ZW07XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChldnQ6IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2sodGhpcy5wZW5kaW5nVGFza0lkIHx8ICcgJykpIHtcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMuZmluaXNoVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgdGhlIGN1cnJlbnQgaW5ib3ggaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZEVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gZmFsc2U7XG5cbiAgICBzd2l0Y2ggKHRoaXMuaXRlbS50eXBlKSB7XG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX0JQTToge1xuICAgICAgICB0aGlzLmluaXRpYWxpemluZyA9IHRoaXMuY3JlYXRlQlBNV29ya0l0ZW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX1NVQlNDUklQVElPTjoge1xuICAgICAgICB0aGlzLmNyZWF0ZURNU0l0ZW0oJ3N1YnNjcmlwdGlvbicpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfUkVTVUJNSVNTSU9OOiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRE1TSXRlbSgncmVzdWJtaXNzaW9uJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZURNU0l0ZW0oZG1zVHlwZSkge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB7XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy50YXNrLiR7ZG1zVHlwZX0uZGVzY3JpcHRpb25gXG4gICAgICApLFxuICAgICAgYWN0aW9uVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgIGBlby5wcm9jZXNzLmRldGFpbHMuYnV0dG9uLiR7ZG1zVHlwZX0ucmVtb3ZlYFxuICAgICAgKVxuICAgIH07XG4gICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMuaXRlbS50YXJnZXQpO1xuICAgIHRoaXMuaW5pdGlhbGl6aW5nLmNsb3NlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFkZERlZmF1bHRBY3Rpb25JZkVtcHR5ID0gKHJlczogV29ya0l0ZW0pOiBXb3JrSXRlbSA9PiB7XG4gICAgaWYgKCFyZXMuYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICByZXMuYWN0aW9ucyA9IFt0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbl07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvLyBmb3IgaXRlbXMgb2YgdHlwZSAnQlBNJyBmZXRjaCB3b3JrIGl0ZW0gZm9yIG1vcmUgaW5mb3JtYXRpb25zXG4gIGNyZWF0ZUJQTVdvcmtJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5nZXRXb3JrSXRlbSh0aGlzLml0ZW0uc291cmNlSWQsIHRoaXMuaXRlbS5pZClcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1PcHRpb25zKFxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5mb3JtLFxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5kYXRhLFxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5hY3Rpb25zXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBhdXRvLXNlbGVjdCBmaXJzdCBhdHRhY2hlZCBjb250ZW50XG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KFxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlLmxlbmd0aCA/IHRoaXMud29ya0l0ZW0uZmlsZVswXSA6IG51bGxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHRoaXMubm90aWZ5LmVycm9yKFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbCcpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgJ2VvLnByb2Nlc3MuZGV0YWlscy53b3JraXRlbS5sb2FkLmZhaWwuZGVzY3JpcHRpb24nXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9uczogV29ya0l0ZW1BY3Rpb25bXSkge1xuICAgIGlmIChmb3JtKSB7XG4gICAgICBmb3JtLnNpdHVhdGlvbiA9ICdFRElUJztcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XG4gICAgICAgIC4uLntcbiAgICAgICAgICBmb3JtTW9kZWw6IGZvcm0sXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBhY3Rpb25zOiBhY3Rpb25zID8gdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIDoge30sXG4gICAgICAgICAgLy8gZm9ybSBzY3JpcHQgd2lsbCBiZSBwcm92aWRlZCB3aXRoIHRoZSBsaXN0IG9mIGZpbGUgZW50cmllc1xuICAgICAgICAgIC8vIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxuICAgICAgICAgIG9iamVjdHM6IHRoaXMud29ya0l0ZW0uZmlsZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbmJveFNhdGUoKSB7XG4gICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQWN0aW9ucyhhY3Rpb25zKSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkQWN0aW9ucyA9IHt9O1xuICAgIGFjdGlvbnMuZm9yRWFjaChhID0+IHtcbiAgICAgIGlmIChhLmZlYXNpYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYS5mZWFzaWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBhLmZlYXNpYmlsaXR5ID0gdmFsdWUgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGEuZmVhc2libGUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYS5mZWFzaWJsZTtcbiAgICAgIH07XG4gICAgICB0cmFuc2Zvcm1lZEFjdGlvbnNbYS5jb2RlLnRvU3RyaW5nKCldID0gYTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRBY3Rpb25zO1xuICB9XG5cbiAgLyogTG9ja3MgYSB3b3JrIGl0ZW0gKHBlcnNvbmFsaXplKSAqL1xuICBsb2NrV29ya0l0ZW0oKSB7XG4gICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5icG1TZXJ2aWNlXG4gICAgICAubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXG4gICAgICAucGlwZShtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSkpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IHthY3Rpb25zLCBkYXRhLCBmb3JtfSA9IHJlcztcbiAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcbiAgICAgICAgdGhpcy5zZXR1cFdvcmtJdGVtKCk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5ib3hTYXRlKCk7XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5JTkJPWF9JVEVNX0xPQ0tFRCk7XG4gICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwOSkge1xuICAgICAgICAgIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5ldmVudC5zY3JpcHQuZXhlY3V0aW9uLmVycm9yJyksIHRoaXMud29ya0l0ZW0udGl0bGUpLmNhbGwodGhpcywge30pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuYWN0aXZpdHkubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkuY2FsbCh0aGlzLCB7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuLUxvY2tzIGEgd29yayBpdGVtIChkZS1wZXJzb25hbGl6ZSlcbiAgICovXG4gIHVubG9ja1dvcmtJdGVtKCkge1xuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVjaygpKSB7XG4gICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLmJwbVNlcnZpY2VcbiAgICAgICAgLnVubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlSW5ib3hTYXRlKCk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LklOQk9YX0lURU1fVU5MT0NLRUQpO1xuICAgICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmFjdGl2aXR5LnVubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHdvcmsgaXRlbXMgYWN0aW9uLlxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gYmUgZXhlY3V0ZXNcbiAgICovXG4gIGV4ZWN1dGVXb3JrSXRlbUFjdGlvbihhY3Rpb246IFdvcmtJdGVtQWN0aW9uKSB7XG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZSB8fCAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICBpZiAoYWN0aW9uLnVybCkge1xuICAgICAgICAgIC8vIHByb2Nlc3MgZXh0ZXJuYWwgYWN0aW9uIGJ5IHNhdmluZyB3b3JrIGl0ZW0gYW5kIHJlZGlyZWN0IHRvIGFjdGlvbnMgdXJsXG4gICAgICAgICAgaWYgKHRoaXMuYnBtRm9ybUVsKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub3BlbkFjdGlvblVybChhY3Rpb24udXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHBlbmRpbmcgdGFzayBiZWNhdXNlIHRoZSBmb3JtIHdpbGwgYmUgZGVzdHJveWVkIHdpdGhvdXQgc2F2aW5nXG4gICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5icG1TZXJ2aWNlXG4gICAgICAgICAgICAuZm9yd2FyZFdvcmtJdGVtKHRoaXMud29ya0l0ZW0sIGFjdGlvbilcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5mb3J3YXJkLnN1Y2Nlc3MnKSxcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0udGl0bGVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdGhpcy5pdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkFjdGlvblVybCh1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmwuc3Vic3RyKDAsIDQpID09PSAnaHR0cCcpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSB3b3JrIGl0ZW1zIGZpbGUgZW50cnkuXG4gICAqIEBwYXJhbSBmaWxlIEZpbGVFbnRyeSBlbGVtZW50IHRvIGJlIHNlbGVjdGVkXG4gICAqL1xuICBvcGVuV29ya0l0ZW1Db250ZW50KGZpbGU/OiBGaWxlRW50cnkpIHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IGZpbGUuaWQ7XG4gICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICBpZDogZmlsZS5pZCxcbiAgICAgICAgdHlwZTogZmlsZS50eXBlXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMocGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGZpbGUgKGF0dGFjaGVkIERNU09iamVjdCkgaW4gb2JqZWN0IHN0YXRlXG4gICAqIEBwYXJhbSBmaWxlXG4gICAqL1xuICBvcGVuV29ya0l0ZW1Db250ZW50SW5Db250ZXh0KGV2dCkge1xuICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhIHx8IHt9O1xuICAgIGNvbnN0IGZpbGVUeXBlOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7dHlwZTogZmlsZS50eXBlfX07XG4gICAgaWYgKGV2dC5jdHJsS2V5KSB7XG4gICAgICB3aW5kb3cub3BlbihDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydvYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGZpbGUuaWRdLCBmaWxlVHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgY2xpcGJvYXJkIGNvbnRlbnQgdG8gdGhlIHdvcmsgaXRlbVxuICAgKi9cbiAgYWRkRnJvbUNsaXBib2FyZCgpIHtcbiAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5hZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHRoaXMud29ya0l0ZW0sIHRoaXMuY2xpcGJvYXJkKVxuICAgICAgLnN1YnNjcmliZSh3b3JrSXRlbSA9PiB7XG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCkge1xuICAgICAgICAgIC8vIG9wZW4gZmlyc3QgaXRlbSB3aGVuIG5vdGhpbmcgaXMgc2VsZWN0ZWRcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy53b3JrSXRlbS5maWxlWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5lcnJvcicpLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmZpbGUubm90aWZpY2F0aW9uLmFkZC5tZXNzYWdlJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBmaWxlIGVudHJ5IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZVxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBlbnRyeSB0byBiZSByZW1vdmVkXG4gICAqIEBwYXJhbSBldnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICByZW1vdmVXb3JrSXRlbUNvbnRlbnQoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChldnQuZGF0YSkge1xuICAgICAgY29uc3QgZmlsZTogRmlsZUVudHJ5ID0gZXZ0LmRhdGE7XG4gICAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgICAgLnJlbW92ZUZpbGVFbGVtZW50KHRoaXMud29ya0l0ZW0ucHJvY2Vzc0lkLCB0aGlzLndvcmtJdGVtLmlkLCBmaWxlLmlkKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUgPSB0aGlzLndvcmtJdGVtLmZpbGUuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID09PSBmaWxlLmlkKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQoXG4gICAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZmlsZS5sZW5ndGggPyB0aGlzLndvcmtJdGVtLmZpbGVbMF0gOiBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUnKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUubWVzc2FnZScpKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHdvcmsgaXRlbXMgZm9ybSBkYXRhXG4gICAqL1xuICBzYXZlV29ya0l0ZW1EYXRhKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkICYmIHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtOiBXb3JrSXRlbSk6IGJvb2xlYW4ge1xuICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcbiAgICBjb25zdCB7YWN0aW9ucywgZm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xuICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xuICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XG4gICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJylcbiAgICApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlV29ya0l0ZW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLndvcmtJdGVtLmRhdGEgPSB0aGlzLmJwbUZvcm1FbC5nZXRGb3JtRGF0YSgpO1xuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2Uuc2F2ZVdvcmtJdGVtKHRoaXMud29ya0l0ZW0pLnBpcGUoXG4gICAgICBtYXAodGhpcy5hZGREZWZhdWx0QWN0aW9uSWZFbXB0eSksXG4gICAgICBtYXAod29ya0l0ZW0gPT4gdGhpcy5wcmVwYXJlTmV3V29ya0l0ZW0od29ya0l0ZW0pKSxcbiAgICAgIGNhdGNoRXJyb3IoXG4gICAgICAgIFV0aWxzLmNhdGNoKFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmluZGV4ZGF0YS5zYXZlLmVycm9yJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgY3VycmVudCBpdGVtIGZyb20gdGhlIGluYm94LlxuICAgKi9cbiAgY29uZmlybUluYm94SXRlbSgpIHtcbiAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gZmFsc2U7XG4gICAgfSwgMTAwMCk7XG4gICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5pbmJveFNlcnZpY2VcbiAgICAgIC5yZW1vdmVJdGVtKHRoaXMuaXRlbSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LmFjdGl2aXR5LmNvbmZpcm0uc3VjY2VzcycpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5JTkJPWF9JVEVNX0NPTkZJUk1FRCwgdGhpcy5pdGVtKTtcbiAgICAgICAgdGhpcy5pdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICAgICAgfSwgVXRpbHMuY2F0Y2gobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5pdGVtLnJlbW92ZS5mYWlsJykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHN0YXRlIGFuZCBkYXRhIGZvciB0aGUgY3VycmVudCB3b3JrIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIHNldHVwV29ya0l0ZW0oKSB7XG4gICAgdGhpcy5sb2NrZWQgPSB0aGlzLndvcmtJdGVtLnN0YXRlID09PSAnUEVSU09OJztcbiAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gZmFsc2UsIDEwMDApO1xuICAgIGNvbnN0IHtmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XG4gICAgY29uc3Qgd29ya0l0ZW0gPSB7Zm9ybSwgZGF0YX07XG4gICAgdGhpcy53b3JrSXRlbUluZGV4ZGF0YSA9IGZvcm0gJiYgZGF0YSA/IHdvcmtJdGVtIDogbnVsbDtcblxuICAgIC8vIGZldGNoIGhpc3RvcnlcbiAgICB0aGlzLmJwbVNlcnZpY2VcbiAgICAgIC5nZXRQcm9jZXNzSGlzdG9yeSh0aGlzLndvcmtJdGVtLnByb2Nlc3NJZClcbiAgICAgIC5waXBlKG1hcChyZXMgPT4ge1xuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5lZGl0b3IpIHtcbiAgICAgICAgICAgIGl0ZW0uZGF0YS5pbWFnZSA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckltYWdlVXJpKGl0ZW0uZWRpdG9yLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBzb3J0IGJ5IG51bWJlciBiZWNhdXNlIHRoaXMgaXMgdGhlIGF1dG8taW5jcmVtZW50aW5nXG4gICAgICAgIC8vIGluZGV4IG9mIGFkZGVkIGhpc3RvcnkgZW50cmllc1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSByZXMuc29ydCgoYSwgYikgPT4gYi5udW1iZXIgLSBhLm51bWJlcik7XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlDb2RlKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcbiAgfVxuXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNsaXBib2FyZCRcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGNsaXBib2FyZDogQ2xpcGJvYXJkKSA9PlxuICAgICAgICAodGhpcy5jbGlwYm9hcmQgPVxuICAgICAgICAgIGNsaXBib2FyZC5hY3Rpb24gPT09IENsaXBib2FyZEFjdGlvbi5DT1BZID8gY2xpcGJvYXJkIDogbnVsbClcbiAgICAgICk7XG4gICAgLy8gY29tcG9uZW50IGlzIG9ubHkgaW50ZXJlc3RlZCBpbiBjb3BpZWQgaXRlbXNcblxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAuZm9jdXMkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQsIHRoaXMuaXRlbS5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbmJveC1kZXRhaWxzXCIgKm5nSWY9XCJpdGVtOyBlbHNlIG5vSXRlbVwiIFtuZ0NsYXNzXT1cInticG06IGl0ZW0udHlwZSA9PT0gJ0JQTSd9XCI+XG5cbiAgPGRpdiBjbGFzcz1cImVvLWhlYWRcIiBbbmdDbGFzc109XCJ7J2VvLWhlYWQtdGFicyc6IGl0ZW0udHlwZSA9PT0gJ0JQTSd9XCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiICpuZ0lmPVwiIWl0ZW0uaWNvbklkXCIgdGl0bGU9XCJ7e2l0ZW0/LnR5cGV9fVwiXG4gICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2xvb3Auc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvbklkXCIgdGl0bGU9XCJ7e2l0ZW0/LnR5cGV9fVwiIFtpY29uSWRdPVwiaXRlbS5pY29uSWRcIj48L2VvLWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZW8taGVhZGVyLXRpdGxlXCI+e3tpdGVtLnRpdGxlfX08L2gyPlxuICAgICAgICA8aDMgKm5nSWY9XCJpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e2l0ZW0uZGVzY3JpcHRpb259fTwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cIndvcmtJdGVtICYmICFpdGVtLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJlby1oZWFkZXItc3VidGl0bGVcIj57e3dvcmtJdGVtLnByb2Nlc3NUaXRsZSA/IHdvcmtJdGVtLnByb2Nlc3NUaXRsZSA6IHdvcmtJdGVtLnFtb2RlbG5hbWV9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiICpuZ0lmPVwiaW5pdGlhbGl6aW5nLmNsb3NlZFwiIChjbGljayk9XCJyZWZyZXNoKClcIlxuICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3JlZnJlc2guc3ZnJ1wiIFtpY29uVGl0bGVdPVwiKCdlby5saXN0LnJlZnJlc2gnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiICpuZ0lmPVwiaW5pdGlhbGl6aW5nLmNsb3NlZFwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImxvYWQtZXJyb3JcIiAqbmdJZj1cImxvYWRFcnJvclwiPlxuICAgICAgPGVvLWVycm9yLW1lc3NhZ2U+PC9lby1lcnJvci1tZXNzYWdlPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBkZXRhaWxzIGZvciBCUE0gaXRlbXMgLS0+XG4gICAgPHl2Yy10YWJzICpuZ0lmPVwiaXRlbS50eXBlID09PSAnQlBNJzsgZWxzZSBkbXNUYXNrXCIgbGF5b3V0U2V0dGluZ3NJRD1cImVvLmluYm94LmRldGFpbHMudGFic1wiPlxuICAgICAgPCEtLSB0YXNrIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAndGFzaycsIGxhYmVsOiAnZW8ucHJvY2Vzcy5kZXRhaWxzLnRhYi50YXNrJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCB0YXNrXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJ3b3JrSXRlbT8uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRldGFpbHMudGFiLnRhc2suZGVzY3JpcHRpb248L2gzPlxuICAgICAgICAgICAgICA8ZGl2Pnt7d29ya0l0ZW0uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxlby1kdWV0aW1lSW5mbyAqbmdJZj1cIml0ZW0/LmR1ZXRpbWVcIiBbaXRlbV09XCJpdGVtXCI+PC9lby1kdWV0aW1lSW5mbz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtcGVyZm9ybWVyXCIgKm5nSWY9XCJ3b3JrSXRlbT8uaW5TdWJzdGl0dXRlT2Y/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZFwiIFtuZ0NsYXNzXT1cIntwZXJmb3JtZXJTaG93OiBzdWJzdGl0dXRlU2hvd31cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5zdWJzdGl0dXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvblwiIChjbGljayk9XCJzdWJzdGl0dXRlU2hvdyA9ICFzdWJzdGl0dXRlU2hvd1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t3b3JrSXRlbS5pblN1YnN0aXR1dGVPZi5sZW5ndGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cInN1YnN0aXR1dGVTaG93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1lclwiICpuZ0Zvcj1cImxldCB1IG9mIHdvcmtJdGVtLmluU3Vic3RpdHV0ZU9mXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX29yZ2FfdXNlci5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7dS5maXJzdG5hbWV9fSB7e3UubGFzdG5hbWV9fSA8c3BhbiBjbGFzcz1cInFuYW1lXCI+e3t1Lm5hbWV9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZDsgZWxzZSB1bmxvY2tlZFwiPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWZvcm1cIj5cbiAgICAgICAgICAgICAgICA8ZW8tb2JqZWN0LWZvcm0gW2Zvcm1PcHRpb25zXT1cImZvcm1PcHRpb25zXCIgKm5nSWY9XCJ3b3JrSXRlbT8uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIiAjYnBtRm9ybT48L2VvLW9iamVjdC1mb3JtPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3VubG9ja2VkPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2VcIiB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy50YXNrLmNvbnRpbnVlPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtcGVyZm9ybWVyXCIgKm5nSWY9XCJ3b3JrSXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkXCIgW25nQ2xhc3NdPVwie3BlcmZvcm1lclNob3c6IHBlcmZvcm1lclNob3d9XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5yZWNpcGllbnRzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCIgKGNsaWNrKT1cInBlcmZvcm1lclNob3cgPSAhcGVyZm9ybWVyU2hvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3dvcmtJdGVtLnBlcmZvcm1lci51c2Vycy5sZW5ndGggKyB3b3JrSXRlbS5wZXJmb3JtZXIucm9sZXMubGVuZ3RoICtcbiAgICAgICAgICAgICAgICAgICAgICB3b3JrSXRlbS5wZXJmb3JtZXIuZ3JvdXBzLmxlbmd0aH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJwZXJmb3JtZXJTaG93XCI+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtZXJcIiAqbmdGb3I9XCJsZXQgZyBvZiB3b3JrSXRlbS5wZXJmb3JtZXIuZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX2dyb3VwLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7Zy5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWVyXCIgKm5nRm9yPVwibGV0IHIgb2Ygd29ya0l0ZW0ucGVyZm9ybWVyLnJvbGVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcmdhX3JvbGUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3tyLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtZXJcIiAqbmdGb3I9XCJsZXQgdSBvZiB3b3JrSXRlbS5wZXJmb3JtZXIudXNlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX29yZ2FfdXNlci5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57e3UuZmlyc3RuYW1lfX0ge3t1Lmxhc3RuYW1lfX0gPHNwYW4gY2xhc3M9XCJxbmFtZVwiPnt7dS5uYW1lfX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZGV4ZGF0YVwiICpuZ0lmPVwid29ya0l0ZW1JbmRleGRhdGE/LmRhdGFcIj5cbiAgICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByb2Nlc3MuZGV0YWlscy50YWIudGFzay5pbmRleGRhdGE8L2gzPlxuICAgICAgICAgICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cIndvcmtJdGVtSW5kZXhkYXRhXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkOyBlbHNlIHVubG9ja2VkQWN0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2Nlc3MtYWN0aW9uc1wiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogIWFjdGlvblByb2Nlc3NpbmcuY2xvc2VkfVwiPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXVubG9ja1wiIChjbGljayk9XCJ1bmxvY2tXb3JrSXRlbSgpXCIgdHJhbnNsYXRlPmVvLnByb2Nlc3MuZGVwZXJzb25hbGl6ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2F2ZVwiIChjbGljayk9XCJzYXZlV29ya0l0ZW1EYXRhKClcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ3b3JrSXRlbT8uZm9ybSAmJiAhZm9ybVN0YXRlPy5pbnZhbGlkICYmIGZvcm1TdGF0ZT8uZGlydHlcIlxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLm9iamVjdC5pbmRleGRhdGEuc2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogcHJldmVudENsaWNrVGhyb3VnaH1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tZXhlY3V0ZVwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygd29ya0l0ZW0uYWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUNvZGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVXb3JrSXRlbUFjdGlvbihhY3Rpb24pXCIgW25nQ2xhc3NdPVwie2V4dDogYWN0aW9uLnVybH1cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighIWZvcm1TdGF0ZSAmJiBmb3JtU3RhdGU/LmludmFsaWQpIHx8ICFhY3Rpb24uZmVhc2libGVcIj57e2FjdGlvbi50aXRsZX19PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3VubG9ja2VkQWN0aW9ucz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jZXNzLWFjdGlvbnNcIiBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6ICFhY3Rpb25Qcm9jZXNzaW5nLmNsb3NlZCB8fCAhd29ya0l0ZW19XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxvY2tcIiAoY2xpY2spPVwibG9ja1dvcmtJdGVtKClcIiB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy5wZXJzb25hbGl6ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIGhpc3RvcnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdoaXN0b3J5JywgbGFiZWw6ICdlby5wcm9jZXNzLmRldGFpbHMudGFiLnByb2dyZXNzJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwcm9jZXNzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgIDxlby1wcm9jZXNzLWhpc3RvcnkgW2hpc3RvcnldPVwiaGlzdG9yeVwiPjwvZW8tcHJvY2Vzcy1oaXN0b3J5PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gYXR0YWNobWVudHMgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdmaWxlJywgbGFiZWw6ICdlby5wcm9jZXNzLmRldGFpbHMudGFiLmF0dGFjaG1lbnRzJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwcm9jZXNzLWZpbGVzXCI+XG4gICAgICAgICAgICA8ZW8tcHJvY2Vzcy1maWxlIFtwcm9jZXNzRmlsZV09XCJ3b3JrSXRlbT8uZmlsZVwiIFtwZXJtaXNzaW9uc109XCJ3b3JrSXRlbT8uZmlsZUVudHJ5UGVybWlzc2lvbnNcIlxuICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIhZmlsZXNBZGRpbmcuY2xvc2VkXCIgW2NsaXBib2FyZF09XCJjbGlwYm9hcmRcIiBbZWRpdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZENvbnRlbnRGaWxlSWRdPVwic2VsZWN0ZWRDb250ZW50RmlsZUlkXCJcbiAgICAgICAgICAgICAgKG9uT3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dCk9XCJvcGVuV29ya0l0ZW1Db250ZW50SW5Db250ZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAob25PcGVuV29ya0l0ZW1Db250ZW50KT1cIm9wZW5Xb3JrSXRlbUNvbnRlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChvblJlbW92ZVdvcmtJdGVtQ29udGVudCk9XCJyZW1vdmVXb3JrSXRlbUNvbnRlbnQoJGV2ZW50KVwiIChvblBhc3RlUHJvY2Vzc0ZpbGUpPVwiYWRkRnJvbUNsaXBib2FyZCgpXCI+XG4gICAgICAgICAgICA8L2VvLXByb2Nlc3MtZmlsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIHBsdWdpbiB0YWJzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBwIG9mIHBsdWdpbnNcIiBbeXZjVGFiXT1cIntpZDogcC5pZCwgbGFiZWw6IHAuaWQgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1wbHVnaW4gW2lkXT1cInAuaWRcIiBbcGFyZW50XT1cInRoaXNcIj48L2VvLXBsdWdpbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC95dmMtdGFicz5cblxuICAgIDwhLS0gYm9keSB3aGVuIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gb3IgYSByZXN1Ym1pc3Npb24gLS0+XG4gICAgPG5nLXRlbXBsYXRlICNkbXNUYXNrPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcm9jZXNzLmRldGFpbHMudGFiLnRhc2suZGVzY3JpcHRpb248L2gzPlxuICAgICAgICAgICAgPGRpdj57e3NldHRpbmdzPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gYWN0aW9ucyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpdGVtIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY2Vzcy1hY3Rpb25zXCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiAhYWN0aW9uUHJvY2Vzc2luZy5jbG9zZWR9XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1jb25maXJtXCIgW2Rpc2FibGVkXT1cInByZXZlbnRDbGlja1Rocm91Z2hcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUluYm94SXRlbSgpXCI+e3tzZXR0aW5ncz8uYWN0aW9uVGl0bGV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxlby1lcnJvci1tZXNzYWdlIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=