@myclub_se/data-access 2.15.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/{esm2020 → esm2022}/index.mjs +2 -1
  2. package/{esm2020 → esm2022}/lib/api-models/api-bookable-item.mjs +1 -1
  3. package/{esm2020 → esm2022}/lib/api-models/api-booking-calendar-application-time.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/api-models/api-booking-calendar-slot-session.mjs +1 -1
  5. package/{esm2020 → esm2022}/lib/api-models/api-booking-calendar.mjs +1 -1
  6. package/esm2022/lib/api-models/api-feature-flags.mjs +2 -0
  7. package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +11 -0
  8. package/esm2022/lib/api-models/index.mjs +57 -0
  9. package/esm2022/lib/authentication/authentication.interceptor.mjs +101 -0
  10. package/esm2022/lib/authentication/authentication.service.mjs +109 -0
  11. package/esm2022/lib/authentication/guards/authenticated.guard.mjs +38 -0
  12. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +31 -0
  13. package/esm2022/lib/data-access.module.mjs +39 -0
  14. package/esm2022/lib/maintenance/maintenance.interceptor.mjs +30 -0
  15. package/esm2022/lib/models/activity-extra-member.mjs +19 -0
  16. package/esm2022/lib/models/activity-invite.mjs +35 -0
  17. package/esm2022/lib/models/activity-location-group.mjs +27 -0
  18. package/esm2022/lib/models/activity-location-part.mjs +16 -0
  19. package/esm2022/lib/models/activity-location-tag.mjs +22 -0
  20. package/esm2022/lib/models/activity-location.mjs +46 -0
  21. package/esm2022/lib/models/activity-participant.mjs +19 -0
  22. package/esm2022/lib/models/activity-settings.mjs +27 -0
  23. package/esm2022/lib/models/activity-type.mjs +34 -0
  24. package/esm2022/lib/models/activity.mjs +137 -0
  25. package/esm2022/lib/models/auth/auth-member.mjs +13 -0
  26. package/{esm2020 → esm2022}/lib/models/auth/auth-section.mjs +3 -1
  27. package/{esm2020 → esm2022}/lib/models/auth/auth-team-section.mjs +3 -1
  28. package/esm2022/lib/models/auth/auth-team.mjs +13 -0
  29. package/esm2022/lib/models/auth/auth.mjs +25 -0
  30. package/{esm2020 → esm2022}/lib/models/authentication.mjs +3 -1
  31. package/esm2022/lib/models/bookable-group.mjs +27 -0
  32. package/esm2022/lib/models/bookable-item.mjs +49 -0
  33. package/esm2022/lib/models/bookable-part.mjs +16 -0
  34. package/esm2022/lib/models/bookable-tag.mjs +22 -0
  35. package/esm2022/lib/models/booking-calendar-application-time.mjs +86 -0
  36. package/esm2022/lib/models/booking-calendar-slot-session.mjs +87 -0
  37. package/esm2022/lib/models/booking-calendar-slot.mjs +79 -0
  38. package/esm2022/lib/models/booking-calendar.mjs +74 -0
  39. package/esm2022/lib/models/booking-settings.mjs +29 -0
  40. package/esm2022/lib/models/booking-slot-filter.mjs +72 -0
  41. package/esm2022/lib/models/calendar-event.mjs +35 -0
  42. package/esm2022/lib/models/calendar.mjs +15 -0
  43. package/esm2022/lib/models/card/card-deal.mjs +15 -0
  44. package/esm2022/lib/models/card/card-logo-urls.mjs +21 -0
  45. package/esm2022/lib/models/card/card-logo.mjs +11 -0
  46. package/esm2022/lib/models/card/card-member-ticket.mjs +17 -0
  47. package/esm2022/lib/models/card/card-theme.mjs +15 -0
  48. package/esm2022/lib/models/card/card-ticket-location.mjs +13 -0
  49. package/esm2022/lib/models/card/card-ticket.mjs +37 -0
  50. package/{esm2020 → esm2022}/lib/models/card/card.mjs +9 -1
  51. package/esm2022/lib/models/card/home-team.mjs +11 -0
  52. package/esm2022/lib/models/card/member-card.mjs +23 -0
  53. package/esm2022/lib/models/card/search-member-card.mjs +13 -0
  54. package/esm2022/lib/models/club-image.mjs +31 -0
  55. package/{esm2020 → esm2022}/lib/models/club-section.mjs +3 -1
  56. package/{esm2020 → esm2022}/lib/models/club.mjs +3 -1
  57. package/esm2022/lib/models/collection.mjs +19 -0
  58. package/esm2022/lib/models/contact.mjs +61 -0
  59. package/esm2022/lib/models/directory.mjs +38 -0
  60. package/esm2022/lib/models/email.mjs +11 -0
  61. package/esm2022/lib/models/event.mjs +47 -0
  62. package/{esm2020 → esm2022}/lib/models/external-link.mjs +3 -1
  63. package/esm2022/lib/models/feature-flags.mjs +14 -0
  64. package/esm2022/lib/models/file-object.mjs +23 -0
  65. package/esm2022/lib/models/general-image.mjs +11 -0
  66. package/esm2022/lib/models/group-role.mjs +17 -0
  67. package/esm2022/lib/models/image-urls.mjs +15 -0
  68. package/esm2022/lib/models/index.mjs +64 -0
  69. package/esm2022/lib/models/invoice/member-fee.mjs +13 -0
  70. package/esm2022/lib/models/invoice/member-invoice-row.mjs +31 -0
  71. package/esm2022/lib/models/invoice/member-invoice.mjs +45 -0
  72. package/esm2022/lib/models/invoice/payment-attempt.mjs +21 -0
  73. package/esm2022/lib/models/invoice/payment-types/credit-card.mjs +27 -0
  74. package/esm2022/lib/models/invoice/payment-types/giro.mjs +17 -0
  75. package/esm2022/lib/models/invoice/payment-types/swish.mjs +31 -0
  76. package/esm2022/lib/models/invoice/payment-types/zimpler.mjs +19 -0
  77. package/esm2022/lib/models/invoice/search-member-invoice.mjs +26 -0
  78. package/{esm2020 → esm2022}/lib/models/invoice/swish-qr-code.mjs +2 -1
  79. package/esm2022/lib/models/invoice/unpaid-member-invoice.mjs +13 -0
  80. package/esm2022/lib/models/member/member-attribute.mjs +44 -0
  81. package/esm2022/lib/models/member/member-contact.mjs +26 -0
  82. package/esm2022/lib/models/member/member-function.mjs +24 -0
  83. package/esm2022/lib/models/member/member-validation-settings.mjs +21 -0
  84. package/esm2022/lib/models/member/member.mjs +101 -0
  85. package/{esm2020 → esm2022}/lib/models/member/other-member-field.mjs +4 -1
  86. package/esm2022/lib/models/member/other-member.mjs +21 -0
  87. package/esm2022/lib/models/member/search-member.mjs +35 -0
  88. package/esm2022/lib/models/member-activity-invite.mjs +42 -0
  89. package/esm2022/lib/models/member-public-form-field-option.mjs +13 -0
  90. package/esm2022/lib/models/member-public-form-field.mjs +27 -0
  91. package/esm2022/lib/models/member-public-form.mjs +55 -0
  92. package/esm2022/lib/models/member-team-through.mjs +23 -0
  93. package/esm2022/lib/models/member-team.mjs +21 -0
  94. package/esm2022/lib/models/member-type.mjs +11 -0
  95. package/esm2022/lib/models/news.mjs +66 -0
  96. package/esm2022/lib/models/open-activity.mjs +117 -0
  97. package/esm2022/lib/models/optional-fee.mjs +16 -0
  98. package/esm2022/lib/models/overbooked-bookable-item.mjs +15 -0
  99. package/esm2022/lib/models/overbooked-location.mjs +15 -0
  100. package/esm2022/lib/models/partner.mjs +13 -0
  101. package/esm2022/lib/models/public-authentication.mjs +9 -0
  102. package/esm2022/lib/models/registration-qr-code.mjs +19 -0
  103. package/esm2022/lib/models/search-club.mjs +23 -0
  104. package/esm2022/lib/models/search-team.mjs +24 -0
  105. package/{esm2020 → esm2022}/lib/models/section.mjs +3 -1
  106. package/esm2022/lib/models/token.mjs +11 -0
  107. package/esm2022/lib/models/user-notification.mjs +21 -0
  108. package/esm2022/lib/models/user.mjs +41 -0
  109. package/esm2022/lib/services/activity.service.mjs +508 -0
  110. package/esm2022/lib/services/api.service.mjs +108 -0
  111. package/esm2022/lib/services/auth.service.mjs +62 -0
  112. package/esm2022/lib/services/bookable.service.mjs +279 -0
  113. package/esm2022/lib/services/booking-calendar.service.mjs +736 -0
  114. package/esm2022/lib/services/club.service.mjs +35 -0
  115. package/esm2022/lib/services/constant.service.mjs +97 -0
  116. package/esm2022/lib/services/email.service.mjs +28 -0
  117. package/esm2022/lib/services/external-link.service.mjs +25 -0
  118. package/esm2022/lib/services/factories/activity-settings-factory.mjs +3 -0
  119. package/esm2022/lib/services/factories/bookable-item-factory.mjs +5 -0
  120. package/{esm2020 → esm2022}/lib/services/factories/booking-calendar-application-time-factory.mjs +2 -2
  121. package/{esm2020 → esm2022}/lib/services/factories/booking-calendar-factory.mjs +2 -2
  122. package/{esm2020 → esm2022}/lib/services/factories/booking-calendar-slot-session-factory.mjs +2 -2
  123. package/esm2022/lib/services/factories/feature-flags-factory.mjs +5 -0
  124. package/esm2022/lib/services/factories/index.mjs +87 -0
  125. package/esm2022/lib/services/factories/member-public-form-factory.mjs +26 -0
  126. package/esm2022/lib/services/factories/payment-attempt-factory.mjs +23 -0
  127. package/esm2022/lib/services/feature-flags.service.mjs +44 -0
  128. package/esm2022/lib/services/file.service.mjs +65 -0
  129. package/esm2022/lib/services/index.mjs +24 -0
  130. package/esm2022/lib/services/invoice/invoice.service.mjs +42 -0
  131. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +52 -0
  132. package/esm2022/lib/services/maintenance-mode.service.mjs +20 -0
  133. package/esm2022/lib/services/member-card.service.mjs +104 -0
  134. package/esm2022/lib/services/member-public-form.service.mjs +33 -0
  135. package/esm2022/lib/services/member.service.mjs +85 -0
  136. package/esm2022/lib/services/news.service.mjs +94 -0
  137. package/esm2022/lib/services/registration-qr-code.service.mjs +37 -0
  138. package/esm2022/lib/services/section.service.mjs +24 -0
  139. package/esm2022/lib/services/storage.service.mjs +44 -0
  140. package/esm2022/lib/services/team.service.mjs +89 -0
  141. package/esm2022/lib/services/token.service.mjs +58 -0
  142. package/esm2022/lib/services/user-notification.service.mjs +24 -0
  143. package/esm2022/lib/services/user.service.mjs +69 -0
  144. package/esm2022/lib/store/actions/activity.actions.mjs +177 -0
  145. package/esm2022/lib/store/actions/auth.actions.mjs +45 -0
  146. package/esm2022/lib/store/actions/booking.actions.mjs +187 -0
  147. package/esm2022/lib/store/actions/calendar.actions.mjs +77 -0
  148. package/esm2022/lib/store/actions/club-info.actions.mjs +23 -0
  149. package/esm2022/lib/store/actions/constant.actions.mjs +124 -0
  150. package/esm2022/lib/store/actions/email.actions.mjs +19 -0
  151. package/esm2022/lib/store/actions/external-link.actions.mjs +11 -0
  152. package/esm2022/lib/store/actions/file.actions.mjs +41 -0
  153. package/esm2022/lib/store/actions/index.mjs +19 -0
  154. package/esm2022/lib/store/actions/invoice.actions.mjs +73 -0
  155. package/esm2022/lib/store/actions/member-card.actions.mjs +71 -0
  156. package/esm2022/lib/store/actions/member.actions.mjs +65 -0
  157. package/esm2022/lib/store/actions/news.actions.mjs +47 -0
  158. package/esm2022/lib/store/actions/public-form.actions.mjs +17 -0
  159. package/esm2022/lib/store/actions/store.actions.mjs +7 -0
  160. package/esm2022/lib/store/actions/team.actions.mjs +83 -0
  161. package/esm2022/lib/store/actions/token.actions.mjs +53 -0
  162. package/esm2022/lib/store/actions/user.actions.mjs +49 -0
  163. package/esm2022/lib/store/effects/activity.effects.mjs +211 -0
  164. package/esm2022/lib/store/effects/auth.effects.mjs +96 -0
  165. package/esm2022/lib/store/effects/booking.effects.mjs +102 -0
  166. package/esm2022/lib/store/effects/calendar.effects.mjs +84 -0
  167. package/esm2022/lib/store/effects/club-info.effects.mjs +26 -0
  168. package/esm2022/lib/store/effects/constant.effects.mjs +69 -0
  169. package/esm2022/lib/store/effects/data-access.effects.mjs +37 -0
  170. package/esm2022/lib/store/effects/email.effects.mjs +27 -0
  171. package/esm2022/lib/store/effects/external-link.effects.mjs +20 -0
  172. package/esm2022/lib/store/effects/file.effects.mjs +149 -0
  173. package/esm2022/lib/store/effects/index.mjs +2 -0
  174. package/esm2022/lib/store/effects/invoice.effects.mjs +72 -0
  175. package/esm2022/lib/store/effects/member-card.effects.mjs +80 -0
  176. package/esm2022/lib/store/effects/member.effects.mjs +75 -0
  177. package/esm2022/lib/store/effects/mixins/extra-members-mixin.mjs +60 -0
  178. package/esm2022/lib/store/effects/news.effects.mjs +82 -0
  179. package/esm2022/lib/store/effects/public-form.effects.mjs +33 -0
  180. package/esm2022/lib/store/effects/team.effects.mjs +82 -0
  181. package/esm2022/lib/store/effects/token.effects.mjs +81 -0
  182. package/esm2022/lib/store/effects/user.effects.mjs +59 -0
  183. package/esm2022/lib/store/index.mjs +8 -0
  184. package/esm2022/lib/store/interfaces/activate-card-ticket.interface.mjs +2 -0
  185. package/esm2022/lib/store/interfaces/activate-user.interface.mjs +2 -0
  186. package/esm2022/lib/store/interfaces/calendar-activity-locations.interface.mjs +2 -0
  187. package/esm2022/lib/store/interfaces/calendar-activity-types.interface.mjs +2 -0
  188. package/esm2022/lib/store/interfaces/calendar-open-activity-result.interface.mjs +2 -0
  189. package/esm2022/lib/store/interfaces/calendar-public-open-activity-results.interface.mjs +2 -0
  190. package/esm2022/lib/store/interfaces/directory-result.interface.mjs +2 -0
  191. package/esm2022/lib/store/interfaces/email-settings.interface.mjs +2 -0
  192. package/esm2022/lib/store/interfaces/index.mjs +20 -0
  193. package/esm2022/lib/store/interfaces/list-result-interface.mjs +4 -0
  194. package/esm2022/lib/store/interfaces/location.interface.mjs +2 -0
  195. package/esm2022/lib/store/interfaces/member-calendar-event-result.interface.mjs +2 -0
  196. package/esm2022/lib/store/interfaces/member-card-deals.interface.mjs +2 -0
  197. package/esm2022/lib/store/interfaces/member-card-tickets.interface.mjs +2 -0
  198. package/esm2022/lib/store/interfaces/public-activate-card-ticket.interface.mjs +2 -0
  199. package/esm2022/lib/store/interfaces/remove-member-auth.interface.mjs +2 -0
  200. package/esm2022/lib/store/interfaces/remove-team-auth.interface.mjs +2 -0
  201. package/esm2022/lib/store/interfaces/retrieve-result.interface.mjs +4 -0
  202. package/esm2022/lib/store/interfaces/team-activity.interface.mjs +2 -0
  203. package/esm2022/lib/store/interfaces/team-calendar-event-result.interface.mjs +2 -0
  204. package/esm2022/lib/store/operators/ensure-activity.mjs +8 -0
  205. package/esm2022/lib/store/operators/ensure-auths.mjs +18 -0
  206. package/esm2022/lib/store/operators/ensure-calendar-events-loading-done.mjs +23 -0
  207. package/esm2022/lib/store/operators/ensure-constants.mjs +21 -0
  208. package/esm2022/lib/store/operators/ensure-current-auth.mjs +17 -0
  209. package/esm2022/lib/store/operators/ensure-current-user.mjs +16 -0
  210. package/esm2022/lib/store/operators/ensure-loading-done.mjs +24 -0
  211. package/esm2022/lib/store/operators/ensure-open-activities-loading-done.mjs +5 -0
  212. package/esm2022/lib/store/operators/ensure-public-open-activities-loading-done.mjs +5 -0
  213. package/esm2022/lib/store/operators/ensure-updated-data.mjs +10 -0
  214. package/esm2022/lib/store/operators/index.mjs +11 -0
  215. package/esm2022/lib/store/reducers/auth.reducer.mjs +52 -0
  216. package/esm2022/lib/store/reducers/booking.reducers.mjs +79 -0
  217. package/esm2022/lib/store/reducers/calendar.reducer.mjs +449 -0
  218. package/esm2022/lib/store/reducers/club-info.reducer.mjs +9 -0
  219. package/esm2022/lib/store/reducers/constant.reducer.mjs +181 -0
  220. package/esm2022/lib/store/reducers/data-access.reducer.mjs +37 -0
  221. package/esm2022/lib/store/reducers/email.reducer.mjs +21 -0
  222. package/esm2022/lib/store/reducers/external-link.reducer.mjs +6 -0
  223. package/esm2022/lib/store/reducers/file.reducer.mjs +118 -0
  224. package/esm2022/lib/store/reducers/index.mjs +2 -0
  225. package/esm2022/lib/store/reducers/invoice.reducer.mjs +6 -0
  226. package/esm2022/lib/store/reducers/member-card.reducer.mjs +33 -0
  227. package/esm2022/lib/store/reducers/member.reducer.mjs +21 -0
  228. package/esm2022/lib/store/reducers/news.reducer.mjs +96 -0
  229. package/esm2022/lib/store/reducers/public-form.reducer.mjs +21 -0
  230. package/esm2022/lib/store/reducers/public.reducer.mjs +109 -0
  231. package/esm2022/lib/store/reducers/reducer-helpers.mjs +61 -0
  232. package/esm2022/lib/store/reducers/team.reducer.mjs +77 -0
  233. package/esm2022/lib/store/reducers/token.reducer.mjs +21 -0
  234. package/esm2022/lib/store/reducers/user.reducer.mjs +18 -0
  235. package/esm2022/lib/store/selectors/auth.selectors.mjs +6 -0
  236. package/esm2022/lib/store/selectors/booking.selectors.mjs +15 -0
  237. package/esm2022/lib/store/selectors/calendar.selectors.mjs +18 -0
  238. package/esm2022/lib/store/selectors/club-info.selectors.mjs +5 -0
  239. package/esm2022/lib/store/selectors/constant.selectors.mjs +38 -0
  240. package/esm2022/lib/store/selectors/email.selectors.mjs +5 -0
  241. package/esm2022/lib/store/selectors/external-links.selectors.mjs +5 -0
  242. package/esm2022/lib/store/selectors/file.selectors.mjs +6 -0
  243. package/esm2022/lib/store/selectors/index.mjs +18 -0
  244. package/esm2022/lib/store/selectors/invoice.selectors.mjs +6 -0
  245. package/esm2022/lib/store/selectors/member-card.selectors.mjs +8 -0
  246. package/esm2022/lib/store/selectors/member.selectors.mjs +10 -0
  247. package/esm2022/lib/store/selectors/news.selectors.mjs +8 -0
  248. package/esm2022/lib/store/selectors/public-form.selectors.mjs +5 -0
  249. package/esm2022/lib/store/selectors/public.selectors.mjs +18 -0
  250. package/esm2022/lib/store/selectors/team.selectors.mjs +12 -0
  251. package/esm2022/lib/store/selectors/token.selectors.mjs +6 -0
  252. package/esm2022/lib/store/selectors/user.selectors.mjs +6 -0
  253. package/esm2022/lib/store/state/auth.state.mjs +5 -0
  254. package/esm2022/lib/store/state/booking.state.mjs +16 -0
  255. package/esm2022/lib/store/state/calendar.state.mjs +17 -0
  256. package/esm2022/lib/store/state/club-info.state.mjs +4 -0
  257. package/esm2022/lib/store/state/constant.state.mjs +21 -0
  258. package/esm2022/lib/store/state/data-access.state.mjs +2 -0
  259. package/esm2022/lib/store/state/email.state.mjs +7 -0
  260. package/esm2022/lib/store/state/external-link.state.mjs +4 -0
  261. package/esm2022/lib/store/state/file.state.mjs +5 -0
  262. package/esm2022/lib/store/state/index.mjs +19 -0
  263. package/esm2022/lib/store/state/invoice.state.mjs +5 -0
  264. package/esm2022/lib/store/state/member-card.state.mjs +7 -0
  265. package/esm2022/lib/store/state/member.state.mjs +10 -0
  266. package/esm2022/lib/store/state/news.state.mjs +7 -0
  267. package/esm2022/lib/store/state/public-form.state.mjs +5 -0
  268. package/esm2022/lib/store/state/public.state.mjs +17 -0
  269. package/esm2022/lib/store/state/team.state.mjs +11 -0
  270. package/esm2022/lib/store/state/token.state.mjs +5 -0
  271. package/esm2022/lib/store/state/user.state.mjs +5 -0
  272. package/fesm2022/myclub_se-data-access.mjs +10080 -0
  273. package/fesm2022/myclub_se-data-access.mjs.map +1 -0
  274. package/index.d.ts +1 -0
  275. package/lib/api-models/api-bookable-item.d.ts +2 -0
  276. package/lib/api-models/api-booking-calendar-application-time.d.ts +3 -0
  277. package/lib/api-models/api-booking-calendar-slot-session.d.ts +3 -0
  278. package/lib/api-models/api-booking-calendar.d.ts +2 -0
  279. package/lib/api-models/api-feature-flags.d.ts +5 -0
  280. package/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-credit-card-data-type.d.ts +1 -1
  281. package/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-swish-data-type.d.ts +1 -1
  282. package/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-zimpler-data-type.d.ts +1 -1
  283. package/lib/api-models/index.d.ts +1 -0
  284. package/lib/authentication/authentication.interceptor.d.ts +12 -7
  285. package/lib/data-access.module.d.ts +3 -1
  286. package/lib/models/activity-settings.d.ts +3 -1
  287. package/lib/models/auth/auth.d.ts +3 -2
  288. package/lib/models/bookable-item.d.ts +6 -1
  289. package/lib/models/booking-calendar-application-time.d.ts +8 -3
  290. package/lib/models/booking-calendar-slot-session.d.ts +10 -5
  291. package/lib/models/booking-calendar-slot.d.ts +7 -6
  292. package/lib/models/booking-calendar.d.ts +4 -1
  293. package/lib/models/booking-settings.d.ts +5 -4
  294. package/lib/models/booking-slot-filter.d.ts +17 -0
  295. package/lib/models/directory.d.ts +1 -0
  296. package/lib/models/feature-flags.d.ts +7 -0
  297. package/lib/models/index.d.ts +2 -0
  298. package/lib/models/invoice/payment-attempt-data-types/payment-attempt-credit-card-data-type.d.ts +1 -1
  299. package/lib/models/invoice/payment-attempt-data-types/payment-attempt-swish-data-type.d.ts +1 -1
  300. package/lib/models/invoice/payment-attempt-data-types/payment-attempt-zimpler-data-type.d.ts +1 -1
  301. package/lib/services/activity.service.d.ts +55 -52
  302. package/lib/services/bookable.service.d.ts +12 -9
  303. package/lib/services/booking-calendar.service.d.ts +6 -23
  304. package/lib/services/constant.service.d.ts +5 -11
  305. package/lib/services/email.service.d.ts +0 -9
  306. package/lib/services/factories/feature-flags-factory.d.ts +3 -0
  307. package/lib/services/factories/index.d.ts +1 -0
  308. package/lib/services/feature-flags.service.d.ts +13 -0
  309. package/lib/services/index.d.ts +2 -0
  310. package/lib/services/member.service.d.ts +7 -3
  311. package/lib/services/storage.service.d.ts +20 -0
  312. package/lib/store/actions/activity.actions.d.ts +641 -0
  313. package/lib/store/actions/auth.actions.d.ts +83 -0
  314. package/lib/store/actions/booking.actions.d.ts +652 -0
  315. package/lib/store/actions/calendar.actions.d.ts +381 -0
  316. package/lib/store/actions/club-info.actions.d.ts +54 -0
  317. package/lib/store/actions/constant.actions.d.ts +249 -0
  318. package/lib/store/actions/email.actions.d.ts +57 -0
  319. package/lib/store/actions/external-link.actions.d.ts +22 -0
  320. package/lib/store/actions/file.actions.d.ts +169 -0
  321. package/lib/store/actions/index.d.ts +18 -0
  322. package/lib/store/actions/invoice.actions.d.ts +298 -0
  323. package/lib/store/actions/member-card.actions.d.ts +251 -0
  324. package/lib/store/actions/member.actions.d.ts +212 -0
  325. package/lib/store/actions/news.actions.d.ts +164 -0
  326. package/lib/store/actions/public-form.actions.d.ts +46 -0
  327. package/lib/store/actions/store.actions.d.ts +4 -0
  328. package/lib/store/actions/team.actions.d.ts +326 -0
  329. package/lib/store/actions/token.actions.d.ts +151 -0
  330. package/lib/store/actions/user.actions.d.ts +102 -0
  331. package/lib/store/effects/activity.effects.d.ts +152 -0
  332. package/lib/store/effects/auth.effects.d.ts +35 -0
  333. package/lib/store/effects/booking.effects.d.ts +196 -0
  334. package/lib/store/effects/calendar.effects.d.ts +129 -0
  335. package/lib/store/effects/club-info.effects.d.ts +24 -0
  336. package/lib/store/effects/constant.effects.d.ts +96 -0
  337. package/lib/store/effects/data-access.effects.d.ts +18 -0
  338. package/lib/store/effects/email.effects.d.ts +14 -0
  339. package/lib/store/effects/external-link.effects.d.ts +14 -0
  340. package/lib/store/effects/file.effects.d.ts +55 -0
  341. package/lib/store/effects/index.d.ts +1 -0
  342. package/lib/store/effects/invoice.effects.d.ts +80 -0
  343. package/lib/store/effects/member-card.effects.d.ts +69 -0
  344. package/lib/store/effects/member.effects.d.ts +58 -0
  345. package/lib/store/effects/mixins/extra-members-mixin.d.ts +10 -0
  346. package/lib/store/effects/news.effects.d.ts +49 -0
  347. package/lib/store/effects/public-form.effects.d.ts +19 -0
  348. package/lib/store/effects/team.effects.d.ts +80 -0
  349. package/lib/store/effects/token.effects.d.ts +66 -0
  350. package/lib/store/effects/user.effects.d.ts +36 -0
  351. package/lib/store/index.d.ts +7 -0
  352. package/lib/store/interfaces/activate-card-ticket.interface.d.ts +6 -0
  353. package/lib/store/interfaces/activate-user.interface.d.ts +4 -0
  354. package/lib/store/interfaces/calendar-activity-locations.interface.d.ts +7 -0
  355. package/lib/store/interfaces/calendar-activity-types.interface.d.ts +7 -0
  356. package/lib/store/interfaces/calendar-open-activity-result.interface.d.ts +8 -0
  357. package/lib/store/interfaces/calendar-public-open-activity-results.interface.d.ts +7 -0
  358. package/lib/store/interfaces/directory-result.interface.d.ts +5 -0
  359. package/lib/store/interfaces/email-settings.interface.d.ts +5 -0
  360. package/lib/store/interfaces/index.d.ts +19 -0
  361. package/lib/store/interfaces/list-result-interface.d.ts +13 -0
  362. package/lib/store/interfaces/location.interface.d.ts +7 -0
  363. package/lib/store/interfaces/member-calendar-event-result.interface.d.ts +8 -0
  364. package/lib/store/interfaces/member-card-deals.interface.d.ts +5 -0
  365. package/lib/store/interfaces/member-card-tickets.interface.d.ts +5 -0
  366. package/lib/store/interfaces/public-activate-card-ticket.interface.d.ts +6 -0
  367. package/lib/store/interfaces/remove-member-auth.interface.d.ts +4 -0
  368. package/lib/store/interfaces/remove-team-auth.interface.d.ts +4 -0
  369. package/lib/store/interfaces/retrieve-result.interface.d.ts +13 -0
  370. package/lib/store/interfaces/team-activity.interface.d.ts +9 -0
  371. package/lib/store/interfaces/team-calendar-event-result.interface.d.ts +8 -0
  372. package/lib/store/operators/ensure-activity.d.ts +4 -0
  373. package/lib/store/operators/ensure-auths.d.ts +13 -0
  374. package/lib/store/operators/ensure-calendar-events-loading-done.d.ts +19 -0
  375. package/lib/store/operators/ensure-constants.d.ts +12 -0
  376. package/lib/store/operators/ensure-current-auth.d.ts +12 -0
  377. package/lib/store/operators/ensure-current-user.d.ts +11 -0
  378. package/lib/store/operators/ensure-loading-done.d.ts +20 -0
  379. package/lib/store/operators/ensure-open-activities-loading-done.d.ts +3 -0
  380. package/lib/store/operators/ensure-public-open-activities-loading-done.d.ts +3 -0
  381. package/lib/store/operators/ensure-updated-data.d.ts +4 -0
  382. package/lib/store/operators/index.d.ts +10 -0
  383. package/lib/store/reducers/auth.reducer.d.ts +2 -0
  384. package/lib/store/reducers/booking.reducers.d.ts +2 -0
  385. package/lib/store/reducers/calendar.reducer.d.ts +2 -0
  386. package/lib/store/reducers/club-info.reducer.d.ts +2 -0
  387. package/lib/store/reducers/constant.reducer.d.ts +2 -0
  388. package/lib/store/reducers/data-access.reducer.d.ts +3 -0
  389. package/lib/store/reducers/email.reducer.d.ts +2 -0
  390. package/lib/store/reducers/external-link.reducer.d.ts +2 -0
  391. package/lib/store/reducers/file.reducer.d.ts +2 -0
  392. package/lib/store/reducers/index.d.ts +1 -0
  393. package/lib/store/reducers/invoice.reducer.d.ts +2 -0
  394. package/lib/store/reducers/member-card.reducer.d.ts +2 -0
  395. package/lib/store/reducers/member.reducer.d.ts +2 -0
  396. package/lib/store/reducers/news.reducer.d.ts +2 -0
  397. package/lib/store/reducers/public-form.reducer.d.ts +2 -0
  398. package/lib/store/reducers/public.reducer.d.ts +2 -0
  399. package/lib/store/reducers/reducer-helpers.d.ts +8 -0
  400. package/lib/store/reducers/team.reducer.d.ts +2 -0
  401. package/lib/store/reducers/token.reducer.d.ts +2 -0
  402. package/lib/store/reducers/user.reducer.d.ts +2 -0
  403. package/lib/store/selectors/auth.selectors.d.ts +4 -0
  404. package/lib/store/selectors/booking.selectors.d.ts +13 -0
  405. package/lib/store/selectors/calendar.selectors.d.ts +16 -0
  406. package/lib/store/selectors/club-info.selectors.d.ts +3 -0
  407. package/lib/store/selectors/constant.selectors.d.ts +19 -0
  408. package/lib/store/selectors/email.selectors.d.ts +3 -0
  409. package/lib/store/selectors/external-links.selectors.d.ts +3 -0
  410. package/lib/store/selectors/file.selectors.d.ts +4 -0
  411. package/lib/store/selectors/index.d.ts +17 -0
  412. package/lib/store/selectors/invoice.selectors.d.ts +4 -0
  413. package/lib/store/selectors/member-card.selectors.d.ts +6 -0
  414. package/lib/store/selectors/member.selectors.d.ts +8 -0
  415. package/lib/store/selectors/news.selectors.d.ts +6 -0
  416. package/lib/store/selectors/public-form.selectors.d.ts +3 -0
  417. package/lib/store/selectors/public.selectors.d.ts +16 -0
  418. package/lib/store/selectors/team.selectors.d.ts +10 -0
  419. package/lib/store/selectors/token.selectors.d.ts +4 -0
  420. package/lib/store/selectors/user.selectors.d.ts +4 -0
  421. package/lib/store/state/auth.state.d.ts +7 -0
  422. package/lib/store/state/booking.state.d.ts +16 -0
  423. package/lib/store/state/calendar.state.d.ts +19 -0
  424. package/lib/store/state/club-info.state.d.ts +6 -0
  425. package/lib/store/state/constant.state.d.ts +23 -0
  426. package/lib/store/state/data-access.state.d.ts +36 -0
  427. package/lib/store/state/email.state.d.ts +5 -0
  428. package/lib/store/state/external-link.state.d.ts +6 -0
  429. package/lib/store/state/file.state.d.ts +6 -0
  430. package/lib/store/state/index.d.ts +18 -0
  431. package/lib/store/state/invoice.state.d.ts +7 -0
  432. package/lib/store/state/member-card.state.d.ts +9 -0
  433. package/lib/store/state/member.state.d.ts +11 -0
  434. package/lib/store/state/news.state.d.ts +9 -0
  435. package/lib/store/state/public-form.state.d.ts +7 -0
  436. package/lib/store/state/public.state.d.ts +19 -0
  437. package/lib/store/state/team.state.d.ts +13 -0
  438. package/lib/store/state/token.state.d.ts +7 -0
  439. package/lib/store/state/user.state.d.ts +7 -0
  440. package/lib/types/attribute-type.d.ts +1 -1
  441. package/lib/types/booking-calendar-slot-reserved-time-position.d.ts +1 -1
  442. package/lib/types/booking-calendar-slot-type.d.ts +1 -1
  443. package/lib/types/contact-type.d.ts +1 -1
  444. package/lib/types/grant-type.d.ts +1 -1
  445. package/lib/types/payment-attempt-status-type.d.ts +1 -1
  446. package/lib/types/payment-attempt-type.d.ts +1 -1
  447. package/lib/types/sex-type.d.ts +1 -1
  448. package/package.json +13 -18
  449. package/esm2020/lib/api-models/api-invoice/api-payment-attempt-create.mjs +0 -8
  450. package/esm2020/lib/api-models/index.mjs +0 -56
  451. package/esm2020/lib/authentication/authentication.interceptor.mjs +0 -66
  452. package/esm2020/lib/authentication/authentication.service.mjs +0 -106
  453. package/esm2020/lib/authentication/guards/authenticated.guard.mjs +0 -36
  454. package/esm2020/lib/authentication/guards/handle-grant-token.guard.mjs +0 -29
  455. package/esm2020/lib/data-access.module.mjs +0 -30
  456. package/esm2020/lib/maintenance/maintenance.interceptor.mjs +0 -29
  457. package/esm2020/lib/models/activity-extra-member.mjs +0 -12
  458. package/esm2020/lib/models/activity-invite.mjs +0 -20
  459. package/esm2020/lib/models/activity-location-group.mjs +0 -21
  460. package/esm2020/lib/models/activity-location-part.mjs +0 -14
  461. package/esm2020/lib/models/activity-location-tag.mjs +0 -17
  462. package/esm2020/lib/models/activity-location.mjs +0 -36
  463. package/esm2020/lib/models/activity-participant.mjs +0 -12
  464. package/esm2020/lib/models/activity-settings.mjs +0 -14
  465. package/esm2020/lib/models/activity-type.mjs +0 -26
  466. package/esm2020/lib/models/activity.mjs +0 -92
  467. package/esm2020/lib/models/auth/auth-member.mjs +0 -10
  468. package/esm2020/lib/models/auth/auth-team.mjs +0 -9
  469. package/esm2020/lib/models/auth/auth.mjs +0 -15
  470. package/esm2020/lib/models/bookable-group.mjs +0 -21
  471. package/esm2020/lib/models/bookable-item.mjs +0 -34
  472. package/esm2020/lib/models/bookable-part.mjs +0 -14
  473. package/esm2020/lib/models/bookable-tag.mjs +0 -17
  474. package/esm2020/lib/models/booking-calendar-application-time.mjs +0 -52
  475. package/esm2020/lib/models/booking-calendar-slot-session.mjs +0 -54
  476. package/esm2020/lib/models/booking-calendar-slot.mjs +0 -53
  477. package/esm2020/lib/models/booking-calendar.mjs +0 -54
  478. package/esm2020/lib/models/booking-settings.mjs +0 -22
  479. package/esm2020/lib/models/calendar-event.mjs +0 -20
  480. package/esm2020/lib/models/calendar.mjs +0 -10
  481. package/esm2020/lib/models/card/card-deal.mjs +0 -10
  482. package/esm2020/lib/models/card/card-logo-urls.mjs +0 -13
  483. package/esm2020/lib/models/card/card-logo.mjs +0 -8
  484. package/esm2020/lib/models/card/card-member-ticket.mjs +0 -11
  485. package/esm2020/lib/models/card/card-theme.mjs +0 -10
  486. package/esm2020/lib/models/card/card-ticket-location.mjs +0 -9
  487. package/esm2020/lib/models/card/card-ticket.mjs +0 -21
  488. package/esm2020/lib/models/card/home-team.mjs +0 -8
  489. package/esm2020/lib/models/card/member-card.mjs +0 -14
  490. package/esm2020/lib/models/card/search-member-card.mjs +0 -9
  491. package/esm2020/lib/models/club-image.mjs +0 -18
  492. package/esm2020/lib/models/collection.mjs +0 -15
  493. package/esm2020/lib/models/contact.mjs +0 -46
  494. package/esm2020/lib/models/directory.mjs +0 -26
  495. package/esm2020/lib/models/email.mjs +0 -8
  496. package/esm2020/lib/models/event.mjs +0 -26
  497. package/esm2020/lib/models/file-object.mjs +0 -14
  498. package/esm2020/lib/models/general-image.mjs +0 -8
  499. package/esm2020/lib/models/group-role.mjs +0 -11
  500. package/esm2020/lib/models/image-urls.mjs +0 -10
  501. package/esm2020/lib/models/index.mjs +0 -62
  502. package/esm2020/lib/models/invoice/member-fee.mjs +0 -9
  503. package/esm2020/lib/models/invoice/member-invoice-row.mjs +0 -18
  504. package/esm2020/lib/models/invoice/member-invoice.mjs +0 -25
  505. package/esm2020/lib/models/invoice/payment-attempt.mjs +0 -13
  506. package/esm2020/lib/models/invoice/payment-types/credit-card.mjs +0 -16
  507. package/esm2020/lib/models/invoice/payment-types/giro.mjs +0 -11
  508. package/esm2020/lib/models/invoice/payment-types/swish.mjs +0 -18
  509. package/esm2020/lib/models/invoice/payment-types/zimpler.mjs +0 -12
  510. package/esm2020/lib/models/invoice/search-member-invoice.mjs +0 -17
  511. package/esm2020/lib/models/invoice/unpaid-member-invoice.mjs +0 -9
  512. package/esm2020/lib/models/member/member-attribute.mjs +0 -33
  513. package/esm2020/lib/models/member/member-contact.mjs +0 -21
  514. package/esm2020/lib/models/member/member-function.mjs +0 -19
  515. package/esm2020/lib/models/member/member-validation-settings.mjs +0 -13
  516. package/esm2020/lib/models/member/member.mjs +0 -75
  517. package/esm2020/lib/models/member/other-member.mjs +0 -13
  518. package/esm2020/lib/models/member/search-member.mjs +0 -20
  519. package/esm2020/lib/models/member-activity-invite.mjs +0 -31
  520. package/esm2020/lib/models/member-public-form-field-option.mjs +0 -9
  521. package/esm2020/lib/models/member-public-form-field.mjs +0 -16
  522. package/esm2020/lib/models/member-public-form.mjs +0 -30
  523. package/esm2020/lib/models/member-team-through.mjs +0 -14
  524. package/esm2020/lib/models/member-team.mjs +0 -13
  525. package/esm2020/lib/models/member-type.mjs +0 -8
  526. package/esm2020/lib/models/news.mjs +0 -47
  527. package/esm2020/lib/models/open-activity.mjs +0 -62
  528. package/esm2020/lib/models/optional-fee.mjs +0 -11
  529. package/esm2020/lib/models/overbooked-bookable-item.mjs +0 -10
  530. package/esm2020/lib/models/overbooked-location.mjs +0 -10
  531. package/esm2020/lib/models/partner.mjs +0 -9
  532. package/esm2020/lib/models/public-authentication.mjs +0 -7
  533. package/esm2020/lib/models/registration-qr-code.mjs +0 -12
  534. package/esm2020/lib/models/search-club.mjs +0 -14
  535. package/esm2020/lib/models/search-team.mjs +0 -18
  536. package/esm2020/lib/models/token.mjs +0 -8
  537. package/esm2020/lib/models/user-notification.mjs +0 -13
  538. package/esm2020/lib/models/user.mjs +0 -31
  539. package/esm2020/lib/services/activity.service.mjs +0 -470
  540. package/esm2020/lib/services/api.service.mjs +0 -106
  541. package/esm2020/lib/services/auth.service.mjs +0 -61
  542. package/esm2020/lib/services/bookable.service.mjs +0 -258
  543. package/esm2020/lib/services/booking-calendar.service.mjs +0 -794
  544. package/esm2020/lib/services/club.service.mjs +0 -34
  545. package/esm2020/lib/services/constant.service.mjs +0 -131
  546. package/esm2020/lib/services/email.service.mjs +0 -53
  547. package/esm2020/lib/services/external-link.service.mjs +0 -24
  548. package/esm2020/lib/services/factories/activity-settings-factory.mjs +0 -3
  549. package/esm2020/lib/services/factories/bookable-item-factory.mjs +0 -5
  550. package/esm2020/lib/services/factories/index.mjs +0 -86
  551. package/esm2020/lib/services/factories/member-public-form-factory.mjs +0 -26
  552. package/esm2020/lib/services/factories/payment-attempt-factory.mjs +0 -23
  553. package/esm2020/lib/services/file.service.mjs +0 -64
  554. package/esm2020/lib/services/index.mjs +0 -22
  555. package/esm2020/lib/services/invoice/invoice.service.mjs +0 -41
  556. package/esm2020/lib/services/invoice/payment-attempt.service.mjs +0 -51
  557. package/esm2020/lib/services/maintenance-mode.service.mjs +0 -21
  558. package/esm2020/lib/services/member-card.service.mjs +0 -103
  559. package/esm2020/lib/services/member-public-form.service.mjs +0 -32
  560. package/esm2020/lib/services/member.service.mjs +0 -63
  561. package/esm2020/lib/services/news.service.mjs +0 -102
  562. package/esm2020/lib/services/registration-qr-code.service.mjs +0 -36
  563. package/esm2020/lib/services/section.service.mjs +0 -23
  564. package/esm2020/lib/services/team.service.mjs +0 -88
  565. package/esm2020/lib/services/token.service.mjs +0 -57
  566. package/esm2020/lib/services/user-notification.service.mjs +0 -23
  567. package/esm2020/lib/services/user.service.mjs +0 -68
  568. package/fesm2015/myclub_se-data-access.mjs +0 -4810
  569. package/fesm2015/myclub_se-data-access.mjs.map +0 -1
  570. package/fesm2020/myclub_se-data-access.mjs +0 -4806
  571. package/fesm2020/myclub_se-data-access.mjs.map +0 -1
  572. /package/{esm2020 → esm2022}/lib/api-models/api-activity-extra-member.mjs +0 -0
  573. /package/{esm2020 → esm2022}/lib/api-models/api-activity-invite.mjs +0 -0
  574. /package/{esm2020 → esm2022}/lib/api-models/api-activity-location-group.mjs +0 -0
  575. /package/{esm2020 → esm2022}/lib/api-models/api-activity-location-part.mjs +0 -0
  576. /package/{esm2020 → esm2022}/lib/api-models/api-activity-location-tag.mjs +0 -0
  577. /package/{esm2020 → esm2022}/lib/api-models/api-activity-location.mjs +0 -0
  578. /package/{esm2020 → esm2022}/lib/api-models/api-activity-participant.mjs +0 -0
  579. /package/{esm2020 → esm2022}/lib/api-models/api-activity-settings.mjs +0 -0
  580. /package/{esm2020 → esm2022}/lib/api-models/api-activity-type.mjs +0 -0
  581. /package/{esm2020 → esm2022}/lib/api-models/api-activity.mjs +0 -0
  582. /package/{esm2020 → esm2022}/lib/api-models/api-auth/api-auth-member.mjs +0 -0
  583. /package/{esm2020 → esm2022}/lib/api-models/api-auth/api-auth-section.mjs +0 -0
  584. /package/{esm2020 → esm2022}/lib/api-models/api-auth/api-auth-team-section.mjs +0 -0
  585. /package/{esm2020 → esm2022}/lib/api-models/api-auth/api-auth-team.mjs +0 -0
  586. /package/{esm2020 → esm2022}/lib/api-models/api-auth/api-auth.mjs +0 -0
  587. /package/{esm2020 → esm2022}/lib/api-models/api-auth/index.mjs +0 -0
  588. /package/{esm2020 → esm2022}/lib/api-models/api-bookable-group.mjs +0 -0
  589. /package/{esm2020 → esm2022}/lib/api-models/api-bookable-part.mjs +0 -0
  590. /package/{esm2020 → esm2022}/lib/api-models/api-bookable-tag.mjs +0 -0
  591. /package/{esm2020 → esm2022}/lib/api-models/api-booking-calendar-slot.mjs +0 -0
  592. /package/{esm2020 → esm2022}/lib/api-models/api-booking-settings.mjs +0 -0
  593. /package/{esm2020 → esm2022}/lib/api-models/api-calendar-event.mjs +0 -0
  594. /package/{esm2020 → esm2022}/lib/api-models/api-calendar.mjs +0 -0
  595. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-deal.mjs +0 -0
  596. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-logo-urls.mjs +0 -0
  597. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-logo.mjs +0 -0
  598. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-member-ticket.mjs +0 -0
  599. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-theme.mjs +0 -0
  600. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-ticket-location.mjs +0 -0
  601. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card-ticket.mjs +0 -0
  602. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-card.mjs +0 -0
  603. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-home-team.mjs +0 -0
  604. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-member-card.mjs +0 -0
  605. /package/{esm2020 → esm2022}/lib/api-models/api-card/api-search-member-card.mjs +0 -0
  606. /package/{esm2020 → esm2022}/lib/api-models/api-card/index.mjs +0 -0
  607. /package/{esm2020 → esm2022}/lib/api-models/api-club-image.mjs +0 -0
  608. /package/{esm2020 → esm2022}/lib/api-models/api-club-section.mjs +0 -0
  609. /package/{esm2020 → esm2022}/lib/api-models/api-club.mjs +0 -0
  610. /package/{esm2020 → esm2022}/lib/api-models/api-collection.mjs +0 -0
  611. /package/{esm2020 → esm2022}/lib/api-models/api-directory.mjs +0 -0
  612. /package/{esm2020 → esm2022}/lib/api-models/api-event.mjs +0 -0
  613. /package/{esm2020 → esm2022}/lib/api-models/api-external-link.mjs +0 -0
  614. /package/{esm2020 → esm2022}/lib/api-models/api-file-object.mjs +0 -0
  615. /package/{esm2020 → esm2022}/lib/api-models/api-general-image.mjs +0 -0
  616. /package/{esm2020 → esm2022}/lib/api-models/api-group-role.mjs +0 -0
  617. /package/{esm2020 → esm2022}/lib/api-models/api-image-urls.mjs +0 -0
  618. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-invoice-payments/api-credit-card.mjs +0 -0
  619. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-invoice-payments/api-giro.mjs +0 -0
  620. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-invoice-payments/api-swish.mjs +0 -0
  621. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-invoice-payments/api-zimpler.mjs +0 -0
  622. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-invoice-payments/index.mjs +0 -0
  623. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-member-fee.mjs +0 -0
  624. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-member-invoice-row.mjs +0 -0
  625. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-member-invoice.mjs +0 -0
  626. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-payment-attempt.mjs +0 -0
  627. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-search-member-invoice.mjs +0 -0
  628. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-swish-qr-code.mjs +0 -0
  629. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/api-unpaid-member-invoice.mjs +0 -0
  630. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/index.mjs +0 -0
  631. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-credit-card-data-type.mjs +0 -0
  632. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-swish-data-type.mjs +0 -0
  633. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/payment-attempt-data-types/api-payment-attempt-zimpler-data-type.mjs +0 -0
  634. /package/{esm2020 → esm2022}/lib/api-models/api-invoice/payment-attempt-data-types/index.mjs +0 -0
  635. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-contact.mjs +0 -0
  636. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-member-attribute.mjs +0 -0
  637. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-member-contact.mjs +0 -0
  638. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-member-function.mjs +0 -0
  639. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-member-validation-settings.mjs +0 -0
  640. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-member.mjs +0 -0
  641. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-other-member-field.mjs +0 -0
  642. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-other-member.mjs +0 -0
  643. /package/{esm2020 → esm2022}/lib/api-models/api-member/api-search-member.mjs +0 -0
  644. /package/{esm2020 → esm2022}/lib/api-models/api-member/index.mjs +0 -0
  645. /package/{esm2020 → esm2022}/lib/api-models/api-member-activity-invite.mjs +0 -0
  646. /package/{esm2020 → esm2022}/lib/api-models/api-member-public-form-field-option.mjs +0 -0
  647. /package/{esm2020 → esm2022}/lib/api-models/api-member-public-form-field.mjs +0 -0
  648. /package/{esm2020 → esm2022}/lib/api-models/api-member-public-form.mjs +0 -0
  649. /package/{esm2020 → esm2022}/lib/api-models/api-member-team-through.mjs +0 -0
  650. /package/{esm2020 → esm2022}/lib/api-models/api-member-team.mjs +0 -0
  651. /package/{esm2020 → esm2022}/lib/api-models/api-member-type.mjs +0 -0
  652. /package/{esm2020 → esm2022}/lib/api-models/api-news.mjs +0 -0
  653. /package/{esm2020 → esm2022}/lib/api-models/api-open-activity.mjs +0 -0
  654. /package/{esm2020 → esm2022}/lib/api-models/api-optional-fee.mjs +0 -0
  655. /package/{esm2020 → esm2022}/lib/api-models/api-overbooked-bookable-item.mjs +0 -0
  656. /package/{esm2020 → esm2022}/lib/api-models/api-overbooked-location.mjs +0 -0
  657. /package/{esm2020 → esm2022}/lib/api-models/api-partner.mjs +0 -0
  658. /package/{esm2020 → esm2022}/lib/api-models/api-public-token.mjs +0 -0
  659. /package/{esm2020 → esm2022}/lib/api-models/api-registration-qr-code.mjs +0 -0
  660. /package/{esm2020 → esm2022}/lib/api-models/api-search-club.mjs +0 -0
  661. /package/{esm2020 → esm2022}/lib/api-models/api-search-team.mjs +0 -0
  662. /package/{esm2020 → esm2022}/lib/api-models/api-section.mjs +0 -0
  663. /package/{esm2020 → esm2022}/lib/api-models/api-token.mjs +0 -0
  664. /package/{esm2020 → esm2022}/lib/api-models/api-user-notification.mjs +0 -0
  665. /package/{esm2020 → esm2022}/lib/api-models/api-user.mjs +0 -0
  666. /package/{esm2020 → esm2022}/lib/authentication/authentication.config.mjs +0 -0
  667. /package/{esm2020 → esm2022}/lib/authentication/index.mjs +0 -0
  668. /package/{esm2020 → esm2022}/lib/interfaces/email-recipient.interface.mjs +0 -0
  669. /package/{esm2020 → esm2022}/lib/interfaces/index.mjs +0 -0
  670. /package/{esm2020 → esm2022}/lib/interfaces/new-account.interface.mjs +0 -0
  671. /package/{esm2020 → esm2022}/lib/interfaces/open-activity-search-params.interface.mjs +0 -0
  672. /package/{esm2020 → esm2022}/lib/interfaces/option.interface.mjs +0 -0
  673. /package/{esm2020 → esm2022}/lib/interfaces/sms-recipient.interface.mjs +0 -0
  674. /package/{esm2020 → esm2022}/lib/maintenance/index.mjs +0 -0
  675. /package/{esm2020 → esm2022}/lib/models/auth/index.mjs +0 -0
  676. /package/{esm2020 → esm2022}/lib/models/card/index.mjs +0 -0
  677. /package/{esm2020 → esm2022}/lib/models/invoice/index.mjs +0 -0
  678. /package/{esm2020 → esm2022}/lib/models/invoice/payment-attempt-data-types/index.mjs +0 -0
  679. /package/{esm2020 → esm2022}/lib/models/invoice/payment-attempt-data-types/payment-attempt-credit-card-data-type.mjs +0 -0
  680. /package/{esm2020 → esm2022}/lib/models/invoice/payment-attempt-data-types/payment-attempt-swish-data-type.mjs +0 -0
  681. /package/{esm2020 → esm2022}/lib/models/invoice/payment-attempt-data-types/payment-attempt-zimpler-data-type.mjs +0 -0
  682. /package/{esm2020 → esm2022}/lib/models/invoice/payment-types/index.mjs +0 -0
  683. /package/{esm2020 → esm2022}/lib/models/member/index.mjs +0 -0
  684. /package/{esm2020 → esm2022}/lib/models/role.mjs +0 -0
  685. /package/{esm2020 → esm2022}/lib/services/factories/activity-extra-member-factory.mjs +0 -0
  686. /package/{esm2020 → esm2022}/lib/services/factories/activity-factory.mjs +0 -0
  687. /package/{esm2020 → esm2022}/lib/services/factories/activity-invite-factory.mjs +0 -0
  688. /package/{esm2020 → esm2022}/lib/services/factories/activity-location-factory.mjs +0 -0
  689. /package/{esm2020 → esm2022}/lib/services/factories/activity-location-group-factory.mjs +0 -0
  690. /package/{esm2020 → esm2022}/lib/services/factories/activity-location-part-factory.mjs +0 -0
  691. /package/{esm2020 → esm2022}/lib/services/factories/activity-location-tag-factory.mjs +0 -0
  692. /package/{esm2020 → esm2022}/lib/services/factories/activity-participant-factory.mjs +0 -0
  693. /package/{esm2020 → esm2022}/lib/services/factories/activity-type-factory.mjs +0 -0
  694. /package/{esm2020 → esm2022}/lib/services/factories/auth-factory.mjs +0 -0
  695. /package/{esm2020 → esm2022}/lib/services/factories/auth-member-factory.mjs +0 -0
  696. /package/{esm2020 → esm2022}/lib/services/factories/auth-section-factory.mjs +0 -0
  697. /package/{esm2020 → esm2022}/lib/services/factories/auth-team-factory.mjs +0 -0
  698. /package/{esm2020 → esm2022}/lib/services/factories/auth-team-section-factory.mjs +0 -0
  699. /package/{esm2020 → esm2022}/lib/services/factories/bookable-group-factory.mjs +0 -0
  700. /package/{esm2020 → esm2022}/lib/services/factories/bookable-part-factory.mjs +0 -0
  701. /package/{esm2020 → esm2022}/lib/services/factories/bookable-tag-factory.mjs +0 -0
  702. /package/{esm2020 → esm2022}/lib/services/factories/booking-calendar-slot-factory.mjs +0 -0
  703. /package/{esm2020 → esm2022}/lib/services/factories/booking-settings-factory.mjs +0 -0
  704. /package/{esm2020 → esm2022}/lib/services/factories/card-deal-factory.mjs +0 -0
  705. /package/{esm2020 → esm2022}/lib/services/factories/card-factory.mjs +0 -0
  706. /package/{esm2020 → esm2022}/lib/services/factories/card-logo-factory.mjs +0 -0
  707. /package/{esm2020 → esm2022}/lib/services/factories/card-logo-urls-factory.mjs +0 -0
  708. /package/{esm2020 → esm2022}/lib/services/factories/card-member-ticket-factory.mjs +0 -0
  709. /package/{esm2020 → esm2022}/lib/services/factories/card-theme-factory.mjs +0 -0
  710. /package/{esm2020 → esm2022}/lib/services/factories/card-ticket-factory.mjs +0 -0
  711. /package/{esm2020 → esm2022}/lib/services/factories/card-ticket-location-factory.mjs +0 -0
  712. /package/{esm2020 → esm2022}/lib/services/factories/club-factory.mjs +0 -0
  713. /package/{esm2020 → esm2022}/lib/services/factories/club-image-factory.mjs +0 -0
  714. /package/{esm2020 → esm2022}/lib/services/factories/club-section-factory.mjs +0 -0
  715. /package/{esm2020 → esm2022}/lib/services/factories/contact-factory.mjs +0 -0
  716. /package/{esm2020 → esm2022}/lib/services/factories/credit-card-factory.mjs +0 -0
  717. /package/{esm2020 → esm2022}/lib/services/factories/directory-factory.mjs +0 -0
  718. /package/{esm2020 → esm2022}/lib/services/factories/event-factory.mjs +0 -0
  719. /package/{esm2020 → esm2022}/lib/services/factories/external-link-factory.mjs +0 -0
  720. /package/{esm2020 → esm2022}/lib/services/factories/file-factory.mjs +0 -0
  721. /package/{esm2020 → esm2022}/lib/services/factories/general-image-factory.mjs +0 -0
  722. /package/{esm2020 → esm2022}/lib/services/factories/giro-factory.mjs +0 -0
  723. /package/{esm2020 → esm2022}/lib/services/factories/group-role-factory.mjs +0 -0
  724. /package/{esm2020 → esm2022}/lib/services/factories/home-team-factory.mjs +0 -0
  725. /package/{esm2020 → esm2022}/lib/services/factories/image-urls-factory.mjs +0 -0
  726. /package/{esm2020 → esm2022}/lib/services/factories/member-attribute-factory.mjs +0 -0
  727. /package/{esm2020 → esm2022}/lib/services/factories/member-card-factory.mjs +0 -0
  728. /package/{esm2020 → esm2022}/lib/services/factories/member-contact-factory.mjs +0 -0
  729. /package/{esm2020 → esm2022}/lib/services/factories/member-factory.mjs +0 -0
  730. /package/{esm2020 → esm2022}/lib/services/factories/member-fee-factory.mjs +0 -0
  731. /package/{esm2020 → esm2022}/lib/services/factories/member-function-factory.mjs +0 -0
  732. /package/{esm2020 → esm2022}/lib/services/factories/member-invite-factory.mjs +0 -0
  733. /package/{esm2020 → esm2022}/lib/services/factories/member-invoice-factory.mjs +0 -0
  734. /package/{esm2020 → esm2022}/lib/services/factories/member-invoice-row-factory.mjs +0 -0
  735. /package/{esm2020 → esm2022}/lib/services/factories/member-public-form-field-factory.mjs +0 -0
  736. /package/{esm2020 → esm2022}/lib/services/factories/member-public-form-field-option-factory.mjs +0 -0
  737. /package/{esm2020 → esm2022}/lib/services/factories/member-team-factory.mjs +0 -0
  738. /package/{esm2020 → esm2022}/lib/services/factories/member-team-through-factory.mjs +0 -0
  739. /package/{esm2020 → esm2022}/lib/services/factories/member-type-factory.mjs +0 -0
  740. /package/{esm2020 → esm2022}/lib/services/factories/member-validation-settings-factory.mjs +0 -0
  741. /package/{esm2020 → esm2022}/lib/services/factories/news-factory.mjs +0 -0
  742. /package/{esm2020 → esm2022}/lib/services/factories/open-activity-factory.mjs +0 -0
  743. /package/{esm2020 → esm2022}/lib/services/factories/optional-fee-factory.mjs +0 -0
  744. /package/{esm2020 → esm2022}/lib/services/factories/other-member-factory.mjs +0 -0
  745. /package/{esm2020 → esm2022}/lib/services/factories/other-member-field-factory.mjs +0 -0
  746. /package/{esm2020 → esm2022}/lib/services/factories/overbooked-bookable-item-factory.mjs +0 -0
  747. /package/{esm2020 → esm2022}/lib/services/factories/overbooked-location-factory.mjs +0 -0
  748. /package/{esm2020 → esm2022}/lib/services/factories/partner-factory.mjs +0 -0
  749. /package/{esm2020 → esm2022}/lib/services/factories/public-authentication-factory.mjs +0 -0
  750. /package/{esm2020 → esm2022}/lib/services/factories/registration-qr-code-factory.mjs +0 -0
  751. /package/{esm2020 → esm2022}/lib/services/factories/search-club-factory.mjs +0 -0
  752. /package/{esm2020 → esm2022}/lib/services/factories/search-member-card-factory.mjs +0 -0
  753. /package/{esm2020 → esm2022}/lib/services/factories/search-member-factory.mjs +0 -0
  754. /package/{esm2020 → esm2022}/lib/services/factories/search-member-invoice-factory.mjs +0 -0
  755. /package/{esm2020 → esm2022}/lib/services/factories/search-member-team-through-factory.mjs +0 -0
  756. /package/{esm2020 → esm2022}/lib/services/factories/search-team-factory.mjs +0 -0
  757. /package/{esm2020 → esm2022}/lib/services/factories/section-factory.mjs +0 -0
  758. /package/{esm2020 → esm2022}/lib/services/factories/swish-factory.mjs +0 -0
  759. /package/{esm2020 → esm2022}/lib/services/factories/token-factory.mjs +0 -0
  760. /package/{esm2020 → esm2022}/lib/services/factories/unpaid-invoice-factory.mjs +0 -0
  761. /package/{esm2020 → esm2022}/lib/services/factories/user-factory.mjs +0 -0
  762. /package/{esm2020 → esm2022}/lib/services/factories/user-notification-factory.mjs +0 -0
  763. /package/{esm2020 → esm2022}/lib/services/factories/zimpler-factory.mjs +0 -0
  764. /package/{esm2020 → esm2022}/lib/services/invoice/index.mjs +0 -0
  765. /package/{esm2020 → esm2022}/lib/types/attribute-type.mjs +0 -0
  766. /package/{esm2020 → esm2022}/lib/types/booking-calendar-slot-reserved-time-position.mjs +0 -0
  767. /package/{esm2020 → esm2022}/lib/types/booking-calendar-slot-type.mjs +0 -0
  768. /package/{esm2020 → esm2022}/lib/types/contact-type.mjs +0 -0
  769. /package/{esm2020 → esm2022}/lib/types/grant-type.mjs +0 -0
  770. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  771. /package/{esm2020 → esm2022}/lib/types/payment-attempt-status-type.mjs +0 -0
  772. /package/{esm2020 → esm2022}/lib/types/payment-attempt-type.mjs +0 -0
  773. /package/{esm2020 → esm2022}/lib/types/sex-type.mjs +0 -0
  774. /package/{esm2020 → esm2022}/myclub_se-data-access.mjs +0 -0
@@ -0,0 +1,449 @@
1
+ import { createReducer, on } from '@ngrx/store';
2
+ import { initialCalendarState } from '../state';
3
+ import { clearMemberActivityAction, clearMemberActivityInviteAction, clearMemberOpenActivityAction, clearStoreAction, clearTeamActivityAction, createTeamActivityAction, createTeamActivityFailureAction, deleteTeamActivityInviteAction, deleteTeamActivitySuccessAction, listAllMemberOpenActivityLocationsAction, listAllMemberOpenActivityLocationsFailureAction, listAllMemberOpenActivityLocationsSuccessAction, listAllMemberOpenActivityTypesAction, listAllMemberOpenActivityTypesFailureAction, listAllMemberOpenActivityTypesSuccessAction, listMemberActivitiesAction, listMemberActivitiesFailureAction, listMemberActivitiesSuccessAction, listMemberActivityInvitesAction, listMemberActivityInvitesFailureAction, listMemberActivityInvitesSuccessAction, listMemberOpenActivitiesAction, listMemberOpenActivitiesFailureAction, listMemberOpenActivitiesSuccessAction, listMemberOpenActivityLocationsAction, listMemberOpenActivityLocationsFailureAction, listMemberOpenActivityLocationsSuccessAction, listMemberOpenActivityTypesAction, listMemberOpenActivityTypesFailureAction, listMemberOpenActivityTypesSuccessAction, listTeamActivitiesAction, listTeamActivitiesFailureAction, listTeamActivitiesSuccessAction, listTeamActivityParticipantsSuccessAction, listTeamLeaderExtraMembersSuccessAction, removeMemberOpenActivityAction, resendTeamActivityMemberInviteSuccessAction, retrieveMemberActivityAction, retrieveMemberActivityFailureAction, retrieveMemberActivityInviteAction, retrieveMemberActivityInviteFailureAction, retrieveMemberActivityInviteSuccessAction, retrieveMemberActivitySuccessAction, retrieveMemberOpenActivityAction, retrieveMemberOpenActivityFailureAction, retrieveMemberOpenActivitySuccessAction, retrieveTeamActivityAction, retrieveTeamActivityFailureAction, retrieveTeamActivityQRCodeSuccessAction, retrieveTeamActivitySettingsAction, retrieveTeamActivitySettingsFailureAction, retrieveTeamActivitySettingsSuccessAction, retrieveTeamActivitySuccessAction, retrieveTeamDefaultActivitySettingsAction, retrieveTeamDefaultActivitySettingsFailureAction, retrieveTeamDefaultActivitySettingsSuccessAction, updateMemberActivityInviteSuccessAction, updateMemberOpenActivitySuccessAction, updateTeamActivityAction, updateTeamActivityFailureAction, updateTeamActivitySuccessAction, updateTeamMemberActivityInviteSuccessAction, } from '../actions';
4
+ import { MemberActivityInvite, OpenActivity } from '../../models';
5
+ import { listLoadFailure, listLoadSuccess, listStartLoading, retrieveLoadFailure, retrieveLoadSuccess, retrieveStartLoading } from './reducer-helpers';
6
+ // --- Helper Functions ---
7
+ const updateMemberActivityInvites = (invites, payload) => {
8
+ if (!invites)
9
+ return [];
10
+ return invites.map((invite) => {
11
+ if (invite.member_id === payload.member.id) {
12
+ return new MemberActivityInvite(invite.id, payload.comment, invite.current_num_attendants, payload.last_invite, payload.leader, payload.member.email, payload.member.id, payload.member.name, payload.next_invite, payload.response_date, payload.status);
13
+ }
14
+ return invite;
15
+ });
16
+ };
17
+ const updateEventInvites = (events, payload) => {
18
+ return events.map((event) => {
19
+ if (event.invitation_id === payload.id) {
20
+ return {
21
+ ...event,
22
+ invitation_response: payload.status,
23
+ };
24
+ }
25
+ return event;
26
+ });
27
+ };
28
+ const updateOpenActivities = (openActivities, payload) => {
29
+ return openActivities.map((openActivity) => {
30
+ if (openActivity.id === payload.id) {
31
+ return payload;
32
+ }
33
+ return openActivity;
34
+ });
35
+ };
36
+ const updateInvitedMembers = (invitedMembers, payload) => {
37
+ return invitedMembers.map((value) => {
38
+ if (value.id === payload.id) {
39
+ return new MemberActivityInvite(value.id, payload.comment, value.current_num_attendants, payload.last_invite, value.leader, value.member_email, value.member_id, value.member_name, payload.next_invite, payload.response_date, payload.status);
40
+ }
41
+ return value;
42
+ });
43
+ };
44
+ const updateTeamActivityInvite = (state, payload) => {
45
+ if (state.currentTeamActivity?.result) {
46
+ if (state.currentTeamActivity.result.activity.invited_members.findIndex((value) => value.id === payload.id) !== -1) {
47
+ let currentState = {
48
+ ...state,
49
+ currentTeamActivity: {
50
+ ...state.currentTeamActivity,
51
+ result: {
52
+ ...state.currentTeamActivity.result,
53
+ activity: {
54
+ ...state.currentTeamActivity.result.activity,
55
+ invited_members: updateInvitedMembers(state.currentTeamActivity.result.activity.invited_members, payload)
56
+ }
57
+ }
58
+ }
59
+ };
60
+ const activityId = currentState.currentTeamActivity.result.activity.id;
61
+ if (currentState.teamEvents?.value?.results) {
62
+ currentState.teamEvents = {
63
+ ...currentState.teamEvents,
64
+ value: {
65
+ ...currentState.teamEvents.value,
66
+ results: currentState.teamEvents.value.results.map((event) => {
67
+ const currentEvent = { ...event };
68
+ if (currentEvent.activity_id === activityId) {
69
+ currentEvent.invited_members = updateInvitedMembers(currentEvent.invited_members || [], payload);
70
+ }
71
+ return currentEvent;
72
+ })
73
+ }
74
+ };
75
+ }
76
+ return currentState;
77
+ }
78
+ }
79
+ return state;
80
+ };
81
+ // --- Reducer ---
82
+ export const calendarReducer = createReducer(initialCalendarState,
83
+ // Clear Actions
84
+ on(clearStoreAction, () => initialCalendarState), on(clearMemberActivityAction, (state) => ({ ...state, currentMemberActivity: undefined })), on(clearMemberActivityInviteAction, (state) => ({ ...state, currentMemberActivityInvite: undefined })), on(clearMemberOpenActivityAction, (state) => ({ ...state, currentMemberOpenActivity: undefined })), on(clearTeamActivityAction, (state) => ({ ...state, currentTeamActivity: undefined })),
85
+ // Member Activity Invites
86
+ on(retrieveMemberActivityInviteAction, state => ({ ...state, currentMemberActivityInvite: retrieveStartLoading(state.currentMemberActivityInvite) })), on(retrieveMemberActivityInviteFailureAction, (state, { payload }) => ({ ...state, currentMemberActivityInvite: retrieveLoadFailure(payload) })), on(retrieveMemberActivityInviteSuccessAction, (state, { payload }) => ({ ...state, currentMemberActivityInvite: retrieveLoadSuccess(payload) })),
87
+ // Member Activities
88
+ on(retrieveMemberActivityAction, state => ({ ...state, currentMemberActivity: retrieveStartLoading(state.currentMemberActivity) })), on(retrieveMemberActivityFailureAction, (state, { payload }) => ({ ...state, currentMemberActivity: retrieveLoadFailure(payload) })), on(retrieveMemberActivitySuccessAction, (state, { payload }) => ({ ...state, currentMemberActivity: retrieveLoadSuccess(payload) })),
89
+ // Member Open Activities
90
+ on(retrieveMemberOpenActivityAction, state => ({ ...state, currentMemberOpenActivity: retrieveStartLoading(state.currentMemberOpenActivity) })), on(retrieveMemberOpenActivityFailureAction, (state, { payload }) => ({ ...state, currentMemberOpenActivity: retrieveLoadFailure(payload) })), on(retrieveMemberOpenActivitySuccessAction, (state, { payload }) => {
91
+ let newState = { ...state, currentMemberOpenActivity: retrieveLoadSuccess(payload) };
92
+ if (newState.memberOpenActivities?.value.result && newState.memberOpenActivities?.value.result?.get(payload.member_id)?.findIndex((item) => item.id === payload.id) !== -1) {
93
+ const updatedActivities = newState.memberOpenActivities?.value.result?.get(payload.member_id)?.map((item) => item.id === payload.id ? payload : item);
94
+ newState = {
95
+ ...newState,
96
+ memberOpenActivities: {
97
+ searchParams: newState.memberOpenActivities?.searchParams,
98
+ memberIds: newState.memberOpenActivities?.memberIds,
99
+ value: {
100
+ loading: false,
101
+ error: null,
102
+ lastLoaded: new Date(),
103
+ result: newState.memberOpenActivities?.value.result?.set(payload.member_id, updatedActivities)
104
+ }
105
+ }
106
+ };
107
+ }
108
+ return newState;
109
+ }),
110
+ // List All Member Open Activity Locations
111
+ on(listAllMemberOpenActivityLocationsAction, state => ({ ...state, allOpenActivityLocations: listStartLoading(state.allOpenActivityLocations) })), on(listAllMemberOpenActivityLocationsFailureAction, (state, { payload }) => ({ ...state, allOpenActivityLocations: listLoadFailure(payload) })), on(listAllMemberOpenActivityLocationsSuccessAction, (state, { payload }) => ({ ...state, allOpenActivityLocations: listLoadSuccess(payload) })),
112
+ // List All Member Open Activity Types
113
+ on(listAllMemberOpenActivityTypesAction, state => ({ ...state, allOpenActivityTypes: listStartLoading(state.allOpenActivityTypes) })), on(listAllMemberOpenActivityTypesFailureAction, (state, { payload }) => ({ ...state, allOpenActivityTypes: listLoadFailure(payload) })), on(listAllMemberOpenActivityTypesSuccessAction, (state, { payload }) => ({ ...state, allOpenActivityTypes: listLoadSuccess(payload) })),
114
+ // List Member Activity Invites
115
+ on(listMemberActivityInvitesAction, state => ({ ...state, activityInvites: listStartLoading(state.activityInvites) })), on(listMemberActivityInvitesFailureAction, (state, { payload }) => ({ ...state, activityInvites: listLoadFailure(payload) })), on(listMemberActivityInvitesSuccessAction, (state, { payload }) => ({ ...state, activityInvites: listLoadSuccess(payload) })),
116
+ // Member Activities
117
+ on(listMemberActivitiesAction, (state, { payload }) => ({
118
+ ...state,
119
+ memberEvents: {
120
+ startDate: payload.startDate,
121
+ endDate: payload.endDate,
122
+ memberIds: payload.memberIds,
123
+ value: retrieveStartLoading(state.memberEvents?.value)
124
+ }
125
+ })), on(listMemberActivitiesFailureAction, (state, { payload }) => ({
126
+ ...state,
127
+ memberEvents: {
128
+ startDate: payload.startDate,
129
+ endDate: payload.endDate,
130
+ memberIds: payload.memberIds,
131
+ value: retrieveLoadFailure(payload.error)
132
+ }
133
+ })), on(listMemberActivitiesSuccessAction, (state, { payload }) => ({
134
+ ...state,
135
+ memberEvents: {
136
+ startDate: payload.startDate,
137
+ endDate: payload.endDate,
138
+ memberIds: payload.memberIds,
139
+ value: retrieveLoadSuccess(payload.results)
140
+ }
141
+ })),
142
+ // Member Open Activities
143
+ on(listMemberOpenActivitiesAction, (state, { payload }) => ({
144
+ ...state,
145
+ memberOpenActivities: {
146
+ searchParams: payload.openActivitySearchParams,
147
+ memberIds: payload.memberIds,
148
+ value: retrieveStartLoading(state.memberOpenActivities?.value)
149
+ }
150
+ })), on(listMemberOpenActivitiesFailureAction, (state, { payload }) => ({
151
+ ...state,
152
+ memberOpenActivities: {
153
+ searchParams: payload.openActivitySearchParams,
154
+ memberIds: payload.memberIds,
155
+ value: retrieveLoadFailure(payload.error)
156
+ }
157
+ })), on(listMemberOpenActivitiesSuccessAction, (state, { payload }) => ({
158
+ ...state,
159
+ memberOpenActivities: {
160
+ searchParams: payload.openActivitySearchParams,
161
+ memberIds: payload.memberIds,
162
+ value: retrieveLoadSuccess(payload.results)
163
+ }
164
+ })),
165
+ // Member Open Activity Locations
166
+ on(listMemberOpenActivityLocationsAction, (state, { payload }) => ({
167
+ ...state,
168
+ memberOpenActivityLocations: {
169
+ startDate: payload.startDate,
170
+ endDate: payload.endDate,
171
+ value: listStartLoading(state.memberOpenActivityLocations?.value)
172
+ }
173
+ })), on(listMemberOpenActivityLocationsFailureAction, (state, { payload }) => ({
174
+ ...state,
175
+ memberOpenActivityLocations: {
176
+ startDate: payload.startDate,
177
+ endDate: payload.endDate,
178
+ value: listLoadFailure(payload.error)
179
+ }
180
+ })), on(listMemberOpenActivityLocationsSuccessAction, (state, { payload }) => ({
181
+ ...state,
182
+ memberOpenActivityLocations: {
183
+ startDate: payload.startDate,
184
+ endDate: payload.endDate,
185
+ value: listLoadSuccess(payload.locations)
186
+ }
187
+ })),
188
+ // Member Open Activity Types
189
+ on(listMemberOpenActivityTypesAction, (state, { payload }) => ({
190
+ ...state,
191
+ memberOpenActivityTypes: {
192
+ startDate: payload.startDate,
193
+ endDate: payload.endDate,
194
+ value: listStartLoading(state.memberOpenActivityTypes?.value)
195
+ }
196
+ })), on(listMemberOpenActivityTypesFailureAction, (state, { payload }) => ({
197
+ ...state,
198
+ memberOpenActivityTypes: {
199
+ startDate: payload.startDate,
200
+ endDate: payload.endDate,
201
+ value: listLoadFailure(payload.error)
202
+ }
203
+ })), on(listMemberOpenActivityTypesSuccessAction, (state, { payload }) => ({
204
+ ...state,
205
+ memberOpenActivityTypes: {
206
+ startDate: payload.startDate,
207
+ endDate: payload.endDate,
208
+ value: listLoadSuccess(payload.types)
209
+ }
210
+ })), on(deleteTeamActivityInviteAction, (state, { payload }) => {
211
+ if (state.currentTeamActivity?.result?.activity.id === payload.activityId || state.teamEvents?.value.results) {
212
+ let currentState = {
213
+ ...state
214
+ };
215
+ if (state.currentTeamActivity?.result?.activity.id === payload.activityId) {
216
+ currentState.currentTeamActivity = {
217
+ ...currentState.currentTeamActivity,
218
+ result: {
219
+ ...currentState.currentTeamActivity?.result,
220
+ activity: {
221
+ ...currentState.currentTeamActivity?.result?.activity,
222
+ invited_members: currentState.currentTeamActivity?.result?.activity.invited_members.filter(activityInvite => activityInvite.id !== payload.activityInviteId) || []
223
+ }
224
+ }
225
+ };
226
+ }
227
+ if (state.teamEvents?.value?.results) {
228
+ currentState.teamEvents = {
229
+ ...currentState.teamEvents,
230
+ value: {
231
+ ...currentState.teamEvents?.value,
232
+ results: currentState.teamEvents?.value.results.map((event) => {
233
+ if (event.activity_id === payload.activityId) {
234
+ return {
235
+ ...event,
236
+ invited_members: event.invited_members?.filter((activityInvite) => activityInvite.id !== payload.activityInviteId)
237
+ };
238
+ }
239
+ return event;
240
+ })
241
+ }
242
+ };
243
+ }
244
+ return currentState;
245
+ }
246
+ return state;
247
+ }),
248
+ // Team Activities
249
+ on(listTeamActivitiesAction, (state, { payload }) => ({
250
+ ...state,
251
+ teamEvents: {
252
+ teamId: payload.teamId,
253
+ startDate: payload.startDate,
254
+ endDate: payload.endDate,
255
+ value: listStartLoading(state.teamEvents?.value)
256
+ }
257
+ })), on(listTeamActivitiesFailureAction, (state, { payload }) => ({
258
+ ...state,
259
+ teamEvents: {
260
+ teamId: payload.teamId,
261
+ startDate: payload.startDate,
262
+ endDate: payload.endDate,
263
+ value: listLoadFailure(payload.error)
264
+ }
265
+ })), on(listTeamActivitiesSuccessAction, (state, { payload }) => ({
266
+ ...state,
267
+ teamEvents: {
268
+ teamId: payload.teamId,
269
+ startDate: payload.startDate,
270
+ endDate: payload.endDate,
271
+ value: listLoadSuccess(payload.results)
272
+ }
273
+ })),
274
+ // Team Activity Participants
275
+ on(listTeamActivityParticipantsSuccessAction, (state, { payload }) => {
276
+ if (state.currentTeamActivity?.result && state.currentTeamActivity.result.activity.id === payload.activityId) {
277
+ return {
278
+ ...state,
279
+ currentTeamActivity: {
280
+ ...state.currentTeamActivity,
281
+ result: {
282
+ ...state.currentTeamActivity.result,
283
+ participants: payload.results
284
+ },
285
+ loading: false
286
+ }
287
+ };
288
+ }
289
+ return state;
290
+ }),
291
+ // Team Leader Extra Members
292
+ on(listTeamLeaderExtraMembersSuccessAction, (state, { payload }) => {
293
+ if (state.currentTeamActivity?.result && payload.teamId === state.currentTeamActivity.result.team.id) {
294
+ return {
295
+ ...state,
296
+ currentTeamActivity: {
297
+ ...state.currentTeamActivity,
298
+ result: {
299
+ ...state.currentTeamActivity.result,
300
+ extraMembers: payload.results,
301
+ extraMembersLoaded: true
302
+ },
303
+ loading: false
304
+ }
305
+ };
306
+ }
307
+ return state;
308
+ }),
309
+ // Team Activity Actions
310
+ on(retrieveTeamActivityAction, state => ({ ...state, currentTeamActivity: retrieveStartLoading(state.currentTeamActivity) })), on(retrieveTeamActivityFailureAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadFailure(payload) })), on(retrieveTeamActivitySuccessAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadSuccess(payload) })), on(retrieveTeamActivityQRCodeSuccessAction, (state, { payload }) => {
311
+ if (state.currentTeamActivity?.result && payload.activity.id === state.currentTeamActivity.result.activity.id && payload.teamId === state.currentTeamActivity.result.team.id) {
312
+ return {
313
+ ...state,
314
+ currentTeamActivity: {
315
+ ...state.currentTeamActivity,
316
+ result: {
317
+ ...state.currentTeamActivity.result,
318
+ activity: payload.activity
319
+ }
320
+ }
321
+ };
322
+ }
323
+ return state;
324
+ }),
325
+ // Team Activity Settings
326
+ on(retrieveTeamActivitySettingsAction, state => ({ ...state, activitySettings: retrieveStartLoading(state.activitySettings) })), on(retrieveTeamActivitySettingsFailureAction, (state, { payload }) => ({ ...state, activitySettings: retrieveLoadFailure(payload) })), on(retrieveTeamActivitySettingsSuccessAction, (state, { payload }) => ({ ...state, activitySettings: retrieveLoadSuccess(payload) })),
327
+ // Team Default Activity Settings
328
+ on(retrieveTeamDefaultActivitySettingsAction, state => ({ ...state, newTeamActivity: retrieveStartLoading(state.newTeamActivity) })), on(retrieveTeamDefaultActivitySettingsFailureAction, (state, { payload }) => ({ ...state, newTeamActivity: retrieveLoadFailure(payload) })), on(retrieveTeamDefaultActivitySettingsSuccessAction, (state, { payload }) => ({ ...state, newTeamActivity: retrieveLoadSuccess(payload) })),
329
+ // Update Member Activity Invite
330
+ on(updateMemberActivityInviteSuccessAction, (state, { payload }) => {
331
+ let currentState = {
332
+ ...state,
333
+ currentMemberActivityInvite: retrieveLoadSuccess(payload)
334
+ };
335
+ if (currentState.currentMemberActivity?.result?.
336
+ id === payload.activity.id) {
337
+ currentState.currentMemberActivity = {
338
+ ...currentState.currentMemberActivity,
339
+ result: {
340
+ ...currentState.currentMemberActivity.result,
341
+ invited_members: updateMemberActivityInvites(currentState.currentMemberActivity.result.invited_members, payload),
342
+ },
343
+ };
344
+ }
345
+ if (currentState.memberEvents?.value?.result) {
346
+ const existingEvents = currentState.memberEvents.value.result.get(payload.member.id);
347
+ if (existingEvents) {
348
+ currentState.memberEvents = {
349
+ ...currentState.memberEvents,
350
+ value: {
351
+ ...currentState.memberEvents.value,
352
+ result: new Map(currentState.memberEvents.value.result).set(payload.member.id, updateEventInvites(existingEvents, payload)),
353
+ }
354
+ };
355
+ }
356
+ }
357
+ return currentState;
358
+ }),
359
+ // Update Member Open Activity
360
+ on(updateMemberOpenActivitySuccessAction, (state, { payload }) => {
361
+ let currentState = {
362
+ ...state,
363
+ currentMemberOpenActivity: retrieveLoadSuccess(payload)
364
+ };
365
+ if (currentState.memberOpenActivities?.value?.result) {
366
+ const existingOpenActivities = currentState.memberOpenActivities.value.result.get(payload.member_id);
367
+ if (existingOpenActivities) {
368
+ currentState.memberOpenActivities = {
369
+ ...currentState.memberOpenActivities,
370
+ value: {
371
+ ...currentState.memberOpenActivities.value,
372
+ result: new Map(currentState.memberOpenActivities.value.result).set(payload.member_id, updateOpenActivities(existingOpenActivities, payload)),
373
+ }
374
+ };
375
+ }
376
+ }
377
+ return currentState;
378
+ }),
379
+ // Remove member open activity
380
+ on(removeMemberOpenActivityAction, (state, { payload }) => {
381
+ let currentState = {
382
+ ...state
383
+ };
384
+ if (state.currentMemberOpenActivity?.result?.id === payload.activityId) {
385
+ currentState.currentMemberOpenActivity = undefined;
386
+ }
387
+ if (currentState.memberOpenActivities?.value?.result) {
388
+ const existingOpenActivities = currentState.memberOpenActivities.value.result.get(payload.memberId);
389
+ if (existingOpenActivities) {
390
+ const updatedOpenActivities = existingOpenActivities.map((openActivity) => {
391
+ if (openActivity.id === payload.activityId && openActivity.member_id === payload.memberId) {
392
+ return new OpenActivity(openActivity.id, openActivity.activity_group_id, openActivity.activity_type_id, openActivity.club_id, openActivity.location_id, openActivity.member_id, openActivity.team_id, openActivity.activity_location, openActivity.activity_type_name, openActivity.allow_maybe, openActivity.calendar_name, openActivity.created, openActivity.current_num_attendants, openActivity.day, openActivity.default_fee, openActivity.description, openActivity.end, openActivity.end_time, openActivity.file, openActivity.invitation_text, openActivity.invite_first_days, openActivity.invite_groups, openActivity.invite_hide_before_sent, openActivity.invite_last_response_date, openActivity.invite_remind, openActivity.invite_remind_receivers, openActivity.invite_second_days, openActivity.invite_settings, openActivity.invited_members.filter((invite) => invite.member_id !== payload.memberId), openActivity.last_response_date, openActivity.location_name, openActivity.max_num_attendants, openActivity.max_num_attendants_type, openActivity.meet_up_place, openActivity.meet_up_time, openActivity.meet_up_time_display, openActivity.meet_up_time_show, openActivity.member_invoice, openActivity.member_name, openActivity.open_activity, openActivity.optional_fees, openActivity.optional_fee_required, openActivity.optional_fee_type, openActivity.repeat, openActivity.repeat_num, openActivity.repeat_to_day, openActivity.repeat_type, openActivity.show_other_invited, openActivity.start, openActivity.start_time, 'waiting', openActivity.title, openActivity.updated, openActivity.use_invite, openActivity.update_repeating);
393
+ }
394
+ return openActivity;
395
+ });
396
+ currentState.memberOpenActivities = {
397
+ ...currentState.memberOpenActivities,
398
+ value: {
399
+ ...currentState.memberOpenActivities.value,
400
+ result: new Map(currentState.memberOpenActivities.value.result).set(payload.memberId, updatedOpenActivities)
401
+ }
402
+ };
403
+ }
404
+ }
405
+ return currentState;
406
+ }),
407
+ // Update Team Activity
408
+ on(updateTeamActivityAction, state => ({ ...state, currentTeamActivity: retrieveStartLoading(state.currentTeamActivity) })), on(updateTeamActivityFailureAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadFailure(payload) })), on(updateTeamActivitySuccessAction, (state, { payload }) => {
409
+ if (state.currentTeamActivity?.result && payload.id === state.currentTeamActivity.result.activity.id) {
410
+ return {
411
+ ...state,
412
+ currentTeamActivity: {
413
+ ...state.currentTeamActivity,
414
+ result: {
415
+ ...state.currentTeamActivity.result,
416
+ activity: payload
417
+ },
418
+ loading: false
419
+ }
420
+ };
421
+ }
422
+ return state;
423
+ }),
424
+ // Resend team activity invite
425
+ on(resendTeamActivityMemberInviteSuccessAction, (state, { payload }) => updateTeamActivityInvite(state, payload)),
426
+ // Update Team activity invite
427
+ on(updateTeamMemberActivityInviteSuccessAction, (state, { payload }) => updateTeamActivityInvite(state, payload)),
428
+ // Delete Team Activity
429
+ on(deleteTeamActivitySuccessAction, (state, { payload }) => {
430
+ let currentState = {
431
+ ...state,
432
+ currentTeamActivity: undefined
433
+ };
434
+ if (currentState.teamEvents?.value?.results) {
435
+ currentState.teamEvents = {
436
+ ...currentState.teamEvents,
437
+ value: {
438
+ ...currentState.teamEvents.value,
439
+ results: currentState.teamEvents.value.results.filter((event) => event.id !== payload)
440
+ }
441
+ };
442
+ }
443
+ return currentState;
444
+ }),
445
+ // Create Team Activity
446
+ on(createTeamActivityAction, state => ({ ...state, currentTeamActivity: retrieveStartLoading(state.currentTeamActivity) })),
447
+ // Failure Handlers
448
+ on(createTeamActivityFailureAction, (state, { payload }) => ({ ...state, currentTeamActivity: retrieveLoadFailure(payload) })));
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvY2FsZW5kYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFBRSw4QkFBOEIsRUFDL0QsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QywrQ0FBK0MsRUFDL0MsK0NBQStDLEVBQy9DLG9DQUFvQyxFQUNwQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLDBCQUEwQixFQUMxQixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlDQUF5QyxFQUN6Qyx1Q0FBdUMsRUFDdkMsOEJBQThCLEVBQzlCLDJDQUEyQyxFQUMzQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsdUNBQXVDLEVBQ3ZDLHVDQUF1QyxFQUN2QywwQkFBMEIsRUFDMUIsaUNB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QUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUUzSCxtQkFBbUI7QUFDbkIsRUFBRSxDQUFDLCtCQUErQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBd0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENhbGVuZGFyU3RhdGUsIGluaXRpYWxDYWxlbmRhclN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtcbiAgY2xlYXJNZW1iZXJBY3Rpdml0eUFjdGlvbixcbiAgY2xlYXJNZW1iZXJBY3Rpdml0eUludml0ZUFjdGlvbixcbiAgY2xlYXJNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sXG4gIGNsZWFyU3RvcmVBY3Rpb24sXG4gIGNsZWFyVGVhbUFjdGl2aXR5QWN0aW9uLFxuICBjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbixcbiAgZGVsZXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0FjdGlvbixcbiAgbGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzQWN0aW9uLFxuICBsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0FjdGlvbixcbiAgbGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGl2aXRpZXNBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJlbW92ZU1lbWJlck9wZW5BY3Rpdml0eUFjdGlvbixcbiAgcmVzZW5kVGVhbUFjdGl2aXR5TWVtYmVySW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJBY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlRUkNvZGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGVmYXVsdEFjdGl2aXR5U2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eUludml0ZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5RmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbixcbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlJbnZpdGUsXG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgRXZlbnQsXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBPcGVuQWN0aXZpdHlcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgTGlzdFJlc3VsdEludGVyZmFjZSxcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIFRlYW1BY3Rpdml0eUludGVyZmFjZSxcbiAgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2Vcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBsaXN0TG9hZEZhaWx1cmUsXG4gIGxpc3RMb2FkU3VjY2VzcyxcbiAgbGlzdFN0YXJ0TG9hZGluZyxcbiAgcmV0cmlldmVMb2FkRmFpbHVyZSxcbiAgcmV0cmlldmVMb2FkU3VjY2VzcyxcbiAgcmV0cmlldmVTdGFydExvYWRpbmdcbn0gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG4vLyAtLS0gSGVscGVyIEZ1bmN0aW9ucyAtLS1cblxuY29uc3QgdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzID0gKGludml0ZXM6IEFycmF5PE1lbWJlckFjdGl2aXR5SW52aXRlPiB8IHVuZGVmaW5lZCB8IG51bGwsIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIGlmICghaW52aXRlcykgcmV0dXJuIFtdO1xuICByZXR1cm4gaW52aXRlcy5tYXAoKGludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpID0+IHtcbiAgICBpZiAoaW52aXRlLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXIuaWQpIHtcbiAgICAgIHJldHVybiBuZXcgTWVtYmVyQWN0aXZpdHlJbnZpdGUoXG4gICAgICAgIGludml0ZS5pZCxcbiAgICAgICAgcGF5bG9hZC5jb21tZW50LFxuICAgICAgICBpbnZpdGUuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgcGF5bG9hZC5sYXN0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5sZWFkZXIsXG4gICAgICAgIHBheWxvYWQubWVtYmVyLmVtYWlsLFxuICAgICAgICBwYXlsb2FkLm1lbWJlci5pZCxcbiAgICAgICAgcGF5bG9hZC5tZW1iZXIubmFtZSxcbiAgICAgICAgcGF5bG9hZC5uZXh0X2ludml0ZSxcbiAgICAgICAgcGF5bG9hZC5yZXNwb25zZV9kYXRlLFxuICAgICAgICBwYXlsb2FkLnN0YXR1c1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGludml0ZTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVFdmVudEludml0ZXMgPSAoZXZlbnRzOiBBcnJheTxFdmVudD4sIHBheWxvYWQ6IEFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIHJldHVybiBldmVudHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuaW52aXRhdGlvbl9pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIGludml0YXRpb25fcmVzcG9uc2U6IHBheWxvYWQuc3RhdHVzLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZU9wZW5BY3Rpdml0aWVzID0gKG9wZW5BY3Rpdml0aWVzOiBBcnJheTxPcGVuQWN0aXZpdHk+LCBwYXlsb2FkOiBPcGVuQWN0aXZpdHkpID0+IHtcbiAgcmV0dXJuIG9wZW5BY3Rpdml0aWVzLm1hcCgob3BlbkFjdGl2aXR5OiBPcGVuQWN0aXZpdHkpID0+IHtcbiAgICBpZiAob3BlbkFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmlkKSB7XG4gICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9XG4gICAgcmV0dXJuIG9wZW5BY3Rpdml0eTtcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVJbnZpdGVkTWVtYmVycyA9IChpbnZpdGVkTWVtYmVyczogQXJyYXk8TWVtYmVyQWN0aXZpdHlJbnZpdGU+LCBwYXlsb2FkOiBBY3Rpdml0eUludml0ZSB8IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiB7XG4gIHJldHVybiBpbnZpdGVkTWVtYmVycy5tYXAoKHZhbHVlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICAgIGlmICh2YWx1ZS5pZCA9PT0gcGF5bG9hZC5pZCkge1xuICAgICAgcmV0dXJuIG5ldyBNZW1iZXJBY3Rpdml0eUludml0ZShcbiAgICAgICAgdmFsdWUuaWQsXG4gICAgICAgIHBheWxvYWQuY29tbWVudCxcbiAgICAgICAgdmFsdWUuY3VycmVudF9udW1fYXR0ZW5kYW50cyxcbiAgICAgICAgcGF5bG9hZC5sYXN0X2ludml0ZSxcbiAgICAgICAgdmFsdWUubGVhZGVyLFxuICAgICAgICB2YWx1ZS5tZW1iZXJfZW1haWwsXG4gICAgICAgIHZhbHVlLm1lbWJlcl9pZCxcbiAgICAgICAgdmFsdWUubWVtYmVyX25hbWUsXG4gICAgICAgIHBheWxvYWQubmV4dF9pbnZpdGUsXG4gICAgICAgIHBheWxvYWQucmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgcGF5bG9hZC5zdGF0dXNcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZSA9IChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgcGF5bG9hZDogQWN0aXZpdHlJbnZpdGUgfCBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4ge1xuICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0KSB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5Lmludml0ZWRfbWVtYmVycy5maW5kSW5kZXgoKHZhbHVlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gdmFsdWUuaWQgPT09IHBheWxvYWQuaWQpICE9PSAtMSkge1xuICAgICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LFxuICAgICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiB1cGRhdGVJbnZpdGVkTWVtYmVycyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMsIHBheWxvYWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBhY3Rpdml0eUlkID0gY3VycmVudFN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkO1xuXG4gICAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICAgIGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdHM6IGN1cnJlbnRTdGF0ZS50ZWFtRXZlbnRzLnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEV2ZW50ID0gey4uLmV2ZW50fTtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudC5hY3Rpdml0eV9pZCA9PT0gYWN0aXZpdHlJZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFdmVudC5pbnZpdGVkX21lbWJlcnMgPSB1cGRhdGVJbnZpdGVkTWVtYmVycyhjdXJyZW50RXZlbnQuaW52aXRlZF9tZW1iZXJzIHx8IFtdLCBwYXlsb2FkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEV2ZW50O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGUgYXMgQ2FsZW5kYXJTdGF0ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vLyAtLS0gUmVkdWNlciAtLS1cblxuZXhwb3J0IGNvbnN0IGNhbGVuZGFyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIGluaXRpYWxDYWxlbmRhclN0YXRlLFxuXG4gIC8vIENsZWFyIEFjdGlvbnNcbiAgb24oY2xlYXJTdG9yZUFjdGlvbiwgKCkgPT4gaW5pdGlhbENhbGVuZGFyU3RhdGUpLFxuICBvbihjbGVhck1lbWJlckFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogdW5kZWZpbmVkIH0pKSxcbiAgb24oY2xlYXJNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk6IHVuZGVmaW5lZCB9KSksXG4gIG9uKGNsZWFyVGVhbUFjdGl2aXR5QWN0aW9uLCAoc3RhdGU6IENhbGVuZGFyU3RhdGUpID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiB1bmRlZmluZWQgfSkpLFxuXG4gIC8vIE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlJbnZpdGVBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyQWN0aXZpdHlJbnZpdGU6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eUludml0ZT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24ocmV0cmlldmVNZW1iZXJBY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRNZW1iZXJBY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlckFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPEFjdGl2aXR5PihwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlTWVtYmVyQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlckFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0aWVzXG4gIG9uKHJldHJpZXZlTWVtYmVyT3BlbkFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eSkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eUZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRGYWlsdXJlPE9wZW5BY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZU1lbWJlck9wZW5BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBsZXQgbmV3U3RhdGUgPSB7IC4uLnN0YXRlLCBjdXJyZW50TWVtYmVyT3BlbkFjdGl2aXR5OiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpIH07XG5cbiAgICBpZiAobmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdCAmJiBuZXdTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUucmVzdWx0Py5nZXQocGF5bG9hZC5tZW1iZXJfaWQpPy5maW5kSW5kZXgoKGl0ZW06IE9wZW5BY3Rpdml0eSkgPT4gaXRlbS5pZCA9PT0gcGF5bG9hZC5pZCkgIT09IC0xKSB7XG4gICAgICBjb25zdCB1cGRhdGVkQWN0aXZpdGllcyA9IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZS5yZXN1bHQ/LmdldChwYXlsb2FkLm1lbWJlcl9pZCk/Lm1hcCgoaXRlbTogT3BlbkFjdGl2aXR5KSA9PiBpdGVtLmlkID09PSBwYXlsb2FkLmlkID8gcGF5bG9hZCA6IGl0ZW0pIGFzIEFycmF5PE9wZW5BY3Rpdml0eT47XG5cbiAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgICAgICBzZWFyY2hQYXJhbXM6IG5ld1N0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy5zZWFyY2hQYXJhbXMgYXMgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlLFxuICAgICAgICAgIG1lbWJlcklkczogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/Lm1lbWJlcklkcyBhcyBBcnJheTxzdHJpbmc+LFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbGFzdExvYWRlZDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXM/LnZhbHVlLnJlc3VsdD8uc2V0KHBheWxvYWQubWVtYmVyX2lkLCB1cGRhdGVkQWN0aXZpdGllcykgYXMgTWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH0pLFxuXG4gIC8vIExpc3QgQWxsIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5TG9jYXRpb25zOiBsaXN0U3RhcnRMb2FkaW5nKHN0YXRlLmFsbE9wZW5BY3Rpdml0eUxvY2F0aW9ucykgfSkpLFxuICBvbihsaXN0QWxsTWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eUxvY2F0aW9uczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5TG9jYXRpb24+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlMb2NhdGlvbnM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTGlzdCBBbGwgTWVtYmVyIE9wZW4gQWN0aXZpdHkgVHlwZXNcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWxsT3BlbkFjdGl2aXR5VHlwZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWxsT3BlbkFjdGl2aXR5VHlwZXMpIH0pKSxcbiAgb24obGlzdEFsbE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFsbE9wZW5BY3Rpdml0eVR5cGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkKSB9KSksXG4gIG9uKGxpc3RBbGxNZW1iZXJPcGVuQWN0aXZpdHlUeXBlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhbGxPcGVuQWN0aXZpdHlUeXBlczogbGlzdExvYWRTdWNjZXNzKHBheWxvYWQpIH0pKSxcblxuICAvLyBMaXN0IE1lbWJlciBBY3Rpdml0eSBJbnZpdGVzXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUuYWN0aXZpdHlJbnZpdGVzKSB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0eUludml0ZXNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlJbnZpdGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlJbnZpdGU+KHBheWxvYWQpIH0pKSxcbiAgb24obGlzdE1lbWJlckFjdGl2aXR5SW52aXRlc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBhY3Rpdml0eUludml0ZXM6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG5cbiAgLy8gTWVtYmVyIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlckFjdGl2aXRpZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJFdmVudHM/LnZhbHVlKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyRXZlbnRzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZUxvYWRGYWlsdXJlPE1hcDxzdHJpbmcsIEFycmF5PEV2ZW50Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJBY3Rpdml0aWVzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJFdmVudHM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXRpZXNcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0aWVzOiB7XG4gICAgICBzZWFyY2hQYXJhbXM6IHBheWxvYWQub3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLFxuICAgICAgbWVtYmVySWRzOiBwYXlsb2FkLm1lbWJlcklkcyxcbiAgICAgIHZhbHVlOiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZEZhaWx1cmU8TWFwPHN0cmluZywgQXJyYXk8T3BlbkFjdGl2aXR5Pj4+KHBheWxvYWQuZXJyb3IpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdGllc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXRpZXM6IHtcbiAgICAgIHNlYXJjaFBhcmFtczogcGF5bG9hZC5vcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMsXG4gICAgICBtZW1iZXJJZHM6IHBheWxvYWQubWVtYmVySWRzLFxuICAgICAgdmFsdWU6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZC5yZXN1bHRzKVxuICAgIH1cbiAgfSkpLFxuXG4gIC8vIE1lbWJlciBPcGVuIEFjdGl2aXR5IExvY2F0aW9uc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0U3RhcnRMb2FkaW5nPEFjdGl2aXR5TG9jYXRpb24+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9ucz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnNGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlMb2NhdGlvbj4ocGF5bG9hZC5lcnJvcilcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5TG9jYXRpb25zOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLmxvY2F0aW9ucylcbiAgICB9XG4gIH0pKSxcblxuICAvLyBNZW1iZXIgT3BlbiBBY3Rpdml0eSBUeXBlc1xuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyT3BlbkFjdGl2aXR5VHlwZXM6IHtcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdFN0YXJ0TG9hZGluZzxBY3Rpdml0eVR5cGU+KHN0YXRlLm1lbWJlck9wZW5BY3Rpdml0eVR5cGVzPy52YWx1ZSlcbiAgICB9XG4gIH0pKSxcbiAgb24obGlzdE1lbWJlck9wZW5BY3Rpdml0eVR5cGVzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJPcGVuQWN0aXZpdHlUeXBlczoge1xuICAgICAgc3RhcnREYXRlOiBwYXlsb2FkLnN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGU6IHBheWxvYWQuZW5kRGF0ZSxcbiAgICAgIHZhbHVlOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyT3BlbkFjdGl2aXR5VHlwZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlck9wZW5BY3Rpdml0eVR5cGVzOiB7XG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnR5cGVzKVxuICAgIH1cbiAgfSkpLFxuXG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZUFjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiB7dGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nfSB9KSA9PiB7XG4gICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCB8fCBzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZS5yZXN1bHRzKSB7XG4gICAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHk/LnJlc3VsdD8uYWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgICBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQsXG4gICAgICAgICAgICBhY3Rpdml0eToge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eSxcbiAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBjdXJyZW50U3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0Py5hY3Rpdml0eS5pbnZpdGVkX21lbWJlcnMuZmlsdGVyKGFjdGl2aXR5SW52aXRlID0+IGFjdGl2aXR5SW52aXRlLmlkICE9PSBwYXlsb2FkLmFjdGl2aXR5SW52aXRlSWQpIHx8IFtdXG4gICAgICAgICAgICB9IGFzIEFjdGl2aXR5XG4gICAgICAgICAgfSBhcyBUZWFtQWN0aXZpdHlJbnRlcmZhY2VcbiAgICAgICAgfSBhcyBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS50ZWFtRXZlbnRzPy52YWx1ZT8ucmVzdWx0cykge1xuICAgICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUudGVhbUV2ZW50cyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLFxuICAgICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlLnJlc3VsdHMubWFwKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmFjdGl2aXR5X2lkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgICAgICAgaW52aXRlZF9tZW1iZXJzOiBldmVudC5pbnZpdGVkX21lbWJlcnM/LmZpbHRlcigoYWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSA9PiBhY3Rpdml0eUludml0ZS5pZCAhPT0gcGF5bG9hZC5hY3Rpdml0eUludml0ZUlkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KSBhcyBBcnJheTxFdmVudD5cbiAgICAgICAgICB9IGFzIExpc3RSZXN1bHRJbnRlcmZhY2U8RXZlbnQ+XG4gICAgICAgIH0gYXMgVGVhbUNhbGVuZGFyRXZlbnRSZXN1bHRJbnRlcmZhY2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KSxcblxuICAvLyBUZWFtIEFjdGl2aXRpZXNcbiAgb24obGlzdFRlYW1BY3Rpdml0aWVzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RTdGFydExvYWRpbmcoc3RhdGUudGVhbUV2ZW50cz8udmFsdWUpXG4gICAgfVxuICB9KSksXG4gIG9uKGxpc3RUZWFtQWN0aXZpdGllc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdGVhbUV2ZW50czoge1xuICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgIHN0YXJ0RGF0ZTogcGF5bG9hZC5zdGFydERhdGUsXG4gICAgICBlbmREYXRlOiBwYXlsb2FkLmVuZERhdGUsXG4gICAgICB2YWx1ZTogbGlzdExvYWRGYWlsdXJlPEV2ZW50PihwYXlsb2FkLmVycm9yKVxuICAgIH1cbiAgfSkpLFxuICBvbihsaXN0VGVhbUFjdGl2aXRpZXNTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHRlYW1FdmVudHM6IHtcbiAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICBzdGFydERhdGU6IHBheWxvYWQuc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZTogcGF5bG9hZC5lbmREYXRlLFxuICAgICAgdmFsdWU6IGxpc3RMb2FkU3VjY2VzcyhwYXlsb2FkLnJlc3VsdHMpXG4gICAgfVxuICB9KSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBQYXJ0aWNpcGFudHNcbiAgb24obGlzdFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50c1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LmFjdGl2aXR5LmlkID09PSBwYXlsb2FkLmFjdGl2aXR5SWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgcGFydGljaXBhbnRzOiBwYXlsb2FkLnJlc3VsdHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBMZWFkZXIgRXh0cmEgTWVtYmVyc1xuICBvbihsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+IHtcbiAgICBpZiAoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eT8ucmVzdWx0ICYmIHBheWxvYWQudGVhbUlkID09PSBzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdC50ZWFtLmlkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRlYW1BY3Rpdml0eToge1xuICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHksXG4gICAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5LnJlc3VsdCxcbiAgICAgICAgICAgIGV4dHJhTWVtYmVyczogcGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICAgICAgZXh0cmFNZW1iZXJzTG9hZGVkOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH0pLFxuXG4gIC8vIFRlYW0gQWN0aXZpdHkgQWN0aW9uc1xuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eUFjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHJldHJpZXZlU3RhcnRMb2FkaW5nKHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKSxcbiAgb24ocmV0cmlldmVUZWFtQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbUFjdGl2aXR5UVJDb2RlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC5hY3Rpdml0eS5pZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQgJiYgcGF5bG9hZC50ZWFtSWQgPT09IHN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LnRlYW0uaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgYWN0aXZpdHk6IHBheWxvYWQuYWN0aXZpdHlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gVGVhbSBBY3Rpdml0eSBTZXR0aW5nc1xuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzQWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgYWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuYWN0aXZpdHlTZXR0aW5ncykgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZEZhaWx1cmU8QWN0aXZpdHlTZXR0aW5ncz4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1BY3Rpdml0eVNldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIGFjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIFRlYW0gRGVmYXVsdCBBY3Rpdml0eSBTZXR0aW5nc1xuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc0FjdGlvbiwgc3RhdGUgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUubmV3VGVhbUFjdGl2aXR5KSB9KSksXG4gIG9uKHJldHJpZXZlVGVhbURlZmF1bHRBY3Rpdml0eVNldHRpbmdzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4gKHsgLi4uc3RhdGUsIG5ld1RlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eT4ocGF5bG9hZCkgfSkpLFxuICBvbihyZXRyaWV2ZVRlYW1EZWZhdWx0QWN0aXZpdHlTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZSwgeyBwYXlsb2FkIH0pID0+ICh7IC4uLnN0YXRlLCBuZXdUZWFtQWN0aXZpdHk6IHJldHJpZXZlTG9hZFN1Y2Nlc3MocGF5bG9hZCkgfSkpLFxuXG4gIC8vIFVwZGF0ZSBNZW1iZXIgQWN0aXZpdHkgSW52aXRlXG4gIG9uKHVwZGF0ZU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRNZW1iZXJBY3Rpdml0eUludml0ZTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKVxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eT8ucmVzdWx0Py5cblxuICAgICAgaWQgPT09IHBheWxvYWQuYWN0aXZpdHkuaWQpIHtcbiAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkgPSB7XG4gICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHksXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5jdXJyZW50TWVtYmVyQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgIGludml0ZWRfbWVtYmVyczogdXBkYXRlTWVtYmVyQWN0aXZpdHlJbnZpdGVzKFxuICAgICAgICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJBY3Rpdml0eS5yZXN1bHQuaW52aXRlZF9tZW1iZXJzLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzPy52YWx1ZT8ucmVzdWx0KSB7XG4gICAgICBjb25zdCBleGlzdGluZ0V2ZW50cyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUucmVzdWx0LmdldChwYXlsb2FkLm1lbWJlci5pZCk7XG5cbiAgICAgIGlmIChleGlzdGluZ0V2ZW50cykge1xuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyRXZlbnRzID0ge1xuICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJFdmVudHMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXAoY3VycmVudFN0YXRlLm1lbWJlckV2ZW50cy52YWx1ZS5yZXN1bHQpLnNldChcbiAgICAgICAgICAgICAgcGF5bG9hZC5tZW1iZXIuaWQsXG4gICAgICAgICAgICAgIHVwZGF0ZUV2ZW50SW52aXRlcyhleGlzdGluZ0V2ZW50cywgcGF5bG9hZClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH0pLFxuXG4gIC8vIFVwZGF0ZSBNZW1iZXIgT3BlbiBBY3Rpdml0eVxuICBvbih1cGRhdGVNZW1iZXJPcGVuQWN0aXZpdHlTdWNjZXNzQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY3VycmVudE1lbWJlck9wZW5BY3Rpdml0eTogcmV0cmlldmVMb2FkU3VjY2VzcyhwYXlsb2FkKVxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzPy52YWx1ZT8ucmVzdWx0KSB7XG4gICAgICBjb25zdCBleGlzdGluZ09wZW5BY3Rpdml0aWVzID0gY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdC5nZXQocGF5bG9hZC5tZW1iZXJfaWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVuQWN0aXZpdGllcykge1xuICAgICAgICBjdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMgPSB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMudmFsdWUsXG4gICAgICAgICAgICByZXN1bHQ6IG5ldyBNYXAoY3VycmVudFN0YXRlLm1lbWJlck9wZW5BY3Rpdml0aWVzLnZhbHVlLnJlc3VsdCkuc2V0KFxuICAgICAgICAgICAgICBwYXlsb2FkLm1lbWJlcl9pZCxcbiAgICAgICAgICAgICAgdXBkYXRlT3BlbkFjdGl2aXRpZXMoZXhpc3RpbmdPcGVuQWN0aXZpdGllcywgcGF5bG9hZClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH0pLFxuXG4gIC8vIFJlbW92ZSBtZW1iZXIgb3BlbiBhY3Rpdml0eVxuICBvbihyZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHlBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwgeyBwYXlsb2FkIH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nfX0pID0+IHtcbiAgICBsZXQgY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHk/LnJlc3VsdD8uaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCkge1xuICAgICAgY3VycmVudFN0YXRlLmN1cnJlbnRNZW1iZXJPcGVuQWN0aXZpdHkgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcz8udmFsdWU/LnJlc3VsdCkge1xuICAgICAgY29uc3QgZXhpc3RpbmdPcGVuQWN0aXZpdGllcyA9IGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQuZ2V0KHBheWxvYWQubWVtYmVySWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdPcGVuQWN0aXZpdGllcykge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3BlbkFjdGl2aXRpZXMgPSBleGlzdGluZ09wZW5BY3Rpdml0aWVzLm1hcChcbiAgICAgICAgICAob3BlbkFjdGl2aXR5OiBPcGVuQWN0aXZpdHkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuQWN0aXZpdHkuaWQgPT09IHBheWxvYWQuYWN0aXZpdHlJZCAmJiBvcGVuQWN0aXZpdHkubWVtYmVyX2lkID09PSBwYXlsb2FkLm1lbWJlcklkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgT3BlbkFjdGl2aXR5KFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pZCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuYWN0aXZpdHlfZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X3R5cGVfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmNsdWJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfaWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRlYW1faWQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFjdGl2aXR5X2xvY2F0aW9uLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5hY3Rpdml0eV90eXBlX25hbWUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmFsbG93X21heWJlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jYWxlbmRhcl9uYW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jcmVhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5jdXJyZW50X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kYXksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LmRlZmF1bHRfZmVlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZW5kLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5lbmRfdGltZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuZmlsZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRhdGlvbl90ZXh0LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfZmlyc3RfZGF5cyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2dyb3VwcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlX2hpZGVfYmVmb3JlX3NlbnQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmQsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9yZW1pbmRfcmVjZWl2ZXJzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5pbnZpdGVfc2Vjb25kX2RheXMsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmludml0ZV9zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuaW52aXRlZF9tZW1iZXJzLmZpbHRlcigoaW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkgPT4gaW52aXRlLm1lbWJlcl9pZCAhPT0gcGF5bG9hZC5tZW1iZXJJZCksXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lmxhc3RfcmVzcG9uc2VfZGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubG9jYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWF4X251bV9hdHRlbmRhbnRzLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tYXhfbnVtX2F0dGVuZGFudHNfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF9wbGFjZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZWV0X3VwX3RpbWVfZGlzcGxheSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkubWVldF91cF90aW1lX3Nob3csXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5Lm1lbWJlcl9pbnZvaWNlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5tZW1iZXJfbmFtZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3Blbl9hY3Rpdml0eSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlcyxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkub3B0aW9uYWxfZmVlX3JlcXVpcmVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5vcHRpb25hbF9mZWVfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkucmVwZWF0LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfbnVtLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfdG9fZGF5LFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5yZXBlYXRfdHlwZSxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc2hvd19vdGhlcl9pbnZpdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS5zdGFydCxcbiAgICAgICAgICAgICAgICBvcGVuQWN0aXZpdHkuc3RhcnRfdGltZSxcbiAgICAgICAgICAgICAgICAnd2FpdGluZycsXG4gICAgICAgICAgICAgICAgb3BlbkFjdGl2aXR5LnRpdGxlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVkLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51c2VfaW52aXRlLFxuICAgICAgICAgICAgICAgIG9wZW5BY3Rpdml0eS51cGRhdGVfcmVwZWF0aW5nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcGVuQWN0aXZpdHk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcyA9IHtcbiAgICAgICAgICAuLi5jdXJyZW50U3RhdGUubWVtYmVyT3BlbkFjdGl2aXRpZXMsXG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZSxcbiAgICAgICAgICAgIHJlc3VsdDogbmV3IE1hcDxzdHJpbmcsIEFycmF5PE9wZW5BY3Rpdml0eT4+KGN1cnJlbnRTdGF0ZS5tZW1iZXJPcGVuQWN0aXZpdGllcy52YWx1ZS5yZXN1bHQpLnNldChwYXlsb2FkLm1lbWJlcklkLCB1cGRhdGVkT3BlbkFjdGl2aXRpZXMpXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U3RhdGVcbiAgfSksXG5cbiAgLy8gVXBkYXRlIFRlYW0gQWN0aXZpdHlcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5QWN0aW9uLCBzdGF0ZSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVTdGFydExvYWRpbmcoc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSkgfSkpLFxuICBvbih1cGRhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKSxcbiAgb24odXBkYXRlVGVhbUFjdGl2aXR5U3VjY2Vzc0FjdGlvbiwgKHN0YXRlLCB7IHBheWxvYWQgfSkgPT4ge1xuICAgIGlmIChzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5Py5yZXN1bHQgJiYgcGF5bG9hZC5pZCA9PT0gc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eS5yZXN1bHQuYWN0aXZpdHkuaWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGVhbUFjdGl2aXR5OiB7XG4gICAgICAgICAgLi4uc3RhdGUuY3VycmVudFRlYW1BY3Rpdml0eSxcbiAgICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmN1cnJlbnRUZWFtQWN0aXZpdHkucmVzdWx0LFxuICAgICAgICAgICAgYWN0aXZpdHk6IHBheWxvYWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdGF0ZTtcbiAgfSksXG5cbiAgLy8gUmVzZW5kIHRlYW0gYWN0aXZpdHkgaW52aXRlXG4gIG9uKHJlc2VuZFRlYW1BY3Rpdml0eU1lbWJlckludml0ZVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogQWN0aXZpdHlJbnZpdGV9KSA9PiB1cGRhdGVUZWFtQWN0aXZpdHlJbnZpdGUoc3RhdGUsIHBheWxvYWQpKSxcblxuICAvLyBVcGRhdGUgVGVhbSBhY3Rpdml0eSBpbnZpdGVcbiAgb24odXBkYXRlVGVhbU1lbWJlckFjdGl2aXR5SW52aXRlU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBDYWxlbmRhclN0YXRlLCB7cGF5bG9hZH06IHtwYXlsb2FkOiBNZW1iZXJBY3Rpdml0eUludml0ZX0pID0+IHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZShzdGF0ZSwgcGF5bG9hZCkpLFxuXG4gIC8vIERlbGV0ZSBUZWFtIEFjdGl2aXR5XG4gIG9uKGRlbGV0ZVRlYW1BY3Rpdml0eVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQ2FsZW5kYXJTdGF0ZSwge3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRUZWFtQWN0aXZpdHk6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoY3VycmVudFN0YXRlLnRlYW1FdmVudHM/LnZhbHVlPy5yZXN1bHRzKSB7XG4gICAgICBjdXJyZW50U3RhdGUudGVhbUV2ZW50cyA9IHtcbiAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMsXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgLi4uY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUsXG4gICAgICAgICAgcmVzdWx0czogY3VycmVudFN0YXRlLnRlYW1FdmVudHMudmFsdWUucmVzdWx0cy5maWx0ZXIoKGV2ZW50OiBFdmVudCkgPT4gZXZlbnQuaWQgIT09IHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9KSxcblxuICAvLyBDcmVhdGUgVGVhbSBBY3Rpdml0eVxuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlBY3Rpb24sIHN0YXRlID0+ICh7IC4uLnN0YXRlLCBjdXJyZW50VGVhbUFjdGl2aXR5OiByZXRyaWV2ZVN0YXJ0TG9hZGluZyhzdGF0ZS5jdXJyZW50VGVhbUFjdGl2aXR5KSB9KSksXG5cbiAgLy8gRmFpbHVyZSBIYW5kbGVyc1xuICBvbihjcmVhdGVUZWFtQWN0aXZpdHlGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHsgcGF5bG9hZCB9KSA9PiAoeyAuLi5zdGF0ZSwgY3VycmVudFRlYW1BY3Rpdml0eTogcmV0cmlldmVMb2FkRmFpbHVyZTxUZWFtQWN0aXZpdHlJbnRlcmZhY2U+KHBheWxvYWQpIH0pKVxuKTtcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { createReducer, on } from '@ngrx/store';
2
+ import { initialClubInfoState } from '../state';
3
+ import { clearStoreAction, getCurrentMemberClubInfoAction, getCurrentMemberClubInfoFailureAction, getCurrentMemberClubInfoSuccessAction, getCurrentTeamClubInfoAction, getCurrentTeamClubInfoFailureAction, getCurrentTeamClubInfoSuccessAction } from '../actions';
4
+ import { retrieveLoadFailure, retrieveLoadSuccess, retrieveStartLoading } from './reducer-helpers';
5
+ export const clubInfoReducer = createReducer(initialClubInfoState, on(clearStoreAction, () => initialClubInfoState), on(getCurrentMemberClubInfoAction, getCurrentTeamClubInfoAction, (state) => ({
6
+ ...state,
7
+ currentClubInfo: retrieveStartLoading()
8
+ })), on(getCurrentMemberClubInfoFailureAction, getCurrentTeamClubInfoFailureAction, (state, { payload }) => ({ ...state, currentClubInfo: retrieveLoadFailure(payload) })), on(getCurrentMemberClubInfoSuccessAction, getCurrentTeamClubInfoSuccessAction, (state, { payload }) => ({ ...state, currentClubInfo: retrieveLoadSuccess(payload) })));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1Yi1pbmZvLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3N0b3JlL3JlZHVjZXJzL2NsdWItaW5mby5yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBaUIsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLHFDQUFxQyxFQUNyQyw0QkFBNEIsRUFDNUIsbUNBQW1DLEVBQ25DLG1DQUFtQyxFQUNwQyxNQUFNLFlBQVksQ0FBQztBQUdwQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUMxQyxvQkFBb0IsRUFDcEIsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQ2hELEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUYsR0FBRyxLQUFLO0lBQ1IsZUFBZSxFQUFFLG9CQUFvQixFQUFjO0NBQ3BELENBQUMsQ0FBQyxFQUNILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBQyxPQUFPLEVBRTdHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQWEsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQzlFLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBQyxPQUFPLEVBRTdHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENsdWJJbmZvU3RhdGUsIGluaXRpYWxDbHViSW5mb1N0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHtcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgZ2V0Q3VycmVudE1lbWJlckNsdWJJbmZvQWN0aW9uLFxuICBnZXRDdXJyZW50TWVtYmVyQ2x1YkluZm9GYWlsdXJlQWN0aW9uLFxuICBnZXRDdXJyZW50TWVtYmVyQ2x1YkluZm9TdWNjZXNzQWN0aW9uLFxuICBnZXRDdXJyZW50VGVhbUNsdWJJbmZvQWN0aW9uLFxuICBnZXRDdXJyZW50VGVhbUNsdWJJbmZvRmFpbHVyZUFjdGlvbixcbiAgZ2V0Q3VycmVudFRlYW1DbHViSW5mb1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBTZWFyY2hDbHViIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgcmV0cmlldmVMb2FkRmFpbHVyZSwgcmV0cmlldmVMb2FkU3VjY2VzcywgcmV0cmlldmVTdGFydExvYWRpbmcgfSBmcm9tICcuL3JlZHVjZXItaGVscGVycyc7XG5cbmV4cG9ydCBjb25zdCBjbHViSW5mb1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICBpbml0aWFsQ2x1YkluZm9TdGF0ZSxcbiAgb24oY2xlYXJTdG9yZUFjdGlvbiwgKCkgPT4gaW5pdGlhbENsdWJJbmZvU3RhdGUpLFxuICBvbihnZXRDdXJyZW50TWVtYmVyQ2x1YkluZm9BY3Rpb24sIGdldEN1cnJlbnRUZWFtQ2x1YkluZm9BY3Rpb24sIChzdGF0ZTogQ2x1YkluZm9TdGF0ZSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50Q2x1YkluZm86IHJldHJpZXZlU3RhcnRMb2FkaW5nPFNlYXJjaENsdWI+KClcbiAgfSkpLFxuICBvbihnZXRDdXJyZW50TWVtYmVyQ2x1YkluZm9GYWlsdXJlQWN0aW9uLCBnZXRDdXJyZW50VGVhbUNsdWJJbmZvRmFpbHVyZUFjdGlvbiwgKHN0YXRlOiBDbHViSW5mb1N0YXRlLCB7cGF5bG9hZH06IHtcbiAgICBwYXlsb2FkOiBIdHRwRXJyb3JSZXNwb25zZVxuICB9KSA9PiAoey4uLnN0YXRlLCBjdXJyZW50Q2x1YkluZm86IHJldHJpZXZlTG9hZEZhaWx1cmU8U2VhcmNoQ2x1Yj4ocGF5bG9hZCl9KSksXG4gIG9uKGdldEN1cnJlbnRNZW1iZXJDbHViSW5mb1N1Y2Nlc3NBY3Rpb24sIGdldEN1cnJlbnRUZWFtQ2x1YkluZm9TdWNjZXNzQWN0aW9uLCAoc3RhdGU6IENsdWJJbmZvU3RhdGUsIHtwYXlsb2FkfToge1xuICAgIHBheWxvYWQ6IFNlYXJjaENsdWJcbiAgfSkgPT4gKHsuLi5zdGF0ZSwgY3VycmVudENsdWJJbmZvOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHBheWxvYWQpfSkpLFxuKTtcbiJdfQ==