@myclub_se/data-access 3.5.7 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/esm2022/lib/api-models/api-activity-invite.mjs +1 -1
  2. package/esm2022/lib/api-models/api-activity-location-group.mjs +1 -1
  3. package/esm2022/lib/api-models/api-activity-location.mjs +1 -1
  4. package/esm2022/lib/api-models/api-activity-question-connection.mjs +2 -0
  5. package/esm2022/lib/api-models/api-activity-question.mjs +2 -0
  6. package/esm2022/lib/api-models/api-activity-rule-relation.mjs +2 -0
  7. package/esm2022/lib/api-models/api-activity-rule.mjs +2 -0
  8. package/esm2022/lib/api-models/api-activity-settings.mjs +1 -1
  9. package/esm2022/lib/api-models/api-activity.mjs +1 -1
  10. package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
  11. package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
  12. package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +1 -1
  13. package/esm2022/lib/api-models/api-member/api-member.mjs +1 -1
  14. package/esm2022/lib/api-models/api-open-activity.mjs +1 -1
  15. package/esm2022/lib/api-models/api-search-attribute.mjs +2 -0
  16. package/esm2022/lib/api-models/api-search-club.mjs +1 -1
  17. package/esm2022/lib/api-models/index.mjs +6 -1
  18. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +1 -1
  19. package/esm2022/lib/data-access.module.mjs +3 -4
  20. package/esm2022/lib/models/activity-invite.mjs +12 -2
  21. package/esm2022/lib/models/activity-location-group.mjs +1 -1
  22. package/esm2022/lib/models/activity-location-part.mjs +1 -1
  23. package/esm2022/lib/models/activity-location-tag.mjs +1 -1
  24. package/esm2022/lib/models/activity-location.mjs +1 -1
  25. package/esm2022/lib/models/activity-question-connection.mjs +29 -0
  26. package/esm2022/lib/models/activity-question-response.mjs +9 -0
  27. package/esm2022/lib/models/activity-question.mjs +33 -0
  28. package/esm2022/lib/models/activity-rule-relation.mjs +35 -0
  29. package/esm2022/lib/models/activity-rule.mjs +31 -0
  30. package/esm2022/lib/models/activity-settings.mjs +14 -4
  31. package/esm2022/lib/models/activity-type.mjs +1 -1
  32. package/esm2022/lib/models/activity.mjs +72 -4
  33. package/esm2022/lib/models/bookable-item.mjs +1 -1
  34. package/esm2022/lib/models/bookable-part.mjs +1 -1
  35. package/esm2022/lib/models/bookable-tag.mjs +1 -1
  36. package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -1
  37. package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -1
  38. package/esm2022/lib/models/booking-settings.mjs +1 -1
  39. package/esm2022/lib/models/index.mjs +7 -1
  40. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -1
  41. package/esm2022/lib/models/invoice/payment-order.mjs +12 -6
  42. package/esm2022/lib/models/open-activity.mjs +16 -2
  43. package/esm2022/lib/models/optional-fee.mjs +12 -1
  44. package/esm2022/lib/models/search-attribute.mjs +13 -0
  45. package/esm2022/lib/models/search-club.mjs +2 -6
  46. package/esm2022/lib/models/search-team.mjs +1 -1
  47. package/esm2022/lib/models/token.mjs +1 -1
  48. package/esm2022/lib/services/activity.service.mjs +82 -48
  49. package/esm2022/lib/services/api.service.mjs +1 -1
  50. package/esm2022/lib/services/booking-calendar.service.mjs +1 -1
  51. package/esm2022/lib/services/constant.service.mjs +13 -1
  52. package/esm2022/lib/services/factories/activity-factory.mjs +6 -2
  53. package/esm2022/lib/services/factories/activity-invite-factory.mjs +2 -2
  54. package/esm2022/lib/services/factories/activity-location-factory.mjs +1 -1
  55. package/esm2022/lib/services/factories/activity-location-group-factory.mjs +1 -1
  56. package/esm2022/lib/services/factories/activity-location-part-factory.mjs +1 -1
  57. package/esm2022/lib/services/factories/activity-location-tag-factory.mjs +1 -1
  58. package/esm2022/lib/services/factories/activity-question-connection-factory.mjs +4 -0
  59. package/esm2022/lib/services/factories/activity-question-factory.mjs +3 -0
  60. package/esm2022/lib/services/factories/activity-rule-factory.mjs +4 -0
  61. package/esm2022/lib/services/factories/activity-rule-relation-factory.mjs +5 -0
  62. package/esm2022/lib/services/factories/activity-settings-factory.mjs +2 -2
  63. package/esm2022/lib/services/factories/bookable-item-factory.mjs +1 -1
  64. package/esm2022/lib/services/factories/bookable-part-factory.mjs +1 -1
  65. package/esm2022/lib/services/factories/bookable-tag-factory.mjs +1 -1
  66. package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +1 -1
  67. package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +1 -1
  68. package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +1 -1
  69. package/esm2022/lib/services/factories/booking-calendar-slot-validate-copy-result-factory.mjs +1 -1
  70. package/esm2022/lib/services/factories/booking-settings-factory.mjs +1 -1
  71. package/esm2022/lib/services/factories/feature-flags-factory.mjs +1 -1
  72. package/esm2022/lib/services/factories/index.mjs +6 -1
  73. package/esm2022/lib/services/factories/open-activity-factory.mjs +4 -2
  74. package/esm2022/lib/services/factories/overbooked-bookable-item-factory.mjs +1 -1
  75. package/esm2022/lib/services/factories/overbooked-location-factory.mjs +1 -1
  76. package/esm2022/lib/services/factories/payment-order-factory.mjs +2 -2
  77. package/esm2022/lib/services/factories/saved-search-factory.mjs +1 -1
  78. package/esm2022/lib/services/factories/search-attribute.factory.mjs +3 -0
  79. package/esm2022/lib/services/factories/search-club-factory.mjs +2 -2
  80. package/esm2022/lib/services/feature-flags.service.mjs +1 -1
  81. package/esm2022/lib/services/index.mjs +2 -2
  82. package/esm2022/lib/services/invoice/invoice.service.mjs +1 -1
  83. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +1 -1
  84. package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -1
  85. package/esm2022/lib/services/member-card.service.mjs +1 -1
  86. package/esm2022/lib/services/member-fee.service.mjs +1 -1
  87. package/esm2022/lib/services/member-public-form.service.mjs +1 -1
  88. package/esm2022/lib/services/member.service.mjs +1 -1
  89. package/esm2022/lib/services/storage.service.mjs +1 -1
  90. package/esm2022/lib/services/team.service.mjs +1 -1
  91. package/esm2022/lib/services/user.service.mjs +1 -1
  92. package/esm2022/lib/store/actions/activity.actions.mjs +57 -27
  93. package/esm2022/lib/store/actions/calendar.actions.mjs +7 -1
  94. package/esm2022/lib/store/actions/constant.actions.mjs +21 -1
  95. package/esm2022/lib/store/actions/invoice.actions.mjs +9 -1
  96. package/esm2022/lib/store/actions/member-fee.actions.mjs +1 -1
  97. package/esm2022/lib/store/actions/member.actions.mjs +1 -1
  98. package/esm2022/lib/store/actions/saved-search.actions.mjs +1 -1
  99. package/esm2022/lib/store/effects/activity.effects.mjs +40 -22
  100. package/esm2022/lib/store/effects/auth.effects.mjs +1 -1
  101. package/esm2022/lib/store/effects/booking.effects.mjs +1 -1
  102. package/esm2022/lib/store/effects/calendar.effects.mjs +7 -19
  103. package/esm2022/lib/store/effects/constant.effects.mjs +11 -2
  104. package/esm2022/lib/store/effects/file.effects.mjs +1 -1
  105. package/esm2022/lib/store/effects/invoice.effects.mjs +12 -2
  106. package/esm2022/lib/store/effects/member-card.effects.mjs +1 -1
  107. package/esm2022/lib/store/effects/member-fee.effects.mjs +1 -1
  108. package/esm2022/lib/store/effects/member.effects.mjs +1 -1
  109. package/esm2022/lib/store/effects/saved-search.effects.mjs +1 -1
  110. package/esm2022/lib/store/effects/token.effects.mjs +1 -1
  111. package/esm2022/lib/store/interfaces/index.mjs +2 -1
  112. package/esm2022/lib/store/interfaces/public-member-activity-result-interface.mjs +2 -0
  113. package/esm2022/lib/store/operators/ensure-public-member-activities-loading-done.mjs +5 -0
  114. package/esm2022/lib/store/operators/index.mjs +2 -1
  115. package/esm2022/lib/store/reducers/booking.reducers.mjs +1 -1
  116. package/esm2022/lib/store/reducers/calendar.reducer.mjs +83 -50
  117. package/esm2022/lib/store/reducers/constant.reducer.mjs +35 -2
  118. package/esm2022/lib/store/reducers/file.reducer.mjs +1 -1
  119. package/esm2022/lib/store/reducers/invoice.reducer.mjs +2 -2
  120. package/esm2022/lib/store/reducers/member-fee.reducer.mjs +1 -1
  121. package/esm2022/lib/store/reducers/public.reducer.mjs +58 -73
  122. package/esm2022/lib/store/reducers/saved-search.reducer.mjs +1 -1
  123. package/esm2022/lib/store/selectors/calendar.selectors.mjs +7 -1
  124. package/esm2022/lib/store/selectors/constant.selectors.mjs +5 -1
  125. package/esm2022/lib/store/selectors/member-fee.selectors.mjs +1 -1
  126. package/esm2022/lib/store/selectors/public.selectors.mjs +7 -7
  127. package/esm2022/lib/store/selectors/saved-search.selectors.mjs +1 -1
  128. package/esm2022/lib/store/state/booking.state.mjs +1 -1
  129. package/esm2022/lib/store/state/calendar.state.mjs +3 -1
  130. package/esm2022/lib/store/state/constant.state.mjs +4 -1
  131. package/esm2022/lib/store/state/invoice.state.mjs +1 -1
  132. package/esm2022/lib/store/state/member-fee.state.mjs +1 -1
  133. package/esm2022/lib/store/state/public.state.mjs +7 -7
  134. package/fesm2022/myclub_se-data-access.mjs +3447 -2976
  135. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  136. package/lib/api-models/api-activity-invite.d.ts +3 -0
  137. package/lib/api-models/api-activity-question-connection.d.ts +10 -0
  138. package/lib/api-models/api-activity-question.d.ts +9 -0
  139. package/lib/api-models/api-activity-rule-relation.d.ts +10 -0
  140. package/lib/api-models/api-activity-rule.d.ts +8 -0
  141. package/lib/api-models/api-activity-settings.d.ts +6 -1
  142. package/lib/api-models/api-activity.d.ts +26 -0
  143. package/lib/api-models/api-invoice/api-payment-order.d.ts +5 -2
  144. package/lib/api-models/api-open-activity.d.ts +10 -0
  145. package/lib/api-models/api-search-attribute.d.ts +8 -0
  146. package/lib/api-models/api-search-club.d.ts +0 -2
  147. package/lib/api-models/index.d.ts +5 -0
  148. package/lib/models/activity-invite.d.ts +7 -1
  149. package/lib/models/activity-question-connection.d.ts +19 -0
  150. package/lib/models/activity-question-response.d.ts +5 -0
  151. package/lib/models/activity-question.d.ts +22 -0
  152. package/lib/models/activity-rule-relation.d.ts +14 -0
  153. package/lib/models/activity-rule.d.ts +12 -0
  154. package/lib/models/activity-settings.d.ts +7 -2
  155. package/lib/models/activity.d.ts +29 -1
  156. package/lib/models/index.d.ts +6 -0
  157. package/lib/models/invoice/payment-attempt.d.ts +1 -1
  158. package/lib/models/invoice/payment-order.d.ts +6 -3
  159. package/lib/models/open-activity.d.ts +10 -1
  160. package/lib/models/optional-fee.d.ts +9 -0
  161. package/lib/models/search-attribute.d.ts +9 -0
  162. package/lib/models/search-club.d.ts +1 -3
  163. package/lib/services/activity.service.d.ts +17 -11
  164. package/lib/services/constant.service.d.ts +3 -0
  165. package/lib/services/factories/activity-question-connection-factory.d.ts +3 -0
  166. package/lib/services/factories/activity-question-factory.d.ts +3 -0
  167. package/lib/services/factories/activity-rule-factory.d.ts +3 -0
  168. package/lib/services/factories/activity-rule-relation-factory.d.ts +3 -0
  169. package/lib/services/factories/index.d.ts +5 -0
  170. package/lib/services/factories/search-attribute.factory.d.ts +3 -0
  171. package/lib/services/index.d.ts +1 -1
  172. package/lib/services/invoice/payment-order.service.d.ts +1 -0
  173. package/lib/services/member-card.service.d.ts +2 -3
  174. package/lib/store/actions/activity.actions.d.ts +207 -59
  175. package/lib/store/actions/calendar.actions.d.ts +36 -0
  176. package/lib/store/actions/constant.actions.d.ts +42 -0
  177. package/lib/store/actions/invoice.actions.d.ts +23 -1
  178. package/lib/store/effects/activity.effects.d.ts +56 -16
  179. package/lib/store/effects/calendar.effects.d.ts +4 -31
  180. package/lib/store/effects/constant.effects.d.ts +15 -0
  181. package/lib/store/effects/invoice.effects.d.ts +3 -0
  182. package/lib/store/interfaces/index.d.ts +1 -0
  183. package/lib/store/interfaces/public-member-activity-result-interface.d.ts +7 -0
  184. package/lib/store/operators/ensure-public-member-activities-loading-done.d.ts +3 -0
  185. package/lib/store/operators/index.d.ts +1 -0
  186. package/lib/store/selectors/calendar.selectors.d.ts +2 -0
  187. package/lib/store/selectors/constant.selectors.d.ts +2 -0
  188. package/lib/store/selectors/public.selectors.d.ts +6 -6
  189. package/lib/store/state/calendar.state.d.ts +3 -1
  190. package/lib/store/state/constant.state.d.ts +3 -0
  191. package/lib/store/state/public.state.d.ts +8 -8
  192. package/package.json +4 -3
@@ -1,7 +1,7 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
3
  import { ActivityService } from '../../services';
4
- import { addTeamLeaderActivityInviteAction, addTeamLeaderActivityInviteFailureAction, addTeamLeaderActivityInviteSuccessAction, createTeamActivityAction, createTeamActivityFailureAction, createTeamActivitySuccessAction, deleteTeamActivityAction, deleteTeamActivityFailureAction, deleteTeamActivityInviteAction, deleteTeamActivityInviteFailureAction, deleteTeamActivityInviteSuccessAction, deleteTeamActivitySuccessAction, listMemberActivityInvitesAction, listMemberActivityInvitesFailureAction, listMemberActivityInvitesSuccessAction, listTeamActivityParticipantsAction, listTeamActivityParticipantsFailureAction, listTeamActivityParticipantsSuccessAction, listTeamLeaderExtraMembersSuccessAction, removeMemberOpenActivityAction, removeMemberOpenActivityFailureAction, removeMemberOpenActivitySuccessAction, removePublicOpenActivityAction, removePublicOpenActivityFailureAction, removePublicOpenActivitySuccessAction, resendTeamActivityMemberInviteAction, resendTeamActivityMemberInviteFailureAction, resendTeamActivityMemberInviteSuccessAction, retrieveMemberActivityAction, retrieveMemberActivityFailureAction, retrieveMemberActivityInviteAction, retrieveMemberActivityInviteFailureAction, retrieveMemberActivityInviteSuccessAction, retrieveMemberActivitySuccessAction, retrieveMemberOpenActivityAction, retrieveMemberOpenActivityFailureAction, retrieveMemberOpenActivitySuccessAction, retrievePublicActivityInviteAction, retrievePublicActivityInviteFailureAction, retrievePublicActivityInviteSuccessAction, retrievePublicOpenActivityAction, retrievePublicOpenActivityFailureAction, retrievePublicOpenActivitySuccessAction, retrieveTeamActivityAction, retrieveTeamActivityFailureAction, retrieveTeamActivityQRCodeAction, retrieveTeamActivityQRCodeFailureAction, retrieveTeamActivityQRCodeSuccessAction, retrieveTeamActivitySettingsAction, retrieveTeamActivitySettingsFailureAction, retrieveTeamActivitySettingsSuccessAction, retrieveTeamActivitySuccessAction, retrieveTeamDefaultActivitySettingsAction, retrieveTeamDefaultActivitySettingsFailureAction, retrieveTeamDefaultActivitySettingsSuccessAction, retrieveTeamLeaderGroupSuccessAction, updateMemberActivityAttendanceAction, updateMemberActivityAttendanceFailureAction, updateMemberActivityAttendanceSuccessAction, updateMemberActivityInviteAction, updateMemberActivityInviteFailureAction, updateMemberActivityInviteSuccessAction, updateMemberOpenActivityAction, updateMemberOpenActivityFailureAction, updateMemberOpenActivitySuccessAction, updatePublicActivityInviteAction, updatePublicActivityInviteFailureAction, updatePublicActivityInviteSuccessAction, updatePublicOpenActivityAction, updatePublicOpenActivityFailureAction, updatePublicOpenActivityInviteAction, updatePublicOpenActivityInviteFailureAction, updatePublicOpenActivityInviteSuccessAction, updatePublicOpenActivitySuccessAction, updateTeamActivityAction, updateTeamActivityAttendanceAction, updateTeamActivityAttendanceFailureAction, updateTeamActivityAttendanceSuccessAction, updateTeamActivityFailureAction, updateTeamActivitySuccessAction, updateTeamMemberActivityInviteAction, updateTeamMemberActivityInviteFailureAction, updateTeamMemberActivityInviteSuccessAction } from '../actions';
4
+ import { addTeamLeaderActivityInviteAction, addTeamLeaderActivityInviteFailureAction, addTeamLeaderActivityInviteSuccessAction, createTeamActivityAction, createTeamActivityFailureAction, createTeamActivityQuestionAction, createTeamActivityQuestionFailureAction, createTeamActivityQuestionSuccessAction, createTeamActivitySuccessAction, deleteTeamActivityAction, deleteTeamActivityFailureAction, deleteTeamActivityInviteAction, deleteTeamActivityInviteFailureAction, deleteTeamActivityInviteSuccessAction, deleteTeamActivityQuestionAction, deleteTeamActivityQuestionFailureAction, deleteTeamActivityQuestionSuccessAction, deleteTeamActivitySuccessAction, listMemberActivityInvitesAction, listMemberActivityInvitesFailureAction, listMemberActivityInvitesSuccessAction, listTeamActivityParticipantsAction, listTeamActivityParticipantsFailureAction, listTeamActivityParticipantsSuccessAction, listTeamActivityQuestionsAction, listTeamActivityQuestionsFailureAction, listTeamActivityQuestionsSuccessAction, listTeamLeaderExtraMembersSuccessAction, removeMemberOpenActivityAction, removeMemberOpenActivityFailureAction, removeMemberOpenActivitySuccessAction, resendTeamActivityMemberInviteAction, resendTeamActivityMemberInviteFailureAction, resendTeamActivityMemberInviteSuccessAction, retrieveMemberActivityAction, retrieveMemberActivityFailureAction, retrieveMemberActivityInviteAction, retrieveMemberActivityInviteFailureAction, retrieveMemberActivityInviteSuccessAction, retrieveMemberActivitySuccessAction, retrieveMemberOpenActivityAction, retrieveMemberOpenActivityFailureAction, retrieveMemberOpenActivitySuccessAction, retrievePublicMemberActivityAction, retrievePublicMemberActivityFailureAction, retrievePublicMemberActivityInviteAction, retrievePublicMemberActivityInviteFailureAction, retrievePublicMemberActivityInviteSuccessAction, retrievePublicActivityInviteAction, retrievePublicActivityInviteFailureAction, retrievePublicActivityInviteSuccessAction, retrievePublicMemberActivitySuccessAction, retrieveTeamActivityAction, retrieveTeamActivityFailureAction, retrieveTeamActivityQRCodeAction, retrieveTeamActivityQRCodeFailureAction, retrieveTeamActivityQRCodeSuccessAction, retrieveTeamActivityQuestionAction, retrieveTeamActivityQuestionFailureAction, retrieveTeamActivityQuestionSuccessAction, retrieveTeamActivitySettingsAction, retrieveTeamActivitySettingsFailureAction, retrieveTeamActivitySettingsSuccessAction, retrieveTeamActivitySuccessAction, retrieveTeamDefaultActivitySettingsAction, retrieveTeamDefaultActivitySettingsFailureAction, retrieveTeamDefaultActivitySettingsSuccessAction, retrieveTeamLeaderGroupSuccessAction, updateMemberActivityAttendanceAction, updateMemberActivityAttendanceFailureAction, updateMemberActivityAttendanceSuccessAction, updateMemberActivityInviteAction, updateMemberActivityInviteFailureAction, updateMemberActivityInviteSuccessAction, updateMemberOpenActivityAction, updateMemberOpenActivityFailureAction, updateMemberOpenActivitySuccessAction, updatePublicActivityInviteAction, updatePublicActivityInviteFailureAction, updatePublicActivityInviteSuccessAction, updatePublicMemberActivityInviteAction, updatePublicMemberActivityInviteFailureAction, updatePublicMemberActivityInviteSuccessAction, updatePublicMemberOpenActivityAction, updatePublicMemberOpenActivityFailureAction, updatePublicMemberOpenActivitySuccessAction, updateTeamActivityAction, updateTeamActivityAttendanceAction, updateTeamActivityAttendanceFailureAction, updateTeamActivityAttendanceSuccessAction, updateTeamActivityFailureAction, updateTeamActivityQuestionAction, updateTeamActivityQuestionFailureAction, updateTeamActivityQuestionSuccessAction, updateTeamActivitySuccessAction, updateTeamMemberActivityInviteAction, updateTeamMemberActivityInviteFailureAction, updateTeamMemberActivityInviteSuccessAction } from '../actions';
5
5
  import { exhaustMap, forkJoin, mergeMap, of } from 'rxjs';
6
6
  import { catchError, map, take } from 'rxjs/operators';
7
7
  import { HttpErrorResponse } from '@angular/common/http';
@@ -29,6 +29,12 @@ export class ActivityEffects extends ExtraMembersMixin {
29
29
  retrieveExtraMembers: true
30
30
  }
31
31
  })]), catchError((error) => of(createTeamActivityFailureAction({ payload: error })))))));
32
+ createTeamActivityQuestion$ = createEffect(() => this.actions$
33
+ .pipe(ofType(createTeamActivityQuestionAction), exhaustMap(({ payload }) => this.activityService.createTeamActivityQuestion(payload.teamId, payload.question)
34
+ .pipe(mergeMap((question) => [
35
+ createTeamActivityQuestionSuccessAction({ payload: question }),
36
+ listTeamActivityQuestionsAction({ payload: { teamId: payload.teamId } })
37
+ ]), catchError((error) => of(createTeamActivityQuestionFailureAction({ payload: error })))))));
32
38
  deleteTeamActivity$ = createEffect(() => this.actions$
33
39
  .pipe(ofType(deleteTeamActivityAction), exhaustMap(({ payload }) => this.activityService.deleteTeamActivity(payload.teamId, payload.activityId)
34
40
  .pipe(map((value) => {
@@ -49,6 +55,16 @@ export class ActivityEffects extends ExtraMembersMixin {
49
55
  return deleteTeamActivityInviteFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
50
56
  }
51
57
  }), catchError((error) => of(deleteTeamActivityInviteFailureAction({ payload: error })))))));
58
+ deleteTeamActivityQuestion$ = createEffect(() => this.actions$
59
+ .pipe(ofType(deleteTeamActivityQuestionAction), exhaustMap(({ payload }) => this.activityService.deleteTeamActivityQuestion(payload.teamId, payload.questionId)
60
+ .pipe(map((value) => {
61
+ if (value) {
62
+ return deleteTeamActivityQuestionSuccessAction({ payload: { ...payload } });
63
+ }
64
+ else {
65
+ return deleteTeamActivityQuestionFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
66
+ }
67
+ }), catchError((error) => of(deleteTeamActivityQuestionFailureAction({ payload: error })))))));
52
68
  listMemberActivityInvites$ = createEffect(() => this.actions$
53
69
  .pipe(ofType(listMemberActivityInvitesAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.activityService.getMemberActivityInvites(id)
54
70
  .pipe(catchError((error) => of({ error }))))).pipe(map(results => {
@@ -71,6 +87,9 @@ export class ActivityEffects extends ExtraMembersMixin {
71
87
  results: activityParticipants.toArray()
72
88
  }
73
89
  })), catchError((error) => of(listTeamActivityParticipantsFailureAction({ payload: error })))))));
90
+ listTeamActivityQuestions$ = createEffect(() => this.actions$
91
+ .pipe(ofType(listTeamActivityQuestionsAction), exhaustMap(({ payload }) => this.activityService.getTeamActivityQuestions(payload.teamId)
92
+ .pipe(map((activityQuestions) => listTeamActivityQuestionsSuccessAction({ payload: { teamId: payload.teamId, results: activityQuestions.toArray() } })), catchError((error) => of(listTeamActivityQuestionsFailureAction({ payload: { teamId: payload.teamId, error } })))))));
74
93
  removeMemberOpenActivity$ = createEffect(() => this.actions$
75
94
  .pipe(ofType(removeMemberOpenActivityAction), exhaustMap(({ payload }) => this.activityService.removeMemberOpenActivity(payload.memberId, payload.activityId)
76
95
  .pipe(map((success) => {
@@ -81,16 +100,6 @@ export class ActivityEffects extends ExtraMembersMixin {
81
100
  return removeMemberOpenActivityFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
82
101
  }
83
102
  }), catchError((error) => of(removeMemberOpenActivityFailureAction({ payload: error })))))));
84
- removePublicOpenActivity$ = createEffect(() => this.actions$
85
- .pipe(ofType(removePublicOpenActivityAction), exhaustMap(({ payload }) => this.activityService.removePublicOpenActivity(payload)
86
- .pipe(map((success) => {
87
- if (success) {
88
- return removePublicOpenActivitySuccessAction({ payload });
89
- }
90
- else {
91
- return removePublicOpenActivityFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
92
- }
93
- }), catchError((error) => of(removePublicOpenActivityFailureAction({ payload: error })))))));
94
103
  resendTeamActivityInvite$ = createEffect(() => this.actions$
95
104
  .pipe(ofType(resendTeamActivityMemberInviteAction), exhaustMap(({ payload }) => this.activityService.resendInvite(payload.teamId, payload.activityId, payload.activityInviteId)
96
105
  .pipe(map((activityInvite) => resendTeamActivityMemberInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(resendTeamActivityMemberInviteFailureAction({ payload: error })))))));
@@ -103,9 +112,9 @@ export class ActivityEffects extends ExtraMembersMixin {
103
112
  retrieveMemberOpenActivityInvite$ = createEffect(() => this.actions$
104
113
  .pipe(ofType(retrieveMemberOpenActivityAction), exhaustMap(({ payload }) => this.activityService.getMemberOpenActivity(payload.memberId, payload.activityId)
105
114
  .pipe(map((activity) => retrieveMemberOpenActivitySuccessAction({ payload: activity })), catchError((error) => of(retrieveMemberOpenActivityFailureAction({ payload: error })))))));
106
- retrievePublicOpenActivity$ = createEffect(() => this.actions$
107
- .pipe(ofType(retrievePublicOpenActivityAction), exhaustMap(({ payload }) => this.activityService.getPublicOpenActivity(payload)
108
- .pipe(map((activity) => retrievePublicOpenActivitySuccessAction({ payload: activity })), catchError((error) => of(retrievePublicOpenActivityFailureAction({ payload: error })))))));
115
+ retrieveMemberPublicActivity$ = createEffect(() => this.actions$
116
+ .pipe(ofType(retrievePublicMemberActivityAction), exhaustMap(({ payload }) => this.activityService.getPublicMemberActivity(payload)
117
+ .pipe(map((activity) => retrievePublicMemberActivitySuccessAction({ payload: activity })), catchError((error) => of(retrievePublicMemberActivityFailureAction({ payload: error })))))));
109
118
  retrieveTeamActivity = createEffect(() => this.actions$
110
119
  .pipe(ofType(retrieveTeamActivityAction), exhaustMap(({ payload }) => forkJoin({
111
120
  activity: this.activityService.getTeamActivity(payload.teamId, payload.activityId)
@@ -134,6 +143,9 @@ export class ActivityEffects extends ExtraMembersMixin {
134
143
  retrievePublicActivityInvite$ = createEffect(() => this.actions$
135
144
  .pipe(ofType(retrievePublicActivityInviteAction), exhaustMap(({ payload }) => this.activityService.getPublicActivityInvite(payload.activityInviteId, payload.token)
136
145
  .pipe(map((activityInvite) => retrievePublicActivityInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(retrievePublicActivityInviteFailureAction({ payload: error })))))));
146
+ retrievePublicMemberActivityInvite$ = createEffect(() => this.actions$
147
+ .pipe(ofType(retrievePublicMemberActivityInviteAction), exhaustMap(({ payload }) => this.activityService.getPublicMemberActivityInvite(payload)
148
+ .pipe(map((activityInvite) => retrievePublicMemberActivityInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(retrievePublicMemberActivityInviteFailureAction({ payload: error })))))));
137
149
  retrieveTeamActivityQRCode$ = createEffect(() => this.actions$
138
150
  .pipe(ofType(retrieveTeamActivityQRCodeAction), exhaustMap(({ payload }) => this.activityService.getTeamActivityQRCode(payload.teamId, payload.activityId)
139
151
  .pipe(map((activity) => retrieveTeamActivityQRCodeSuccessAction({
@@ -142,6 +154,9 @@ export class ActivityEffects extends ExtraMembersMixin {
142
154
  activity: activity
143
155
  }
144
156
  })), catchError((error) => of(retrieveTeamActivityQRCodeFailureAction({ payload: error })))))));
157
+ retrieveTeamActivityQuestion$ = createEffect(() => this.actions$
158
+ .pipe(ofType(retrieveTeamActivityQuestionAction), exhaustMap(({ payload }) => this.activityService.getTeamActivityQuestion(payload.teamId, payload.questionId)
159
+ .pipe(map((activityQuestion) => retrieveTeamActivityQuestionSuccessAction({ payload: activityQuestion })), catchError((error) => of(retrieveTeamActivityQuestionFailureAction({ payload: error })))))));
145
160
  retrieveTeamActivitySettings$ = createEffect(() => this.actions$
146
161
  .pipe(ofType(retrieveTeamActivitySettingsAction), exhaustMap(({ payload }) => forkJoin({
147
162
  activitySettings: this.activityService.getTeamActivitySettings(payload.teamId)
@@ -182,17 +197,17 @@ export class ActivityEffects extends ExtraMembersMixin {
182
197
  .pipe(ofType(updateMemberActivityInviteAction), exhaustMap(({ payload }) => this.activityService.updateMemberActivity(payload.memberId, payload.activityInvite.id, payload.activityInvite)
183
198
  .pipe(map((activityInvite) => updateMemberActivityInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(updateMemberActivityInviteFailureAction({ payload: error })))))));
184
199
  updateMemberOpenActivity$ = createEffect(() => this.actions$
185
- .pipe(ofType(updateMemberOpenActivityAction), exhaustMap(({ payload }) => this.activityService.signUpMemberOpenActivityWithResponse(payload.memberId, payload.activityId, payload.comment, payload.optionalFees)
200
+ .pipe(ofType(updateMemberOpenActivityAction), exhaustMap(({ payload }) => this.activityService.signUpMemberOpenActivity(payload.memberId, payload.activityId, payload.comment, payload.optional_fees, payload.responses)
186
201
  .pipe(map((openActivity) => updateMemberOpenActivitySuccessAction({ payload: openActivity })), catchError((error) => of(updateMemberOpenActivityFailureAction({ payload: error })))))));
187
202
  updatePublicActivityInvite$ = createEffect(() => this.actions$
188
203
  .pipe(ofType(updatePublicActivityInviteAction), exhaustMap(({ payload }) => this.activityService.updatePublicActivityInvite(payload.activityInvite.id, payload.token, payload.activityInvite)
189
204
  .pipe(map((activityInvite) => updatePublicActivityInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(updatePublicActivityInviteFailureAction({ payload: error })))))));
190
- updatePublicOpenActivity$ = createEffect(() => this.actions$
191
- .pipe(ofType(updatePublicOpenActivityAction), exhaustMap(({ payload }) => this.activityService.signUpPublicOpenActivityWithResponse(payload.activityId, payload.comment, payload.optionalFees)
192
- .pipe(map((openActivity) => updatePublicOpenActivitySuccessAction({ payload: openActivity })), catchError((error) => of(updatePublicOpenActivityFailureAction({ payload: error })))))));
193
- updatePublicOpenActivityInvite$ = createEffect(() => this.actions$
194
- .pipe(ofType(updatePublicOpenActivityInviteAction), exhaustMap(({ payload }) => this.activityService.updatePublicOpenActivityInvite(payload.id, payload)
195
- .pipe(map(() => updatePublicOpenActivityInviteSuccessAction()), catchError((error) => of(updatePublicOpenActivityInviteFailureAction({ payload: error })))))));
205
+ updatePublicMemberActivityInvite$ = createEffect(() => this.actions$
206
+ .pipe(ofType(updatePublicMemberActivityInviteAction), exhaustMap(({ payload }) => this.activityService.updatePublicMemberActivityInvite(payload.activityInvite.id, payload.activityInvite)
207
+ .pipe(map((activityInvite) => updatePublicMemberActivityInviteSuccessAction({ payload: activityInvite })), catchError((error) => of(updatePublicMemberActivityInviteFailureAction({ payload: error })))))));
208
+ updatePublicMemberOpenActivity$ = createEffect(() => this.actions$
209
+ .pipe(ofType(updatePublicMemberOpenActivityAction), exhaustMap(({ payload }) => this.activityService.signUpPublicOpenActivity(payload.activityId, payload.comment, payload.optional_fees, payload.responses)
210
+ .pipe(map((openActivity) => updatePublicMemberOpenActivitySuccessAction({ payload: openActivity })), catchError((error) => of(updatePublicMemberOpenActivityFailureAction({ payload: error })))))));
196
211
  updateTeamActivity = createEffect(() => this.actions$
197
212
  .pipe(ofType(updateTeamActivityAction), exhaustMap(({ payload }) => this.activityService.updateTeamActivity(payload.teamId, payload.activity)
198
213
  .pipe(map((activity) => updateTeamActivitySuccessAction({ payload: activity })), catchError((error) => of(updateTeamActivityFailureAction({ payload: error })))))));
@@ -202,10 +217,13 @@ export class ActivityEffects extends ExtraMembersMixin {
202
217
  updateTeamMemberActivityInvite = createEffect(() => this.actions$
203
218
  .pipe(ofType(updateTeamMemberActivityInviteAction), exhaustMap(({ payload }) => this.activityService.updateTeamActivityInvite(payload.teamId, payload.activityId, payload.activityInviteId, payload.memberActivityInvite)
204
219
  .pipe(map((memberActivityInvite) => updateTeamMemberActivityInviteSuccessAction({ payload: memberActivityInvite })), catchError((error) => of(updateTeamMemberActivityInviteFailureAction({ payload: error })))))));
220
+ updateTeamActivityQuestion$ = createEffect(() => this.actions$
221
+ .pipe(ofType(updateTeamActivityQuestionAction), exhaustMap(({ payload }) => this.activityService.updateTeamActivityQuestion(payload.teamId, payload.question)
222
+ .pipe(map((activityQuestion) => updateTeamActivityQuestionSuccessAction({ payload: activityQuestion })), catchError((error) => of(updateTeamActivityQuestionFailureAction({ payload: error })))))));
205
223
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActivityEffects, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
206
224
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActivityEffects });
207
225
  }
208
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActivityEffects, decorators: [{
209
227
  type: Injectable
210
228
  }] });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9hY3Rpdml0eS5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLHVDQUF1QyxFQUN2Qyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxvQ0FBb0MsRUFDcEMsMkNBQTJDLEVBQzNDLDJDQUEyQyxFQUMzQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsdUNBQXVDLEVBQ3ZDLHVDQUF1QyxFQUN2QyxrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLHlDQUF5QyxFQUN6QyxnQ0FBZ0MsRUFDaEMsdUNBQXVDLEVBQ3ZDLHVDQUF1QyxF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S0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFHLENBQ0osQ0FDRixDQUNGLENBQUM7SUFFRiw4QkFBOEIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVE7U0FDOUQsSUFBSSxDQUNILE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxFQUM1QyxVQUFVLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFPakIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztTQUM1SSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsb0JBQTBDLEVBQUUsRUFBRSxDQUFDLDJDQUEyQyxDQUFDLEVBQUMsT0FBTyxFQUFFLG9CQUFvQixFQUFDLENBQUMsQ0FBQyxFQUNqSSxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsMkNBQTJDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVHLENBQ0osQ0FDRixDQUNGLENBQUM7dUdBbmZTLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICBjcmVhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVQdWJsaWNPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIHJlbW92ZVB1YmxpY09wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJlbW92ZVB1YmxpY09wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZUFjdGlvbixcbiAgcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlRmFpbHVyZUFjdGlvbixcbiAgcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY09wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY09wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2VBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgdXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUFjdGlvbixcbiAgdXBkYXRlUHVibGljT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlUHVibGljT3BlbkFjdGl2aXR5SW52aXRlQWN0aW9uLCB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZm9ya0pvaW4sIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlFeHRyYU1lbWJlcixcbiAgQWN0aXZpdHlJbnZpdGUsXG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQ29sbGVjdGlvbixcbiAgTWVtYmVyQWN0aXZpdHlJbnZpdGUsXG4gIE9wZW5BY3Rpdml0eSxcbiAgU2VhcmNoTWVtYmVyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBFeHRyYU1lbWJlcnNNaXhpbiB9IGZyb20gJy4vbWl4aW5zL2V4dHJhLW1lbWJlcnMtbWl4aW4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlFZmZlY3RzIGV4dGVuZHMgRXh0cmFNZW1iZXJzTWl4aW4ge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGFjdGl2aXR5U2VydmljZSA9IGluamVjdChBY3Rpdml0eVNlcnZpY2UpO1xuXG4gIGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmFkZFRlYW1BY3Rpdml0eUludml0ZXMocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZCwgcGF5bG9hZC5tZW1iZXJJZHMpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbigpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZGRUZWFtTGVhZGVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlVGVhbUFjdGl2aXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlVGVhbUFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5OiBBY3Rpdml0eSB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmNyZWF0ZVRlYW1BY3Rpdml0eShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKChhY3Rpdml0eTogQWN0aXZpdHkpID0+IFtjcmVhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eX0pLCByZXRyaWV2ZVRlYW1BY3Rpdml0eUFjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgICAgICAgICAgIGFjdGl2aXR5SWQ6IGFjdGl2aXR5LmlkLFxuICAgICAgICAgICAgICAgIHJldHJpZXZlRXh0cmFNZW1iZXJzOiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlVGVhbUFjdGl2aXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlVGVhbUFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmRlbGV0ZVRlYW1BY3Rpdml0eShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bG9hZC5hY3Rpdml0eUlkfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVUZWFtQWN0aXZpdHlJbnZpdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtQWN0aXZpdHlJbnZpdGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5kZWxldGVUZWFtQWN0aXZpdHlJbnZpdGUocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZCwgcGF5bG9hZC5hY3Rpdml0eUludml0ZUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbigpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0TWVtYmVyQWN0aXZpdHlJbnZpdGVzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsdWU6IEFycmF5PEFjdGl2aXR5SW52aXRlPiA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgc3VjY2Vzc1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gIShyZXN1bHQgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkpIGFzIEFycmF5PENvbGxlY3Rpb248QWN0aXZpdHlJbnZpdGU+PjtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkgYXMgQXJyYXk8SHR0cEVycm9yUmVzcG9uc2U+O1xuXG4gICAgICAgICAgICBpZiAoZXJyb3JSZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yUmVzdWx0c1swXX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3VjY2Vzc1Jlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5wdXNoKC4uLnJlc3VsdC50b0FycmF5KCkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcmV0dXJuVmFsdWV9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IG9mKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHMocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHlQYXJ0aWNpcGFudHM6IENvbGxlY3Rpb248U2VhcmNoTWVtYmVyPikgPT4gbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZpdHlJZDogcGF5bG9hZC5hY3Rpdml0eUlkLFxuICAgICAgICAgICAgICAgIHJlc3VsdHM6IGFjdGl2aXR5UGFydGljaXBhbnRzLnRvQXJyYXkoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbigpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVtb3ZlUHVibGljT3BlbkFjdGl2aXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmVtb3ZlUHVibGljT3BlbkFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHN0cmluZ30pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlbW92ZVB1YmxpY09wZW5BY3Rpdml0eShwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZW1vdmVQdWJsaWNPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlUHVibGljT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZW1vdmVQdWJsaWNPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIHJlc2VuZFRlYW1BY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlc2VuZEludml0ZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGFjdGl2aXR5SW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4gcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJBY3Rpdml0eShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGFjdGl2aXR5OiBBY3Rpdml0eSkgPT4gcmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlckFjdGl2aXR5SW52aXRlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHkocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChhY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNPcGVuQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY09wZW5BY3Rpdml0eUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNPcGVuQWN0aXZpdHkocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiByZXRyaWV2ZVB1YmxpY09wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eSA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgcmV0cmlldmVFeHRyYU1lbWJlcnM6IGJvb2xlYW4gfSB9KSA9PlxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgYWN0aXZpdHk6IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZXh0cmFNZW1iZXJzOiBwYXlsb2FkLnJldHJpZXZlRXh0cmFNZW1iZXJzID8gdGhpcy50ZWFtTGVhZGVyR2V0QWxsRXh0cmFNZW1iZXJzKHBheWxvYWQudGVhbUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICApIDogb2YobmV3IEFycmF5PEFjdGl2aXR5RXh0cmFNZW1iZXI+KCkpLFxuICAgICAgICAgIG1lbWJlcnM6IHRoaXMudGVhbUxlYWRlckdldEFsbE1lbWJlcnMocGF5bG9hZC50ZWFtSWQpLFxuICAgICAgICAgIHBhcnRpY2lwYW50czogdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgbWFwKChyZXNwb25zZTogQ29sbGVjdGlvbjxTZWFyY2hNZW1iZXI+KSA9PiByZXNwb25zZS50b0FycmF5KCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIHRlYW06IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbUxlYWRlclRlYW0ocGF5bG9hZC50ZWFtSWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCh7YWN0aXZpdHksIGV4dHJhTWVtYmVycywgbWVtYmVycywgcGFydGljaXBhbnRzLCB0ZWFtfSkgPT4gW1xuICAgICAgICAgICAgcmV0cmlldmVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5LFxuICAgICAgICAgICAgICAgIGV4dHJhTWVtYmVycyxcbiAgICAgICAgICAgICAgICBleHRyYU1lbWJlcnNMb2FkZWQ6IHBheWxvYWQucmV0cmlldmVFeHRyYU1lbWJlcnMsXG4gICAgICAgICAgICAgICAgbWVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICAgICAgICAgICAgdGVhbVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdGVhbX0pLFxuICAgICAgICAgICAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7dGVhbUlkOiBwYXlsb2FkLnRlYW1JZCwgcmVzdWx0czogZXh0cmFNZW1iZXJzfX0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY0FjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7YWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nIH19KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRQdWJsaWNBY3Rpdml0eUludml0ZShwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiByZXRyaWV2ZVB1YmxpY0FjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY0FjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlRUkNvZGUocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGNyZWF0ZTogYm9vbGVhbiB9IH0pID0+XG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICBhY3Rpdml0eVNldHRpbmdzOiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlTZXR0aW5ncyhwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGFjdGl2aXR5TG9jYXRpb25zOiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvbnMocGF5bG9hZC50ZWFtSWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgbWFwKChyZXNwb25zZTogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4gcmVzcG9uc2UudG9BcnJheSgpLm1hcCgodmFsdWU6IEFjdGl2aXR5TG9jYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgdGV4dDogdmFsdWUubmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUuaWRcbiAgICAgICAgICAgICAgfSkpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBhY3Rpdml0eVR5cGVzOiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlUeXBlcyhwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBDb2xsZWN0aW9uPEFjdGl2aXR5VHlwZT4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9IHBheWxvYWQuY3JlYXRlID8gcmVzcG9uc2UudG9BcnJheSgpLmZpbHRlcigodHlwZTogQWN0aXZpdHlUeXBlKSA9PiB0eXBlLmFjdGl2ZSkgOiByZXNwb25zZS50b0FycmF5KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVzLm1hcCgodmFsdWU6IEFjdGl2aXR5VHlwZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUuaWRcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgbWFwKCh7YWN0aXZpdHlTZXR0aW5ncywgYWN0aXZpdHlMb2NhdGlvbnMsIGFjdGl2aXR5VHlwZXN9KSA9PiB7XG4gICAgICAgICAgICAvLyBBZGQgbG9jYXRpb25zIGFuZCB0eXBlcyB0byB0aGUgYWN0aXZpdHlTZXR0aW5ncyBvYmplY3RcbiAgICAgICAgICAgIGFjdGl2aXR5U2V0dGluZ3MuYWN0aXZpdHlMb2NhdGlvbnMgPSBhY3Rpdml0eUxvY2F0aW9ucztcbiAgICAgICAgICAgIGFjdGl2aXR5U2V0dGluZ3MuYWN0aXZpdHlUeXBlcyA9IGFjdGl2aXR5VHlwZXM7XG5cbiAgICAgICAgICAgIHJldHVybiByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlTZXR0aW5ncyBhcyBBY3Rpdml0eVNldHRpbmdzfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eU5ldyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5OiBBY3Rpdml0eSkgPT4gcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuYWN0aXZpdHlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2VTdWNjZXNzQWN0aW9uKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlTWVtYmVyQWN0aXZpdHkocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUludml0ZS5pZCwgcGF5bG9hZC5hY3Rpdml0eUludml0ZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5SW52aXRlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcsIG9wdGlvbmFsRmVlczogQXJyYXk8c3RyaW5nPiB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnNpZ25VcE1lbWJlck9wZW5BY3Rpdml0eVdpdGhSZXNwb25zZShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQuY29tbWVudCwgcGF5bG9hZC5vcHRpb25hbEZlZXMpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG9wZW5BY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBvcGVuQWN0aXZpdHl9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7dG9rZW46IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVB1YmxpY0FjdGl2aXR5SW52aXRlKHBheWxvYWQuYWN0aXZpdHlJbnZpdGUuaWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQuYWN0aXZpdHlJbnZpdGUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5SW52aXRlfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2FjdGl2aXR5SWQ6IHN0cmluZywgY29tbWVudDogc3RyaW5nLCBvcHRpb25hbEZlZXM6IEFycmF5PHN0cmluZz4gfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnNpZ25VcFB1YmxpY09wZW5BY3Rpdml0eVdpdGhSZXNwb25zZShwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQuY29tbWVudCwgcGF5bG9hZC5vcHRpb25hbEZlZXMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgob3BlbkFjdGl2aXR5OiBPcGVuQWN0aXZpdHkpID0+IHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG9wZW5BY3Rpdml0eX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBBY3Rpdml0eUludml0ZX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZShwYXlsb2FkLmlkLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gdXBkYXRlUHVibGljT3BlbkFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbigpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eSA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5OiBBY3Rpdml0eSB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVRlYW1BY3Rpdml0eShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlVGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQubWVtYmVySWRzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VTdWNjZXNzQWN0aW9uKCkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGUgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICB0ZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2aXR5SWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIG1lbWJlckFjdGl2aXR5SW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZCwgcGF5bG9hZC5tZW1iZXJBY3Rpdml0eUludml0ZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgobWVtYmVyQWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJBY3Rpdml0eUludml0ZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9hY3Rpdml0eS5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLHVDQUF1QyxFQUN2Qyw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyxvQ0FBb0MsRUFDcEMsMkNBQTJDLEVBQzNDLDJDQUEyQyxFQUMzQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsdUNBQXVDLEVBQ3ZDLHVDQUF1QyxF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Q0FBQyxDQUFDLEVBQ2pJLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUcsQ0FDSixDQUNGLENBQ0YsQ0FBQztJQUVGLDJCQUEyQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUMzRCxJQUFJLENBQ0gsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLEVBQ3hDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUEyRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNsSyxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsZ0JBQWtDLEVBQUUsRUFBRSxDQUFDLHVDQUF1QyxDQUFDLEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQyxFQUNqSCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsdUNBQXVDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFHLENBQ0YsQ0FDRixDQUNGLENBQUM7dUdBempCUyxlQUFlOzJHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBhZGRUZWFtTGVhZGVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sXG4gIGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlRdWVzdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlQWN0aW9uLFxuICByZXNlbmRUZWFtQWN0aXZpdHlNZW1iZXJJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICByZXNlbmRUZWFtQWN0aXZpdHlNZW1iZXJJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0FjdGl2aXR5SW52aXRlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0FjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25GYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2VBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgdXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlUHVibGljTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICB1cGRhdGVQdWJsaWNNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVQdWJsaWNNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sXG4gIHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5LFxuICBBY3Rpdml0eUV4dHJhTWVtYmVyLFxuICBBY3Rpdml0eUludml0ZSxcbiAgQWN0aXZpdHlMb2NhdGlvbixcbiAgQWN0aXZpdHlRdWVzdGlvbixcbiAgQWN0aXZpdHlRdWVzdGlvblJlc3BvbnNlLFxuICBBY3Rpdml0eVNldHRpbmdzLFxuICBBY3Rpdml0eVR5cGUsXG4gIENvbGxlY3Rpb24sXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBPcGVuQWN0aXZpdHksXG4gIFNlYXJjaE1lbWJlcixcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEV4dHJhTWVtYmVyc01peGluIH0gZnJvbSAnLi9taXhpbnMvZXh0cmEtbWVtYmVycy1taXhpbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eUVmZmVjdHMgZXh0ZW5kcyBFeHRyYU1lbWJlcnNNaXhpbiB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG5cbiAgYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuYWRkVGVhbUFjdGl2aXR5SW52aXRlcyhwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkLCBwYXlsb2FkLm1lbWJlcklkcylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZGRUZWFtTGVhZGVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFkZFRlYW1MZWFkZXJBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoYWRkVGVhbUxlYWRlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVUZWFtQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHk6IEFjdGl2aXR5IH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuY3JlYXRlVGVhbUFjdGl2aXR5KHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKGFjdGl2aXR5OiBBY3Rpdml0eSkgPT4gW2NyZWF0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSksIHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICAgICAgICAgICAgYWN0aXZpdHlJZDogYWN0aXZpdHkuaWQsXG4gICAgICAgICAgICAgICAgcmV0cmlldmVFeHRyYU1lbWJlcnM6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSldKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIHF1ZXN0aW9uOiBBY3Rpdml0eVF1ZXN0aW9uIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuY3JlYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb24ocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQucXVlc3Rpb24pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgocXVlc3Rpb246IEFjdGl2aXR5UXVlc3Rpb24pID0+IFtcbiAgICAgICAgICAgICAgY3JlYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBxdWVzdGlvbn0pLFxuICAgICAgICAgICAgICBsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zQWN0aW9uKHtwYXlsb2FkOiB7dGVhbUlkOiBwYXlsb2FkLnRlYW1JZH19KVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVUZWFtQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZGVsZXRlVGVhbUFjdGl2aXR5KHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXlsb2FkLmFjdGl2aXR5SWR9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfSA6IHtwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBxdWVzdGlvbklkOiBzdHJpbmcgfSB9ICkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZGVsZXRlVGVhbUFjdGl2aXR5UXVlc3Rpb24ocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQucXVlc3Rpb25JZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogQXJyYXk8c3RyaW5nPiB9KSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBwYXlsb2FkLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlckFjdGl2aXR5SW52aXRlcyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7ZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbHVlOiBBcnJheTxBY3Rpdml0eUludml0ZT4gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+ICEocmVzdWx0IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpKSBhcyBBcnJheTxDb2xsZWN0aW9uPEFjdGl2aXR5SW52aXRlPj47XG4gICAgICAgICAgICBjb25zdCBlcnJvclJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIGFzIEFycmF5PEh0dHBFcnJvclJlc3BvbnNlPjtcblxuICAgICAgICAgICAgaWYgKGVycm9yUmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvclJlc3VsdHNbMF19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1Y2Nlc3NSZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWUucHVzaCguLi5yZXN1bHQudG9BcnJheSgpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHJldHVyblZhbHVlfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiBvZihsaXN0TWVtYmVyQWN0aXZpdHlJbnZpdGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGFjdGl2aXR5UGFydGljaXBhbnRzOiBDb2xsZWN0aW9uPFNlYXJjaE1lbWJlcj4pID0+IGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIGFjdGl2aXR5SWQ6IHBheWxvYWQuYWN0aXZpdHlJZCxcbiAgICAgICAgICAgICAgICByZXN1bHRzOiBhY3Rpdml0eVBhcnRpY2lwYW50cy50b0FycmF5KClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdFRlYW1BY3Rpdml0eVF1ZXN0aW9uc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUFjdGl2aXR5UXVlc3Rpb25zKHBheWxvYWQudGVhbUlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5UXVlc3Rpb25zOiBDb2xsZWN0aW9uPEFjdGl2aXR5UXVlc3Rpb24+KSA9PiBsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIHJlc3VsdHM6IGFjdGl2aXR5UXVlc3Rpb25zLnRvQXJyYXkoKX19KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0VGVhbUFjdGl2aXR5UXVlc3Rpb25zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIGVycm9yfX0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5yZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHkocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlc2VuZFRlYW1BY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlc2VuZEludml0ZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGFjdGl2aXR5SW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4gcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJBY3Rpdml0eShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGFjdGl2aXR5OiBBY3Rpdml0eSkgPT4gcmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldE1lbWJlckFjdGl2aXR5SW52aXRlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRNZW1iZXJPcGVuQWN0aXZpdHkocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChhY3Rpdml0eTogT3BlbkFjdGl2aXR5KSA9PiByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJQdWJsaWNBY3Rpdml0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljTWVtYmVyQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFB1YmxpY01lbWJlckFjdGl2aXR5KHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiByZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHl9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQWN0aXZpdHkgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIHJldHJpZXZlRXh0cmFNZW1iZXJzOiBib29sZWFuIH0gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgIGFjdGl2aXR5OiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHkocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGV4dHJhTWVtYmVyczogcGF5bG9hZC5yZXRyaWV2ZUV4dHJhTWVtYmVycyA/IHRoaXMudGVhbUxlYWRlckdldEFsbEV4dHJhTWVtYmVycyhwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgKSA6IG9mKG5ldyBBcnJheTxBY3Rpdml0eUV4dHJhTWVtYmVyPigpKSxcbiAgICAgICAgICBtZW1iZXJzOiB0aGlzLnRlYW1MZWFkZXJHZXRBbGxNZW1iZXJzKHBheWxvYWQudGVhbUlkKSxcbiAgICAgICAgICBwYXJ0aWNpcGFudHM6IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50cyhwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IENvbGxlY3Rpb248U2VhcmNoTWVtYmVyPikgPT4gcmVzcG9uc2UudG9BcnJheSgpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0ZWFtOiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtKHBheWxvYWQudGVhbUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoe2FjdGl2aXR5LCBleHRyYU1lbWJlcnMsIG1lbWJlcnMsIHBhcnRpY2lwYW50cywgdGVhbX0pID0+IFtcbiAgICAgICAgICAgIHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICBhY3Rpdml0eSxcbiAgICAgICAgICAgICAgICBleHRyYU1lbWJlcnMsXG4gICAgICAgICAgICAgICAgZXh0cmFNZW1iZXJzTG9hZGVkOiBwYXlsb2FkLnJldHJpZXZlRXh0cmFNZW1iZXJzLFxuICAgICAgICAgICAgICAgIG1lbWJlcnMsXG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnRzLFxuICAgICAgICAgICAgICAgIHRlYW1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRlYW19KSxcbiAgICAgICAgICAgIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIHJlc3VsdHM6IGV4dHJhTWVtYmVyc319KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljQWN0aXZpdHlJbnZpdGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2FjdGl2aXR5SW52aXRlSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyB9fSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0UHVibGljQWN0aXZpdHlJbnZpdGUocGF5bG9hZC5hY3Rpdml0eUludml0ZUlkLCBwYXlsb2FkLnRva2VuKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5SW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4gcmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5SW52aXRlfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNBY3Rpdml0eUludml0ZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljTWVtYmVyQWN0aXZpdHlJbnZpdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHN0cmluZ30pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiByZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRUZWFtQWN0aXZpdHlRUkNvZGUocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuYWN0aXZpdHlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiByZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdHlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVRlYW1BY3Rpdml0eVFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRdWVzdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgcXVlc3Rpb25JZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUFjdGl2aXR5UXVlc3Rpb24ocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQucXVlc3Rpb25JZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhY3Rpdml0eVF1ZXN0aW9uOiBBY3Rpdml0eVF1ZXN0aW9uKSA9PiByZXRyaWV2ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlRdWVzdGlvbn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUFjdGl2aXR5UXVlc3Rpb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgY3JlYXRlOiBib29sZWFuIH0gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oe1xuICAgICAgICAgIGFjdGl2aXR5U2V0dGluZ3M6IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eVNldHRpbmdzKHBheWxvYWQudGVhbUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgYWN0aXZpdHlMb2NhdGlvbnM6IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eUxvY2F0aW9ucyhwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KSA9PiByZXNwb25zZS50b0FycmF5KCkubWFwKCh2YWx1ZTogQWN0aXZpdHlMb2NhdGlvbikgPT4gKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZS5uYW1lLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS5pZFxuICAgICAgICAgICAgICB9KSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGFjdGl2aXR5VHlwZXM6IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldFRlYW1BY3Rpdml0eVR5cGVzKHBheWxvYWQudGVhbUlkKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gcGF5bG9hZC5jcmVhdGUgPyByZXNwb25zZS50b0FycmF5KCkuZmlsdGVyKCh0eXBlOiBBY3Rpdml0eVR5cGUpID0+IHR5cGUuYWN0aXZlKSA6IHJlc3BvbnNlLnRvQXJyYXkoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZXMubWFwKCh2YWx1ZTogQWN0aXZpdHlUeXBlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWUubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS5pZFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICBtYXAoKHthY3Rpdml0eVNldHRpbmdzLCBhY3Rpdml0eUxvY2F0aW9ucywgYWN0aXZpdHlUeXBlc30pID0+IHtcbiAgICAgICAgICAgIC8vIEFkZCBsb2NhdGlvbnMgYW5kIHR5cGVzIHRvIHRoZSBhY3Rpdml0eVNldHRpbmdzIG9iamVjdFxuICAgICAgICAgICAgYWN0aXZpdHlTZXR0aW5ncy5hY3Rpdml0eUxvY2F0aW9ucyA9IGFjdGl2aXR5TG9jYXRpb25zO1xuICAgICAgICAgICAgYWN0aXZpdHlTZXR0aW5ncy5hY3Rpdml0eVR5cGVzID0gYWN0aXZpdHlUeXBlcztcblxuICAgICAgICAgICAgcmV0dXJuIHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eVNldHRpbmdzIGFzIEFjdGl2aXR5U2V0dGluZ3N9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0VGVhbUFjdGl2aXR5TmV3KHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiByZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2VBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS51cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2UocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5hY3Rpdml0eUlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZVN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVNZW1iZXJBY3Rpdml0eUF0dGVuZGFuY2VGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogQWN0aXZpdHlJbnZpdGUgfVxuICAgICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS51cGRhdGVNZW1iZXJBY3Rpdml0eShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlLmlkLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChhY3Rpdml0eUludml0ZTogQWN0aXZpdHlJbnZpdGUpID0+IHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdHlJbnZpdGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZywgb3B0aW9uYWxfZmVlczogQXJyYXk8c3RyaW5nPiwgcmVzcG9uc2VzOiBBcnJheTxBY3Rpdml0eVF1ZXN0aW9uUmVzcG9uc2U+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2Uuc2lnblVwTWVtYmVyT3BlbkFjdGl2aXR5KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuYWN0aXZpdHlJZCwgcGF5bG9hZC5jb21tZW50LCBwYXlsb2FkLm9wdGlvbmFsX2ZlZXMsIHBheWxvYWQucmVzcG9uc2VzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChvcGVuQWN0aXZpdHk6IE9wZW5BY3Rpdml0eSkgPT4gdXBkYXRlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogb3BlbkFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVB1YmxpY0FjdGl2aXR5SW52aXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3Rva2VuOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiBBY3Rpdml0eUludml0ZX19KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS51cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZShwYXlsb2FkLmFjdGl2aXR5SW52aXRlLmlkLCBwYXlsb2FkLnRva2VuLCBwYXlsb2FkLmFjdGl2aXR5SW52aXRlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGFjdGl2aXR5SW52aXRlOiBBY3Rpdml0eUludml0ZSkgPT4gdXBkYXRlUHVibGljQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eUludml0ZX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZVB1YmxpY0FjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlUHVibGljTWVtYmVyQWN0aXZpdHlJbnZpdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7YWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlfX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlKHBheWxvYWQuYWN0aXZpdHlJbnZpdGUuaWQsIHBheWxvYWQuYWN0aXZpdHlJbnZpdGUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoYWN0aXZpdHlJbnZpdGU6IEFjdGl2aXR5SW52aXRlKSA9PiB1cGRhdGVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGFjdGl2aXR5SW52aXRlfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlUHVibGljTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVQdWJsaWNNZW1iZXJPcGVuQWN0aXZpdHkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVQdWJsaWNNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2FjdGl2aXR5SWQ6IHN0cmluZywgY29tbWVudDogc3RyaW5nLCBvcHRpb25hbF9mZWVzOiBBcnJheTxzdHJpbmc+LCByZXNwb25zZXM6IEFycmF5PEFjdGl2aXR5UXVlc3Rpb25SZXNwb25zZT59fSkgPT5cbiAgICAgICAgdGhpcy5hY3Rpdml0eVNlcnZpY2Uuc2lnblVwUHVibGljT3BlbkFjdGl2aXR5KHBheWxvYWQuYWN0aXZpdHlJZCwgcGF5bG9hZC5jb21tZW50LCBwYXlsb2FkLm9wdGlvbmFsX2ZlZXMsIHBheWxvYWQucmVzcG9uc2VzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChvcGVuQWN0aXZpdHk6IE9wZW5BY3Rpdml0eSkgPT4gdXBkYXRlUHVibGljTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogb3BlbkFjdGl2aXR5fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVQdWJsaWNNZW1iZXJPcGVuQWN0aXZpdHlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eSA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUodXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5OiBBY3Rpdml0eSB9XG4gICAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVRlYW1BY3Rpdml0eShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5hY3Rpdml0eSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHk6IEFjdGl2aXR5KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlVGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQubWVtYmVySWRzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUF0dGVuZGFuY2VTdWNjZXNzQWN0aW9uKCkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVUZWFtQWN0aXZpdHlBdHRlbmRhbmNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGUgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVRlYW1NZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICB0ZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2aXR5SWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIG1lbWJlckFjdGl2aXR5SW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmFjdGl2aXR5SWQsIHBheWxvYWQuYWN0aXZpdHlJbnZpdGVJZCwgcGF5bG9hZC5tZW1iZXJBY3Rpdml0eUludml0ZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgobWVtYmVyQWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB1cGRhdGVUZWFtTWVtYmVyQWN0aXZpdHlJbnZpdGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJBY3Rpdml0eUludml0ZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfSA6IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIHF1ZXN0aW9uOiBBY3Rpdml0eVF1ZXN0aW9ufX0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnF1ZXN0aW9uKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdHlRdWVzdGlvbjogQWN0aXZpdHlRdWVzdGlvbikgPT4gdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb25TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0eVF1ZXN0aW9ufSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
@@ -124,4 +124,4 @@ export class AuthEffects {
124
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthEffects, decorators: [{
125
125
  type: Injectable
126
126
  }] });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2F1dGguZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLGFBQWEsRUFDYixjQUFjLEVBQ2QsV0FBVyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBRSw4QkFBOEIsRUFDOUcsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNC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RUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7b0JBQy9DLGdCQUFnQixFQUFFO2lCQUNuQixDQUFBO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDTCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUM5QyxJQUFJLENBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQy9CLFVBQVUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFnRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUN0SyxJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQzVCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPO2dCQUNMLDhCQUE4QixFQUFFO2dCQUNoQyxrQkFBa0IsRUFBRTthQUNyQixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU87WUFDTCw4QkFBOEIsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLElBQUksaUJBQWlCLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUM7YUFDOUMsQ0FBQztTQUFDLENBQUM7SUFDTixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0YsQ0FDRixDQUNGLENBQUE7dUdBL01VLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBTVE9SQUdFX1NFTEVDVEVEX0FVVEgsXG4gIFNUT1JBR0VfU0VMRUNURURfTUVNQkVSUyxcbiAgU1RPUkFHRV9UT0tFTixcbiAgU3RvcmFnZVNlcnZpY2UsXG4gIFRlYW1TZXJ2aWNlXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24sXG4gIGNsZWFyQXV0aGVudGljYXRpb25TdWNjZXNzQWN0aW9uLFxuICBjbGVhckN1cnJlbnRBdXRoQWN0aW9uLFxuICBjbGVhckN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbixcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgZ2V0Q3VycmVudEF1dGhBY3Rpb24sXG4gIGdldEN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEF1dGhBY3Rpb24sXG4gIGxpc3RBdXRoRmFpbHVyZUFjdGlvbixcbiAgbGlzdEF1dGhTdWNjZXNzQWN0aW9uLFxuICBsaXN0QXV0aFRlYW1zQWN0aW9uLFxuICBsaXN0QXV0aFRlYW1zRmFpbHVyZUFjdGlvbixcbiAgbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24sXG4gIHJlZnJlc2hBdXRoc0FjdGlvbixcbiAgcmVmcmVzaEF1dGhzRmFpbHVyZUFjdGlvbixcbiAgcmVmcmVzaEF1dGhzU3VjY2Vzc0FjdGlvbixcbiAgcmVtb3ZlTWVtYmVyQXV0aEFjdGlvbixcbiAgcmVtb3ZlTWVtYmVyQXV0aEZhaWx1cmVBY3Rpb24sXG4gIHJlbW92ZU1lbWJlckF1dGhTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVUZWFtQXV0aEFjdGlvbixcbiAgcmVtb3ZlVGVhbUF1dGhGYWlsdXJlQWN0aW9uLFxuICByZW1vdmVUZWFtQXV0aFN1Y2Nlc3NBY3Rpb24sXG4gIHNldEN1cnJlbnRBdXRoQWN0aW9uLCB1bmJsb2NrTWVtYmVyQXV0aEFjdGlvbiwgdW5ibG9ja01lbWJlckF1dGhGYWlsdXJlQWN0aW9uLCB1bmJsb2NrTWVtYmVyQXV0aFN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGgsIENvbGxlY3Rpb24sIFNlYXJjaFRlYW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVtb3ZlTWVtYmVyQXV0aEludGVyZmFjZSwgUmVtb3ZlVGVhbUF1dGhJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2UgPSBpbmplY3QoQXV0aGVudGljYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIHRlYW1TZXJ2aWNlID0gaW5qZWN0KFRlYW1TZXJ2aWNlKTtcblxuICBjbGVhckF1dGhlbnRpY2F0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuUmVtb3ZhbDogdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVBc09ic2VydmFibGUoU1RPUkFHRV9UT0tFTiksXG4gICAgICAgICAgICBzZWxlY3RlZEF1dGhSZW1vdmFsOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRNZW1iZXJzUmVtb3ZhbDogdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVBc09ic2VydmFibGUoU1RPUkFHRV9TRUxFQ1RFRF9NRU1CRVJTKSxcbiAgICAgICAgICB9XG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jbGVhckF1dGhlbnRpY2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBjbGVhclN0b3JlQWN0aW9uKCksXG4gICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25TdWNjZXNzQWN0aW9uKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNsZWFyQ3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNsZWFyQ3VycmVudEF1dGhBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBjbGVhckN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbigpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50QXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfU0VMRUNURURfQVVUSClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhdXRoOiBBdXRoIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGF1dGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudEF1dGhTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudEF1dGhTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhdXRofSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0QXV0aCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfSkgPT4gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRocyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGF1dGhzOiBDb2xsZWN0aW9uPEF1dGg+KSA9PiBsaXN0QXV0aFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGhzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBdXRoRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdEF1dGhUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RBdXRoVGVhbXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfSkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5jbHViQWRtaW4pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50ZWFtU2VydmljZS5nZXRDbHViVGVhbXMocGF5bG9hZC5pZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHNlYXJjaFRlYW1zOiBDb2xsZWN0aW9uPFNlYXJjaFRlYW0+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXV0aCA9IHtcbiAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgICB0ZWFtczogc2VhcmNoVGVhbXMudG9BcnJheSgpXG4gICAgICAgICAgICAgICAgICAgIC5zb3J0KChhOiBTZWFyY2hUZWFtLCBiOiBTZWFyY2hUZWFtKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGh9KTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEF1dGhUZWFtc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzZWN0aW9uc1RlYW1zJDogQXJyYXk8T2JzZXJ2YWJsZTxDb2xsZWN0aW9uPFNlYXJjaFRlYW0+Pj4gPSBwYXlsb2FkLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT5cbiAgICAgICAgICAgIHRoaXMudGVhbVNlcnZpY2UuZ2V0U2VjdGlvblRlYW1zKHNlY3Rpb24uaWQpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBmb3JrSm9pbihzZWN0aW9uc1RlYW1zJCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0czogQXJyYXk8Q29sbGVjdGlvbjxTZWFyY2hUZWFtPj4pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc29ydGVkVGVhbXM6IEFycmF5PFNlYXJjaFRlYW0+ID0gcmVzdWx0c1xuICAgICAgICAgICAgICAgIC5mbGF0TWFwKChyZXN1bHQ6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+IHJlc3VsdC50b0FycmF5KCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuICAgICAgICAgICAgICBjb25zdCBhdXRoID0ge1xuICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgdGVhbXM6IHNvcnRlZFRlYW1zLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGh9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QXV0aFRlYW1zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcmVmcmVzaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJlZnJlc2hBdXRoc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlTWVtYmVycygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHJlZnJlc2hBdXRoc1N1Y2Nlc3NBY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBsaXN0QXV0aEFjdGlvbigpXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YocmVmcmVzaEF1dGhzRmFpbHVyZUFjdGlvbigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHJlZnJlc2hBdXRoc0ZhaWx1cmVBY3Rpb24oKSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVtb3ZlTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmVtb3ZlTWVtYmVyQXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiBSZW1vdmVNZW1iZXJBdXRoSW50ZXJmYWNlXG4gICAgICAgIH0pID0+IHRoaXMuYXV0aFNlcnZpY2UucmVtb3ZlTWVtYmVyQXV0aChwYXlsb2FkLmF1dGhJZCwgcGF5bG9hZC5tZW1iZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gcmVtb3ZlTWVtYmVyQXV0aFN1Y2Nlc3NBY3Rpb24oKSA6IHJlbW92ZU1lbWJlckF1dGhGYWlsdXJlQWN0aW9uKCkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihyZW1vdmVNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbigpKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlbW92ZVRlYW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZW1vdmVUZWFtQXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiBSZW1vdmVUZWFtQXV0aEludGVyZmFjZVxuICAgICAgICB9KSA9PiB0aGlzLmF1dGhTZXJ2aWNlLnJlbW92ZVRlYW1BdXRoKHBheWxvYWQuYXV0aElkLCBwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gcmVtb3ZlVGVhbUF1dGhTdWNjZXNzQWN0aW9uKCkgOiByZW1vdmVUZWFtQXV0aEZhaWx1cmVBY3Rpb24oKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHJlbW92ZU1lbWJlckF1dGhGYWlsdXJlQWN0aW9uKCkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2V0Q3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNldEN1cnJlbnRBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBdXRoIH0pID0+IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfU0VMRUNURURfQVVUSClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG9sZEF1dGg6IEF1dGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgsIHBheWxvYWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChuZXdBdXRoOiBBdXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAob2xkQXV0aCAmJiBuZXdBdXRoLmlkID09PSBvbGRBdXRoLmlkICYmICgobmV3QXV0aC5tZW1iZXJzICYmIG5ld0F1dGgubWVtYmVycy5sZW5ndGggPT09IG9sZEF1dGgubWVtYmVycy5sZW5ndGgpIHx8IChuZXdBdXRoLnRlYW1zICYmIG5ld0F1dGgudGVhbXMubGVuZ3RoID09PSBvbGRBdXRoLnRlYW1zLmxlbmd0aCAmJiBuZXdBdXRoLnRlYW1zWzBdLmlkID09PSBvbGRBdXRoLnRlYW1zWzBdLmlkKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICBnZXRDdXJyZW50QXV0aFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG5ld0F1dGh9KVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgIGdldEN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbmV3QXV0aH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU3RvcmVBY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdW5ibG9ja01lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVuYmxvY2tNZW1iZXJBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt1c2VySWQ6IHN0cmluZywgY2x1YklkOiBzdHJpbmcsIG1lbWJlcklkOiBzdHJpbmd9fSkgPT4gdGhpcy5hdXRoU2VydmljZS51bmJsb2NrTWVtYmVyKHBheWxvYWQudXNlcklkLCBwYXlsb2FkLmNsdWJJZCwgcGF5bG9hZC5tZW1iZXJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdW5ibG9ja01lbWJlckF1dGhTdWNjZXNzQWN0aW9uKCksXG4gICAgICAgICAgICAgICAgcmVmcmVzaEF1dGhzQWN0aW9uKClcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIHVuYmxvY2tNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KVxuICAgICAgICAgICAgfSldO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVuYmxvY2tNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2F1dGguZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLGFBQWEsRUFDYixjQUFjLEVBQ2QsV0FBVyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDL0IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFN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QUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7b0JBQy9DLGdCQUFnQixFQUFFO2lCQUNuQixDQUFBO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDTCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUM5QyxJQUFJLENBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQy9CLFVBQVUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFnRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUN0SyxJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQzVCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPO2dCQUNMLDhCQUE4QixFQUFFO2dCQUNoQyxrQkFBa0IsRUFBRTthQUNyQixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU87WUFDTCw4QkFBOEIsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLElBQUksaUJBQWlCLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUM7YUFDOUMsQ0FBQztTQUFDLENBQUM7SUFDTixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0YsQ0FDRixDQUNGLENBQUE7dUdBL01VLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBTVE9SQUdFX1NFTEVDVEVEX0FVVEgsXG4gIFNUT1JBR0VfU0VMRUNURURfTUVNQkVSUyxcbiAgU1RPUkFHRV9UT0tFTixcbiAgU3RvcmFnZVNlcnZpY2UsXG4gIFRlYW1TZXJ2aWNlXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24sXG4gIGNsZWFyQXV0aGVudGljYXRpb25TdWNjZXNzQWN0aW9uLFxuICBjbGVhckN1cnJlbnRBdXRoQWN0aW9uLFxuICBjbGVhckN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbixcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgZ2V0Q3VycmVudEF1dGhBY3Rpb24sXG4gIGdldEN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEF1dGhBY3Rpb24sXG4gIGxpc3RBdXRoRmFpbHVyZUFjdGlvbixcbiAgbGlzdEF1dGhTdWNjZXNzQWN0aW9uLFxuICBsaXN0QXV0aFRlYW1zQWN0aW9uLFxuICBsaXN0QXV0aFRlYW1zRmFpbHVyZUFjdGlvbixcbiAgbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24sXG4gIHJlZnJlc2hBdXRoc0FjdGlvbixcbiAgcmVmcmVzaEF1dGhzRmFpbHVyZUFjdGlvbixcbiAgcmVmcmVzaEF1dGhzU3VjY2Vzc0FjdGlvbixcbiAgcmVtb3ZlTWVtYmVyQXV0aEFjdGlvbixcbiAgcmVtb3ZlTWVtYmVyQXV0aEZhaWx1cmVBY3Rpb24sXG4gIHJlbW92ZU1lbWJlckF1dGhTdWNjZXNzQWN0aW9uLFxuICByZW1vdmVUZWFtQXV0aEFjdGlvbixcbiAgcmVtb3ZlVGVhbUF1dGhGYWlsdXJlQWN0aW9uLFxuICByZW1vdmVUZWFtQXV0aFN1Y2Nlc3NBY3Rpb24sXG4gIHNldEN1cnJlbnRBdXRoQWN0aW9uLFxuICB1bmJsb2NrTWVtYmVyQXV0aEFjdGlvbixcbiAgdW5ibG9ja01lbWJlckF1dGhGYWlsdXJlQWN0aW9uLFxuICB1bmJsb2NrTWVtYmVyQXV0aFN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGgsIENvbGxlY3Rpb24sIFNlYXJjaFRlYW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVtb3ZlTWVtYmVyQXV0aEludGVyZmFjZSwgUmVtb3ZlVGVhbUF1dGhJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2UgPSBpbmplY3QoQXV0aGVudGljYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIHRlYW1TZXJ2aWNlID0gaW5qZWN0KFRlYW1TZXJ2aWNlKTtcblxuICBjbGVhckF1dGhlbnRpY2F0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuUmVtb3ZhbDogdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVBc09ic2VydmFibGUoU1RPUkFHRV9UT0tFTiksXG4gICAgICAgICAgICBzZWxlY3RlZEF1dGhSZW1vdmFsOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRNZW1iZXJzUmVtb3ZhbDogdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVBc09ic2VydmFibGUoU1RPUkFHRV9TRUxFQ1RFRF9NRU1CRVJTKSxcbiAgICAgICAgICB9XG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jbGVhckF1dGhlbnRpY2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBjbGVhclN0b3JlQWN0aW9uKCksXG4gICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25TdWNjZXNzQWN0aW9uKClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNsZWFyQ3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNsZWFyQ3VycmVudEF1dGhBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBjbGVhckN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbigpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50QXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfU0VMRUNURURfQVVUSClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChhdXRoOiBBdXRoIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGF1dGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudEF1dGhTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudEF1dGhTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhdXRofSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0QXV0aCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfSkgPT4gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRocyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGF1dGhzOiBDb2xsZWN0aW9uPEF1dGg+KSA9PiBsaXN0QXV0aFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGhzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBdXRoRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdEF1dGhUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RBdXRoVGVhbXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfSkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5jbHViQWRtaW4pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50ZWFtU2VydmljZS5nZXRDbHViVGVhbXMocGF5bG9hZC5pZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHNlYXJjaFRlYW1zOiBDb2xsZWN0aW9uPFNlYXJjaFRlYW0+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXV0aCA9IHtcbiAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgICB0ZWFtczogc2VhcmNoVGVhbXMudG9BcnJheSgpXG4gICAgICAgICAgICAgICAgICAgIC5zb3J0KChhOiBTZWFyY2hUZWFtLCBiOiBTZWFyY2hUZWFtKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGh9KTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEF1dGhUZWFtc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzZWN0aW9uc1RlYW1zJDogQXJyYXk8T2JzZXJ2YWJsZTxDb2xsZWN0aW9uPFNlYXJjaFRlYW0+Pj4gPSBwYXlsb2FkLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT5cbiAgICAgICAgICAgIHRoaXMudGVhbVNlcnZpY2UuZ2V0U2VjdGlvblRlYW1zKHNlY3Rpb24uaWQpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBmb3JrSm9pbihzZWN0aW9uc1RlYW1zJCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0czogQXJyYXk8Q29sbGVjdGlvbjxTZWFyY2hUZWFtPj4pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc29ydGVkVGVhbXM6IEFycmF5PFNlYXJjaFRlYW0+ID0gcmVzdWx0c1xuICAgICAgICAgICAgICAgIC5mbGF0TWFwKChyZXN1bHQ6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+IHJlc3VsdC50b0FycmF5KCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuICAgICAgICAgICAgICBjb25zdCBhdXRoID0ge1xuICAgICAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAgICAgdGVhbXM6IHNvcnRlZFRlYW1zLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gbGlzdEF1dGhUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGF1dGh9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QXV0aFRlYW1zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcmVmcmVzaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJlZnJlc2hBdXRoc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlTWVtYmVycygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHJlZnJlc2hBdXRoc1N1Y2Nlc3NBY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBsaXN0QXV0aEFjdGlvbigpXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YocmVmcmVzaEF1dGhzRmFpbHVyZUFjdGlvbigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHJlZnJlc2hBdXRoc0ZhaWx1cmVBY3Rpb24oKSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmVtb3ZlTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmVtb3ZlTWVtYmVyQXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiBSZW1vdmVNZW1iZXJBdXRoSW50ZXJmYWNlXG4gICAgICAgIH0pID0+IHRoaXMuYXV0aFNlcnZpY2UucmVtb3ZlTWVtYmVyQXV0aChwYXlsb2FkLmF1dGhJZCwgcGF5bG9hZC5tZW1iZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gcmVtb3ZlTWVtYmVyQXV0aFN1Y2Nlc3NBY3Rpb24oKSA6IHJlbW92ZU1lbWJlckF1dGhGYWlsdXJlQWN0aW9uKCkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihyZW1vdmVNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbigpKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlbW92ZVRlYW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZW1vdmVUZWFtQXV0aEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiBSZW1vdmVUZWFtQXV0aEludGVyZmFjZVxuICAgICAgICB9KSA9PiB0aGlzLmF1dGhTZXJ2aWNlLnJlbW92ZVRlYW1BdXRoKHBheWxvYWQuYXV0aElkLCBwYXlsb2FkLnRlYW1JZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHZhbHVlID8gcmVtb3ZlVGVhbUF1dGhTdWNjZXNzQWN0aW9uKCkgOiByZW1vdmVUZWFtQXV0aEZhaWx1cmVBY3Rpb24oKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHJlbW92ZU1lbWJlckF1dGhGYWlsdXJlQWN0aW9uKCkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2V0Q3VycmVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNldEN1cnJlbnRBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBdXRoIH0pID0+IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfU0VMRUNURURfQVVUSClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG9sZEF1dGg6IEF1dGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1NFTEVDVEVEX0FVVEgsIHBheWxvYWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChuZXdBdXRoOiBBdXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAob2xkQXV0aCAmJiBuZXdBdXRoLmlkID09PSBvbGRBdXRoLmlkICYmICgobmV3QXV0aC5tZW1iZXJzICYmIG5ld0F1dGgubWVtYmVycy5sZW5ndGggPT09IG9sZEF1dGgubWVtYmVycy5sZW5ndGgpIHx8IChuZXdBdXRoLnRlYW1zICYmIG5ld0F1dGgudGVhbXMubGVuZ3RoID09PSBvbGRBdXRoLnRlYW1zLmxlbmd0aCAmJiBuZXdBdXRoLnRlYW1zWzBdLmlkID09PSBvbGRBdXRoLnRlYW1zWzBdLmlkKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICBnZXRDdXJyZW50QXV0aFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG5ld0F1dGh9KVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgIGdldEN1cnJlbnRBdXRoU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbmV3QXV0aH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU3RvcmVBY3Rpb24oKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdW5ibG9ja01lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVuYmxvY2tNZW1iZXJBdXRoQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt1c2VySWQ6IHN0cmluZywgY2x1YklkOiBzdHJpbmcsIG1lbWJlcklkOiBzdHJpbmd9fSkgPT4gdGhpcy5hdXRoU2VydmljZS51bmJsb2NrTWVtYmVyKHBheWxvYWQudXNlcklkLCBwYXlsb2FkLmNsdWJJZCwgcGF5bG9hZC5tZW1iZXJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgdW5ibG9ja01lbWJlckF1dGhTdWNjZXNzQWN0aW9uKCksXG4gICAgICAgICAgICAgICAgcmVmcmVzaEF1dGhzQWN0aW9uKClcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIHVuYmxvY2tNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KVxuICAgICAgICAgICAgfSldO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVuYmxvY2tNZW1iZXJBdXRoRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG4iXX0=