@myclub_se/data-access 3.5.7 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/esm2022/lib/api-models/api-activity-invite.mjs +1 -1
  2. package/esm2022/lib/api-models/api-activity-location-group.mjs +1 -1
  3. package/esm2022/lib/api-models/api-activity-location.mjs +1 -1
  4. package/esm2022/lib/api-models/api-activity-question-connection.mjs +2 -0
  5. package/esm2022/lib/api-models/api-activity-question.mjs +2 -0
  6. package/esm2022/lib/api-models/api-activity-rule-relation.mjs +2 -0
  7. package/esm2022/lib/api-models/api-activity-rule.mjs +2 -0
  8. package/esm2022/lib/api-models/api-activity-settings.mjs +1 -1
  9. package/esm2022/lib/api-models/api-activity.mjs +1 -1
  10. package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
  11. package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
  12. package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +1 -1
  13. package/esm2022/lib/api-models/api-member/api-member.mjs +1 -1
  14. package/esm2022/lib/api-models/api-open-activity.mjs +1 -1
  15. package/esm2022/lib/api-models/api-search-attribute.mjs +2 -0
  16. package/esm2022/lib/api-models/api-search-club.mjs +1 -1
  17. package/esm2022/lib/api-models/index.mjs +6 -1
  18. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +1 -1
  19. package/esm2022/lib/data-access.module.mjs +3 -4
  20. package/esm2022/lib/models/activity-invite.mjs +12 -2
  21. package/esm2022/lib/models/activity-location-group.mjs +1 -1
  22. package/esm2022/lib/models/activity-location-part.mjs +1 -1
  23. package/esm2022/lib/models/activity-location-tag.mjs +1 -1
  24. package/esm2022/lib/models/activity-location.mjs +1 -1
  25. package/esm2022/lib/models/activity-question-connection.mjs +29 -0
  26. package/esm2022/lib/models/activity-question-response.mjs +9 -0
  27. package/esm2022/lib/models/activity-question.mjs +33 -0
  28. package/esm2022/lib/models/activity-rule-relation.mjs +35 -0
  29. package/esm2022/lib/models/activity-rule.mjs +31 -0
  30. package/esm2022/lib/models/activity-settings.mjs +14 -4
  31. package/esm2022/lib/models/activity-type.mjs +1 -1
  32. package/esm2022/lib/models/activity.mjs +72 -4
  33. package/esm2022/lib/models/bookable-item.mjs +1 -1
  34. package/esm2022/lib/models/bookable-part.mjs +1 -1
  35. package/esm2022/lib/models/bookable-tag.mjs +1 -1
  36. package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -1
  37. package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -1
  38. package/esm2022/lib/models/booking-settings.mjs +1 -1
  39. package/esm2022/lib/models/index.mjs +7 -1
  40. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -1
  41. package/esm2022/lib/models/invoice/payment-order.mjs +12 -6
  42. package/esm2022/lib/models/open-activity.mjs +16 -2
  43. package/esm2022/lib/models/optional-fee.mjs +12 -1
  44. package/esm2022/lib/models/search-attribute.mjs +13 -0
  45. package/esm2022/lib/models/search-club.mjs +2 -6
  46. package/esm2022/lib/models/search-team.mjs +1 -1
  47. package/esm2022/lib/models/token.mjs +1 -1
  48. package/esm2022/lib/services/activity.service.mjs +82 -48
  49. package/esm2022/lib/services/api.service.mjs +1 -1
  50. package/esm2022/lib/services/booking-calendar.service.mjs +1 -1
  51. package/esm2022/lib/services/constant.service.mjs +13 -1
  52. package/esm2022/lib/services/factories/activity-factory.mjs +6 -2
  53. package/esm2022/lib/services/factories/activity-invite-factory.mjs +2 -2
  54. package/esm2022/lib/services/factories/activity-location-factory.mjs +1 -1
  55. package/esm2022/lib/services/factories/activity-location-group-factory.mjs +1 -1
  56. package/esm2022/lib/services/factories/activity-location-part-factory.mjs +1 -1
  57. package/esm2022/lib/services/factories/activity-location-tag-factory.mjs +1 -1
  58. package/esm2022/lib/services/factories/activity-question-connection-factory.mjs +4 -0
  59. package/esm2022/lib/services/factories/activity-question-factory.mjs +3 -0
  60. package/esm2022/lib/services/factories/activity-rule-factory.mjs +4 -0
  61. package/esm2022/lib/services/factories/activity-rule-relation-factory.mjs +5 -0
  62. package/esm2022/lib/services/factories/activity-settings-factory.mjs +2 -2
  63. package/esm2022/lib/services/factories/bookable-item-factory.mjs +1 -1
  64. package/esm2022/lib/services/factories/bookable-part-factory.mjs +1 -1
  65. package/esm2022/lib/services/factories/bookable-tag-factory.mjs +1 -1
  66. package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +1 -1
  67. package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +1 -1
  68. package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +1 -1
  69. package/esm2022/lib/services/factories/booking-calendar-slot-validate-copy-result-factory.mjs +1 -1
  70. package/esm2022/lib/services/factories/booking-settings-factory.mjs +1 -1
  71. package/esm2022/lib/services/factories/feature-flags-factory.mjs +1 -1
  72. package/esm2022/lib/services/factories/index.mjs +6 -1
  73. package/esm2022/lib/services/factories/open-activity-factory.mjs +4 -2
  74. package/esm2022/lib/services/factories/overbooked-bookable-item-factory.mjs +1 -1
  75. package/esm2022/lib/services/factories/overbooked-location-factory.mjs +1 -1
  76. package/esm2022/lib/services/factories/payment-order-factory.mjs +2 -2
  77. package/esm2022/lib/services/factories/saved-search-factory.mjs +1 -1
  78. package/esm2022/lib/services/factories/search-attribute.factory.mjs +3 -0
  79. package/esm2022/lib/services/factories/search-club-factory.mjs +2 -2
  80. package/esm2022/lib/services/feature-flags.service.mjs +1 -1
  81. package/esm2022/lib/services/index.mjs +2 -2
  82. package/esm2022/lib/services/invoice/invoice.service.mjs +1 -1
  83. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +1 -1
  84. package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -1
  85. package/esm2022/lib/services/member-card.service.mjs +1 -1
  86. package/esm2022/lib/services/member-fee.service.mjs +1 -1
  87. package/esm2022/lib/services/member-public-form.service.mjs +1 -1
  88. package/esm2022/lib/services/member.service.mjs +1 -1
  89. package/esm2022/lib/services/storage.service.mjs +1 -1
  90. package/esm2022/lib/services/team.service.mjs +1 -1
  91. package/esm2022/lib/services/user.service.mjs +1 -1
  92. package/esm2022/lib/store/actions/activity.actions.mjs +57 -27
  93. package/esm2022/lib/store/actions/calendar.actions.mjs +7 -1
  94. package/esm2022/lib/store/actions/constant.actions.mjs +21 -1
  95. package/esm2022/lib/store/actions/invoice.actions.mjs +9 -1
  96. package/esm2022/lib/store/actions/member-fee.actions.mjs +1 -1
  97. package/esm2022/lib/store/actions/member.actions.mjs +1 -1
  98. package/esm2022/lib/store/actions/saved-search.actions.mjs +1 -1
  99. package/esm2022/lib/store/effects/activity.effects.mjs +40 -22
  100. package/esm2022/lib/store/effects/auth.effects.mjs +3 -3
  101. package/esm2022/lib/store/effects/booking.effects.mjs +1 -1
  102. package/esm2022/lib/store/effects/calendar.effects.mjs +7 -19
  103. package/esm2022/lib/store/effects/constant.effects.mjs +11 -2
  104. package/esm2022/lib/store/effects/file.effects.mjs +1 -1
  105. package/esm2022/lib/store/effects/invoice.effects.mjs +12 -2
  106. package/esm2022/lib/store/effects/member-card.effects.mjs +1 -1
  107. package/esm2022/lib/store/effects/member-fee.effects.mjs +1 -1
  108. package/esm2022/lib/store/effects/member.effects.mjs +1 -1
  109. package/esm2022/lib/store/effects/saved-search.effects.mjs +1 -1
  110. package/esm2022/lib/store/effects/token.effects.mjs +3 -3
  111. package/esm2022/lib/store/interfaces/index.mjs +2 -1
  112. package/esm2022/lib/store/interfaces/public-member-activity-result-interface.mjs +2 -0
  113. package/esm2022/lib/store/operators/ensure-public-member-activities-loading-done.mjs +5 -0
  114. package/esm2022/lib/store/operators/index.mjs +2 -1
  115. package/esm2022/lib/store/reducers/booking.reducers.mjs +1 -1
  116. package/esm2022/lib/store/reducers/calendar.reducer.mjs +83 -50
  117. package/esm2022/lib/store/reducers/constant.reducer.mjs +35 -2
  118. package/esm2022/lib/store/reducers/file.reducer.mjs +1 -1
  119. package/esm2022/lib/store/reducers/invoice.reducer.mjs +2 -2
  120. package/esm2022/lib/store/reducers/member-fee.reducer.mjs +1 -1
  121. package/esm2022/lib/store/reducers/public.reducer.mjs +58 -73
  122. package/esm2022/lib/store/reducers/saved-search.reducer.mjs +1 -1
  123. package/esm2022/lib/store/selectors/calendar.selectors.mjs +7 -1
  124. package/esm2022/lib/store/selectors/constant.selectors.mjs +5 -1
  125. package/esm2022/lib/store/selectors/member-fee.selectors.mjs +1 -1
  126. package/esm2022/lib/store/selectors/public.selectors.mjs +7 -7
  127. package/esm2022/lib/store/selectors/saved-search.selectors.mjs +1 -1
  128. package/esm2022/lib/store/state/booking.state.mjs +1 -1
  129. package/esm2022/lib/store/state/calendar.state.mjs +3 -1
  130. package/esm2022/lib/store/state/constant.state.mjs +4 -1
  131. package/esm2022/lib/store/state/invoice.state.mjs +1 -1
  132. package/esm2022/lib/store/state/member-fee.state.mjs +1 -1
  133. package/esm2022/lib/store/state/public.state.mjs +7 -7
  134. package/fesm2022/myclub_se-data-access.mjs +3450 -2979
  135. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  136. package/lib/api-models/api-activity-invite.d.ts +3 -0
  137. package/lib/api-models/api-activity-question-connection.d.ts +10 -0
  138. package/lib/api-models/api-activity-question.d.ts +9 -0
  139. package/lib/api-models/api-activity-rule-relation.d.ts +10 -0
  140. package/lib/api-models/api-activity-rule.d.ts +8 -0
  141. package/lib/api-models/api-activity-settings.d.ts +6 -1
  142. package/lib/api-models/api-activity.d.ts +26 -0
  143. package/lib/api-models/api-invoice/api-payment-order.d.ts +5 -2
  144. package/lib/api-models/api-open-activity.d.ts +10 -0
  145. package/lib/api-models/api-search-attribute.d.ts +8 -0
  146. package/lib/api-models/api-search-club.d.ts +0 -2
  147. package/lib/api-models/index.d.ts +5 -0
  148. package/lib/models/activity-invite.d.ts +7 -1
  149. package/lib/models/activity-question-connection.d.ts +19 -0
  150. package/lib/models/activity-question-response.d.ts +5 -0
  151. package/lib/models/activity-question.d.ts +22 -0
  152. package/lib/models/activity-rule-relation.d.ts +14 -0
  153. package/lib/models/activity-rule.d.ts +12 -0
  154. package/lib/models/activity-settings.d.ts +7 -2
  155. package/lib/models/activity.d.ts +29 -1
  156. package/lib/models/index.d.ts +6 -0
  157. package/lib/models/invoice/payment-attempt.d.ts +1 -1
  158. package/lib/models/invoice/payment-order.d.ts +6 -3
  159. package/lib/models/open-activity.d.ts +10 -1
  160. package/lib/models/optional-fee.d.ts +9 -0
  161. package/lib/models/search-attribute.d.ts +9 -0
  162. package/lib/models/search-club.d.ts +1 -3
  163. package/lib/services/activity.service.d.ts +17 -11
  164. package/lib/services/constant.service.d.ts +3 -0
  165. package/lib/services/factories/activity-question-connection-factory.d.ts +3 -0
  166. package/lib/services/factories/activity-question-factory.d.ts +3 -0
  167. package/lib/services/factories/activity-rule-factory.d.ts +3 -0
  168. package/lib/services/factories/activity-rule-relation-factory.d.ts +3 -0
  169. package/lib/services/factories/index.d.ts +5 -0
  170. package/lib/services/factories/search-attribute.factory.d.ts +3 -0
  171. package/lib/services/index.d.ts +1 -1
  172. package/lib/services/invoice/payment-order.service.d.ts +1 -0
  173. package/lib/services/member-card.service.d.ts +2 -3
  174. package/lib/store/actions/activity.actions.d.ts +207 -59
  175. package/lib/store/actions/calendar.actions.d.ts +36 -0
  176. package/lib/store/actions/constant.actions.d.ts +42 -0
  177. package/lib/store/actions/invoice.actions.d.ts +23 -1
  178. package/lib/store/effects/activity.effects.d.ts +56 -16
  179. package/lib/store/effects/calendar.effects.d.ts +4 -31
  180. package/lib/store/effects/constant.effects.d.ts +15 -0
  181. package/lib/store/effects/invoice.effects.d.ts +3 -0
  182. package/lib/store/interfaces/index.d.ts +1 -0
  183. package/lib/store/interfaces/public-member-activity-result-interface.d.ts +7 -0
  184. package/lib/store/operators/ensure-public-member-activities-loading-done.d.ts +3 -0
  185. package/lib/store/operators/index.d.ts +1 -0
  186. package/lib/store/selectors/calendar.selectors.d.ts +2 -0
  187. package/lib/store/selectors/constant.selectors.d.ts +2 -0
  188. package/lib/store/selectors/public.selectors.d.ts +6 -6
  189. package/lib/store/state/calendar.state.d.ts +3 -1
  190. package/lib/store/state/constant.state.d.ts +3 -0
  191. package/lib/store/state/public.state.d.ts +8 -8
  192. package/package.json +4 -3
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
105
105
  type: Inject,
106
106
  args: [DOMAIN]
107
107
  }] }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUM7OztBQUUzQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsUUFBUSxDQUFDLENBQUM7QUFFM0QsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBRTNCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWE7SUFDL0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCO0lBQ3JDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWE7SUFDL0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsZUFBZTtJQUNuQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTO0lBQ3hCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQWtCRixNQUFNLE9BQU8sVUFBVTtJQUVYO0lBQ2dCO0lBRjFCLFlBQ1UsSUFBZ0IsRUFDQSxNQUFjO1FBRDlCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDQSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRXhDLENBQUM7SUFFRCxjQUFjLENBQ1osSUFBVSxFQUNWLElBQVksRUFDWixhQUF5QixFQUFFLEVBQzNCLFVBQW1CLEVBQUU7UUFFckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFD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QUksRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVUsRUFBRSxJQUFZLEVBQUUsVUFBc0IsRUFBRSxJQUFhLEVBQUUsT0FBZ0I7UUFDekcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFTyxHQUFHLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO3VHQXZLVSxVQUFVLDRDQUdYLE1BQU07MkdBSEwsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwaUNvbGxlY3Rpb259IGZyb20gJy4uL2FwaS1tb2RlbHMnO1xuaW1wb3J0IHtDb2xsZWN0aW9uLCBSb2xlfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgRE9NQUlOID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2RvbWFpbicpO1xuXG5jb25zdCBBUElfUEFUSCA9ICdhcGkvdjMvJztcblxuY29uc3QgUk9MRV9QQVRIID0ge1xuICBbUm9sZS5DbHViQWRtaW5dOiAnY2x1Yi1hZG1pbi8nLFxuICBbUm9sZS5TZWN0aW9uQWRtaW5dOiAnc2VjdGlvbi1hZG1pbi8nLFxuICBbUm9sZS5UZWFtQWRtaW5dOiAndGVhbS1hZG1pbi8nLFxuICBbUm9sZS5NZW1iZXJBZG1pbl06ICdtZW1iZXItYWRtaW4vJyxcbiAgW1JvbGUuUHVibGljXTogJ3B1YmxpYy8nLFxuICBbUm9sZS5Ob25lXTogJydcbn07XG5cbmludGVyZmFjZSBGYWN0b3J5PEEsIFQ+IHtcbiAgKGFwaVJlc291cmNlOiBBKTogVDtcbn1cblxuaW50ZXJmYWNlIFBhdGhQYXJhbXMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IH07XG4gIGJvZHk/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChET01BSU4pIHByaXZhdGUgZG9tYWluOiBzdHJpbmdcbiAgKSB7XG4gIH1cblxuICBkZWxldGVSZXNvdXJjZShcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZShyb2xlLCBwYXRoLCBwYXRoUGFyYW1zLCBvcHRpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTx1bmtub3duPikgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlUmVzb3VyY2VXaXRoQm9keShcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxuICAgICAgdGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgey4uLm9wdGlvbnMsIG9ic2VydmU6ICdyZXNwb25zZSd9LFxuICAgICkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTx1bmtub3duPikgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbGxlY3Rpb248QSwgVD4oXG4gICAgZmFjdG9yeTogRmFjdG9yeTxBLCBUPixcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmdldDxBcGlDb2xsZWN0aW9uPEE+Pihyb2xlLCBwYXRoLCBwYXRoUGFyYW1zLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChhcGlDb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlcyA9IGFwaUNvbGxlY3Rpb24ucmVzdWx0cy5tYXAoKHJlc291cmNlKSA9PiBmYWN0b3J5KHJlc291cmNlKSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbjxUPihhcGlDb2xsZWN0aW9uLmNvdW50LCBhcGlDb2xsZWN0aW9uLm5leHQsIGFwaUNvbGxlY3Rpb24ucHJldmlvdXMsIHJlc291cmNlcyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRSZXNvdXJjZTxBLCBUPihcbiAgICBmYWN0b3J5OiBGYWN0b3J5PEEsIFQ+LFxuICAgIHJvbGU6IFJvbGUsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMgPSB7fSxcbiAgICBvcHRpb25zOiBPcHRpb25zID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0PEE+KHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMsIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKGFwaVJlc291cmNlKSA9PiBmYWN0b3J5KGFwaVJlc291cmNlKSlcbiAgICApO1xuICB9XG5cbiAgcG9zdEZvcm1EYXRhPEEsIFQ+KFxuICAgIGZhY3Rvcnk6IEZhY3Rvcnk8QSwgVD4sXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBPih0aGlzLnVybCh0aGlzLnBhdGgocm9sZSwgcGF0aCwgcGF0aFBhcmFtcykpLCB0aGlzLmdldEZvcm1EYXRhKGRhdGEpKVxuICAgICAgLnBpcGUobWFwKChhcGlSZXNvdXJjZSkgPT4gZmFjdG9yeShhcGlSZXNvdXJjZSkpKTtcbiAgfVxuXG4gIHBvc3RSZXNvdXJjZTxBLCBUPihcbiAgICBmYWN0b3J5OiBGYWN0b3J5PEEsIFQ+LFxuICAgIHJvbGU6IFJvbGUsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMgPSB7fSxcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8QT4ocm9sZSwgcGF0aCwgcGF0aFBhcmFtcywgZGF0YSwgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgoYXBpUmVzb3VyY2UpID0+IGZhY3RvcnkoYXBpUmVzb3VyY2UpKVxuICAgICk7XG4gIH1cblxuICBwb3N0UmVzb3VyY2VOb1Jlc3BvbnNlKFxuICAgIHJvbGU6IFJvbGUsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMgPSB7fSxcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnBvc3RFbXB0eVJlc3BvbnNlKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMsIGRhdGEsIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4pID0+IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAxIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVSZXNvdXJjZTxBLCBUPihcbiAgICByZXNwb25zZUZhY3Rvcnk6IEZhY3Rvcnk8QSwgVD4sXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIGRhdGE6IHVua25vd24sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMucGF0Y2g8QT4ocm9sZSwgcGF0aCwgcGF0aFBhcmFtcywgZGF0YSwgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgoYXBpUmVzb3VyY2UpID0+IHJlc3BvbnNlRmFjdG9yeShhcGlSZXNvdXJjZSkpXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVJlc291cmNlTm9SZXNwb25zZShcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wYXRjaEVtcHR5UmVzcG9uc2Uocm9sZSwgcGF0aCwgcGF0aFBhcmFtcywgZGF0YSwgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IEh0dHBSZXNwb25zZTx1bmtub3duPikgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlKHJvbGU6IFJvbGUsIHBhdGg6IHN0cmluZywgcGF0aFBhcmFtczogUGF0aFBhcmFtcywgb3B0aW9uczogT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdDxhbnk+KCdkZWxldGUnLCB0aGlzLnVybCh0aGlzLnBhdGgocm9sZSwgcGF0aCwgcGF0aFBhcmFtcykpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnVybCh0aGlzLnBhdGgocm9sZSwgcGF0aCwgcGF0aFBhcmFtcykpLCB7Li4ub3B0aW9ucywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4ocm9sZTogUm9sZSwgcGF0aDogc3RyaW5nLCBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zLCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1EYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCBGb3JtRGF0YSkge1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoPFQ+KHJvbGU6IFJvbGUsIHBhdGg6IHN0cmluZywgcGF0aFBhcmFtczogUGF0aFBhcmFtcywgZGF0YTogdW5rbm93biwgb3B0aW9uczogT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4odGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRW1wdHlSZXNwb25zZShyb2xlOiBSb2xlLCBwYXRoOiBzdHJpbmcsIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMsIGRhdGE6IHVua25vd24sIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIGRhdGEsIHsuLi5vcHRpb25zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gIH1cblxuICBwcml2YXRlIHBhdGgocm9sZTogUm9sZSwgcGF0aDogc3RyaW5nLCBwYXJhbXM6IFBhdGhQYXJhbXMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKCc6JyArIGtleSwgJ2cnKTtcbiAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UocmVnZXhwLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFJPTEVfUEFUSFtyb2xlXSArIHBhdGg7XG4gIH1cblxuICBwcml2YXRlIHBvc3Q8VD4ocm9sZTogUm9sZSwgcGF0aDogc3RyaW5nLCBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zLCBkYXRhOiB1bmtub3duLCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0RW1wdHlSZXNwb25zZShyb2xlOiBSb2xlLCBwYXRoOiBzdHJpbmcsIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMsIGRhdGE6IHVua25vd24sIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgZGF0YSwgey4uLm9wdGlvbnMsIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXJsKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbiArIEFQSV9QQVRIICsgcGF0aDtcbiAgfVxufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL3NlcnZpY2VzL2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUU3QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVMsUUFBUSxDQUFDLENBQUM7QUFFM0QsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBRTNCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWE7SUFDL0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCO0lBQ3JDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWE7SUFDL0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsZUFBZTtJQUNuQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTO0lBQ3hCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQWtCRixNQUFNLE9BQU8sVUFBVTtJQUVYO0lBQ2dCO0lBRjFCLFlBQ1UsSUFBZ0IsRUFDQSxNQUFjO1FBRDlCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDQSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRXhDLENBQUM7SUFFRCxjQUFjLENBQ1osSUFBVSxFQUNWLElBQVksRUFDWixhQUF5QixFQUFFLEVBQzNCLFVBQW1CLEVBQUU7UUFFckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFD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QUksRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVUsRUFBRSxJQUFZLEVBQUUsVUFBc0IsRUFBRSxJQUFhLEVBQUUsT0FBZ0I7UUFDekcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFTyxHQUFHLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO3VHQXZLVSxVQUFVLDRDQUdYLE1BQU07MkdBSEwsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcGlDb2xsZWN0aW9uIH0gZnJvbSAnLi4vYXBpLW1vZGVscyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBSb2xlIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IERPTUFJTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdkb21haW4nKTtcblxuY29uc3QgQVBJX1BBVEggPSAnYXBpL3YzLyc7XG5cbmNvbnN0IFJPTEVfUEFUSCA9IHtcbiAgW1JvbGUuQ2x1YkFkbWluXTogJ2NsdWItYWRtaW4vJyxcbiAgW1JvbGUuU2VjdGlvbkFkbWluXTogJ3NlY3Rpb24tYWRtaW4vJyxcbiAgW1JvbGUuVGVhbUFkbWluXTogJ3RlYW0tYWRtaW4vJyxcbiAgW1JvbGUuTWVtYmVyQWRtaW5dOiAnbWVtYmVyLWFkbWluLycsXG4gIFtSb2xlLlB1YmxpY106ICdwdWJsaWMvJyxcbiAgW1JvbGUuTm9uZV06ICcnXG59O1xuXG5pbnRlcmZhY2UgRmFjdG9yeTxBLCBUPiB7XG4gIChhcGlSZXNvdXJjZTogQSk6IFQ7XG59XG5cbmludGVyZmFjZSBQYXRoUGFyYW1zIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB9O1xuICBib2R5PzogYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoRE9NQUlOKSBwcml2YXRlIGRvbWFpbjogc3RyaW5nXG4gICkge1xuICB9XG5cbiAgZGVsZXRlUmVzb3VyY2UoXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGUocm9sZSwgcGF0aCwgcGF0aFBhcmFtcywgb3B0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4pID0+IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVJlc291cmNlV2l0aEJvZHkoXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShcbiAgICAgIHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIHsuLi5vcHRpb25zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSxcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4pID0+IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KVxuICAgICk7XG4gIH1cblxuICBnZXRDb2xsZWN0aW9uPEEsIFQ+KFxuICAgIGZhY3Rvcnk6IEZhY3Rvcnk8QSwgVD4sXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5nZXQ8QXBpQ29sbGVjdGlvbjxBPj4ocm9sZSwgcGF0aCwgcGF0aFBhcmFtcywgb3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgoYXBpQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBhcGlDb2xsZWN0aW9uLnJlc3VsdHMubWFwKChyZXNvdXJjZSkgPT4gZmFjdG9yeShyZXNvdXJjZSkpO1xuICAgICAgICByZXR1cm4gbmV3IENvbGxlY3Rpb248VD4oYXBpQ29sbGVjdGlvbi5jb3VudCwgYXBpQ29sbGVjdGlvbi5uZXh0LCBhcGlDb2xsZWN0aW9uLnByZXZpb3VzLCByZXNvdXJjZXMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UmVzb3VyY2U8QSwgVD4oXG4gICAgZmFjdG9yeTogRmFjdG9yeTxBLCBUPixcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmdldDxBPihyb2xlLCBwYXRoLCBwYXRoUGFyYW1zLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChhcGlSZXNvdXJjZSkgPT4gZmFjdG9yeShhcGlSZXNvdXJjZSkpXG4gICAgKTtcbiAgfVxuXG4gIHBvc3RGb3JtRGF0YTxBLCBUPihcbiAgICBmYWN0b3J5OiBGYWN0b3J5PEEsIFQ+LFxuICAgIHJvbGU6IFJvbGUsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMgPSB7fSxcbiAgICBkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QT4odGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgdGhpcy5nZXRGb3JtRGF0YShkYXRhKSlcbiAgICAgIC5waXBlKG1hcCgoYXBpUmVzb3VyY2UpID0+IGZhY3RvcnkoYXBpUmVzb3VyY2UpKSk7XG4gIH1cblxuICBwb3N0UmVzb3VyY2U8QSwgVD4oXG4gICAgZmFjdG9yeTogRmFjdG9yeTxBLCBUPixcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wb3N0PEE+KHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMsIGRhdGEsIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKGFwaVJlc291cmNlKSA9PiBmYWN0b3J5KGFwaVJlc291cmNlKSlcbiAgICApO1xuICB9XG5cbiAgcG9zdFJlc291cmNlTm9SZXNwb25zZShcbiAgICByb2xlOiBSb2xlLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zID0ge30sXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wb3N0RW1wdHlSZXNwb25zZShyb2xlLCBwYXRoLCBwYXRoUGFyYW1zLCBkYXRhLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPHVua25vd24+KSA9PiByZXNwb25zZS5zdGF0dXMgPT09IDIwMCB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwMSB8fCByZXNwb25zZS5zdGF0dXMgPT09IDIwNClcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlUmVzb3VyY2U8QSwgVD4oXG4gICAgcmVzcG9uc2VGYWN0b3J5OiBGYWN0b3J5PEEsIFQ+LFxuICAgIHJvbGU6IFJvbGUsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMgPSB7fSxcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnBhdGNoPEE+KHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMsIGRhdGEsIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKGFwaVJlc291cmNlKSA9PiByZXNwb25zZUZhY3RvcnkoYXBpUmVzb3VyY2UpKVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVSZXNvdXJjZU5vUmVzcG9uc2UoXG4gICAgcm9sZTogUm9sZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcGF0aFBhcmFtczogUGF0aFBhcmFtcyA9IHt9LFxuICAgIGRhdGE6IHVua25vd24sXG4gICAgb3B0aW9uczogT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMucGF0Y2hFbXB0eVJlc3BvbnNlKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMsIGRhdGEsIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8dW5rbm93bj4pID0+IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZShyb2xlOiBSb2xlLCBwYXRoOiBzdHJpbmcsIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMsIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8YW55PignZGVsZXRlJywgdGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodGhpcy51cmwodGhpcy5wYXRoKHJvbGUsIHBhdGgsIHBhdGhQYXJhbXMpKSwgey4uLm9wdGlvbnMsIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHJvbGU6IFJvbGUsIHBhdGg6IHN0cmluZywgcGF0aFBhcmFtczogUGF0aFBhcmFtcywgb3B0aW9uczogT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JtRGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgRm9ybURhdGEpIHtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaDxUPihyb2xlOiBSb2xlLCBwYXRoOiBzdHJpbmcsIHBhdGhQYXJhbXM6IFBhdGhQYXJhbXMsIGRhdGE6IHVua25vd24sIG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFQ+KHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEVtcHR5UmVzcG9uc2Uocm9sZTogUm9sZSwgcGF0aDogc3RyaW5nLCBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zLCBkYXRhOiB1bmtub3duLCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaCh0aGlzLnVybCh0aGlzLnBhdGgocm9sZSwgcGF0aCwgcGF0aFBhcmFtcykpLCBkYXRhLCB7Li4ub3B0aW9ucywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoKHJvbGU6IFJvbGUsIHBhdGg6IHN0cmluZywgcGFyYW1zOiBQYXRoUGFyYW1zKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgnOicgKyBrZXksICdnJyk7XG4gICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKHJlZ2V4cCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBST0xFX1BBVEhbcm9sZV0gKyBwYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3N0PFQ+KHJvbGU6IFJvbGUsIHBhdGg6IHN0cmluZywgcGF0aFBhcmFtczogUGF0aFBhcmFtcywgZGF0YTogdW5rbm93biwgb3B0aW9uczogT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLnVybCh0aGlzLnBhdGgocm9sZSwgcGF0aCwgcGF0aFBhcmFtcykpLCBkYXRhLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zdEVtcHR5UmVzcG9uc2Uocm9sZTogUm9sZSwgcGF0aDogc3RyaW5nLCBwYXRoUGFyYW1zOiBQYXRoUGFyYW1zLCBkYXRhOiB1bmtub3duLCBvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMudXJsKHRoaXMucGF0aChyb2xlLCBwYXRoLCBwYXRoUGFyYW1zKSksIGRhdGEsIHsuLi5vcHRpb25zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gIH1cblxuICBwcml2YXRlIHVybChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kb21haW4gKyBBUElfUEFUSCArIHBhdGg7XG4gIH1cbn1cbiJdfQ==