@flower-city-online/itinerary-lib 0.0.29 → 0.0.31

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 (398) hide show
  1. package/fesm2022/flower-city-online-itinerary-lib.mjs +2262 -3023
  2. package/fesm2022/flower-city-online-itinerary-lib.mjs.map +1 -1
  3. package/index.d.ts +777 -5
  4. package/package.json +23 -25
  5. package/src/lib/itinerary-app/_styles/styles.scss +7 -6
  6. package/src/lib/itinerary-app/styles.scss +69 -17
  7. package/environments/environment.d.ts +0 -11
  8. package/esm2022/environments/environment.mjs +0 -23
  9. package/esm2022/flower-city-online-itinerary-lib.mjs +0 -5
  10. package/esm2022/lib/itinerary-app/_constants/constants.mjs +0 -129
  11. package/esm2022/lib/itinerary-app/_data/app-service.service.mjs +0 -41
  12. package/esm2022/lib/itinerary-app/_data/comment.service.mjs +0 -100
  13. package/esm2022/lib/itinerary-app/_data/itinerary-member.service.mjs +0 -108
  14. package/esm2022/lib/itinerary-app/_data/user-friends.service.mjs +0 -121
  15. package/esm2022/lib/itinerary-app/_data/vote.service.mjs +0 -79
  16. package/esm2022/lib/itinerary-app/_dtos/Itinerary-primary-info.dto.mjs +0 -2
  17. package/esm2022/lib/itinerary-app/_dtos/comment.dto.mjs +0 -2
  18. package/esm2022/lib/itinerary-app/_dtos/i-Itinerary-stats.dto.mjs +0 -2
  19. package/esm2022/lib/itinerary-app/_dtos/itinerary-member-complete.dto.mjs +0 -2
  20. package/esm2022/lib/itinerary-app/_dtos/itinerary-member.dto.mjs +0 -2
  21. package/esm2022/lib/itinerary-app/_dtos/vote.dto.mjs +0 -2
  22. package/esm2022/lib/itinerary-app/_enums/ItenariesRoutes.enum.mjs +0 -64
  23. package/esm2022/lib/itinerary-app/_enums/PathwayRoutes.enum.mjs +0 -7
  24. package/esm2022/lib/itinerary-app/_enums/endpoints/comment-request-endpoint.enum.mjs +0 -11
  25. package/esm2022/lib/itinerary-app/_enums/endpoints/gateway-request-enpoints.enum.mjs +0 -6
  26. package/esm2022/lib/itinerary-app/_enums/endpoints/itinerary-member-enpoint.enum.mjs +0 -12
  27. package/esm2022/lib/itinerary-app/_enums/endpoints/itinerary-request-endpoints.enum.mjs +0 -10
  28. package/esm2022/lib/itinerary-app/_enums/endpoints/user-friend-request-endpoints.enum.mjs +0 -13
  29. package/esm2022/lib/itinerary-app/_enums/endpoints/vote-request-endpoint.enum.mjs +0 -8
  30. package/esm2022/lib/itinerary-app/_enums/userRoutes.enum.mjs +0 -5
  31. package/esm2022/lib/itinerary-app/_interface/bottomNavigationList.mjs +0 -2
  32. package/esm2022/lib/itinerary-app/_interface/cardData.mjs +0 -2
  33. package/esm2022/lib/itinerary-app/_interface/commentsdata.mjs +0 -2
  34. package/esm2022/lib/itinerary-app/_interface/conditions.mjs +0 -2
  35. package/esm2022/lib/itinerary-app/_interface/dashboardSideBar.mjs +0 -2
  36. package/esm2022/lib/itinerary-app/_interface/filterMenuOptions.mjs +0 -2
  37. package/esm2022/lib/itinerary-app/_interface/i-gateway-request.interface.mjs +0 -2
  38. package/esm2022/lib/itinerary-app/_interface/i-gateway-response.interface.mjs +0 -2
  39. package/esm2022/lib/itinerary-app/_interface/icon.mjs +0 -2
  40. package/esm2022/lib/itinerary-app/_interface/notification.mjs +0 -2
  41. package/esm2022/lib/itinerary-app/_interface/pages.mjs +0 -2
  42. package/esm2022/lib/itinerary-app/_interface/presetRecord.mjs +0 -2
  43. package/esm2022/lib/itinerary-app/_interface/reportOptions.mjs +0 -2
  44. package/esm2022/lib/itinerary-app/_interface/search-popup.mjs +0 -2
  45. package/esm2022/lib/itinerary-app/_interface/searchResults.mjs +0 -2
  46. package/esm2022/lib/itinerary-app/_models/I-interest.mjs +0 -2
  47. package/esm2022/lib/itinerary-app/_models/Itinerary-stats.mjs +0 -2
  48. package/esm2022/lib/itinerary-app/_models/app-user.mjs +0 -2
  49. package/esm2022/lib/itinerary-app/_models/base.model.mjs +0 -8
  50. package/esm2022/lib/itinerary-app/_models/i-Itinerary.mjs +0 -2
  51. package/esm2022/lib/itinerary-app/_models/i-comment.mjs +0 -2
  52. package/esm2022/lib/itinerary-app/_models/i-image.mjs +0 -2
  53. package/esm2022/lib/itinerary-app/_models/i-itinerary-member.mjs +0 -2
  54. package/esm2022/lib/itinerary-app/_models/i-vote.schema.mjs +0 -2
  55. package/esm2022/lib/itinerary-app/_models/itinerary-location.mjs +0 -2
  56. package/esm2022/lib/itinerary-app/_models/itineraryMember.mjs +0 -2
  57. package/esm2022/lib/itinerary-app/_models/location-review.mjs +0 -2
  58. package/esm2022/lib/itinerary-app/_models/matching-clients.mjs +0 -2
  59. package/esm2022/lib/itinerary-app/_models/position-model.mjs +0 -2
  60. package/esm2022/lib/itinerary-app/_pipes/capitalize-first.pipe.mjs +0 -18
  61. package/esm2022/lib/itinerary-app/_pipes/time-ago.pipe.mjs +0 -39
  62. package/esm2022/lib/itinerary-app/_pipes/votes.pipe.mjs +0 -24
  63. package/esm2022/lib/itinerary-app/_services/api.service.mjs +0 -31
  64. package/esm2022/lib/itinerary-app/_services/assets.service.mjs +0 -33
  65. package/esm2022/lib/itinerary-app/_services/bottom-navigation.service.mjs +0 -92
  66. package/esm2022/lib/itinerary-app/_services/comment-image.service.mjs +0 -16
  67. package/esm2022/lib/itinerary-app/_services/constants.service.mjs +0 -14
  68. package/esm2022/lib/itinerary-app/_services/custom-dropdown-menu.service.mjs +0 -256
  69. package/esm2022/lib/itinerary-app/_services/itinerary.drawmode.transfer.mjs +0 -34
  70. package/esm2022/lib/itinerary-app/_services/itinerary.service.mjs +0 -118
  71. package/esm2022/lib/itinerary-app/_services/location.service.mjs +0 -32
  72. package/esm2022/lib/itinerary-app/_services/modal.clearhistory.service.mjs +0 -17
  73. package/esm2022/lib/itinerary-app/_services/modal.sendclient.service.mjs +0 -17
  74. package/esm2022/lib/itinerary-app/_services/modal.service.mjs +0 -17
  75. package/esm2022/lib/itinerary-app/_services/modal.shareurlservice.mjs +0 -17
  76. package/esm2022/lib/itinerary-app/_services/shadow-root-handler.service.mjs +0 -38
  77. package/esm2022/lib/itinerary-app/_services/share-popup-data.mjs +0 -20
  78. package/esm2022/lib/itinerary-app/initalize.app.mjs +0 -16
  79. package/esm2022/lib/itinerary-app/itinerary-lib-routing.module.mjs +0 -50
  80. package/esm2022/lib/itinerary-app/itinerary-lib.component.mjs +0 -77
  81. package/esm2022/lib/itinerary-app/itinerary-lib.module.mjs +0 -100
  82. package/esm2022/lib/itinerary-app/modules/archives/archives-routing.module.mjs +0 -19
  83. package/esm2022/lib/itinerary-app/modules/archives/archives.component.mjs +0 -23
  84. package/esm2022/lib/itinerary-app/modules/archives/archives.module.mjs +0 -36
  85. package/esm2022/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.mjs +0 -67
  86. package/esm2022/lib/itinerary-app/modules/dashboard/components/navbar/navbar.component.mjs +0 -61
  87. package/esm2022/lib/itinerary-app/modules/dashboard/components/sidebar/sidebar.component.mjs +0 -63
  88. package/esm2022/lib/itinerary-app/modules/dashboard/dashboard-routing.module.mjs +0 -24
  89. package/esm2022/lib/itinerary-app/modules/dashboard/dashboard.component.mjs +0 -14
  90. package/esm2022/lib/itinerary-app/modules/dashboard/dashboard.module.mjs +0 -52
  91. package/esm2022/lib/itinerary-app/modules/dashboard/pages/main-dashboard/main-dashboard.component.mjs +0 -11
  92. package/esm2022/lib/itinerary-app/modules/itineraries/components/app-header-desktop/app-header-desktop.component.mjs +0 -13
  93. package/esm2022/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.mjs +0 -64
  94. package/esm2022/lib/itinerary-app/modules/itineraries/components/comment-filter-menu/comment-filter-menu.component.mjs +0 -42
  95. package/esm2022/lib/itinerary-app/modules/itineraries/components/delete-itineraries/delete-itineraries.component.mjs +0 -51
  96. package/esm2022/lib/itinerary-app/modules/itineraries/components/filter-menu/filter-menu.component.mjs +0 -43
  97. package/esm2022/lib/itinerary-app/modules/itineraries/components/no-visual-map-filters/no-visual-map-filters.component.mjs +0 -80
  98. package/esm2022/lib/itinerary-app/modules/itineraries/components/report-itinerary-modal/report-itinerary-modal.component.mjs +0 -72
  99. package/esm2022/lib/itinerary-app/modules/itineraries/components/report-media-modal/report-media-modal.component.mjs +0 -71
  100. package/esm2022/lib/itinerary-app/modules/itineraries/components/send-to-client/send-to-client.component.mjs +0 -41
  101. package/esm2022/lib/itinerary-app/modules/itineraries/components/share-popup/share-popup.component.mjs +0 -78
  102. package/esm2022/lib/itinerary-app/modules/itineraries/itineraries-routing.module.mjs +0 -296
  103. package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.component.mjs +0 -50
  104. package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.module.mjs +0 -350
  105. package/esm2022/lib/itinerary-app/modules/itineraries/pages/advanced-filters/advanced-filters.component.mjs +0 -150
  106. package/esm2022/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.mjs +0 -195
  107. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.mjs +0 -34
  108. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal/create-itinerary-modal.component.mjs +0 -52
  109. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal-item/create-itinerary-modal-item.component.mjs +0 -47
  110. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.mjs +0 -144
  111. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-destination/create-itinerary-destination.component.mjs +0 -57
  112. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.mjs +0 -280
  113. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-preview/create-itinerary-draw-preview.component.mjs +0 -242
  114. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-header/create-itinerary-header.component.mjs +0 -61
  115. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-member-details/create-itinerary-member-details.component.mjs +0 -59
  116. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-filter/create-itinerary-no-visual-filter.component.mjs +0 -234
  117. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-preview/create-itinerary-no-visual-preview.component.mjs +0 -157
  118. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-start-location/create-itinerary-start-location.component.mjs +0 -93
  119. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-user-search/create-itinerary-user-search.component.mjs +0 -75
  120. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.mjs +0 -61
  121. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-detail/created-itinerary-detail.component.mjs +0 -38
  122. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-map/created-itinerary-map.component.mjs +0 -319
  123. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.mjs +0 -91
  124. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-add-place.component.mjs +0 -76
  125. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-basic-info/itinerary-place-basic-info.component.mjs +0 -14
  126. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-date-time/itinerary-place-date-time.component.mjs +0 -12
  127. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-members/itinerary-place-members.component.mjs +0 -51
  128. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.mjs +0 -85
  129. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.mjs +0 -77
  130. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.mjs +0 -90
  131. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.mjs +0 -60
  132. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.mjs +0 -74
  133. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comment-replies/comment-replies.component.mjs +0 -257
  134. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comment-replies/components/comment-single/comment-single.component.mjs +0 -113
  135. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.mjs +0 -72
  136. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.mjs +0 -114
  137. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.mjs +0 -47
  138. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/handle-update-comment-request/handle-update-comment-request.component.mjs +0 -21
  139. package/esm2022/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.mjs +0 -103
  140. package/esm2022/lib/itinerary-app/modules/itineraries/pages/favorites/favorites.component.mjs +0 -41
  141. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-author-history/itinerary-author-history.component.mjs +0 -50
  142. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.mjs +0 -113
  143. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/map/map.component.mjs +0 -281
  144. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.mjs +0 -85
  145. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.mjs +0 -98
  146. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/existing-friends/existing-friends.component.mjs +0 -76
  147. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/friend-requests/friend-requests.component.mjs +0 -69
  148. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/itinerary-friends.component.mjs +0 -21
  149. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/list-friend-users/list-friend-users.component.mjs +0 -117
  150. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/all-people/all-people.component.mjs +0 -144
  151. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/existing-members/existing-members.component.mjs +0 -67
  152. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-members.component.mjs +0 -41
  153. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-sent-invites/itinerary-sent-invites.component.mjs +0 -79
  154. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.mjs +0 -77
  155. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.mjs +0 -53
  156. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.mjs +0 -52
  157. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.mjs +0 -53
  158. package/esm2022/lib/itinerary-app/modules/itineraries/pages/notifications/notifications.component.mjs +0 -53
  159. package/esm2022/lib/itinerary-app/modules/itineraries/pages/stories/story.component.mjs +0 -53
  160. package/esm2022/lib/itinerary-app/modules/pathway/components/googlemap/googlemap.component.mjs +0 -281
  161. package/esm2022/lib/itinerary-app/modules/pathway/components/map-header/map-header.component.mjs +0 -39
  162. package/esm2022/lib/itinerary-app/modules/pathway/pages/default-destination/default-destination.component.mjs +0 -26
  163. package/esm2022/lib/itinerary-app/modules/pathway/pages/itinerary-preview/itinerary-preview.component.mjs +0 -56
  164. package/esm2022/lib/itinerary-app/modules/pathway/pages/non-visual-map-filter/non-visual-map-filter.component.mjs +0 -30
  165. package/esm2022/lib/itinerary-app/modules/pathway/pathway-routing.module.mjs +0 -41
  166. package/esm2022/lib/itinerary-app/modules/pathway/pathway.component.mjs +0 -12
  167. package/esm2022/lib/itinerary-app/modules/pathway/pathway.module.mjs +0 -72
  168. package/esm2022/lib/itinerary-app/modules/search/components/clear-history-popup/clear-history-popup.component.mjs +0 -30
  169. package/esm2022/lib/itinerary-app/modules/search/components/quick-actions/quick-actions.component.mjs +0 -17
  170. package/esm2022/lib/itinerary-app/modules/search/components/recent-searches/recent-searches.component.mjs +0 -13
  171. package/esm2022/lib/itinerary-app/modules/search/components/recent-searches-item/recent-searches-item.component.mjs +0 -14
  172. package/esm2022/lib/itinerary-app/modules/search/components/recent-searches-list/recent-searches-list.component.mjs +0 -12
  173. package/esm2022/lib/itinerary-app/modules/search/components/search-chips/search-chips.component.mjs +0 -77
  174. package/esm2022/lib/itinerary-app/modules/search/components/search-results/search-results.component.mjs +0 -15
  175. package/esm2022/lib/itinerary-app/modules/search/components/serach-bottom-bar/serach-bottom-bar.component.mjs +0 -14
  176. package/esm2022/lib/itinerary-app/modules/search/components/serach-clear-history/serach-clear-history.component.mjs +0 -33
  177. package/esm2022/lib/itinerary-app/modules/search/pages/main-search/main-search.component.mjs +0 -243
  178. package/esm2022/lib/itinerary-app/modules/search/search-routing.module.mjs +0 -19
  179. package/esm2022/lib/itinerary-app/modules/search/search.component.mjs +0 -12
  180. package/esm2022/lib/itinerary-app/modules/search/search.module.mjs +0 -87
  181. package/esm2022/lib/itinerary-app/modules/user/profile/profile.component.mjs +0 -54
  182. package/esm2022/lib/itinerary-app/modules/user/user-routing.module.mjs +0 -22
  183. package/esm2022/lib/itinerary-app/modules/user/user.module.mjs +0 -36
  184. package/esm2022/lib/itinerary-app/shared/card-component/card-component.component.mjs +0 -127
  185. package/esm2022/lib/itinerary-app/shared/comment/comment-images/comment-images.component.mjs +0 -23
  186. package/esm2022/lib/itinerary-app/shared/comment/comment.component.mjs +0 -118
  187. package/esm2022/lib/itinerary-app/shared/custom-heading-with-button/custom-heading-with-button.component.mjs +0 -27
  188. package/esm2022/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.mjs +0 -162
  189. package/esm2022/lib/itinerary-app/shared/cutom-card/cutom-card.component.mjs +0 -94
  190. package/esm2022/lib/itinerary-app/shared/footer/components/bottom-navigation-items/bottom-navigation-items.component.mjs +0 -28
  191. package/esm2022/lib/itinerary-app/shared/footer/footer.component.mjs +0 -109
  192. package/esm2022/lib/itinerary-app/shared/header/header.component.mjs +0 -88
  193. package/esm2022/lib/itinerary-app/shared/image-viewer/image-viewer.component.mjs +0 -31
  194. package/esm2022/lib/itinerary-app/shared/notification-tile/notification-tile.component.mjs +0 -40
  195. package/esm2022/lib/itinerary-app/shared/search-popup/search-popup.component.mjs +0 -54
  196. package/esm2022/lib/itinerary-app/shared/shared.module.mjs +0 -206
  197. package/esm2022/lib/itinerary-app/shared/swiper-dialog/swiper-dialog.component.mjs +0 -46
  198. package/esm2022/lib/itinerary-app/shared/tab-bar/tab-bar.component.mjs +0 -62
  199. package/esm2022/lib/itinerary-app/shared/user-stack-tile/user-stack-tile.component.mjs +0 -51
  200. package/esm2022/lib/itinerary-app/shared/user-tile/user-tile.component.mjs +0 -28
  201. package/esm2022/lib/itinerary-app/shared/users-stack/users-stack.component.mjs +0 -47
  202. package/esm2022/public-api.mjs +0 -4
  203. package/lib/itinerary-app/_constants/constants.d.ts +0 -2
  204. package/lib/itinerary-app/_data/app-service.service.d.ts +0 -12
  205. package/lib/itinerary-app/_data/comment.service.d.ts +0 -19
  206. package/lib/itinerary-app/_data/itinerary-member.service.d.ts +0 -21
  207. package/lib/itinerary-app/_data/user-friends.service.d.ts +0 -19
  208. package/lib/itinerary-app/_data/vote.service.d.ts +0 -21
  209. package/lib/itinerary-app/_dtos/Itinerary-primary-info.dto.d.ts +0 -6
  210. package/lib/itinerary-app/_dtos/comment.dto.d.ts +0 -11
  211. package/lib/itinerary-app/_dtos/i-Itinerary-stats.dto.d.ts +0 -8
  212. package/lib/itinerary-app/_dtos/itinerary-member-complete.dto.d.ts +0 -6
  213. package/lib/itinerary-app/_dtos/itinerary-member.dto.d.ts +0 -5
  214. package/lib/itinerary-app/_dtos/vote.dto.d.ts +0 -10
  215. package/lib/itinerary-app/_enums/ItenariesRoutes.enum.d.ts +0 -62
  216. package/lib/itinerary-app/_enums/PathwayRoutes.enum.d.ts +0 -5
  217. package/lib/itinerary-app/_enums/endpoints/comment-request-endpoint.enum.d.ts +0 -9
  218. package/lib/itinerary-app/_enums/endpoints/gateway-request-enpoints.enum.d.ts +0 -4
  219. package/lib/itinerary-app/_enums/endpoints/itinerary-member-enpoint.enum.d.ts +0 -10
  220. package/lib/itinerary-app/_enums/endpoints/itinerary-request-endpoints.enum.d.ts +0 -8
  221. package/lib/itinerary-app/_enums/endpoints/user-friend-request-endpoints.enum.d.ts +0 -11
  222. package/lib/itinerary-app/_enums/endpoints/vote-request-endpoint.enum.d.ts +0 -6
  223. package/lib/itinerary-app/_enums/userRoutes.enum.d.ts +0 -3
  224. package/lib/itinerary-app/_interface/bottomNavigationList.d.ts +0 -11
  225. package/lib/itinerary-app/_interface/cardData.d.ts +0 -16
  226. package/lib/itinerary-app/_interface/commentsdata.d.ts +0 -14
  227. package/lib/itinerary-app/_interface/conditions.d.ts +0 -5
  228. package/lib/itinerary-app/_interface/dashboardSideBar.d.ts +0 -7
  229. package/lib/itinerary-app/_interface/filterMenuOptions.d.ts +0 -4
  230. package/lib/itinerary-app/_interface/i-gateway-request.interface.d.ts +0 -10
  231. package/lib/itinerary-app/_interface/i-gateway-response.interface.d.ts +0 -5
  232. package/lib/itinerary-app/_interface/icon.d.ts +0 -3
  233. package/lib/itinerary-app/_interface/notification.d.ts +0 -7
  234. package/lib/itinerary-app/_interface/pages.d.ts +0 -4
  235. package/lib/itinerary-app/_interface/presetRecord.d.ts +0 -5
  236. package/lib/itinerary-app/_interface/reportOptions.d.ts +0 -4
  237. package/lib/itinerary-app/_interface/search-popup.d.ts +0 -6
  238. package/lib/itinerary-app/_interface/searchResults.d.ts +0 -5
  239. package/lib/itinerary-app/_models/I-interest.d.ts +0 -4
  240. package/lib/itinerary-app/_models/Itinerary-stats.d.ts +0 -9
  241. package/lib/itinerary-app/_models/app-user.d.ts +0 -11
  242. package/lib/itinerary-app/_models/base.model.d.ts +0 -7
  243. package/lib/itinerary-app/_models/i-Itinerary.d.ts +0 -25
  244. package/lib/itinerary-app/_models/i-comment.d.ts +0 -15
  245. package/lib/itinerary-app/_models/i-image.d.ts +0 -6
  246. package/lib/itinerary-app/_models/i-itinerary-member.d.ts +0 -8
  247. package/lib/itinerary-app/_models/i-vote.schema.d.ts +0 -6
  248. package/lib/itinerary-app/_models/itinerary-location.d.ts +0 -16
  249. package/lib/itinerary-app/_models/itineraryMember.d.ts +0 -6
  250. package/lib/itinerary-app/_models/location-review.d.ts +0 -8
  251. package/lib/itinerary-app/_models/matching-clients.d.ts +0 -9
  252. package/lib/itinerary-app/_models/position-model.d.ts +0 -5
  253. package/lib/itinerary-app/_pipes/capitalize-first.pipe.d.ts +0 -7
  254. package/lib/itinerary-app/_pipes/time-ago.pipe.d.ts +0 -7
  255. package/lib/itinerary-app/_pipes/votes.pipe.d.ts +0 -7
  256. package/lib/itinerary-app/_services/api.service.d.ts +0 -14
  257. package/lib/itinerary-app/_services/assets.service.d.ts +0 -17
  258. package/lib/itinerary-app/_services/bottom-navigation.service.d.ts +0 -26
  259. package/lib/itinerary-app/_services/comment-image.service.d.ts +0 -8
  260. package/lib/itinerary-app/_services/constants.service.d.ts +0 -6
  261. package/lib/itinerary-app/_services/custom-dropdown-menu.service.d.ts +0 -37
  262. package/lib/itinerary-app/_services/itinerary.drawmode.transfer.d.ts +0 -27
  263. package/lib/itinerary-app/_services/itinerary.service.d.ts +0 -18
  264. package/lib/itinerary-app/_services/location.service.d.ts +0 -10
  265. package/lib/itinerary-app/_services/modal.clearhistory.service.d.ts +0 -9
  266. package/lib/itinerary-app/_services/modal.sendclient.service.d.ts +0 -9
  267. package/lib/itinerary-app/_services/modal.service.d.ts +0 -9
  268. package/lib/itinerary-app/_services/modal.shareurlservice.d.ts +0 -9
  269. package/lib/itinerary-app/_services/shadow-root-handler.service.d.ts +0 -6
  270. package/lib/itinerary-app/_services/share-popup-data.d.ts +0 -11
  271. package/lib/itinerary-app/initalize.app.d.ts +0 -2
  272. package/lib/itinerary-app/itinerary-lib-routing.module.d.ts +0 -7
  273. package/lib/itinerary-app/itinerary-lib.component.d.ts +0 -25
  274. package/lib/itinerary-app/itinerary-lib.module.d.ts +0 -18
  275. package/lib/itinerary-app/modules/archives/archives-routing.module.d.ts +0 -7
  276. package/lib/itinerary-app/modules/archives/archives.component.d.ts +0 -9
  277. package/lib/itinerary-app/modules/archives/archives.module.d.ts +0 -13
  278. package/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.d.ts +0 -32
  279. package/lib/itinerary-app/modules/dashboard/components/navbar/navbar.component.d.ts +0 -19
  280. package/lib/itinerary-app/modules/dashboard/components/sidebar/sidebar.component.d.ts +0 -16
  281. package/lib/itinerary-app/modules/dashboard/dashboard-routing.module.d.ts +0 -7
  282. package/lib/itinerary-app/modules/dashboard/dashboard.component.d.ts +0 -5
  283. package/lib/itinerary-app/modules/dashboard/dashboard.module.d.ts +0 -16
  284. package/lib/itinerary-app/modules/dashboard/pages/main-dashboard/main-dashboard.component.d.ts +0 -5
  285. package/lib/itinerary-app/modules/itineraries/components/app-header-desktop/app-header-desktop.component.d.ts +0 -5
  286. package/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.d.ts +0 -19
  287. package/lib/itinerary-app/modules/itineraries/components/comment-filter-menu/comment-filter-menu.component.d.ts +0 -21
  288. package/lib/itinerary-app/modules/itineraries/components/delete-itineraries/delete-itineraries.component.d.ts +0 -20
  289. package/lib/itinerary-app/modules/itineraries/components/filter-menu/filter-menu.component.d.ts +0 -21
  290. package/lib/itinerary-app/modules/itineraries/components/no-visual-map-filters/no-visual-map-filters.component.d.ts +0 -29
  291. package/lib/itinerary-app/modules/itineraries/components/report-itinerary-modal/report-itinerary-modal.component.d.ts +0 -28
  292. package/lib/itinerary-app/modules/itineraries/components/report-media-modal/report-media-modal.component.d.ts +0 -28
  293. package/lib/itinerary-app/modules/itineraries/components/send-to-client/send-to-client.component.d.ts +0 -21
  294. package/lib/itinerary-app/modules/itineraries/components/share-popup/share-popup.component.d.ts +0 -33
  295. package/lib/itinerary-app/modules/itineraries/itineraries-routing.module.d.ts +0 -7
  296. package/lib/itinerary-app/modules/itineraries/itineraries.component.d.ts +0 -20
  297. package/lib/itinerary-app/modules/itineraries/itineraries.module.d.ts +0 -83
  298. package/lib/itinerary-app/modules/itineraries/pages/advanced-filters/advanced-filters.component.d.ts +0 -43
  299. package/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.d.ts +0 -40
  300. package/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.d.ts +0 -15
  301. package/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal/create-itinerary-modal.component.d.ts +0 -21
  302. package/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal-item/create-itinerary-modal-item.component.d.ts +0 -20
  303. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.d.ts +0 -42
  304. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-destination/create-itinerary-destination.component.d.ts +0 -23
  305. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.d.ts +0 -58
  306. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-preview/create-itinerary-draw-preview.component.d.ts +0 -51
  307. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-header/create-itinerary-header.component.d.ts +0 -22
  308. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-member-details/create-itinerary-member-details.component.d.ts +0 -14
  309. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-filter/create-itinerary-no-visual-filter.component.d.ts +0 -50
  310. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-preview/create-itinerary-no-visual-preview.component.d.ts +0 -27
  311. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-start-location/create-itinerary-start-location.component.d.ts +0 -32
  312. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-user-search/create-itinerary-user-search.component.d.ts +0 -28
  313. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.d.ts +0 -24
  314. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-detail/created-itinerary-detail.component.d.ts +0 -21
  315. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-map/created-itinerary-map.component.d.ts +0 -40
  316. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.d.ts +0 -25
  317. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-add-place.component.d.ts +0 -25
  318. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-basic-info/itinerary-place-basic-info.component.d.ts +0 -7
  319. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-date-time/itinerary-place-date-time.component.d.ts +0 -5
  320. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-members/itinerary-place-members.component.d.ts +0 -20
  321. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.d.ts +0 -26
  322. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.d.ts +0 -26
  323. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.d.ts +0 -27
  324. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.d.ts +0 -24
  325. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.d.ts +0 -27
  326. package/lib/itinerary-app/modules/itineraries/pages/comment-replies/comment-replies.component.d.ts +0 -47
  327. package/lib/itinerary-app/modules/itineraries/pages/comment-replies/components/comment-single/comment-single.component.d.ts +0 -45
  328. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.d.ts +0 -25
  329. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.d.ts +0 -26
  330. package/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.d.ts +0 -12
  331. package/lib/itinerary-app/modules/itineraries/pages/comments/handle-update-comment-request/handle-update-comment-request.component.d.ts +0 -9
  332. package/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.d.ts +0 -39
  333. package/lib/itinerary-app/modules/itineraries/pages/favorites/favorites.component.d.ts +0 -21
  334. package/lib/itinerary-app/modules/itineraries/pages/itinerary-author-history/itinerary-author-history.component.d.ts +0 -13
  335. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.d.ts +0 -20
  336. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/map/map.component.d.ts +0 -38
  337. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.d.ts +0 -30
  338. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.d.ts +0 -25
  339. package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/existing-friends/existing-friends.component.d.ts +0 -33
  340. package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/friend-requests/friend-requests.component.d.ts +0 -28
  341. package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/itinerary-friends.component.d.ts +0 -9
  342. package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/list-friend-users/list-friend-users.component.d.ts +0 -38
  343. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/all-people/all-people.component.d.ts +0 -43
  344. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/existing-members/existing-members.component.d.ts +0 -29
  345. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-members.component.d.ts +0 -13
  346. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-sent-invites/itinerary-sent-invites.component.d.ts +0 -34
  347. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.d.ts +0 -31
  348. package/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.d.ts +0 -24
  349. package/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.d.ts +0 -24
  350. package/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.d.ts +0 -24
  351. package/lib/itinerary-app/modules/itineraries/pages/notifications/notifications.component.d.ts +0 -26
  352. package/lib/itinerary-app/modules/itineraries/pages/stories/story.component.d.ts +0 -27
  353. package/lib/itinerary-app/modules/pathway/components/googlemap/googlemap.component.d.ts +0 -35
  354. package/lib/itinerary-app/modules/pathway/components/map-header/map-header.component.d.ts +0 -15
  355. package/lib/itinerary-app/modules/pathway/pages/default-destination/default-destination.component.d.ts +0 -11
  356. package/lib/itinerary-app/modules/pathway/pages/itinerary-preview/itinerary-preview.component.d.ts +0 -29
  357. package/lib/itinerary-app/modules/pathway/pages/non-visual-map-filter/non-visual-map-filter.component.d.ts +0 -20
  358. package/lib/itinerary-app/modules/pathway/pathway-routing.module.d.ts +0 -7
  359. package/lib/itinerary-app/modules/pathway/pathway.component.d.ts +0 -5
  360. package/lib/itinerary-app/modules/pathway/pathway.module.d.ts +0 -20
  361. package/lib/itinerary-app/modules/search/components/clear-history-popup/clear-history-popup.component.d.ts +0 -14
  362. package/lib/itinerary-app/modules/search/components/quick-actions/quick-actions.component.d.ts +0 -9
  363. package/lib/itinerary-app/modules/search/components/recent-searches/recent-searches.component.d.ts +0 -5
  364. package/lib/itinerary-app/modules/search/components/recent-searches-item/recent-searches-item.component.d.ts +0 -7
  365. package/lib/itinerary-app/modules/search/components/recent-searches-list/recent-searches-list.component.d.ts +0 -5
  366. package/lib/itinerary-app/modules/search/components/search-chips/search-chips.component.d.ts +0 -24
  367. package/lib/itinerary-app/modules/search/components/search-results/search-results.component.d.ts +0 -8
  368. package/lib/itinerary-app/modules/search/components/serach-bottom-bar/serach-bottom-bar.component.d.ts +0 -7
  369. package/lib/itinerary-app/modules/search/components/serach-clear-history/serach-clear-history.component.d.ts +0 -16
  370. package/lib/itinerary-app/modules/search/pages/main-search/main-search.component.d.ts +0 -74
  371. package/lib/itinerary-app/modules/search/search-routing.module.d.ts +0 -7
  372. package/lib/itinerary-app/modules/search/search.component.d.ts +0 -5
  373. package/lib/itinerary-app/modules/search/search.module.d.ts +0 -22
  374. package/lib/itinerary-app/modules/user/profile/profile.component.d.ts +0 -12
  375. package/lib/itinerary-app/modules/user/user-routing.module.d.ts +0 -7
  376. package/lib/itinerary-app/modules/user/user.module.d.ts +0 -11
  377. package/lib/itinerary-app/shared/card-component/card-component.component.d.ts +0 -42
  378. package/lib/itinerary-app/shared/comment/comment-images/comment-images.component.d.ts +0 -9
  379. package/lib/itinerary-app/shared/comment/comment.component.d.ts +0 -46
  380. package/lib/itinerary-app/shared/custom-heading-with-button/custom-heading-with-button.component.d.ts +0 -11
  381. package/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.d.ts +0 -44
  382. package/lib/itinerary-app/shared/cutom-card/cutom-card.component.d.ts +0 -50
  383. package/lib/itinerary-app/shared/footer/components/bottom-navigation-items/bottom-navigation-items.component.d.ts +0 -10
  384. package/lib/itinerary-app/shared/footer/footer.component.d.ts +0 -23
  385. package/lib/itinerary-app/shared/header/header.component.d.ts +0 -17
  386. package/lib/itinerary-app/shared/image-viewer/image-viewer.component.d.ts +0 -16
  387. package/lib/itinerary-app/shared/notification-tile/notification-tile.component.d.ts +0 -20
  388. package/lib/itinerary-app/shared/search-popup/search-popup.component.d.ts +0 -23
  389. package/lib/itinerary-app/shared/shared.module.d.ts +0 -33
  390. package/lib/itinerary-app/shared/swiper-dialog/swiper-dialog.component.d.ts +0 -26
  391. package/lib/itinerary-app/shared/tab-bar/tab-bar.component.d.ts +0 -17
  392. package/lib/itinerary-app/shared/user-stack-tile/user-stack-tile.component.d.ts +0 -22
  393. package/lib/itinerary-app/shared/user-tile/user-tile.component.d.ts +0 -12
  394. package/lib/itinerary-app/shared/users-stack/users-stack.component.d.ts +0 -19
  395. package/public-api.d.ts +0 -3
  396. package/src/assets/icons/food-pink.png +0 -0
  397. package/src/assets/icons/food.png +0 -0
  398. package/src/assets/jsons/reports-options.json +0 -12
@@ -1,234 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
- import { ICONS } from '../../../../../../_constants/constants';
3
- import { ItinerariesRoutesEnum } from '../../../../../../_enums/ItenariesRoutes.enum';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- import * as i2 from "../../../../../../_services/itinerary.service";
7
- import * as i3 from "../../../../../../_services/location.service";
8
- import * as i4 from "../../../../../../_services/itinerary.drawmode.transfer";
9
- import * as i5 from "@angular/common";
10
- import * as i6 from "@naniteninja/ionic-lib";
11
- import * as i7 from "../../../../components/no-visual-map-filters/no-visual-map-filters.component";
12
- import * as i8 from "../create-itinerary-header/create-itinerary-header.component";
13
- import * as i9 from "@ngx-translate/core";
14
- const defaultIcon = 'assets/icons/map-markers-yellow.svg';
15
- const selectedIcon = 'assets/icons/restu-icon-large.svg';
16
- export class CreateItineraryNoVisualFilterComponent {
17
- router;
18
- activatedRoute;
19
- itineraryService;
20
- locationService;
21
- cdr;
22
- transferService;
23
- ICONS = ICONS;
24
- isOpen = true;
25
- actions = [ICONS['location'], ICONS['pencil'], ICONS['ban']];
26
- selected = this.actions[2];
27
- itinerary;
28
- libMap;
29
- initialLocation = { lat: 24.8607, lng: 67.0011 };
30
- selectedMarkers = [];
31
- placeMarkers = [];
32
- openFilters = false;
33
- plottedMarkers = [];
34
- constructor(router, activatedRoute, itineraryService, locationService, cdr, transferService) {
35
- this.router = router;
36
- this.activatedRoute = activatedRoute;
37
- this.itineraryService = itineraryService;
38
- this.locationService = locationService;
39
- this.cdr = cdr;
40
- this.transferService = transferService;
41
- }
42
- searchRestaurantsInView() {
43
- const map = this.libMap.map.googleMap;
44
- if (map) {
45
- const bounds = map.getBounds(); // Get current visible area
46
- if (!bounds)
47
- return;
48
- const service = new google.maps.places.PlacesService(map);
49
- service.nearbySearch({
50
- bounds: bounds,
51
- type: 'restaurant',
52
- }, (results, status) => {
53
- if (status === google.maps.places.PlacesServiceStatus.OK && results) {
54
- results.forEach((place) => {
55
- this.addCustomMarker(place);
56
- });
57
- }
58
- });
59
- }
60
- }
61
- addCustomMarker(place) {
62
- const marker = new google.maps.Marker({
63
- map: this.libMap.map.googleMap,
64
- position: place.geometry?.location,
65
- title: place.name,
66
- icon: {
67
- url: 'assets/icons/map-markers-yellow.svg',
68
- },
69
- });
70
- this.plottedMarkers.push(marker);
71
- this.placeMarkers.push({
72
- place: place,
73
- marker: marker
74
- });
75
- marker.addListener('click', () => {
76
- // Toggle selection
77
- const index = this.selectedMarkers.indexOf(marker);
78
- if (index > -1) {
79
- // Marker was already selected → deselect
80
- marker.setIcon(defaultIcon);
81
- this.selectedMarkers.splice(index, 1);
82
- }
83
- else {
84
- // Select marker
85
- marker.setIcon(selectedIcon);
86
- this.selectedMarkers.push(marker);
87
- }
88
- });
89
- }
90
- continueBuilding() {
91
- const selectedPlaces = this.selectedMarkers.map((selectedMarker) => {
92
- const placeMarker = this.placeMarkers.find(placeMarker => placeMarker.marker === selectedMarker);
93
- return placeMarker.place;
94
- });
95
- const allPlaces = this.placeMarkers.map(placeMarker => placeMarker.place);
96
- this.transferService.setPlaces(allPlaces);
97
- this.transferService.setSelectedPlaces(selectedPlaces);
98
- this.transferService.setCurrentLocation(this.initialLocation);
99
- this.router.navigate([
100
- ItinerariesRoutesEnum.ITINERARY,
101
- ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE,
102
- ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE_PREVIEW,
103
- this.itinerary?._id
104
- ]);
105
- }
106
- ngAfterViewInit() {
107
- this.locationService.getCurrentLocation()
108
- .subscribe((location) => {
109
- this.libMap.map.googleMap?.setCenter({
110
- lat: location.lat,
111
- lng: location.long
112
- });
113
- //Set the initial location of the user
114
- this.initialLocation = {
115
- lat: location.lat,
116
- lng: location.long
117
- };
118
- this.libMap.map.googleMap?.setZoom(15);
119
- //Add marker for user position
120
- new google.maps.Marker({
121
- map: this.libMap.map.googleMap,
122
- position: {
123
- lat: location.lat,
124
- lng: location.long
125
- },
126
- title: 'You are here',
127
- icon: {
128
- url: 'assets/current_location.svg',
129
- scaledSize: new google.maps.Size(40, 40),
130
- },
131
- });
132
- this.searchRestaurantsInView();
133
- });
134
- }
135
- showBottomModal() {
136
- this.isOpen = true;
137
- this.cdr.detectChanges();
138
- }
139
- ngOnInit() {
140
- const id = this.activatedRoute.snapshot.params['id'];
141
- if (id) {
142
- this.itineraryService.getById(id).subscribe((itinerary) => {
143
- this.itinerary = itinerary;
144
- });
145
- }
146
- }
147
- toggleFilter() {
148
- this.openFilters = !this.openFilters;
149
- }
150
- onPresetsChanged(conditions) {
151
- this.filterPlacesInView(conditions);
152
- }
153
- onbackButtonClicked() {
154
- this.toggleFilter();
155
- }
156
- updateAction(action) {
157
- this.selected = action;
158
- if (action === this.actions[0]) {
159
- this.router.navigate([
160
- ItinerariesRoutesEnum.ITINERARY,
161
- ItinerariesRoutesEnum.CREATE_ITINERARY_ORIGIN,
162
- this.itinerary?._id
163
- ]);
164
- }
165
- if (action === this.actions[1]) {
166
- this.router.navigate([
167
- ItinerariesRoutesEnum.ITINERARY,
168
- ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE,
169
- ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE_CREATE,
170
- this.itinerary?._id,
171
- ]);
172
- }
173
- }
174
- filterPlacesInView(filters) {
175
- const map = this.libMap.map.googleMap;
176
- if (map) {
177
- const bounds = map.getBounds(); // Get current visible area
178
- if (!bounds)
179
- return;
180
- const service = new google.maps.places.PlacesService(map);
181
- // Extract values from filters
182
- let typeFilter;
183
- let openNowFilter;
184
- let ratingFilter;
185
- filters.forEach((filter) => {
186
- if (filter.field === 'type') {
187
- typeFilter = filter.condition;
188
- }
189
- else if (filter.field === 'open_now') {
190
- openNowFilter = filter.condition === 'true';
191
- }
192
- else if (filter.field === 'rating') {
193
- const match = filter.condition.match(/>=\s*(\d+(?:\.\d+)?)/);
194
- if (match) {
195
- ratingFilter = parseFloat(match[1]);
196
- }
197
- }
198
- });
199
- service.nearbySearch({
200
- bounds: bounds,
201
- type: typeFilter,
202
- openNow: openNowFilter, // true or false
203
- }, (results, status) => {
204
- if (status === google.maps.places.PlacesServiceStatus.OK && results) {
205
- const filtered = ratingFilter
206
- ? results.filter(place => {
207
- const rating = place.rating ?? 0;
208
- return rating >= ratingFilter;
209
- })
210
- : results;
211
- if (this.plottedMarkers.length) {
212
- this.plottedMarkers.forEach((marker) => {
213
- marker.setMap(null);
214
- });
215
- }
216
- this.selectedMarkers = [];
217
- filtered.forEach(place => {
218
- this.addCustomMarker(place);
219
- });
220
- }
221
- });
222
- }
223
- }
224
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualFilterComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ItineraryService }, { token: i3.LocationService }, { token: i0.ChangeDetectorRef }, { token: i4.ItineraryDrawModeTransferService }], target: i0.ɵɵFactoryTarget.Component });
225
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryNoVisualFilterComponent, selector: "lib-create-itinerary-no-visual-filter", viewQueries: [{ propertyName: "libMap", first: true, predicate: ["libMap"], descendants: true }], ngImport: i0, template: "<app-create-itinerary-header\r\n [progressBarValue]=\"50\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<img\r\n (click)=\"toggleFilter()\"\r\n class=\"cursor-pointer\"\r\n style=\"position: absolute; right: 10px; top: 20%; z-index: 99;\"\r\n [src]=\"ICONS['dotsIcon']\"\r\n alt=\"icon\"\r\n height=\"40\"\r\n width=\"40\"\r\n />\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n<div class=\"filter-page\" *ngIf=\"openFilters\">\r\n <lib-no-visual-map-filters\r\n (presetsChanged)=\"onPresetsChanged($event)\"\r\n (backButtonClicked)=\"onbackButtonClicked()\"\r\n ></lib-no-visual-map-filters>\r\n</div>\r\n<lib-bottom-modal\r\n [showArrow]=\"true\"\r\n [(isOpen)]=\"isOpen\"\r\n [adaptToContentHeight]=\"true\"\r\n>\r\n <div class=\"pl-4 pr-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <h3 class=\"font-Calistoga text-lg\">{{ \"NO_VISUAL_FILTERS\"| translate }}</h3>\r\n <div class=\"selectables flex items-center\">\r\n <div\r\n (click)=\"updateAction(a)\"\r\n class=\"flex items-center justify-center actions\"\r\n *ngFor=\"let a of actions\"\r\n [ngClass]=\"{ selected: a === selected }\"\r\n >\r\n <img [src]=\"a\" alt=\"icon\" loading=\"lazy\" />\r\n </div>\r\n </div>\r\n </div>\r\n <p class=\"mt-3 mb-4\">{{ \"NO_VISUAL_FILTERS\"| translate }}</p>\r\n </div>\r\n <lib-footer-shared\r\n (continueButtonClick)=\"continueBuilding()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'COMMON.CONTINUE' | translate\"\r\n ></lib-footer-shared>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [":host{--lib-popup-modal-radius: 16px;--border-radius: var(--lib-popup-modal-radius);--lib-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--lib-popup-modal-color: #a8a8a8;--color: var(--lib-popup-modal-color, #a8a8a8);--max-width: var(--lib-bottom-modal-max-width, 500px);--lib-popup-modal-shadow: 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) !important;--box-shadow: var( --lib-popup-modal-shadow, 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) )}.selectables{background:#28252d;box-shadow:4.1px 4.1px 8.2px #00000052 inset;box-shadow:-2.46px -2.46px 3.28px #ffffff1a inset;border-radius:27.9px}.actions{width:42px;height:28px;border-radius:82.05px}.selected{background:linear-gradient(94.44deg,#fe3c72 1.26%,#e15561);box-shadow:3.28px 3.28px 6.56px #00000040;box-shadow:-1.64px -1.64px 8.2px #ffffff40}.button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}.filter-page{position:fixed;height:100vh;width:100vw;z-index:99999;top:0;background-color:#27242c}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "directive", type: i6.LazyImageDirective, selector: "img" }, { kind: "component", type: i6.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i7.NoVisualMapFiltersComponent, selector: "lib-no-visual-map-filters", outputs: ["presetsChanged", "backButtonClicked"] }, { kind: "component", type: i8.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
226
- }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualFilterComponent, decorators: [{
228
- type: Component,
229
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'lib-create-itinerary-no-visual-filter', template: "<app-create-itinerary-header\r\n [progressBarValue]=\"50\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<img\r\n (click)=\"toggleFilter()\"\r\n class=\"cursor-pointer\"\r\n style=\"position: absolute; right: 10px; top: 20%; z-index: 99;\"\r\n [src]=\"ICONS['dotsIcon']\"\r\n alt=\"icon\"\r\n height=\"40\"\r\n width=\"40\"\r\n />\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n<div class=\"filter-page\" *ngIf=\"openFilters\">\r\n <lib-no-visual-map-filters\r\n (presetsChanged)=\"onPresetsChanged($event)\"\r\n (backButtonClicked)=\"onbackButtonClicked()\"\r\n ></lib-no-visual-map-filters>\r\n</div>\r\n<lib-bottom-modal\r\n [showArrow]=\"true\"\r\n [(isOpen)]=\"isOpen\"\r\n [adaptToContentHeight]=\"true\"\r\n>\r\n <div class=\"pl-4 pr-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <h3 class=\"font-Calistoga text-lg\">{{ \"NO_VISUAL_FILTERS\"| translate }}</h3>\r\n <div class=\"selectables flex items-center\">\r\n <div\r\n (click)=\"updateAction(a)\"\r\n class=\"flex items-center justify-center actions\"\r\n *ngFor=\"let a of actions\"\r\n [ngClass]=\"{ selected: a === selected }\"\r\n >\r\n <img [src]=\"a\" alt=\"icon\" loading=\"lazy\" />\r\n </div>\r\n </div>\r\n </div>\r\n <p class=\"mt-3 mb-4\">{{ \"NO_VISUAL_FILTERS\"| translate }}</p>\r\n </div>\r\n <lib-footer-shared\r\n (continueButtonClick)=\"continueBuilding()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'COMMON.CONTINUE' | translate\"\r\n ></lib-footer-shared>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [":host{--lib-popup-modal-radius: 16px;--border-radius: var(--lib-popup-modal-radius);--lib-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--lib-popup-modal-color: #a8a8a8;--color: var(--lib-popup-modal-color, #a8a8a8);--max-width: var(--lib-bottom-modal-max-width, 500px);--lib-popup-modal-shadow: 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) !important;--box-shadow: var( --lib-popup-modal-shadow, 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) )}.selectables{background:#28252d;box-shadow:4.1px 4.1px 8.2px #00000052 inset;box-shadow:-2.46px -2.46px 3.28px #ffffff1a inset;border-radius:27.9px}.actions{width:42px;height:28px;border-radius:82.05px}.selected{background:linear-gradient(94.44deg,#fe3c72 1.26%,#e15561);box-shadow:3.28px 3.28px 6.56px #00000040;box-shadow:-1.64px -1.64px 8.2px #ffffff40}.button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}.filter-page{position:fixed;height:100vh;width:100vw;z-index:99999;top:0;background-color:#27242c}\n"] }]
230
- }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ItineraryService }, { type: i3.LocationService }, { type: i0.ChangeDetectorRef }, { type: i4.ItineraryDrawModeTransferService }], propDecorators: { libMap: [{
231
- type: ViewChild,
232
- args: ['libMap']
233
- }] } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1maWx0ZXIvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1maWx0ZXIvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7OztBQU90RixNQUFNLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQztBQUMxRCxNQUFNLFlBQVksR0FBRyxtQ0FBbUMsQ0FBQztBQVN6RCxNQUFNLE9BQU8sc0NBQXNDO0lBaUJ2QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFyQlYsS0FBSyxHQUFVLEtBQUssQ0FBQztJQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsT0FBTyxHQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxF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eyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWljb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9faW50ZXJmYWNlL2ljb24nO1xyXG5pbXBvcnQgeyBJQ09OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEl0aW5lcmFyaWVzUm91dGVzRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19lbnVtcy9JdGVuYXJpZXNSb3V0ZXMuZW51bSc7XHJcbmltcG9ydCB7IElJdGluZXJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fbW9kZWxzL2ktSXRpbmVyYXJ5JztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9sb2NhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGliTWFwc0NvbXBvbmVudCB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlEcmF3TW9kZVRyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuZHJhd21vZGUudHJhbnNmZXInO1xyXG5pbXBvcnQgeyBJQ29uZGl0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19pbnRlcmZhY2UvY29uZGl0aW9ucyc7XHJcbmNvbnN0IGRlZmF1bHRJY29uID0gJ2Fzc2V0cy9pY29ucy9tYXAtbWFya2Vycy15ZWxsb3cuc3ZnJztcclxuY29uc3Qgc2VsZWN0ZWRJY29uID0gJ2Fzc2V0cy9pY29ucy9yZXN0dS1pY29uLWxhcmdlLnN2Zyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc2VsZWN0b3I6ICdsaWItY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVJdGluZXJhcnlOb1Zpc3VhbEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgSUNPTlM6IElpY29uID0gSUNPTlM7XHJcbiAgaXNPcGVuID0gdHJ1ZTtcclxuICBhY3Rpb25zOiBzdHJpbmdbXSA9IFtJQ09OU1snbG9jYXRpb24nXSwgSUNPTlNbJ3BlbmNpbCddLCBJQ09OU1snYmFuJ11dO1xyXG4gIHNlbGVjdGVkOiBzdHJpbmcgPSB0aGlzLmFjdGlvbnNbMl07XHJcbiAgaXRpbmVyYXJ5ITogSUl0aW5lcmFyeSB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdsaWJNYXAnKSBsaWJNYXAhOiBMaWJNYXBzQ29tcG9uZW50O1xyXG4gIGluaXRpYWxMb2NhdGlvbiA9IHsgbGF0OiAyNC44NjA3LCBsbmc6IDY3LjAwMTEgfTtcclxuICBzZWxlY3RlZE1hcmtlcnM6IGdvb2dsZS5tYXBzLk1hcmtlcltdID0gW107XHJcbiAgcGxhY2VNYXJrZXJzOiB7XHJcbiAgICBtYXJrZXI6IGdvb2dsZS5tYXBzLk1hcmtlcixcclxuICAgIHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHRcclxuICB9W10gPSBbXTtcclxuICBvcGVuRmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBsb3R0ZWRNYXJrZXJzOiBnb29nbGUubWFwcy5NYXJrZXJbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgaXRpbmVyYXJ5U2VydmljZTogSXRpbmVyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb25TZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRyYW5zZmVyU2VydmljZTogSXRpbmVyYXJ5RHJhd01vZGVUcmFuc2ZlclNlcnZpY2VcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBzZWFyY2hSZXN0YXVyYW50c0luVmlldygpIHtcclxuICAgIGNvbnN0IG1hcCA9IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhO1xyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7IC8vIEdldCBjdXJyZW50IHZpc2libGUgYXJlYVxyXG4gICAgICBpZiAoIWJvdW5kcykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShtYXApO1xyXG5cclxuICAgICAgc2VydmljZS5uZWFyYnlTZWFyY2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYm91bmRzOiBib3VuZHMsXHJcbiAgICAgICAgICB0eXBlOiAncmVzdGF1cmFudCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoXHJcbiAgICAgICAgICByZXN1bHRzOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHRbXSB8IG51bGwsXHJcbiAgICAgICAgICBzdGF0dXM6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLFxyXG4gICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0sgJiYgcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZEN1c3RvbU1hcmtlcihwbGFjZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDdXN0b21NYXJrZXIocGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCkge1xyXG4gICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcbiAgICAgIG1hcDogdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCxcclxuICAgICAgcG9zaXRpb246IHBsYWNlLmdlb21ldHJ5Py5sb2NhdGlvbixcclxuICAgICAgdGl0bGU6IHBsYWNlLm5hbWUsXHJcbiAgICAgIGljb246IHtcclxuICAgICAgICB1cmw6ICdhc3NldHMvaWNvbnMvbWFwLW1hcmtlcnMteWVsbG93LnN2ZycsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMucGxvdHRlZE1hcmtlcnMucHVzaChtYXJrZXIpO1xyXG4gICAgdGhpcy5wbGFjZU1hcmtlcnMucHVzaCh7XHJcbiAgICAgIHBsYWNlOiBwbGFjZSxcclxuICAgICAgbWFya2VyOiBtYXJrZXJcclxuICAgIH0pO1xyXG4gICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy8gVG9nZ2xlIHNlbGVjdGlvblxyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRNYXJrZXJzLmluZGV4T2YobWFya2VyKTtcclxuXHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgLy8gTWFya2VyIHdhcyBhbHJlYWR5IHNlbGVjdGVkIOKGkiBkZXNlbGVjdFxyXG4gICAgICAgIG1hcmtlci5zZXRJY29uKGRlZmF1bHRJY29uKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWFya2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFNlbGVjdCBtYXJrZXJcclxuICAgICAgICBtYXJrZXIuc2V0SWNvbihzZWxlY3RlZEljb24pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb250aW51ZUJ1aWxkaW5nKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRQbGFjZXMgPSB0aGlzLnNlbGVjdGVkTWFya2Vycy5tYXAoKHNlbGVjdGVkTWFya2VyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlTWFya2VyID0gdGhpcy5wbGFjZU1hcmtlcnMuZmluZChwbGFjZU1hcmtlciA9PiBwbGFjZU1hcmtlci5tYXJrZXIgPT09IHNlbGVjdGVkTWFya2VyKTtcclxuICAgICAgcmV0dXJuIHBsYWNlTWFya2VyIS5wbGFjZTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYWxsUGxhY2VzID0gdGhpcy5wbGFjZU1hcmtlcnMubWFwKHBsYWNlTWFya2VyID0+IHBsYWNlTWFya2VyLnBsYWNlKTtcclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNldFBsYWNlcyhhbGxQbGFjZXMpO1xyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0U2VsZWN0ZWRQbGFjZXMoc2VsZWN0ZWRQbGFjZXMpO1xyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0Q3VycmVudExvY2F0aW9uKHRoaXMuaW5pdGlhbExvY2F0aW9uKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5JVElORVJBUlksXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX05PX1ZJU1VBTF9GSUxURVJfTU9ERSxcclxuICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfTk9fVklTVUFMX0ZJTFRFUl9NT0RFX1BSRVZJRVcsXHJcbiAgICAgIHRoaXMuaXRpbmVyYXJ5Py5faWRcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb24oKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2NhdGlvbikgPT4ge1xyXG4gICAgICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXA/LnNldENlbnRlcih7XHJcbiAgICAgICAgICBsYXQ6IGxvY2F0aW9uLmxhdCxcclxuICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL1NldCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgdXNlclxyXG4gICAgICAgIHRoaXMuaW5pdGlhbExvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICBsbmc6IGxvY2F0aW9uLmxvbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcD8uc2V0Wm9vbSgxNSk7XHJcblxyXG4gICAgICAgIC8vQWRkIG1hcmtlciBmb3IgdXNlciBwb3NpdGlvblxyXG4gICAgICAgIG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwLFxyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRpdGxlOiAnWW91IGFyZSBoZXJlJyxcclxuICAgICAgICAgIGljb246IHtcclxuICAgICAgICAgICAgdXJsOiAnYXNzZXRzL2N1cnJlbnRfbG9jYXRpb24uc3ZnJyxcclxuICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoNDAsIDQwKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdGF1cmFudHNJblZpZXcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93Qm90dG9tTW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5pdGluZXJhcnlTZXJ2aWNlLmdldEJ5SWQoaWQpLnN1YnNjcmliZSgoaXRpbmVyYXJ5KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pdGluZXJhcnkgPSBpdGluZXJhcnk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5vcGVuRmlsdGVycyA9ICF0aGlzLm9wZW5GaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRzQ2hhbmdlZChjb25kaXRpb25zOiBJQ29uZGl0aW9uc1tdKSB7XHJcbiAgICB0aGlzLmZpbHRlclBsYWNlc0luVmlldyhjb25kaXRpb25zKTtcclxuICB9XHJcblxyXG4gIG9uYmFja0J1dHRvbkNsaWNrZWQoKSB7XHJcbiAgICB0aGlzLnRvZ2dsZUZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQWN0aW9uKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBhY3Rpb247XHJcbiAgICAgIGlmKGFjdGlvbiA9PT0gdGhpcy5hY3Rpb25zWzBdKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xyXG4gICAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLklUSU5FUkFSWSxcclxuICAgICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX09SSUdJTixcclxuICAgICAgICAgIHRoaXMuaXRpbmVyYXJ5Py5faWRcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgICBpZihhY3Rpb24gPT09IHRoaXMuYWN0aW9uc1sxXSkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcclxuICAgICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5JVElORVJBUlksXHJcbiAgICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9EUkFXX01PREUsXHJcbiAgICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9EUkFXX01PREVfQ1JFQVRFLFxyXG4gICAgICAgICAgdGhpcy5pdGluZXJhcnk/Ll9pZCxcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBmaWx0ZXJQbGFjZXNJblZpZXcoZmlsdGVyczogSUNvbmRpdGlvbnNbXSkge1xyXG4gIGNvbnN0IG1hcCA9IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhO1xyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7IC8vIEdldCBjdXJyZW50IHZpc2libGUgYXJlYVxyXG4gICAgICBpZiAoIWJvdW5kcykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShtYXApO1xyXG5cclxuICAgICAgLy8gRXh0cmFjdCB2YWx1ZXMgZnJvbSBmaWx0ZXJzXHJcbiAgICAgIGxldCB0eXBlRmlsdGVyOiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgICBsZXQgb3Blbk5vd0ZpbHRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgICAgbGV0IHJhdGluZ0ZpbHRlcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IElDb25kaXRpb25zKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ3R5cGUnKSB7XHJcbiAgICAgICAgICB0eXBlRmlsdGVyID0gZmlsdGVyLmNvbmRpdGlvbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5maWVsZCA9PT0gJ29wZW5fbm93Jykge1xyXG4gICAgICAgICAgb3Blbk5vd0ZpbHRlciA9IGZpbHRlci5jb25kaXRpb24gPT09ICd0cnVlJztcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5maWVsZCA9PT0gJ3JhdGluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gKGZpbHRlci5jb25kaXRpb24gYXMgc3RyaW5nKS5tYXRjaCgvPj1cXHMqKFxcZCsoPzpcXC5cXGQrKT8pLyk7XHJcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgcmF0aW5nRmlsdGVyID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHNlcnZpY2UubmVhcmJ5U2VhcmNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJvdW5kczogYm91bmRzLFxyXG4gICAgICAgICAgdHlwZTogdHlwZUZpbHRlciEgYXMgc3RyaW5nLCAvLyBlLmcuICdyZXN0YXVyYW50J1xyXG4gICAgICAgICAgb3Blbk5vdzogb3Blbk5vd0ZpbHRlciwgLy8gdHJ1ZSBvciBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgcmVzdWx0czogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0W10gfCBudWxsLFxyXG4gICAgICAgICAgc3RhdHVzOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1c1xyXG4gICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0sgJiYgcmVzdWx0cykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHJhdGluZ0ZpbHRlclxyXG4gICAgICAgICAgICAgID8gcmVzdWx0cy5maWx0ZXIocGxhY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByYXRpbmcgPSBwbGFjZS5yYXRpbmcgPz8gMDtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhdGluZyA+PSByYXRpbmdGaWx0ZXIhO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICA6IHJlc3VsdHM7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGxvdHRlZE1hcmtlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wbG90dGVkTWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG1hcmtlci5zZXRNYXAobnVsbCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMgPSBbXTtcclxuICAgICAgICAgICAgZmlsdGVyZWQuZm9yRWFjaChwbGFjZSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21NYXJrZXIocGxhY2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXJcclxuICBbcHJvZ3Jlc3NCYXJWYWx1ZV09XCI1MFwiXHJcbiAgaGVhZGluZz1cIkNyZWF0ZSBJdGluZXJhcnlcIlxyXG4+PC9hcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXI+XHJcbjxpbWdcclxuICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXIoKVwiXHJcbiAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyByaWdodDogMTBweDsgdG9wOiAyMCU7IHotaW5kZXg6IDk5O1wiXHJcbiAgICBbc3JjXT1cIklDT05TWydkb3RzSWNvbiddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiNDBcIlxyXG4gICAgd2lkdGg9XCI0MFwiXHJcbiAgLz5cclxuPGxpYi1tYXAgI2xpYk1hcCBjbGFzcz1cIm1hcHMtMTAwdmhcIj48L2xpYi1tYXA+XHJcbjxkaXYgY2xhc3M9XCJmaWx0ZXItcGFnZVwiICpuZ0lmPVwib3BlbkZpbHRlcnNcIj5cclxuICA8bGliLW5vLXZpc3VhbC1tYXAtZmlsdGVyc1xyXG4gICAgKHByZXNldHNDaGFuZ2VkKT1cIm9uUHJlc2V0c0NoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAoYmFja0J1dHRvbkNsaWNrZWQpPVwib25iYWNrQnV0dG9uQ2xpY2tlZCgpXCJcclxuICA+PC9saWItbm8tdmlzdWFsLW1hcC1maWx0ZXJzPlxyXG48L2Rpdj5cclxuPGxpYi1ib3R0b20tbW9kYWxcclxuICBbc2hvd0Fycm93XT1cInRydWVcIlxyXG4gIFsoaXNPcGVuKV09XCJpc09wZW5cIlxyXG4gIFthZGFwdFRvQ29udGVudEhlaWdodF09XCJ0cnVlXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJwbC00IHByLTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgPGgzIGNsYXNzPVwiZm9udC1DYWxpc3RvZ2EgdGV4dC1sZ1wiPnt7IFwiTk9fVklTVUFMX0ZJTFRFUlNcInwgdHJhbnNsYXRlIH19PC9oMz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGFibGVzIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUFjdGlvbihhKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGFjdGlvbnNcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGEgb2YgYWN0aW9uc1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBhID09PSBzZWxlY3RlZCB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiYVwiIGFsdD1cImljb25cIiBsb2FkaW5nPVwibGF6eVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cCBjbGFzcz1cIm10LTMgbWItNFwiPnt7IFwiTk9fVklTVUFMX0ZJTFRFUlNcInwgdHJhbnNsYXRlIH19PC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxsaWItZm9vdGVyLXNoYXJlZFxyXG4gICAgKGNvbnRpbnVlQnV0dG9uQ2xpY2spPVwiY29udGludWVCdWlsZGluZygpXCJcclxuICAgIFtjYW5Db250aW51ZV09XCJ0cnVlXCJcclxuICAgIFtjb250aW51ZUJ1dHRvblRleHRdPVwiJ0NPTU1PTi5DT05USU5VRScgfCB0cmFuc2xhdGVcIlxyXG4gICAgPjwvbGliLWZvb3Rlci1zaGFyZWQ+XHJcbjwvbGliLWJvdHRvbS1tb2RhbD5cclxuPGRpdlxyXG4gIChjbGljayk9XCJzaG93Qm90dG9tTW9kYWwoKVwiXHJcbiAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCBjdXJzb3ItcG9pbnRlciB6LTEwXCJcclxuICBzdHlsZT1cImxlZnQ6IDUwJVwiXHJcbj5cclxuICA8aW1nXHJcbiAgICBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDI3MGRlZylcIlxyXG4gICAgW3NyY109XCJJQ09OU1sncmlnaHRBcnJvdyddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiMTVcIlxyXG4gICAgd2lkdGg9XCIxNVwiXHJcbiAgLz5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,157 +0,0 @@
1
- import { Component, ViewChild } from '@angular/core';
2
- import { ICONS } from '../../../../../../_constants/constants';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../../../../../_services/itinerary.drawmode.transfer";
5
- import * as i2 from "@naniteninja/ionic-lib";
6
- import * as i3 from "../create-itinerary-header/create-itinerary-header.component";
7
- import * as i4 from "@ngx-translate/core";
8
- const defaultIcon = 'assets/icons/map-markers-yellow.svg';
9
- const selectedIcon = 'assets/icons/restu-icon-large.svg';
10
- export class CreateItineraryNoVisualPreviewComponent {
11
- transferService;
12
- ICONS = ICONS;
13
- isOpen = true;
14
- selectedMarkers = []; //Selected markers on the map
15
- placesResult; //Places result required for preview
16
- placeMarkers;
17
- allMarkers = [];
18
- libMap;
19
- constructor(transferService) {
20
- this.transferService = transferService;
21
- }
22
- preview() {
23
- }
24
- ngAfterViewInit() {
25
- this.libMap.map.googleMap?.setCenter(this.transferService.location);
26
- this.libMap.map.googleMap?.setZoom(15);
27
- //Add marker for user position
28
- new google.maps.Marker({
29
- map: this.libMap.map.googleMap,
30
- position: this.transferService.location,
31
- title: 'You are here',
32
- icon: {
33
- url: 'assets/current_location.svg',
34
- scaledSize: new google.maps.Size(40, 40),
35
- },
36
- });
37
- this.addMarkersToMap(this.libMap.map.googleMap);
38
- }
39
- addMarkersToMap(map) {
40
- const selectedPlaceIds = new Set(this.transferService.selectedPlaces.map(p => p.place_id));
41
- // Clear existing markers
42
- this.allMarkers.forEach(marker => marker.setMap(null));
43
- this.allMarkers = [];
44
- // Plot selected places in RED
45
- this.transferService.selectedPlaces.forEach(place => {
46
- if (place.geometry?.location) {
47
- const marker = new google.maps.Marker({
48
- map,
49
- position: place.geometry.location,
50
- title: place.name,
51
- icon: {
52
- url: selectedIcon
53
- }
54
- });
55
- this.selectedMarkers.push(marker);
56
- this.allMarkers.push(marker);
57
- }
58
- });
59
- // Plot non-selected places (avoid duplicates) in DEFAULT
60
- this.transferService.places.forEach(place => {
61
- if (place.geometry?.location &&
62
- !selectedPlaceIds.has(place.place_id)) {
63
- const marker = new google.maps.Marker({
64
- map,
65
- position: place.geometry.location,
66
- title: place.name,
67
- icon: {
68
- url: defaultIcon
69
- }
70
- });
71
- this.allMarkers.push(marker);
72
- }
73
- });
74
- this.optimizeAndRender();
75
- }
76
- showBottomModal() {
77
- this.isOpen = true;
78
- }
79
- optimizeAndRender() {
80
- if (this.selectedMarkers.length < 2)
81
- return;
82
- // Sort markers based on latitude (optional — adjust this logic as per your direction needs)
83
- this.selectedMarkers.sort((a, b) => {
84
- const posA = a.getPosition();
85
- const posB = b.getPosition();
86
- if (!posA)
87
- return 1;
88
- if (!posB)
89
- return -1;
90
- return posB.lat() - posA.lat();
91
- });
92
- const markerPositions = this.selectedMarkers
93
- .map(m => m.getPosition())
94
- .filter((p) => !!p);
95
- if (markerPositions.length < 2)
96
- return;
97
- const destination = markerPositions[markerPositions.length - 1];
98
- const startPos = markerPositions[0];
99
- // Calculate a synthetic starting point slightly before the first marker (northwards)
100
- const OFFSET_METERS = 50; // adjust this for how far back the path should start
101
- const syntheticStart = google.maps.geometry.spherical.computeOffset(startPos, -OFFSET_METERS, 180);
102
- const waypoints = markerPositions.map(pos => ({
103
- location: pos,
104
- stopover: true
105
- }));
106
- const directionsService = new google.maps.DirectionsService();
107
- const directionsRenderer = new google.maps.DirectionsRenderer({
108
- map: this.libMap.map.googleMap,
109
- suppressMarkers: true,
110
- polylineOptions: {
111
- strokeColor: '#FFFFFF',
112
- strokeOpacity: 1.0,
113
- strokeWeight: 4,
114
- }
115
- });
116
- directionsService.route({
117
- origin: syntheticStart,
118
- destination,
119
- waypoints,
120
- travelMode: google.maps.TravelMode.DRIVING,
121
- optimizeWaypoints: false,
122
- }, (response, status) => {
123
- if (status === google.maps.DirectionsStatus.OK && response) {
124
- directionsRenderer.setDirections(response);
125
- // Draw custom markers
126
- new google.maps.Marker({
127
- position: syntheticStart,
128
- map: this.libMap.map.googleMap,
129
- icon: {
130
- url: 'assets/icons/start-loc-marker.svg',
131
- scaledSize: new google.maps.Size(30, 30),
132
- },
133
- title: 'Start Point',
134
- });
135
- new google.maps.Marker({
136
- position: destination,
137
- map: this.libMap.map.googleMap,
138
- icon: {
139
- url: 'assets/icons/en-location.svg',
140
- scaledSize: new google.maps.Size(30, 30),
141
- },
142
- title: 'End Point',
143
- });
144
- }
145
- });
146
- }
147
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualPreviewComponent, deps: [{ token: i1.ItineraryDrawModeTransferService }], target: i0.ɵɵFactoryTarget.Component });
148
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryNoVisualPreviewComponent, selector: "lib-create-itinerary-no-visual-preview", viewQueries: [{ propertyName: "libMap", first: true, predicate: ["libMap"], descendants: true }], ngImport: i0, template: "<app-create-itinerary-header\r\n [progressBarValue]=\"100\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n\r\n<lib-bottom-modal\r\n [(isOpen)]=\"isOpen\"\r\n>\r\n <div class=\"pl-4 pr-4\">\r\n <div class=\"ml-auto flex items-center justify-center gap-x-2\">\r\n <div class=\"flex items-center gap-x-1 text-xs\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['locationWhite']\"\r\n alt=\"location\"\r\n />\r\n <span>{{transferService.selectedPlaces?.length}} {{ \"ITINERARY_SUMMARY.PLACES\" | translate }}</span>\r\n </div>\r\n <div class=\"h-4 border w-0 border-secondary\"></div>\r\n <div class=\"flex items-center justify-center gap-x-2 text-xs\">\r\n <img loading=\"lazy\" [src]=\"ICONS['clock']\" alt=\"\" />\r\n <span>45 {{ \"DATE_TIME.MINUTES\" | translate }}</span>\r\n <span class=\"text-secondary font-thin\">(6.6 Km)</span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"border border-dashed opacity-55 rotate-90 absolute -left-6 top-36\"\r\n ></div>\r\n <div class=\"font-Gilroy mt-5 mb-3 flex flex-col gap-y-5\">\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['startLocation']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Shan-ul-haq haqee road\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">\r\n Starting location\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n loading=\"lazy\"\r\n [src]=\"ICONS['editPink']\"\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['restu']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Kabul tikka\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">\r\n Afghan cuisine\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['hamburger']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['deletePink']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['restu']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Quetta TNT\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">Tea Coffee</p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['hamburger']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['deletePink']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-footer-shared\r\n (continueButtonClick)=\"preview()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'ITINERARY.PREVIEW' | translate\"\r\n ></lib-footer-shared>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [".button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}\n"], dependencies: [{ kind: "component", type: i2.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "directive", type: i2.LazyImageDirective, selector: "img" }, { kind: "component", type: i2.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i3.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
149
- }
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualPreviewComponent, decorators: [{
151
- type: Component,
152
- args: [{ selector: 'lib-create-itinerary-no-visual-preview', template: "<app-create-itinerary-header\r\n [progressBarValue]=\"100\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n\r\n<lib-bottom-modal\r\n [(isOpen)]=\"isOpen\"\r\n>\r\n <div class=\"pl-4 pr-4\">\r\n <div class=\"ml-auto flex items-center justify-center gap-x-2\">\r\n <div class=\"flex items-center gap-x-1 text-xs\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['locationWhite']\"\r\n alt=\"location\"\r\n />\r\n <span>{{transferService.selectedPlaces?.length}} {{ \"ITINERARY_SUMMARY.PLACES\" | translate }}</span>\r\n </div>\r\n <div class=\"h-4 border w-0 border-secondary\"></div>\r\n <div class=\"flex items-center justify-center gap-x-2 text-xs\">\r\n <img loading=\"lazy\" [src]=\"ICONS['clock']\" alt=\"\" />\r\n <span>45 {{ \"DATE_TIME.MINUTES\" | translate }}</span>\r\n <span class=\"text-secondary font-thin\">(6.6 Km)</span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"border border-dashed opacity-55 rotate-90 absolute -left-6 top-36\"\r\n ></div>\r\n <div class=\"font-Gilroy mt-5 mb-3 flex flex-col gap-y-5\">\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['startLocation']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Shan-ul-haq haqee road\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">\r\n Starting location\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n loading=\"lazy\"\r\n [src]=\"ICONS['editPink']\"\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['restu']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Kabul tikka\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">\r\n Afghan cuisine\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['hamburger']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['deletePink']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-between w-full gap-x-4 mb-1\"\r\n >\r\n <div class=\"flex items-center justify-start gap-x-6\">\r\n <div\r\n class=\"z-50 icon w-8 h-8 outset-shadow flex items-center justify-center rounded-full relative\"\r\n >\r\n <img\r\n loading=\"lazy\"\r\n height=\"22\"\r\n width=\"18\"\r\n [src]=\"ICONS['restu']\"\r\n alt=\"\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n loading=\"lazy\"\r\n class=\"dotted-line\"\r\n src=\"assets/images/dotted-line.svg\"\r\n />\r\n </div>\r\n <div class=\"text\">\r\n <h2\r\n class=\"f-sm f-xs flex items-center gap-x-1 text-xs mb-1\"\r\n >\r\n Quetta TNT\r\n </h2>\r\n <p class=\"f-xs text-secondary text-xs mb-1\">Tea Coffee</p>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center gap-x-3\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['hamburger']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['deletePink']\"\r\n alt=\"\"\r\n class=\"w-[15px] h-[15px] cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-footer-shared\r\n (continueButtonClick)=\"preview()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'ITINERARY.PREVIEW' | translate\"\r\n ></lib-footer-shared>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [".button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}\n"] }]
153
- }], ctorParameters: () => [{ type: i1.ItineraryDrawModeTransferService }], propDecorators: { libMap: [{
154
- type: ViewChild,
155
- args: ['libMap']
156
- }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9tb2R1bGVzL2l0aW5lcmFyaWVzL3BhZ2VzL2J1aWxkZXIvcGFnZXMvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtcHJldmlldy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1wcmV2aWV3L2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBRS9ELE1BQU0sV0FBVyxHQUFHLHFDQUFxQyxDQUFDO0FBQzFELE1BQU0sWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0FBUXpELE1BQU0sT0FBTyx1Q0FBdUM7SUFZekM7SUFYVCxLQUFLLEdBQVUsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sR0FBWSxJQUFJLENBQUM7SUFDdkIsZUFBZSxHQUF5QixFQUFFLENBQUMsQ0FBQSw2QkFBNkI7SUFDeEUsWUFBWSxDQUFvQyxDQUFBLG9DQUFvQztJQUNwRixZQUFZLENBR1Q7SUFDSCxVQUFVLEdBQXlCLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQW9C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QixRQUFRLEVBQUUsY0FBYztvQkFDeEIsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVU7b0JBQy9CLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsbUNBQW1DO3dCQUN4QyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO3FCQUN6QztvQkFDRCxLQUFLLEVBQUUsYUFBYTtpQkFDckIsQ0FBQyxDQUFDO2dCQUVILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQ3JCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBVTtvQkFDL0IsSUFBSSxFQUFFO3dCQUNKLEdBQUcsRUFBRSw4QkFBOEI7d0JBQ25DLFVBQVUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7cUJBQ3pDO29CQUNELEtBQUssRUFBRSxXQUFXO2lCQUNuQixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzt3R0FqS1UsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMsZ0xDZHBELG04TUEwTEE7OzRGRDVLYSx1Q0FBdUM7a0JBTG5ELFNBQVM7K0JBQ0Usd0NBQXdDO3FHQWM3QixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlEcmF3TW9kZVRyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuZHJhd21vZGUudHJhbnNmZXInO1xyXG5pbXBvcnQgeyBJaWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19pbnRlcmZhY2UvaWNvbic7XHJcbmltcG9ydCB7IElDT05TIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2NvbnN0YW50cy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBMaWJNYXBzQ29tcG9uZW50IH0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XHJcbmNvbnN0IGRlZmF1bHRJY29uID0gJ2Fzc2V0cy9pY29ucy9tYXAtbWFya2Vycy15ZWxsb3cuc3ZnJztcclxuY29uc3Qgc2VsZWN0ZWRJY29uID0gJ2Fzc2V0cy9pY29ucy9yZXN0dS1pY29uLWxhcmdlLnN2Zyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtcHJldmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1wcmV2aWV3LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVJdGluZXJhcnlOb1Zpc3VhbFByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBJQ09OUzogSWljb24gPSBJQ09OUztcclxuICBpc09wZW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNlbGVjdGVkTWFya2VyczogZ29vZ2xlLm1hcHMuTWFya2VyW10gPSBbXTsvL1NlbGVjdGVkIG1hcmtlcnMgb24gdGhlIG1hcFxyXG4gIHBsYWNlc1Jlc3VsdCE6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdFtdOy8vUGxhY2VzIHJlc3VsdCByZXF1aXJlZCBmb3IgcHJldmlld1xyXG4gIHBsYWNlTWFya2VycyE6IHtcclxuICAgIG1hcmtlcjogZ29vZ2xlLm1hcHMuTWFya2VyLFxyXG4gICAgcGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdFxyXG4gIH1bXVxyXG4gIGFsbE1hcmtlcnM6IGdvb2dsZS5tYXBzLk1hcmtlcltdID0gW107XHJcbiAgQFZpZXdDaGlsZCgnbGliTWFwJykgbGliTWFwITogTGliTWFwc0NvbXBvbmVudDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB0cmFuc2ZlclNlcnZpY2U6IEl0aW5lcmFyeURyYXdNb2RlVHJhbnNmZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwcmV2aWV3KCkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwPy5zZXRDZW50ZXIodGhpcy50cmFuc2ZlclNlcnZpY2UubG9jYXRpb24pO1xyXG4gICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcD8uc2V0Wm9vbSgxNSk7XHJcblxyXG4gICAgLy9BZGQgbWFya2VyIGZvciB1c2VyIHBvc2l0aW9uXHJcbiAgICBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwLFxyXG4gICAgICBwb3NpdGlvbjogdGhpcy50cmFuc2ZlclNlcnZpY2UubG9jYXRpb24sXHJcbiAgICAgIHRpdGxlOiAnWW91IGFyZSBoZXJlJyxcclxuICAgICAgaWNvbjoge1xyXG4gICAgICAgIHVybDogJ2Fzc2V0cy9jdXJyZW50X2xvY2F0aW9uLnN2ZycsXHJcbiAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoNDAsIDQwKSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hZGRNYXJrZXJzVG9NYXAodGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCEpO1xyXG4gIH1cclxuXHJcbiAgICBhZGRNYXJrZXJzVG9NYXAobWFwOiBnb29nbGUubWFwcy5NYXApIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2VJZHMgPSBuZXcgU2V0KHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNlbGVjdGVkUGxhY2VzLm1hcChwID0+IHAucGxhY2VfaWQpKTtcclxuXHJcbiAgICAvLyBDbGVhciBleGlzdGluZyBtYXJrZXJzXHJcbiAgICB0aGlzLmFsbE1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4gbWFya2VyLnNldE1hcChudWxsKSk7XHJcbiAgICB0aGlzLmFsbE1hcmtlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBQbG90IHNlbGVjdGVkIHBsYWNlcyBpbiBSRURcclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNlbGVjdGVkUGxhY2VzLmZvckVhY2gocGxhY2UgPT4ge1xyXG4gICAgICBpZiAocGxhY2UuZ2VvbWV0cnk/LmxvY2F0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcbiAgICAgICAgICBtYXAsXHJcbiAgICAgICAgICBwb3NpdGlvbjogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24sXHJcbiAgICAgICAgICB0aXRsZTogcGxhY2UubmFtZSxcclxuICAgICAgICAgIGljb246IHtcclxuICAgICAgICAgICAgdXJsOiBzZWxlY3RlZEljb25cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgICAgdGhpcy5hbGxNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gUGxvdCBub24tc2VsZWN0ZWQgcGxhY2VzIChhdm9pZCBkdXBsaWNhdGVzKSBpbiBERUZBVUxUXHJcbiAgICB0aGlzLnRyYW5zZmVyU2VydmljZS5wbGFjZXMuZm9yRWFjaChwbGFjZSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwbGFjZS5nZW9tZXRyeT8ubG9jYXRpb24gJiZcclxuICAgICAgICAhc2VsZWN0ZWRQbGFjZUlkcy5oYXMocGxhY2UucGxhY2VfaWQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgbWFwLFxyXG4gICAgICAgICAgcG9zaXRpb246IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLFxyXG4gICAgICAgICAgdGl0bGU6IHBsYWNlLm5hbWUsXHJcbiAgICAgICAgICBpY29uOiB7XHJcbiAgICAgICAgICAgIHVybDogZGVmYXVsdEljb25cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFsbE1hcmtlcnMucHVzaChtYXJrZXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9wdGltaXplQW5kUmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBzaG93Qm90dG9tTW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvcHRpbWl6ZUFuZFJlbmRlcigpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTWFya2Vycy5sZW5ndGggPCAyKSByZXR1cm47XHJcblxyXG4gICAgLy8gU29ydCBtYXJrZXJzIGJhc2VkIG9uIGxhdGl0dWRlIChvcHRpb25hbCDigJQgYWRqdXN0IHRoaXMgbG9naWMgYXMgcGVyIHlvdXIgZGlyZWN0aW9uIG5lZWRzKVxyXG4gICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBjb25zdCBwb3NBID0gYS5nZXRQb3NpdGlvbigpO1xyXG4gICAgICBjb25zdCBwb3NCID0gYi5nZXRQb3NpdGlvbigpO1xyXG4gICAgICBpZiAoIXBvc0EpIHJldHVybiAxO1xyXG4gICAgICBpZiAoIXBvc0IpIHJldHVybiAtMTtcclxuICAgICAgcmV0dXJuIHBvc0IubGF0KCkgLSBwb3NBLmxhdCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgbWFya2VyUG9zaXRpb25zID0gdGhpcy5zZWxlY3RlZE1hcmtlcnNcclxuICAgICAgLm1hcChtID0+IG0uZ2V0UG9zaXRpb24oKSlcclxuICAgICAgLmZpbHRlcigocCk6IHAgaXMgZ29vZ2xlLm1hcHMuTGF0TG5nID0+ICEhcCk7XHJcblxyXG4gICAgaWYgKG1hcmtlclBvc2l0aW9ucy5sZW5ndGggPCAyKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBtYXJrZXJQb3NpdGlvbnNbbWFya2VyUG9zaXRpb25zLmxlbmd0aCAtIDFdO1xyXG4gICAgY29uc3Qgc3RhcnRQb3MgPSBtYXJrZXJQb3NpdGlvbnNbMF07XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIGEgc3ludGhldGljIHN0YXJ0aW5nIHBvaW50IHNsaWdodGx5IGJlZm9yZSB0aGUgZmlyc3QgbWFya2VyIChub3J0aHdhcmRzKVxyXG4gICAgY29uc3QgT0ZGU0VUX01FVEVSUyA9IDUwOyAvLyBhZGp1c3QgdGhpcyBmb3IgaG93IGZhciBiYWNrIHRoZSBwYXRoIHNob3VsZCBzdGFydFxyXG4gICAgY29uc3Qgc3ludGhldGljU3RhcnQgPSBnb29nbGUubWFwcy5nZW9tZXRyeS5zcGhlcmljYWwuY29tcHV0ZU9mZnNldChzdGFydFBvcywgLU9GRlNFVF9NRVRFUlMsIDE4MCk7XHJcblxyXG4gICAgY29uc3Qgd2F5cG9pbnRzOiBnb29nbGUubWFwcy5EaXJlY3Rpb25zV2F5cG9pbnRbXSA9IG1hcmtlclBvc2l0aW9ucy5tYXAocG9zID0+ICh7XHJcbiAgICAgIGxvY2F0aW9uOiBwb3MsXHJcbiAgICAgIHN0b3BvdmVyOiB0cnVlXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgZGlyZWN0aW9uc1NlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1NlcnZpY2UoKTtcclxuICAgIGNvbnN0IGRpcmVjdGlvbnNSZW5kZXJlciA9IG5ldyBnb29nbGUubWFwcy5EaXJlY3Rpb25zUmVuZGVyZXIoe1xyXG4gICAgICBtYXA6IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhLFxyXG4gICAgICBzdXBwcmVzc01hcmtlcnM6IHRydWUsXHJcbiAgICAgIHBvbHlsaW5lT3B0aW9uczoge1xyXG4gICAgICAgIHN0cm9rZUNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICAgICAgc3Ryb2tlT3BhY2l0eTogMS4wLFxyXG4gICAgICAgIHN0cm9rZVdlaWdodDogNCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlyZWN0aW9uc1NlcnZpY2Uucm91dGUoXHJcbiAgICAgIHtcclxuICAgICAgICBvcmlnaW46IHN5bnRoZXRpY1N0YXJ0LFxyXG4gICAgICAgIGRlc3RpbmF0aW9uLFxyXG4gICAgICAgIHdheXBvaW50cyxcclxuICAgICAgICB0cmF2ZWxNb2RlOiBnb29nbGUubWFwcy5UcmF2ZWxNb2RlLkRSSVZJTkcsXHJcbiAgICAgICAgb3B0aW1pemVXYXlwb2ludHM6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzcG9uc2UsIHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNTdGF0dXMuT0sgJiYgcmVzcG9uc2UpIHtcclxuICAgICAgICAgIGRpcmVjdGlvbnNSZW5kZXJlci5zZXREaXJlY3Rpb25zKHJlc3BvbnNlKTtcclxuXHJcbiAgICAgICAgICAvLyBEcmF3IGN1c3RvbSBtYXJrZXJzXHJcbiAgICAgICAgICBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHN5bnRoZXRpY1N0YXJ0LFxyXG4gICAgICAgICAgICBtYXA6IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhLFxyXG4gICAgICAgICAgICBpY29uOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiAnYXNzZXRzL2ljb25zL3N0YXJ0LWxvYy1tYXJrZXIuc3ZnJyxcclxuICAgICAgICAgICAgICBzY2FsZWRTaXplOiBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSgzMCwgMzApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogJ1N0YXJ0IFBvaW50JyxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICAgICAgICAgIG1hcDogdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCEsXHJcbiAgICAgICAgICAgIGljb246IHtcclxuICAgICAgICAgICAgICB1cmw6ICdhc3NldHMvaWNvbnMvZW4tbG9jYXRpb24uc3ZnJyxcclxuICAgICAgICAgICAgICBzY2FsZWRTaXplOiBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSgzMCwgMzApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogJ0VuZCBQb2ludCcsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXJcclxuICBbcHJvZ3Jlc3NCYXJWYWx1ZV09XCIxMDBcIlxyXG4gIGhlYWRpbmc9XCJDcmVhdGUgSXRpbmVyYXJ5XCJcclxuPjwvYXBwLWNyZWF0ZS1pdGluZXJhcnktaGVhZGVyPlxyXG48bGliLW1hcCAjbGliTWFwIGNsYXNzPVwibWFwcy0xMDB2aFwiPjwvbGliLW1hcD5cclxuXHJcbjxsaWItYm90dG9tLW1vZGFsXHJcbiAgICBbKGlzT3BlbildPVwiaXNPcGVuXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cInBsLTQgcHItNFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1sLWF1dG8gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLXgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC14LTEgdGV4dC14c1wiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgW3NyY109XCJJQ09OU1snbG9jYXRpb25XaGl0ZSddXCJcclxuICAgICAgICBhbHQ9XCJsb2NhdGlvblwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3Bhbj57e3RyYW5zZmVyU2VydmljZS5zZWxlY3RlZFBsYWNlcz8ubGVuZ3RofX0ge3sgXCJJVElORVJBUllfU1VNTUFSWS5QTEFDRVNcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImgtNCBib3JkZXIgdy0wIGJvcmRlci1zZWNvbmRhcnlcIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAteC0yIHRleHQteHNcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snY2xvY2snXVwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgPHNwYW4+NDUge3sgXCJEQVRFX1RJTUUuTUlOVVRFU1wiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnkgZm9udC10aGluXCI+KDYuNiBLbSk8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWRhc2hlZCBvcGFjaXR5LTU1IHJvdGF0ZS05MCBhYnNvbHV0ZSAtbGVmdC02IHRvcC0zNlwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9udC1HaWxyb3kgbXQtNSBtYi0zIGZsZXggZmxleC1jb2wgZ2FwLXktNVwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdy1mdWxsIGdhcC14LTQgbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBnYXAteC02XCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiei01MCBpY29uIHctOCBoLTggb3V0c2V0LXNoYWRvdyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMlwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ3N0YXJ0TG9jYXRpb24nXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZG90dGVkLWxpbmVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ltYWdlcy9kb3R0ZWQtbGluZS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8aDJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZi1zbSBmLXhzIGZsZXggaXRlbXMtY2VudGVyIGdhcC14LTEgdGV4dC14cyBtYi0xXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFNoYW4tdWwtaGFxIGhhcWVlIHJvYWRcclxuICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImYteHMgdGV4dC1zZWNvbmRhcnkgdGV4dC14cyBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICBTdGFydGluZyBsb2NhdGlvblxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0zXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTVweF0gaC1bMTVweF0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJJQ09OU1snZWRpdFBpbmsnXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGwgZ2FwLXgtNCBtYi0xXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC14LTZcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ6LTUwIGljb24gdy04IGgtOCBvdXRzZXQtc2hhZG93IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCByZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjIyXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJJQ09OU1sncmVzdHUnXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZG90dGVkLWxpbmVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ltYWdlcy9kb3R0ZWQtbGluZS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8aDJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZi1zbSBmLXhzIGZsZXggaXRlbXMtY2VudGVyIGdhcC14LTEgdGV4dC14cyBtYi0xXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIEthYnVsIHRpa2thXHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmLXhzIHRleHQtc2Vjb25kYXJ5IHRleHQteHMgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgQWZnaGFuIGN1aXNpbmVcclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtM1wiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIklDT05TWydoYW1idXJnZXInXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNXB4XSBoLVsxNXB4XSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ2RlbGV0ZVBpbmsnXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNXB4XSBoLVsxNXB4XSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHctZnVsbCBnYXAteC00IG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLXgtNlwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInotNTAgaWNvbiB3LTggaC04IG91dHNldC1zaGFkb3cgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjJcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIklDT05TWydyZXN0dSddXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkb3R0ZWQtbGluZVwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaW1hZ2VzL2RvdHRlZC1saW5lLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxoMlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmLXNtIGYteHMgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtMSB0ZXh0LXhzIG1iLTFcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgUXVldHRhIFROVFxyXG4gICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZi14cyB0ZXh0LXNlY29uZGFyeSB0ZXh0LXhzIG1iLTFcIj5UZWEgQ29mZmVlPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0zXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ2hhbWJ1cmdlciddXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctWzE1cHhdIGgtWzE1cHhdIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJJQ09OU1snZGVsZXRlUGluayddXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctWzE1cHhdIGgtWzE1cHhdIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGxpYi1mb290ZXItc2hhcmVkXHJcbiAgICAoY29udGludWVCdXR0b25DbGljayk9XCJwcmV2aWV3KClcIlxyXG4gICAgW2NhbkNvbnRpbnVlXT1cInRydWVcIlxyXG4gICAgW2NvbnRpbnVlQnV0dG9uVGV4dF09XCInSVRJTkVSQVJZLlBSRVZJRVcnIHwgdHJhbnNsYXRlXCJcclxuICA+PC9saWItZm9vdGVyLXNoYXJlZD5cclxuPC9saWItYm90dG9tLW1vZGFsPlxyXG48ZGl2XHJcbiAgKGNsaWNrKT1cInNob3dCb3R0b21Nb2RhbCgpXCJcclxuICBjbGFzcz1cImFic29sdXRlIGJvdHRvbS0wIGN1cnNvci1wb2ludGVyIHotMTBcIlxyXG4gIHN0eWxlPVwibGVmdDogNTAlXCJcclxuPlxyXG4gIDxpbWdcclxuICAgIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKVwiXHJcbiAgICBbc3JjXT1cIklDT05TWydyaWdodEFycm93J11cIlxyXG4gICAgYWx0PVwiaWNvblwiXHJcbiAgICBoZWlnaHQ9XCIxNVwiXHJcbiAgICB3aWR0aD1cIjE1XCJcclxuICAvPlxyXG48L2Rpdj5cclxuIl19