@flower-city-online/itinerary-lib 0.0.61 → 0.0.63
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.
- package/fesm2022/flower-city-online-itinerary-lib.mjs +515 -513
- package/fesm2022/flower-city-online-itinerary-lib.mjs.map +1 -1
- package/index.d.ts +917 -5
- package/package.json +13 -15
- package/src/lib/itinerary-app/styles.scss +36 -21
- package/environments/environment.d.ts +0 -13
- package/esm2022/environments/environment.mjs +0 -25
- package/esm2022/flower-city-online-itinerary-lib.mjs +0 -5
- package/esm2022/lib/itinerary-app/_constants/constants.mjs +0 -129
- package/esm2022/lib/itinerary-app/_enums/ItenariesRoutes.enum.mjs +0 -67
- package/esm2022/lib/itinerary-app/_enums/PathwayRoutes.enum.mjs +0 -7
- package/esm2022/lib/itinerary-app/_enums/userRoutes.enum.mjs +0 -5
- package/esm2022/lib/itinerary-app/_interface/bottomNavigationList.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/cardData.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/commentsdata.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/conditions.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/dashboardSideBar.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/filterMenuOptions.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/icon.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/notification.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/pages.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/presetRecord.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/reportOptions.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/search-popup.mjs +0 -2
- package/esm2022/lib/itinerary-app/_interface/searchResults.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/Itinerary-stats.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/Itinerary.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/app-user.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/itinerary-location.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/itineraryMember.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/location-review.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/matching-clients.mjs +0 -2
- package/esm2022/lib/itinerary-app/_models/position-model.mjs +0 -2
- package/esm2022/lib/itinerary-app/_pipes/votes.pipe.mjs +0 -25
- package/esm2022/lib/itinerary-app/_services/api.service.mjs +0 -31
- package/esm2022/lib/itinerary-app/_services/assets.service.mjs +0 -42
- package/esm2022/lib/itinerary-app/_services/bottom-navigation.service.mjs +0 -95
- package/esm2022/lib/itinerary-app/_services/comment-image.service.mjs +0 -16
- package/esm2022/lib/itinerary-app/_services/constants.service.mjs +0 -14
- package/esm2022/lib/itinerary-app/_services/custom-dropdown-menu.service.mjs +0 -256
- package/esm2022/lib/itinerary-app/_services/itinerary.drawmode.transfer.mjs +0 -34
- package/esm2022/lib/itinerary-app/_services/itinerary.service.mjs +0 -57
- package/esm2022/lib/itinerary-app/_services/location.service.mjs +0 -32
- package/esm2022/lib/itinerary-app/_services/modal.clearhistory.service.mjs +0 -17
- package/esm2022/lib/itinerary-app/_services/modal.sendclient.service.mjs +0 -17
- package/esm2022/lib/itinerary-app/_services/modal.service.mjs +0 -17
- package/esm2022/lib/itinerary-app/_services/modal.shareurlservice.mjs +0 -17
- package/esm2022/lib/itinerary-app/_services/navigation-helper.service.mjs +0 -128
- package/esm2022/lib/itinerary-app/_services/shadow-root-handler.service.mjs +0 -38
- package/esm2022/lib/itinerary-app/_services/share-popup-data.mjs +0 -20
- package/esm2022/lib/itinerary-app/itinerary-lib-routing.module.mjs +0 -60
- package/esm2022/lib/itinerary-app/itinerary-lib.component.mjs +0 -81
- package/esm2022/lib/itinerary-app/itinerary-lib.module.mjs +0 -96
- package/esm2022/lib/itinerary-app/modules/archives/archives-routing.module.mjs +0 -19
- package/esm2022/lib/itinerary-app/modules/archives/archives.component.mjs +0 -23
- package/esm2022/lib/itinerary-app/modules/archives/archives.module.mjs +0 -40
- package/esm2022/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.mjs +0 -75
- package/esm2022/lib/itinerary-app/modules/dashboard/components/navbar/navbar.component.mjs +0 -62
- package/esm2022/lib/itinerary-app/modules/dashboard/components/sidebar/sidebar.component.mjs +0 -64
- package/esm2022/lib/itinerary-app/modules/dashboard/dashboard-routing.module.mjs +0 -24
- package/esm2022/lib/itinerary-app/modules/dashboard/dashboard.component.mjs +0 -14
- package/esm2022/lib/itinerary-app/modules/dashboard/dashboard.module.mjs +0 -55
- package/esm2022/lib/itinerary-app/modules/dashboard/pages/main-dashboard/main-dashboard.component.mjs +0 -11
- package/esm2022/lib/itinerary-app/modules/itineraries/components/app-header-desktop/app-header-desktop.component.mjs +0 -14
- package/esm2022/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.mjs +0 -76
- package/esm2022/lib/itinerary-app/modules/itineraries/components/comment-filter-menu/comment-filter-menu.component.mjs +0 -42
- package/esm2022/lib/itinerary-app/modules/itineraries/components/delete-itineraries/delete-itineraries.component.mjs +0 -51
- package/esm2022/lib/itinerary-app/modules/itineraries/components/filter-menu/filter-menu.component.mjs +0 -44
- package/esm2022/lib/itinerary-app/modules/itineraries/components/no-visual-map-filters/no-visual-map-filters.component.mjs +0 -80
- package/esm2022/lib/itinerary-app/modules/itineraries/components/report-itinerary-modal/report-itinerary-modal.component.mjs +0 -72
- package/esm2022/lib/itinerary-app/modules/itineraries/components/report-media-modal/report-media-modal.component.mjs +0 -71
- package/esm2022/lib/itinerary-app/modules/itineraries/components/send-to-client/send-to-client.component.mjs +0 -42
- package/esm2022/lib/itinerary-app/modules/itineraries/components/share-popup/share-popup.component.mjs +0 -79
- package/esm2022/lib/itinerary-app/modules/itineraries/itineraries-routing.module.mjs +0 -292
- package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.component.mjs +0 -53
- package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.module.mjs +0 -361
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/advanced-filters/advanced-filters.component.mjs +0 -151
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.mjs +0 -152
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.mjs +0 -97
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal/create-itinerary-modal.component.mjs +0 -52
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal-item/create-itinerary-modal-item.component.mjs +0 -47
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.mjs +0 -90
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-destination/create-itinerary-destination.component.mjs +0 -54
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.mjs +0 -276
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-preview/create-itinerary-draw-preview.component.mjs +0 -244
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-header/create-itinerary-header.component.mjs +0 -61
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-member-details/create-itinerary-member-details.component.mjs +0 -60
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-filter/create-itinerary-no-visual-filter.component.mjs +0 -233
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-preview/create-itinerary-no-visual-preview.component.mjs +0 -158
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-start-location/create-itinerary-start-location.component.mjs +0 -90
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-user-search/create-itinerary-user-search.component.mjs +0 -80
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.mjs +0 -60
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-detail/created-itinerary-detail.component.mjs +0 -38
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-map/created-itinerary-map.component.mjs +0 -322
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.mjs +0 -90
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-add-place.component.mjs +0 -73
- 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
- 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
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-members/itinerary-place-members.component.mjs +0 -47
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.mjs +0 -82
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.mjs +0 -77
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.mjs +0 -89
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.mjs +0 -57
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.mjs +0 -74
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comment-replies/comment-replies.component.mjs +0 -61
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comment-replies/components/comment-single/comment-single.component.mjs +0 -39
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.mjs +0 -84
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.mjs +0 -117
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.mjs +0 -123
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/handle-update-comment-request/handle-update-comment-request.component.mjs +0 -21
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.mjs +0 -85
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/favorites/favorites.component.mjs +0 -45
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-author-history/itinerary-author-history.component.mjs +0 -51
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.mjs +0 -106
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/map/map.component.mjs +0 -284
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.mjs +0 -81
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.mjs +0 -103
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/existing-friends/existing-friends.component.mjs +0 -69
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/friend-requests/friend-requests.component.mjs +0 -49
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/itinerary-friends.component.mjs +0 -21
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/list-friend-users/list-friend-users.component.mjs +0 -81
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/send-friend-request/send-friend-request.component.mjs +0 -63
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/all-people/all-people.component.mjs +0 -77
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/existing-members/existing-members.component.mjs +0 -67
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-members.component.mjs +0 -21
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-sent-invites/itinerary-sent-invites.component.mjs +0 -48
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/send-invite/send-invite.component.mjs +0 -39
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.mjs +0 -74
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.mjs +0 -58
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.mjs +0 -59
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.mjs +0 -60
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/notifications/notifications.component.mjs +0 -53
- package/esm2022/lib/itinerary-app/modules/itineraries/pages/stories/story.component.mjs +0 -54
- package/esm2022/lib/itinerary-app/modules/pathway/components/googlemap/googlemap.component.mjs +0 -284
- package/esm2022/lib/itinerary-app/modules/pathway/components/map-header/map-header.component.mjs +0 -39
- package/esm2022/lib/itinerary-app/modules/pathway/pages/default-destination/default-destination.component.mjs +0 -26
- package/esm2022/lib/itinerary-app/modules/pathway/pages/itinerary-preview/itinerary-preview.component.mjs +0 -56
- package/esm2022/lib/itinerary-app/modules/pathway/pages/non-visual-map-filter/non-visual-map-filter.component.mjs +0 -30
- package/esm2022/lib/itinerary-app/modules/pathway/pathway-routing.module.mjs +0 -41
- package/esm2022/lib/itinerary-app/modules/pathway/pathway.component.mjs +0 -12
- package/esm2022/lib/itinerary-app/modules/pathway/pathway.module.mjs +0 -81
- package/esm2022/lib/itinerary-app/modules/search/components/clear-history-popup/clear-history-popup.component.mjs +0 -30
- package/esm2022/lib/itinerary-app/modules/search/components/quick-actions/quick-actions.component.mjs +0 -17
- package/esm2022/lib/itinerary-app/modules/search/components/recent-searches/recent-searches.component.mjs +0 -13
- package/esm2022/lib/itinerary-app/modules/search/components/recent-searches-item/recent-searches-item.component.mjs +0 -14
- package/esm2022/lib/itinerary-app/modules/search/components/recent-searches-list/recent-searches-list.component.mjs +0 -12
- package/esm2022/lib/itinerary-app/modules/search/components/search-chips/search-chips.component.mjs +0 -79
- package/esm2022/lib/itinerary-app/modules/search/components/search-results/search-results.component.mjs +0 -16
- package/esm2022/lib/itinerary-app/modules/search/components/serach-bottom-bar/serach-bottom-bar.component.mjs +0 -14
- package/esm2022/lib/itinerary-app/modules/search/components/serach-clear-history/serach-clear-history.component.mjs +0 -33
- package/esm2022/lib/itinerary-app/modules/search/pages/main-search/main-search.component.mjs +0 -243
- package/esm2022/lib/itinerary-app/modules/search/search-routing.module.mjs +0 -19
- package/esm2022/lib/itinerary-app/modules/search/search.component.mjs +0 -12
- package/esm2022/lib/itinerary-app/modules/search/search.module.mjs +0 -87
- package/esm2022/lib/itinerary-app/modules/user/profile/profile.component.mjs +0 -54
- package/esm2022/lib/itinerary-app/modules/user/user-routing.module.mjs +0 -22
- package/esm2022/lib/itinerary-app/modules/user/user.module.mjs +0 -40
- package/esm2022/lib/itinerary-app/shared/action-card/action-card.component.mjs +0 -29
- package/esm2022/lib/itinerary-app/shared/bottom-modal/bottom-modal.component.mjs +0 -65
- package/esm2022/lib/itinerary-app/shared/card-component/card-component.component.mjs +0 -128
- package/esm2022/lib/itinerary-app/shared/comment/comment-images/comment-images.component.mjs +0 -22
- package/esm2022/lib/itinerary-app/shared/comment/comment.component.mjs +0 -83
- package/esm2022/lib/itinerary-app/shared/custom-heading-with-button/custom-heading-with-button.component.mjs +0 -27
- package/esm2022/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.mjs +0 -176
- package/esm2022/lib/itinerary-app/shared/cutom-card/cutom-card.component.mjs +0 -129
- package/esm2022/lib/itinerary-app/shared/footer/components/bottom-navigation-items/bottom-navigation-items.component.mjs +0 -28
- package/esm2022/lib/itinerary-app/shared/footer/footer.component.mjs +0 -109
- package/esm2022/lib/itinerary-app/shared/header/header.component.mjs +0 -88
- package/esm2022/lib/itinerary-app/shared/icon-button/icon-button.component.mjs +0 -46
- package/esm2022/lib/itinerary-app/shared/image-viewer/image-viewer.component.mjs +0 -31
- package/esm2022/lib/itinerary-app/shared/input-field-select/input-field-select.component.mjs +0 -109
- package/esm2022/lib/itinerary-app/shared/matching-clients/matching-clients.component.mjs +0 -71
- package/esm2022/lib/itinerary-app/shared/notification-tile/notification-tile.component.mjs +0 -40
- package/esm2022/lib/itinerary-app/shared/popup-modal/popup-modal.component.mjs +0 -85
- package/esm2022/lib/itinerary-app/shared/search-bar/search-bar.component.mjs +0 -30
- package/esm2022/lib/itinerary-app/shared/search-popup/search-popup.component.mjs +0 -54
- package/esm2022/lib/itinerary-app/shared/selectable/selectable.component.mjs +0 -52
- package/esm2022/lib/itinerary-app/shared/selectable-badge/selectable-badge.component.mjs +0 -25
- package/esm2022/lib/itinerary-app/shared/shared.module.mjs +0 -235
- package/esm2022/lib/itinerary-app/shared/swiper-dialog/swiper-dialog.component.mjs +0 -46
- package/esm2022/lib/itinerary-app/shared/tab-bar/tab-bar.component.mjs +0 -89
- package/esm2022/lib/itinerary-app/shared/user-stack-tile/user-stack-tile.component.mjs +0 -44
- package/esm2022/lib/itinerary-app/shared/user-tile/user-tile.component.mjs +0 -28
- package/esm2022/lib/itinerary-app/shared/users-stack/users-stack.component.mjs +0 -60
- package/esm2022/public-api.mjs +0 -4
- package/lib/itinerary-app/_constants/constants.d.ts +0 -2
- package/lib/itinerary-app/_enums/ItenariesRoutes.enum.d.ts +0 -65
- package/lib/itinerary-app/_enums/PathwayRoutes.enum.d.ts +0 -5
- package/lib/itinerary-app/_enums/userRoutes.enum.d.ts +0 -3
- package/lib/itinerary-app/_interface/bottomNavigationList.d.ts +0 -11
- package/lib/itinerary-app/_interface/cardData.d.ts +0 -16
- package/lib/itinerary-app/_interface/commentsdata.d.ts +0 -14
- package/lib/itinerary-app/_interface/conditions.d.ts +0 -5
- package/lib/itinerary-app/_interface/dashboardSideBar.d.ts +0 -7
- package/lib/itinerary-app/_interface/filterMenuOptions.d.ts +0 -4
- package/lib/itinerary-app/_interface/icon.d.ts +0 -3
- package/lib/itinerary-app/_interface/notification.d.ts +0 -7
- package/lib/itinerary-app/_interface/pages.d.ts +0 -4
- package/lib/itinerary-app/_interface/presetRecord.d.ts +0 -5
- package/lib/itinerary-app/_interface/reportOptions.d.ts +0 -4
- package/lib/itinerary-app/_interface/search-popup.d.ts +0 -6
- package/lib/itinerary-app/_interface/searchResults.d.ts +0 -5
- package/lib/itinerary-app/_models/Itinerary-stats.d.ts +0 -10
- package/lib/itinerary-app/_models/Itinerary.d.ts +0 -23
- package/lib/itinerary-app/_models/app-user.d.ts +0 -6
- package/lib/itinerary-app/_models/itinerary-location.d.ts +0 -16
- package/lib/itinerary-app/_models/itineraryMember.d.ts +0 -6
- package/lib/itinerary-app/_models/location-review.d.ts +0 -8
- package/lib/itinerary-app/_models/matching-clients.d.ts +0 -9
- package/lib/itinerary-app/_models/position-model.d.ts +0 -5
- package/lib/itinerary-app/_pipes/votes.pipe.d.ts +0 -7
- package/lib/itinerary-app/_services/api.service.d.ts +0 -22
- package/lib/itinerary-app/_services/assets.service.d.ts +0 -21
- package/lib/itinerary-app/_services/bottom-navigation.service.d.ts +0 -26
- package/lib/itinerary-app/_services/comment-image.service.d.ts +0 -8
- package/lib/itinerary-app/_services/constants.service.d.ts +0 -6
- package/lib/itinerary-app/_services/custom-dropdown-menu.service.d.ts +0 -37
- package/lib/itinerary-app/_services/itinerary.drawmode.transfer.d.ts +0 -27
- package/lib/itinerary-app/_services/itinerary.service.d.ts +0 -24
- package/lib/itinerary-app/_services/location.service.d.ts +0 -10
- package/lib/itinerary-app/_services/modal.clearhistory.service.d.ts +0 -9
- package/lib/itinerary-app/_services/modal.sendclient.service.d.ts +0 -9
- package/lib/itinerary-app/_services/modal.service.d.ts +0 -9
- package/lib/itinerary-app/_services/modal.shareurlservice.d.ts +0 -9
- package/lib/itinerary-app/_services/navigation-helper.service.d.ts +0 -19
- package/lib/itinerary-app/_services/shadow-root-handler.service.d.ts +0 -6
- package/lib/itinerary-app/_services/share-popup-data.d.ts +0 -11
- package/lib/itinerary-app/itinerary-lib-routing.module.d.ts +0 -7
- package/lib/itinerary-app/itinerary-lib.component.d.ts +0 -25
- package/lib/itinerary-app/itinerary-lib.module.d.ts +0 -28
- package/lib/itinerary-app/modules/archives/archives-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/archives/archives.component.d.ts +0 -9
- package/lib/itinerary-app/modules/archives/archives.module.d.ts +0 -14
- package/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.d.ts +0 -36
- package/lib/itinerary-app/modules/dashboard/components/navbar/navbar.component.d.ts +0 -19
- package/lib/itinerary-app/modules/dashboard/components/sidebar/sidebar.component.d.ts +0 -16
- package/lib/itinerary-app/modules/dashboard/dashboard-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/dashboard/dashboard.component.d.ts +0 -5
- package/lib/itinerary-app/modules/dashboard/dashboard.module.d.ts +0 -16
- package/lib/itinerary-app/modules/dashboard/pages/main-dashboard/main-dashboard.component.d.ts +0 -5
- package/lib/itinerary-app/modules/itineraries/components/app-header-desktop/app-header-desktop.component.d.ts +0 -5
- package/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/components/comment-filter-menu/comment-filter-menu.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/components/delete-itineraries/delete-itineraries.component.d.ts +0 -20
- package/lib/itinerary-app/modules/itineraries/components/filter-menu/filter-menu.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/components/no-visual-map-filters/no-visual-map-filters.component.d.ts +0 -29
- package/lib/itinerary-app/modules/itineraries/components/report-itinerary-modal/report-itinerary-modal.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/components/report-media-modal/report-media-modal.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/components/send-to-client/send-to-client.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/components/share-popup/share-popup.component.d.ts +0 -33
- package/lib/itinerary-app/modules/itineraries/itineraries-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/itineraries/itineraries.component.d.ts +0 -22
- package/lib/itinerary-app/modules/itineraries/itineraries.module.d.ts +0 -84
- package/lib/itinerary-app/modules/itineraries/pages/advanced-filters/advanced-filters.component.d.ts +0 -43
- package/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.d.ts +0 -31
- package/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.d.ts +0 -44
- package/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal/create-itinerary-modal.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/pages/builder/components/create-itinerary-modal-item/create-itinerary-modal-item.component.d.ts +0 -20
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-destination/create-itinerary-destination.component.d.ts +0 -23
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.d.ts +0 -59
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-preview/create-itinerary-draw-preview.component.d.ts +0 -53
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-header/create-itinerary-header.component.d.ts +0 -22
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-member-details/create-itinerary-member-details.component.d.ts +0 -14
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-filter/create-itinerary-no-visual-filter.component.d.ts +0 -50
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-no-visual-preview/create-itinerary-no-visual-preview.component.d.ts +0 -27
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-start-location/create-itinerary-start-location.component.d.ts +0 -33
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-user-search/create-itinerary-user-search.component.d.ts +0 -30
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.d.ts +0 -25
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-detail/created-itinerary-detail.component.d.ts +0 -21
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-map/created-itinerary-map.component.d.ts +0 -40
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.d.ts +0 -27
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-add-place.component.d.ts +0 -25
- 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
- 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
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/itinerary-add-place/itinerary-place-members/itinerary-place-members.component.d.ts +0 -20
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.d.ts +0 -27
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.d.ts +0 -27
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.d.ts +0 -25
- package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/comment-replies/comment-replies.component.d.ts +0 -34
- package/lib/itinerary-app/modules/itineraries/pages/comment-replies/components/comment-single/comment-single.component.d.ts +0 -20
- package/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.d.ts +0 -30
- package/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.d.ts +0 -40
- package/lib/itinerary-app/modules/itineraries/pages/comments/handle-update-comment-request/handle-update-comment-request.component.d.ts +0 -9
- package/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.d.ts +0 -41
- package/lib/itinerary-app/modules/itineraries/pages/favorites/favorites.component.d.ts +0 -23
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-author-history/itinerary-author-history.component.d.ts +0 -13
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.d.ts +0 -22
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/map/map.component.d.ts +0 -38
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.d.ts +0 -32
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/existing-friends/existing-friends.component.d.ts +0 -31
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/friend-requests/friend-requests.component.d.ts +0 -25
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/itinerary-friends.component.d.ts +0 -9
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/list-friend-users/list-friend-users.component.d.ts +0 -35
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-friends/send-friend-request/send-friend-request.component.d.ts +0 -27
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/all-people/all-people.component.d.ts +0 -34
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/existing-members/existing-members.component.d.ts +0 -30
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-members.component.d.ts +0 -9
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/itinerary-sent-invites/itinerary-sent-invites.component.d.ts +0 -25
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/send-invite/send-invite.component.d.ts +0 -18
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.d.ts +0 -35
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.d.ts +0 -28
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.d.ts +0 -29
- package/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.d.ts +0 -29
- package/lib/itinerary-app/modules/itineraries/pages/notifications/notifications.component.d.ts +0 -26
- package/lib/itinerary-app/modules/itineraries/pages/stories/story.component.d.ts +0 -34
- package/lib/itinerary-app/modules/pathway/components/googlemap/googlemap.component.d.ts +0 -35
- package/lib/itinerary-app/modules/pathway/components/map-header/map-header.component.d.ts +0 -15
- package/lib/itinerary-app/modules/pathway/pages/default-destination/default-destination.component.d.ts +0 -11
- package/lib/itinerary-app/modules/pathway/pages/itinerary-preview/itinerary-preview.component.d.ts +0 -29
- package/lib/itinerary-app/modules/pathway/pages/non-visual-map-filter/non-visual-map-filter.component.d.ts +0 -20
- package/lib/itinerary-app/modules/pathway/pathway-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/pathway/pathway.component.d.ts +0 -5
- package/lib/itinerary-app/modules/pathway/pathway.module.d.ts +0 -20
- package/lib/itinerary-app/modules/search/components/clear-history-popup/clear-history-popup.component.d.ts +0 -14
- package/lib/itinerary-app/modules/search/components/quick-actions/quick-actions.component.d.ts +0 -9
- package/lib/itinerary-app/modules/search/components/recent-searches/recent-searches.component.d.ts +0 -5
- package/lib/itinerary-app/modules/search/components/recent-searches-item/recent-searches-item.component.d.ts +0 -7
- package/lib/itinerary-app/modules/search/components/recent-searches-list/recent-searches-list.component.d.ts +0 -5
- package/lib/itinerary-app/modules/search/components/search-chips/search-chips.component.d.ts +0 -24
- package/lib/itinerary-app/modules/search/components/search-results/search-results.component.d.ts +0 -8
- package/lib/itinerary-app/modules/search/components/serach-bottom-bar/serach-bottom-bar.component.d.ts +0 -7
- package/lib/itinerary-app/modules/search/components/serach-clear-history/serach-clear-history.component.d.ts +0 -16
- package/lib/itinerary-app/modules/search/pages/main-search/main-search.component.d.ts +0 -74
- package/lib/itinerary-app/modules/search/search-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/search/search.component.d.ts +0 -5
- package/lib/itinerary-app/modules/search/search.module.d.ts +0 -22
- package/lib/itinerary-app/modules/user/profile/profile.component.d.ts +0 -12
- package/lib/itinerary-app/modules/user/user-routing.module.d.ts +0 -7
- package/lib/itinerary-app/modules/user/user.module.d.ts +0 -12
- package/lib/itinerary-app/shared/action-card/action-card.component.d.ts +0 -12
- package/lib/itinerary-app/shared/bottom-modal/bottom-modal.component.d.ts +0 -20
- package/lib/itinerary-app/shared/card-component/card-component.component.d.ts +0 -42
- package/lib/itinerary-app/shared/comment/comment-images/comment-images.component.d.ts +0 -9
- package/lib/itinerary-app/shared/comment/comment.component.d.ts +0 -34
- package/lib/itinerary-app/shared/custom-heading-with-button/custom-heading-with-button.component.d.ts +0 -11
- package/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.d.ts +0 -49
- package/lib/itinerary-app/shared/cutom-card/cutom-card.component.d.ts +0 -53
- package/lib/itinerary-app/shared/footer/components/bottom-navigation-items/bottom-navigation-items.component.d.ts +0 -10
- package/lib/itinerary-app/shared/footer/footer.component.d.ts +0 -23
- package/lib/itinerary-app/shared/header/header.component.d.ts +0 -17
- package/lib/itinerary-app/shared/icon-button/icon-button.component.d.ts +0 -18
- package/lib/itinerary-app/shared/image-viewer/image-viewer.component.d.ts +0 -16
- package/lib/itinerary-app/shared/input-field-select/input-field-select.component.d.ts +0 -35
- package/lib/itinerary-app/shared/matching-clients/matching-clients.component.d.ts +0 -24
- package/lib/itinerary-app/shared/notification-tile/notification-tile.component.d.ts +0 -20
- package/lib/itinerary-app/shared/popup-modal/popup-modal.component.d.ts +0 -30
- package/lib/itinerary-app/shared/search-bar/search-bar.component.d.ts +0 -12
- package/lib/itinerary-app/shared/search-popup/search-popup.component.d.ts +0 -23
- package/lib/itinerary-app/shared/selectable/selectable.component.d.ts +0 -21
- package/lib/itinerary-app/shared/selectable-badge/selectable-badge.component.d.ts +0 -10
- package/lib/itinerary-app/shared/shared.module.d.ts +0 -39
- package/lib/itinerary-app/shared/swiper-dialog/swiper-dialog.component.d.ts +0 -26
- package/lib/itinerary-app/shared/tab-bar/tab-bar.component.d.ts +0 -19
- package/lib/itinerary-app/shared/user-stack-tile/user-stack-tile.component.d.ts +0 -19
- package/lib/itinerary-app/shared/user-tile/user-tile.component.d.ts +0 -12
- package/lib/itinerary-app/shared/users-stack/users-stack.component.d.ts +0 -23
- package/public-api.d.ts +0 -3
|
@@ -1,233 +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 "../../../../../../shared/bottom-modal/bottom-modal.component";
|
|
11
|
-
import * as i7 from "@naniteninja/ionic-lib";
|
|
12
|
-
import * as i8 from "../../../../components/no-visual-map-filters/no-visual-map-filters.component";
|
|
13
|
-
import * as i9 from "../create-itinerary-header/create-itinerary-header.component";
|
|
14
|
-
import * as i10 from "@ngx-translate/core";
|
|
15
|
-
const defaultIcon = 'assets/icons/map-markers-yellow.svg';
|
|
16
|
-
const selectedIcon = 'assets/icons/restu-icon-large.svg';
|
|
17
|
-
export class CreateItineraryNoVisualFilterComponent {
|
|
18
|
-
router;
|
|
19
|
-
activatedRoute;
|
|
20
|
-
itineraryService;
|
|
21
|
-
locationService;
|
|
22
|
-
cdr;
|
|
23
|
-
transferService;
|
|
24
|
-
ICONS = ICONS;
|
|
25
|
-
isOpen = true;
|
|
26
|
-
actions = [ICONS['location'], ICONS['pencil'], ICONS['ban']];
|
|
27
|
-
selected = this.actions[2];
|
|
28
|
-
itinerary;
|
|
29
|
-
libMap;
|
|
30
|
-
initialLocation = { lat: 24.8607, lng: 67.0011 };
|
|
31
|
-
selectedMarkers = [];
|
|
32
|
-
placeMarkers = [];
|
|
33
|
-
openFilters = false;
|
|
34
|
-
plottedMarkers = [];
|
|
35
|
-
constructor(router, activatedRoute, itineraryService, locationService, cdr, transferService) {
|
|
36
|
-
this.router = router;
|
|
37
|
-
this.activatedRoute = activatedRoute;
|
|
38
|
-
this.itineraryService = itineraryService;
|
|
39
|
-
this.locationService = locationService;
|
|
40
|
-
this.cdr = cdr;
|
|
41
|
-
this.transferService = transferService;
|
|
42
|
-
}
|
|
43
|
-
searchRestaurantsInView() {
|
|
44
|
-
const map = this.libMap.map.googleMap;
|
|
45
|
-
if (map) {
|
|
46
|
-
const bounds = map.getBounds(); // Get current visible area
|
|
47
|
-
if (!bounds)
|
|
48
|
-
return;
|
|
49
|
-
const service = new google.maps.places.PlacesService(map);
|
|
50
|
-
service.nearbySearch({
|
|
51
|
-
bounds: bounds,
|
|
52
|
-
type: 'restaurant',
|
|
53
|
-
}, (results, status) => {
|
|
54
|
-
if (status === google.maps.places.PlacesServiceStatus.OK && results) {
|
|
55
|
-
results.forEach((place) => {
|
|
56
|
-
this.addCustomMarker(place);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
addCustomMarker(place) {
|
|
63
|
-
const marker = new google.maps.Marker({
|
|
64
|
-
map: this.libMap.map.googleMap,
|
|
65
|
-
position: place.geometry?.location,
|
|
66
|
-
title: place.name,
|
|
67
|
-
icon: {
|
|
68
|
-
url: 'assets/icons/map-markers-yellow.svg',
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
this.plottedMarkers.push(marker);
|
|
72
|
-
this.placeMarkers.push({
|
|
73
|
-
place: place,
|
|
74
|
-
marker: marker
|
|
75
|
-
});
|
|
76
|
-
marker.addListener('click', () => {
|
|
77
|
-
// Toggle selection
|
|
78
|
-
const index = this.selectedMarkers.indexOf(marker);
|
|
79
|
-
if (index > -1) {
|
|
80
|
-
// Marker was already selected → deselect
|
|
81
|
-
marker.setIcon(defaultIcon);
|
|
82
|
-
this.selectedMarkers.splice(index, 1);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
// Select marker
|
|
86
|
-
marker.setIcon(selectedIcon);
|
|
87
|
-
this.selectedMarkers.push(marker);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
continueBuilding() {
|
|
92
|
-
const selectedPlaces = this.selectedMarkers.map((selectedMarker) => {
|
|
93
|
-
const placeMarker = this.placeMarkers.find(placeMarker => placeMarker.marker === selectedMarker);
|
|
94
|
-
return placeMarker.place;
|
|
95
|
-
});
|
|
96
|
-
const allPlaces = this.placeMarkers.map(placeMarker => placeMarker.place);
|
|
97
|
-
this.transferService.setPlaces(allPlaces);
|
|
98
|
-
this.transferService.setSelectedPlaces(selectedPlaces);
|
|
99
|
-
this.transferService.setCurrentLocation(this.initialLocation);
|
|
100
|
-
this.router.navigate([
|
|
101
|
-
ItinerariesRoutesEnum.ITINERARY,
|
|
102
|
-
ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE,
|
|
103
|
-
ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE_PREVIEW,
|
|
104
|
-
this.itinerary?.id
|
|
105
|
-
]);
|
|
106
|
-
}
|
|
107
|
-
ngAfterViewInit() {
|
|
108
|
-
this.locationService.getCurrentLocation()
|
|
109
|
-
.subscribe((location) => {
|
|
110
|
-
this.libMap.map.googleMap?.setCenter({
|
|
111
|
-
lat: location.lat,
|
|
112
|
-
lng: location.long
|
|
113
|
-
});
|
|
114
|
-
//Set the initial location of the user
|
|
115
|
-
this.initialLocation = {
|
|
116
|
-
lat: location.lat,
|
|
117
|
-
lng: location.long
|
|
118
|
-
};
|
|
119
|
-
this.libMap.map.googleMap?.setZoom(15);
|
|
120
|
-
//Add marker for user position
|
|
121
|
-
new google.maps.Marker({
|
|
122
|
-
map: this.libMap.map.googleMap,
|
|
123
|
-
position: {
|
|
124
|
-
lat: location.lat,
|
|
125
|
-
lng: location.long
|
|
126
|
-
},
|
|
127
|
-
title: 'You are here',
|
|
128
|
-
icon: {
|
|
129
|
-
url: 'assets/current_location.svg',
|
|
130
|
-
scaledSize: new google.maps.Size(40, 40),
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
this.searchRestaurantsInView();
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
showBottomModal() {
|
|
137
|
-
this.isOpen = true;
|
|
138
|
-
this.cdr.detectChanges();
|
|
139
|
-
}
|
|
140
|
-
ngOnInit() {
|
|
141
|
-
const id = this.activatedRoute.snapshot.params['id'];
|
|
142
|
-
if (id) {
|
|
143
|
-
this.itinerary = this.itineraryService.getById(id);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
toggleFilter() {
|
|
147
|
-
this.openFilters = !this.openFilters;
|
|
148
|
-
}
|
|
149
|
-
onPresetsChanged(conditions) {
|
|
150
|
-
this.filterPlacesInView(conditions);
|
|
151
|
-
}
|
|
152
|
-
onbackButtonClicked() {
|
|
153
|
-
this.toggleFilter();
|
|
154
|
-
}
|
|
155
|
-
updateAction(action) {
|
|
156
|
-
this.selected = action;
|
|
157
|
-
if (action === this.actions[0]) {
|
|
158
|
-
this.router.navigate([
|
|
159
|
-
ItinerariesRoutesEnum.ITINERARY,
|
|
160
|
-
ItinerariesRoutesEnum.CREATE_ITINERARY_ORIGIN,
|
|
161
|
-
this.itinerary?.id
|
|
162
|
-
]);
|
|
163
|
-
}
|
|
164
|
-
if (action === this.actions[1]) {
|
|
165
|
-
this.router.navigate([
|
|
166
|
-
ItinerariesRoutesEnum.ITINERARY,
|
|
167
|
-
ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE,
|
|
168
|
-
ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE_CREATE,
|
|
169
|
-
this.itinerary?.id,
|
|
170
|
-
]);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
filterPlacesInView(filters) {
|
|
174
|
-
const map = this.libMap.map.googleMap;
|
|
175
|
-
if (map) {
|
|
176
|
-
const bounds = map.getBounds(); // Get current visible area
|
|
177
|
-
if (!bounds)
|
|
178
|
-
return;
|
|
179
|
-
const service = new google.maps.places.PlacesService(map);
|
|
180
|
-
// Extract values from filters
|
|
181
|
-
let typeFilter;
|
|
182
|
-
let openNowFilter;
|
|
183
|
-
let ratingFilter;
|
|
184
|
-
filters.forEach((filter) => {
|
|
185
|
-
if (filter.field === 'type') {
|
|
186
|
-
typeFilter = filter.condition;
|
|
187
|
-
}
|
|
188
|
-
else if (filter.field === 'open_now') {
|
|
189
|
-
openNowFilter = filter.condition === 'true';
|
|
190
|
-
}
|
|
191
|
-
else if (filter.field === 'rating') {
|
|
192
|
-
const match = filter.condition.match(/>=\s*(\d+(?:\.\d+)?)/);
|
|
193
|
-
if (match) {
|
|
194
|
-
ratingFilter = parseFloat(match[1]);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
service.nearbySearch({
|
|
199
|
-
bounds: bounds,
|
|
200
|
-
type: typeFilter,
|
|
201
|
-
openNow: openNowFilter, // true or false
|
|
202
|
-
}, (results, status) => {
|
|
203
|
-
if (status === google.maps.places.PlacesServiceStatus.OK && results) {
|
|
204
|
-
const filtered = ratingFilter
|
|
205
|
-
? results.filter(place => {
|
|
206
|
-
const rating = place.rating ?? 0;
|
|
207
|
-
return rating >= ratingFilter;
|
|
208
|
-
})
|
|
209
|
-
: results;
|
|
210
|
-
if (this.plottedMarkers.length) {
|
|
211
|
-
this.plottedMarkers.forEach((marker) => {
|
|
212
|
-
marker.setMap(null);
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
this.selectedMarkers = [];
|
|
216
|
-
filtered.forEach(place => {
|
|
217
|
-
this.addCustomMarker(place);
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
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 });
|
|
224
|
-
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<app-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</app-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{--app-popup-modal-radius: 16px;--border-radius: var(--app-popup-modal-radius);--app-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--app-popup-modal-color: #a8a8a8;--color: var(--app-popup-modal-color, #a8a8a8);--max-width: var(--app-bottom-modal-max-width, 500px);--app-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( --app-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: "app-bottom-modal", inputs: ["isOpen", "submitButtonTitle", "showArrow", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "submitModal"] }, { kind: "directive", type: i7.LazyImageDirective, selector: "img" }, { kind: "component", type: i7.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i7.LibMapsComponent, selector: "lib-map", inputs: ["disableNotification", "markers", "initialLocation", "mapType", "enableDrag", "locations", "searchMapsString", "mapOptions", "directions$", "directionRenderOptions"], outputs: ["mapActionEvent"] }, { kind: "component", type: i8.NoVisualMapFiltersComponent, selector: "lib-no-visual-map-filters", outputs: ["presetsChanged", "backButtonClicked"] }, { kind: "component", type: i9.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
225
|
-
}
|
|
226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualFilterComponent, decorators: [{
|
|
227
|
-
type: Component,
|
|
228
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'lib-create-itinerary-no-visual-filter', standalone: false, 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<app-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</app-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{--app-popup-modal-radius: 16px;--border-radius: var(--app-popup-modal-radius);--app-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--app-popup-modal-color: #a8a8a8;--color: var(--app-popup-modal-color, #a8a8a8);--max-width: var(--app-bottom-modal-max-width, 500px);--app-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( --app-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"] }]
|
|
229
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ItineraryService }, { type: i3.LocationService }, { type: i0.ChangeDetectorRef }, { type: i4.ItineraryDrawModeTransferService }], propDecorators: { libMap: [{
|
|
230
|
-
type: ViewChild,
|
|
231
|
-
args: ['libMap']
|
|
232
|
-
}] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1maWx0ZXIvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1maWx0ZXIvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQXFCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPdEYsTUFBTSxXQUFXLEdBQUcscUNBQXFDLENBQUM7QUFDMUQsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUM7QUFVekQsTUFBTSxPQUFPLHNDQUFzQztJQWlCdkM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBckJWLEtBQUssR0FBVSxLQUFLLENBQUM7SUFDckIsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNkLE9BQU8sR0FBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMs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RCxFQUNoRCxNQUE4QyxFQUM5QyxFQUFFO2dCQUNGLElBQUksTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQ25FLE1BQU0sUUFBUSxHQUFHLFlBQVk7d0JBQzNCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNyQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQzs0QkFDakMsT0FBTyxNQUFNLElBQUksWUFBYSxDQUFDO3dCQUNqQyxDQUFDLENBQUM7d0JBQ0osQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDWixJQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO3dCQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRCQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN0QixDQUFDLENBQUMsQ0FBQztxQkFDSjtvQkFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzt3R0ExT1Usc0NBQXNDOzRGQUF0QyxzQ0FBc0MsK0tDdEJuRCw0NkRBNERBOzs0RkR0Q2Esc0NBQXNDO2tCQVBsRCxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsdUNBQXVDLGNBR3JDLEtBQUs7b1BBUUUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElpY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2ludGVyZmFjZS9pY29uJztcclxuaW1wb3J0IHsgSUNPTlMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fY29uc3RhbnRzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBJdGluZXJhcmllc1JvdXRlc0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fZW51bXMvSXRlbmFyaWVzUm91dGVzLmVudW0nO1xyXG5pbXBvcnQgeyBJdGluZXJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fbW9kZWxzL0l0aW5lcmFyeSc7XHJcbmltcG9ydCB7IEl0aW5lcmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fc2VydmljZXMvaXRpbmVyYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fc2VydmljZXMvbG9jYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IExpYk1hcHNDb21wb25lbnQgfSBmcm9tICdAbmFuaXRlbmluamEvaW9uaWMtbGliJztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5RHJhd01vZGVUcmFuc2ZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fc2VydmljZXMvaXRpbmVyYXJ5LmRyYXdtb2RlLnRyYW5zZmVyJztcclxuaW1wb3J0IHsgSUNvbmRpdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9faW50ZXJmYWNlL2NvbmRpdGlvbnMnO1xyXG5jb25zdCBkZWZhdWx0SWNvbiA9ICdhc3NldHMvaWNvbnMvbWFwLW1hcmtlcnMteWVsbG93LnN2Zyc7XHJcbmNvbnN0IHNlbGVjdGVkSWNvbiA9ICdhc3NldHMvaWNvbnMvcmVzdHUtaWNvbi1sYXJnZS5zdmcnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1maWx0ZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtZmlsdGVyLmNvbXBvbmVudC5jc3MnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUl0aW5lcmFyeU5vVmlzdWFsRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBJQ09OUzogSWljb24gPSBJQ09OUztcclxuICBpc09wZW4gPSB0cnVlO1xyXG4gIGFjdGlvbnM6IHN0cmluZ1tdID0gW0lDT05TWydsb2NhdGlvbiddLCBJQ09OU1sncGVuY2lsJ10sIElDT05TWydiYW4nXV07XHJcbiAgc2VsZWN0ZWQ6IHN0cmluZyA9IHRoaXMuYWN0aW9uc1syXTtcclxuICBpdGluZXJhcnkhOiBJdGluZXJhcnkgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnbGliTWFwJykgbGliTWFwITogTGliTWFwc0NvbXBvbmVudDtcclxuICBpbml0aWFsTG9jYXRpb24gPSB7IGxhdDogMjQuODYwNywgbG5nOiA2Ny4wMDExIH07XHJcbiAgc2VsZWN0ZWRNYXJrZXJzOiBnb29nbGUubWFwcy5NYXJrZXJbXSA9IFtdO1xyXG4gIHBsYWNlTWFya2Vyczoge1xyXG4gICAgbWFya2VyOiBnb29nbGUubWFwcy5NYXJrZXIsXHJcbiAgICBwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0XHJcbiAgfVtdID0gW107XHJcbiAgb3BlbkZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwbG90dGVkTWFya2VyczogZ29vZ2xlLm1hcHMuTWFya2VyW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGl0aW5lcmFyeVNlcnZpY2U6IEl0aW5lcmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2ZlclNlcnZpY2U6IEl0aW5lcmFyeURyYXdNb2RlVHJhbnNmZXJTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgc2VhcmNoUmVzdGF1cmFudHNJblZpZXcoKSB7XHJcbiAgICBjb25zdCBtYXAgPSB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwITtcclxuICAgIGlmIChtYXApIHtcclxuICAgICAgY29uc3QgYm91bmRzID0gbWFwLmdldEJvdW5kcygpOyAvLyBHZXQgY3VycmVudCB2aXNpYmxlIGFyZWFcclxuICAgICAgaWYgKCFib3VuZHMpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2UobWFwKTtcclxuXHJcbiAgICAgIHNlcnZpY2UubmVhcmJ5U2VhcmNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJvdW5kczogYm91bmRzLFxyXG4gICAgICAgICAgdHlwZTogJ3Jlc3RhdXJhbnQnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgcmVzdWx0czogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0W10gfCBudWxsLFxyXG4gICAgICAgICAgc3RhdHVzOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cyxcclxuICAgICAgICApID0+IHtcclxuICAgICAgICAgIGlmIChzdGF0dXMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21NYXJrZXIocGxhY2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ3VzdG9tTWFya2VyKHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQpIHtcclxuICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICBtYXA6IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAsXHJcbiAgICAgIHBvc2l0aW9uOiBwbGFjZS5nZW9tZXRyeT8ubG9jYXRpb24sXHJcbiAgICAgIHRpdGxlOiBwbGFjZS5uYW1lLFxyXG4gICAgICBpY29uOiB7XHJcbiAgICAgICAgdXJsOiAnYXNzZXRzL2ljb25zL21hcC1tYXJrZXJzLXllbGxvdy5zdmcnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBsb3R0ZWRNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgIHRoaXMucGxhY2VNYXJrZXJzLnB1c2goe1xyXG4gICAgICBwbGFjZTogcGxhY2UsXHJcbiAgICAgIG1hcmtlcjogbWFya2VyXHJcbiAgICB9KTtcclxuICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIC8vIFRvZ2dsZSBzZWxlY3Rpb25cclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkTWFya2Vycy5pbmRleE9mKG1hcmtlcik7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIC8vIE1hcmtlciB3YXMgYWxyZWFkeSBzZWxlY3RlZCDihpIgZGVzZWxlY3RcclxuICAgICAgICBtYXJrZXIuc2V0SWNvbihkZWZhdWx0SWNvbik7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBTZWxlY3QgbWFya2VyXHJcbiAgICAgICAgbWFya2VyLnNldEljb24oc2VsZWN0ZWRJY29uKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29udGludWVCdWlsZGluZygpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2VzID0gdGhpcy5zZWxlY3RlZE1hcmtlcnMubWFwKChzZWxlY3RlZE1hcmtlcikgPT4ge1xyXG4gICAgICBjb25zdCBwbGFjZU1hcmtlciA9IHRoaXMucGxhY2VNYXJrZXJzLmZpbmQocGxhY2VNYXJrZXIgPT4gcGxhY2VNYXJrZXIubWFya2VyID09PSBzZWxlY3RlZE1hcmtlcik7XHJcbiAgICAgIHJldHVybiBwbGFjZU1hcmtlciEucGxhY2U7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGFsbFBsYWNlcyA9IHRoaXMucGxhY2VNYXJrZXJzLm1hcChwbGFjZU1hcmtlciA9PiBwbGFjZU1hcmtlci5wbGFjZSk7XHJcbiAgICB0aGlzLnRyYW5zZmVyU2VydmljZS5zZXRQbGFjZXMoYWxsUGxhY2VzKTtcclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNldFNlbGVjdGVkUGxhY2VzKHNlbGVjdGVkUGxhY2VzKTtcclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNldEN1cnJlbnRMb2NhdGlvbih0aGlzLmluaXRpYWxMb2NhdGlvbik7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9OT19WSVNVQUxfRklMVEVSX01PREUsXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX05PX1ZJU1VBTF9GSUxURVJfTU9ERV9QUkVWSUVXLFxyXG4gICAgICB0aGlzLml0aW5lcmFyeT8uaWRcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb24oKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2NhdGlvbikgPT4ge1xyXG4gICAgICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXA/LnNldENlbnRlcih7XHJcbiAgICAgICAgICBsYXQ6IGxvY2F0aW9uLmxhdCxcclxuICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL1NldCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgdXNlclxyXG4gICAgICAgIHRoaXMuaW5pdGlhbExvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICBsbmc6IGxvY2F0aW9uLmxvbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcD8uc2V0Wm9vbSgxNSk7XHJcblxyXG4gICAgICAgIC8vQWRkIG1hcmtlciBmb3IgdXNlciBwb3NpdGlvblxyXG4gICAgICAgIG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwLFxyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRpdGxlOiAnWW91IGFyZSBoZXJlJyxcclxuICAgICAgICAgIGljb246IHtcclxuICAgICAgICAgICAgdXJsOiAnYXNzZXRzL2N1cnJlbnRfbG9jYXRpb24uc3ZnJyxcclxuICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoNDAsIDQwKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdGF1cmFudHNJblZpZXcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93Qm90dG9tTW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5pdGluZXJhcnkgPSB0aGlzLml0aW5lcmFyeVNlcnZpY2UuZ2V0QnlJZChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLm9wZW5GaWx0ZXJzID0gIXRoaXMub3BlbkZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBvblByZXNldHNDaGFuZ2VkKGNvbmRpdGlvbnM6IElDb25kaXRpb25zW10pIHtcclxuICAgIHRoaXMuZmlsdGVyUGxhY2VzSW5WaWV3KGNvbmRpdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgb25iYWNrQnV0dG9uQ2xpY2tlZCgpIHtcclxuICAgIHRoaXMudG9nZ2xlRmlsdGVyKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBY3Rpb24oYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGFjdGlvbjtcclxuICAgICAgaWYoYWN0aW9uID09PSB0aGlzLmFjdGlvbnNbMF0pIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfT1JJR0lOLFxyXG4gICAgICAgICAgdGhpcy5pdGluZXJhcnk/LmlkXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYoYWN0aW9uID09PSB0aGlzLmFjdGlvbnNbMV0pIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfRFJBV19NT0RFLFxyXG4gICAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfRFJBV19NT0RFX0NSRUFURSxcclxuICAgICAgICAgIHRoaXMuaXRpbmVyYXJ5Py5pZCxcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBmaWx0ZXJQbGFjZXNJblZpZXcoZmlsdGVyczogSUNvbmRpdGlvbnNbXSkge1xyXG4gIGNvbnN0IG1hcCA9IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhO1xyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7IC8vIEdldCBjdXJyZW50IHZpc2libGUgYXJlYVxyXG4gICAgICBpZiAoIWJvdW5kcykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3Qgc2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShtYXApO1xyXG5cclxuICAgICAgLy8gRXh0cmFjdCB2YWx1ZXMgZnJvbSBmaWx0ZXJzXHJcbiAgICAgIGxldCB0eXBlRmlsdGVyOiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgICBsZXQgb3Blbk5vd0ZpbHRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAgICAgbGV0IHJhdGluZ0ZpbHRlcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IElDb25kaXRpb25zKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbHRlci5maWVsZCA9PT0gJ3R5cGUnKSB7XHJcbiAgICAgICAgICB0eXBlRmlsdGVyID0gZmlsdGVyLmNvbmRpdGlvbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5maWVsZCA9PT0gJ29wZW5fbm93Jykge1xyXG4gICAgICAgICAgb3Blbk5vd0ZpbHRlciA9IGZpbHRlci5jb25kaXRpb24gPT09ICd0cnVlJztcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5maWVsZCA9PT0gJ3JhdGluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gKGZpbHRlci5jb25kaXRpb24gYXMgc3RyaW5nKS5tYXRjaCgvPj1cXHMqKFxcZCsoPzpcXC5cXGQrKT8pLyk7XHJcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgcmF0aW5nRmlsdGVyID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHNlcnZpY2UubmVhcmJ5U2VhcmNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJvdW5kczogYm91bmRzLFxyXG4gICAgICAgICAgdHlwZTogdHlwZUZpbHRlciEgYXMgc3RyaW5nLCAvLyBlLmcuICdyZXN0YXVyYW50J1xyXG4gICAgICAgICAgb3Blbk5vdzogb3Blbk5vd0ZpbHRlciwgLy8gdHJ1ZSBvciBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgcmVzdWx0czogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0W10gfCBudWxsLFxyXG4gICAgICAgICAgc3RhdHVzOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1c1xyXG4gICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0sgJiYgcmVzdWx0cykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHJhdGluZ0ZpbHRlclxyXG4gICAgICAgICAgICAgID8gcmVzdWx0cy5maWx0ZXIocGxhY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByYXRpbmcgPSBwbGFjZS5yYXRpbmcgPz8gMDtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhdGluZyA+PSByYXRpbmdGaWx0ZXIhO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICA6IHJlc3VsdHM7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGxvdHRlZE1hcmtlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wbG90dGVkTWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG1hcmtlci5zZXRNYXAobnVsbCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMgPSBbXTtcclxuICAgICAgICAgICAgZmlsdGVyZWQuZm9yRWFjaChwbGFjZSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21NYXJrZXIocGxhY2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXJcclxuICBbcHJvZ3Jlc3NCYXJWYWx1ZV09XCI1MFwiXHJcbiAgaGVhZGluZz1cIkNyZWF0ZSBJdGluZXJhcnlcIlxyXG4+PC9hcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXI+XHJcbjxpbWdcclxuICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXIoKVwiXHJcbiAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyByaWdodDogMTBweDsgdG9wOiAyMCU7IHotaW5kZXg6IDk5O1wiXHJcbiAgICBbc3JjXT1cIklDT05TWydkb3RzSWNvbiddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiNDBcIlxyXG4gICAgd2lkdGg9XCI0MFwiXHJcbiAgLz5cclxuPGxpYi1tYXAgI2xpYk1hcCBjbGFzcz1cIm1hcHMtMTAwdmhcIj48L2xpYi1tYXA+XHJcbjxkaXYgY2xhc3M9XCJmaWx0ZXItcGFnZVwiICpuZ0lmPVwib3BlbkZpbHRlcnNcIj5cclxuICA8bGliLW5vLXZpc3VhbC1tYXAtZmlsdGVyc1xyXG4gICAgKHByZXNldHNDaGFuZ2VkKT1cIm9uUHJlc2V0c0NoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAoYmFja0J1dHRvbkNsaWNrZWQpPVwib25iYWNrQnV0dG9uQ2xpY2tlZCgpXCJcclxuICA+PC9saWItbm8tdmlzdWFsLW1hcC1maWx0ZXJzPlxyXG48L2Rpdj5cclxuPGFwcC1ib3R0b20tbW9kYWxcclxuICBbc2hvd0Fycm93XT1cInRydWVcIlxyXG4gIFsoaXNPcGVuKV09XCJpc09wZW5cIlxyXG4gIFthZGFwdFRvQ29udGVudEhlaWdodF09XCJ0cnVlXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJwbC00IHByLTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgPGgzIGNsYXNzPVwiZm9udC1DYWxpc3RvZ2EgdGV4dC1sZ1wiPnt7IFwiTk9fVklTVUFMX0ZJTFRFUlNcInwgdHJhbnNsYXRlIH19PC9oMz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGFibGVzIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUFjdGlvbihhKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGFjdGlvbnNcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGEgb2YgYWN0aW9uc1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBhID09PSBzZWxlY3RlZCB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiYVwiIGFsdD1cImljb25cIiBsb2FkaW5nPVwibGF6eVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cCBjbGFzcz1cIm10LTMgbWItNFwiPnt7IFwiTk9fVklTVUFMX0ZJTFRFUlNcInwgdHJhbnNsYXRlIH19PC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxsaWItZm9vdGVyLXNoYXJlZFxyXG4gICAgKGNvbnRpbnVlQnV0dG9uQ2xpY2spPVwiY29udGludWVCdWlsZGluZygpXCJcclxuICAgIFtjYW5Db250aW51ZV09XCJ0cnVlXCJcclxuICAgIFtjb250aW51ZUJ1dHRvblRleHRdPVwiJ0NPTU1PTi5DT05USU5VRScgfCB0cmFuc2xhdGVcIlxyXG4gICAgPjwvbGliLWZvb3Rlci1zaGFyZWQ+XHJcbjwvYXBwLWJvdHRvbS1tb2RhbD5cclxuPGRpdlxyXG4gIChjbGljayk9XCJzaG93Qm90dG9tTW9kYWwoKVwiXHJcbiAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCBjdXJzb3ItcG9pbnRlciB6LTEwXCJcclxuICBzdHlsZT1cImxlZnQ6IDUwJVwiXHJcbj5cclxuICA8aW1nXHJcbiAgICBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDI3MGRlZylcIlxyXG4gICAgW3NyY109XCJJQ09OU1sncmlnaHRBcnJvdyddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiMTVcIlxyXG4gICAgd2lkdGg9XCIxNVwiXHJcbiAgLz5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,158 +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 "../../../../../../shared/bottom-modal/bottom-modal.component";
|
|
6
|
-
import * as i3 from "@naniteninja/ionic-lib";
|
|
7
|
-
import * as i4 from "../create-itinerary-header/create-itinerary-header.component";
|
|
8
|
-
import * as i5 from "@ngx-translate/core";
|
|
9
|
-
const defaultIcon = 'assets/icons/map-markers-yellow.svg';
|
|
10
|
-
const selectedIcon = 'assets/icons/restu-icon-large.svg';
|
|
11
|
-
export class CreateItineraryNoVisualPreviewComponent {
|
|
12
|
-
transferService;
|
|
13
|
-
ICONS = ICONS;
|
|
14
|
-
isOpen = true;
|
|
15
|
-
selectedMarkers = []; //Selected markers on the map
|
|
16
|
-
placesResult; //Places result required for preview
|
|
17
|
-
placeMarkers;
|
|
18
|
-
allMarkers = [];
|
|
19
|
-
libMap;
|
|
20
|
-
constructor(transferService) {
|
|
21
|
-
this.transferService = transferService;
|
|
22
|
-
}
|
|
23
|
-
preview() {
|
|
24
|
-
}
|
|
25
|
-
ngAfterViewInit() {
|
|
26
|
-
this.libMap.map.googleMap?.setCenter(this.transferService.location);
|
|
27
|
-
this.libMap.map.googleMap?.setZoom(15);
|
|
28
|
-
//Add marker for user position
|
|
29
|
-
new google.maps.Marker({
|
|
30
|
-
map: this.libMap.map.googleMap,
|
|
31
|
-
position: this.transferService.location,
|
|
32
|
-
title: 'You are here',
|
|
33
|
-
icon: {
|
|
34
|
-
url: 'assets/current_location.svg',
|
|
35
|
-
scaledSize: new google.maps.Size(40, 40),
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
this.addMarkersToMap(this.libMap.map.googleMap);
|
|
39
|
-
}
|
|
40
|
-
addMarkersToMap(map) {
|
|
41
|
-
const selectedPlaceIds = new Set(this.transferService.selectedPlaces.map(p => p.place_id));
|
|
42
|
-
// Clear existing markers
|
|
43
|
-
this.allMarkers.forEach(marker => marker.setMap(null));
|
|
44
|
-
this.allMarkers = [];
|
|
45
|
-
// Plot selected places in RED
|
|
46
|
-
this.transferService.selectedPlaces.forEach(place => {
|
|
47
|
-
if (place.geometry?.location) {
|
|
48
|
-
const marker = new google.maps.Marker({
|
|
49
|
-
map,
|
|
50
|
-
position: place.geometry.location,
|
|
51
|
-
title: place.name,
|
|
52
|
-
icon: {
|
|
53
|
-
url: selectedIcon
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
this.selectedMarkers.push(marker);
|
|
57
|
-
this.allMarkers.push(marker);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
// Plot non-selected places (avoid duplicates) in DEFAULT
|
|
61
|
-
this.transferService.places.forEach(place => {
|
|
62
|
-
if (place.geometry?.location &&
|
|
63
|
-
!selectedPlaceIds.has(place.place_id)) {
|
|
64
|
-
const marker = new google.maps.Marker({
|
|
65
|
-
map,
|
|
66
|
-
position: place.geometry.location,
|
|
67
|
-
title: place.name,
|
|
68
|
-
icon: {
|
|
69
|
-
url: defaultIcon
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
this.allMarkers.push(marker);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
this.optimizeAndRender();
|
|
76
|
-
}
|
|
77
|
-
showBottomModal() {
|
|
78
|
-
this.isOpen = true;
|
|
79
|
-
}
|
|
80
|
-
optimizeAndRender() {
|
|
81
|
-
if (this.selectedMarkers.length < 2)
|
|
82
|
-
return;
|
|
83
|
-
// Sort markers based on latitude (optional — adjust this logic as per your direction needs)
|
|
84
|
-
this.selectedMarkers.sort((a, b) => {
|
|
85
|
-
const posA = a.getPosition();
|
|
86
|
-
const posB = b.getPosition();
|
|
87
|
-
if (!posA)
|
|
88
|
-
return 1;
|
|
89
|
-
if (!posB)
|
|
90
|
-
return -1;
|
|
91
|
-
return posB.lat() - posA.lat();
|
|
92
|
-
});
|
|
93
|
-
const markerPositions = this.selectedMarkers
|
|
94
|
-
.map(m => m.getPosition())
|
|
95
|
-
.filter((p) => !!p);
|
|
96
|
-
if (markerPositions.length < 2)
|
|
97
|
-
return;
|
|
98
|
-
const destination = markerPositions[markerPositions.length - 1];
|
|
99
|
-
const startPos = markerPositions[0];
|
|
100
|
-
// Calculate a synthetic starting point slightly before the first marker (northwards)
|
|
101
|
-
const OFFSET_METERS = 50; // adjust this for how far back the path should start
|
|
102
|
-
const syntheticStart = google.maps.geometry.spherical.computeOffset(startPos, -OFFSET_METERS, 180);
|
|
103
|
-
const waypoints = markerPositions.map(pos => ({
|
|
104
|
-
location: pos,
|
|
105
|
-
stopover: true
|
|
106
|
-
}));
|
|
107
|
-
const directionsService = new google.maps.DirectionsService();
|
|
108
|
-
const directionsRenderer = new google.maps.DirectionsRenderer({
|
|
109
|
-
map: this.libMap.map.googleMap,
|
|
110
|
-
suppressMarkers: true,
|
|
111
|
-
polylineOptions: {
|
|
112
|
-
strokeColor: '#FFFFFF',
|
|
113
|
-
strokeOpacity: 1.0,
|
|
114
|
-
strokeWeight: 4,
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
directionsService.route({
|
|
118
|
-
origin: syntheticStart,
|
|
119
|
-
destination,
|
|
120
|
-
waypoints,
|
|
121
|
-
travelMode: google.maps.TravelMode.DRIVING,
|
|
122
|
-
optimizeWaypoints: false,
|
|
123
|
-
}, (response, status) => {
|
|
124
|
-
if (status === google.maps.DirectionsStatus.OK && response) {
|
|
125
|
-
directionsRenderer.setDirections(response);
|
|
126
|
-
// Draw custom markers
|
|
127
|
-
new google.maps.Marker({
|
|
128
|
-
position: syntheticStart,
|
|
129
|
-
map: this.libMap.map.googleMap,
|
|
130
|
-
icon: {
|
|
131
|
-
url: 'assets/icons/start-loc-marker.svg',
|
|
132
|
-
scaledSize: new google.maps.Size(30, 30),
|
|
133
|
-
},
|
|
134
|
-
title: 'Start Point',
|
|
135
|
-
});
|
|
136
|
-
new google.maps.Marker({
|
|
137
|
-
position: destination,
|
|
138
|
-
map: this.libMap.map.googleMap,
|
|
139
|
-
icon: {
|
|
140
|
-
url: 'assets/icons/en-location.svg',
|
|
141
|
-
scaledSize: new google.maps.Size(30, 30),
|
|
142
|
-
},
|
|
143
|
-
title: 'End Point',
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualPreviewComponent, deps: [{ token: i1.ItineraryDrawModeTransferService }], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
-
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<app-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</app-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: "app-bottom-modal", inputs: ["isOpen", "submitButtonTitle", "showArrow", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "submitModal"] }, { kind: "directive", type: i3.LazyImageDirective, selector: "img" }, { kind: "component", type: i3.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i3.LibMapsComponent, selector: "lib-map", inputs: ["disableNotification", "markers", "initialLocation", "mapType", "enableDrag", "locations", "searchMapsString", "mapOptions", "directions$", "directionRenderOptions"], outputs: ["mapActionEvent"] }, { kind: "component", type: i4.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
150
|
-
}
|
|
151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryNoVisualPreviewComponent, decorators: [{
|
|
152
|
-
type: Component,
|
|
153
|
-
args: [{ selector: 'lib-create-itinerary-no-visual-preview', standalone: false, 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<app-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</app-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"] }]
|
|
154
|
-
}], ctorParameters: () => [{ type: i1.ItineraryDrawModeTransferService }], propDecorators: { libMap: [{
|
|
155
|
-
type: ViewChild,
|
|
156
|
-
args: ['libMap']
|
|
157
|
-
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9tb2R1bGVzL2l0aW5lcmFyaWVzL3BhZ2VzL2J1aWxkZXIvcGFnZXMvY3JlYXRlLWl0aW5lcmFyeS1uby12aXN1YWwtcHJldmlldy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LW5vLXZpc3VhbC1wcmV2aWV3L2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztBQUUvRCxNQUFNLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQztBQUMxRCxNQUFNLFlBQVksR0FBRyxtQ0FBbUMsQ0FBQztBQVN6RCxNQUFNLE9BQU8sdUNBQXVDO0lBWXpDO0lBWFQsS0FBSyxHQUFVLEtBQUssQ0FBQztJQUNyQixNQUFNLEdBQVksSUFBSSxDQUFDO0lBQ3ZCLGVBQWUsR0FBeUIsRUFBRSxDQUFDLENBQUEsNkJBQTZCO0lBQ3hFLFlBQVksQ0FBb0MsQ0FBQSxvQ0FBb0M7SUFDcEYsWUFBWSxDQUdUO0lBQ0gsVUFBVSxHQUF5QixFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFvQjtJQUMvQyxZQUNTLGVBQWlEO1FBQWpELG9CQUFlLEdBQWYsZUFBZSxDQUFrQztJQUUxRCxDQUFDO0lBRUQsT0FBTztJQUVQLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkMsOEJBQThCO1FBQzlCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVM7WUFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUN2QyxLQUFLLEVBQUUsY0FBYztZQUNyQixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLDZCQUE2QjtnQkFDbEMsVUFBVSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUN6QztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVDLGVBQWUsQ0FBQyxHQUFvQjtRQUNwQyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTNGLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVyQiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUU7Z0JBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQ3BDLEdBQUc7b0JBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUTtvQkFDakMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNqQixJQUFJLEVBQUU7d0JBQ0osR0FBRyxFQUFFLFlBQVk7cUJBQ2xCO2lCQUNGLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUMsSUFDRSxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVE7Z0JBQ3hCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDckM7Z0JBQ0EsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDcEMsR0FBRztvQkFDSCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRO29CQUNqQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2pCLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsV0FBVztxQkFDakI7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxPQUFPO1FBRTVDLDRGQUE0RjtRQUM1RixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFFdkMsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBDLHFGQUFxRjtRQUNyRixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxxREFBcUQ7UUFDL0UsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbkcsTUFBTSxTQUFTLEdBQXFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLFFBQVEsRUFBRSxHQUFHO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDOUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDNUQsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVU7WUFDL0IsZUFBZSxFQUFFLElBQUk7WUFDckIsZUFBZSxFQUFFO2dCQUNmLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixhQUFhLEVBQUUsR0FBRztnQkFDbEIsWUFBWSxFQUFFLENBQUM7YUFDaEI7U0FDRixDQUFDLENBQUM7UUFFSCxpQkFBaUIsQ0FBQyxLQUFLLENBQ3JCO1lBQ0UsTUFBTSxFQUFFLGNBQWM7WUFDdEIsV0FBVztZQUNYLFNBQVM7WUFDVCxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTztZQUMxQyxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCLEVBQ0QsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksUUFBUSxFQUFFO2dCQUMxRCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTNDLHNCQUFzQjtnQkFDdEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDckIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFVO29CQUMvQixJQUFJLEVBQUU7d0JBQ0osR0FBRyxFQUFFLG1DQUFtQzt3QkFDeEMsVUFBVSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztxQkFDekM7b0JBQ0QsS0FBSyxFQUFFLGFBQWE7aUJBQ3JCLENBQUMsQ0FBQztnQkFFSCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUNyQixRQUFRLEVBQUUsV0FBVztvQkFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVU7b0JBQy9CLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsOEJBQThCO3dCQUNuQyxVQUFVLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO3FCQUN6QztvQkFDRCxLQUFLLEVBQUUsV0FBVztpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7d0dBaktVLHVDQUF1Qzs0RkFBdkMsdUNBQXVDLGdMQ2ZwRCxtOE1BMExBOzs0RkQzS2EsdUNBQXVDO2tCQU5uRCxTQUFTOytCQUNJLHdDQUF3QyxjQUd0QyxLQUFLO3FHQVlFLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEl0aW5lcmFyeURyYXdNb2RlVHJhbnNmZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL2l0aW5lcmFyeS5kcmF3bW9kZS50cmFuc2Zlcic7XHJcbmltcG9ydCB7IElpY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2ludGVyZmFjZS9pY29uJztcclxuaW1wb3J0IHsgSUNPTlMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fY29uc3RhbnRzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IExpYk1hcHNDb21wb25lbnQgfSBmcm9tICdAbmFuaXRlbmluamEvaW9uaWMtbGliJztcclxuY29uc3QgZGVmYXVsdEljb24gPSAnYXNzZXRzL2ljb25zL21hcC1tYXJrZXJzLXllbGxvdy5zdmcnO1xyXG5jb25zdCBzZWxlY3RlZEljb24gPSAnYXNzZXRzL2ljb25zL3Jlc3R1LWljb24tbGFyZ2Uuc3ZnJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWNyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktbm8tdmlzdWFsLXByZXZpZXcuY29tcG9uZW50LmNzcycsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlSXRpbmVyYXJ5Tm9WaXN1YWxQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgSUNPTlM6IElpY29uID0gSUNPTlM7XHJcbiAgaXNPcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuICBzZWxlY3RlZE1hcmtlcnM6IGdvb2dsZS5tYXBzLk1hcmtlcltdID0gW107Ly9TZWxlY3RlZCBtYXJrZXJzIG9uIHRoZSBtYXBcclxuICBwbGFjZXNSZXN1bHQhOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHRbXTsvL1BsYWNlcyByZXN1bHQgcmVxdWlyZWQgZm9yIHByZXZpZXdcclxuICBwbGFjZU1hcmtlcnMhOiB7XHJcbiAgICBtYXJrZXI6IGdvb2dsZS5tYXBzLk1hcmtlcixcclxuICAgIHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHRcclxuICB9W11cclxuICBhbGxNYXJrZXJzOiBnb29nbGUubWFwcy5NYXJrZXJbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpYk1hcCcpIGxpYk1hcCE6IExpYk1hcHNDb21wb25lbnQ7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdHJhbnNmZXJTZXJ2aWNlOiBJdGluZXJhcnlEcmF3TW9kZVRyYW5zZmVyU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHJldmlldygpIHtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcD8uc2V0Q2VudGVyKHRoaXMudHJhbnNmZXJTZXJ2aWNlLmxvY2F0aW9uKTtcclxuICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXA/LnNldFpvb20oMTUpO1xyXG5cclxuICAgIC8vQWRkIG1hcmtlciBmb3IgdXNlciBwb3NpdGlvblxyXG4gICAgbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcbiAgICAgIG1hcDogdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCxcclxuICAgICAgcG9zaXRpb246IHRoaXMudHJhbnNmZXJTZXJ2aWNlLmxvY2F0aW9uLFxyXG4gICAgICB0aXRsZTogJ1lvdSBhcmUgaGVyZScsXHJcbiAgICAgIGljb246IHtcclxuICAgICAgICB1cmw6ICdhc3NldHMvY3VycmVudF9sb2NhdGlvbi5zdmcnLFxyXG4gICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDQwLCA0MCksXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWRkTWFya2Vyc1RvTWFwKHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhKTtcclxuICB9XHJcblxyXG4gICAgYWRkTWFya2Vyc1RvTWFwKG1hcDogZ29vZ2xlLm1hcHMuTWFwKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFBsYWNlSWRzID0gbmV3IFNldCh0aGlzLnRyYW5zZmVyU2VydmljZS5zZWxlY3RlZFBsYWNlcy5tYXAocCA9PiBwLnBsYWNlX2lkKSk7XHJcblxyXG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgbWFya2Vyc1xyXG4gICAgdGhpcy5hbGxNYXJrZXJzLmZvckVhY2gobWFya2VyID0+IG1hcmtlci5zZXRNYXAobnVsbCkpO1xyXG4gICAgdGhpcy5hbGxNYXJrZXJzID0gW107XHJcblxyXG4gICAgLy8gUGxvdCBzZWxlY3RlZCBwbGFjZXMgaW4gUkVEXHJcbiAgICB0aGlzLnRyYW5zZmVyU2VydmljZS5zZWxlY3RlZFBsYWNlcy5mb3JFYWNoKHBsYWNlID0+IHtcclxuICAgICAgaWYgKHBsYWNlLmdlb21ldHJ5Py5sb2NhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgbWFwLFxyXG4gICAgICAgICAgcG9zaXRpb246IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLFxyXG4gICAgICAgICAgdGl0bGU6IHBsYWNlLm5hbWUsXHJcbiAgICAgICAgICBpY29uOiB7XHJcbiAgICAgICAgICAgIHVybDogc2VsZWN0ZWRJY29uXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMucHVzaChtYXJrZXIpO1xyXG4gICAgICAgIHRoaXMuYWxsTWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFBsb3Qgbm9uLXNlbGVjdGVkIHBsYWNlcyAoYXZvaWQgZHVwbGljYXRlcykgaW4gREVGQVVMVFxyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2UucGxhY2VzLmZvckVhY2gocGxhY2UgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGxhY2UuZ2VvbWV0cnk/LmxvY2F0aW9uICYmXHJcbiAgICAgICAgIXNlbGVjdGVkUGxhY2VJZHMuaGFzKHBsYWNlLnBsYWNlX2lkKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgIG1hcCxcclxuICAgICAgICAgIHBvc2l0aW9uOiBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbixcclxuICAgICAgICAgIHRpdGxlOiBwbGFjZS5uYW1lLFxyXG4gICAgICAgICAgaWNvbjoge1xyXG4gICAgICAgICAgICB1cmw6IGRlZmF1bHRJY29uXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hbGxNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vcHRpbWl6ZUFuZFJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0JvdHRvbU1vZGFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb3B0aW1pemVBbmRSZW5kZXIoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1hcmtlcnMubGVuZ3RoIDwgMikgcmV0dXJuO1xyXG5cclxuICAgIC8vIFNvcnQgbWFya2VycyBiYXNlZCBvbiBsYXRpdHVkZSAob3B0aW9uYWwg4oCUIGFkanVzdCB0aGlzIGxvZ2ljIGFzIHBlciB5b3VyIGRpcmVjdGlvbiBuZWVkcylcclxuICAgIHRoaXMuc2VsZWN0ZWRNYXJrZXJzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgcG9zQSA9IGEuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgY29uc3QgcG9zQiA9IGIuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgaWYgKCFwb3NBKSByZXR1cm4gMTtcclxuICAgICAgaWYgKCFwb3NCKSByZXR1cm4gLTE7XHJcbiAgICAgIHJldHVybiBwb3NCLmxhdCgpIC0gcG9zQS5sYXQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG1hcmtlclBvc2l0aW9ucyA9IHRoaXMuc2VsZWN0ZWRNYXJrZXJzXHJcbiAgICAgIC5tYXAobSA9PiBtLmdldFBvc2l0aW9uKCkpXHJcbiAgICAgIC5maWx0ZXIoKHApOiBwIGlzIGdvb2dsZS5tYXBzLkxhdExuZyA9PiAhIXApO1xyXG5cclxuICAgIGlmIChtYXJrZXJQb3NpdGlvbnMubGVuZ3RoIDwgMikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gbWFya2VyUG9zaXRpb25zW21hcmtlclBvc2l0aW9ucy5sZW5ndGggLSAxXTtcclxuICAgIGNvbnN0IHN0YXJ0UG9zID0gbWFya2VyUG9zaXRpb25zWzBdO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSBhIHN5bnRoZXRpYyBzdGFydGluZyBwb2ludCBzbGlnaHRseSBiZWZvcmUgdGhlIGZpcnN0IG1hcmtlciAobm9ydGh3YXJkcylcclxuICAgIGNvbnN0IE9GRlNFVF9NRVRFUlMgPSA1MDsgLy8gYWRqdXN0IHRoaXMgZm9yIGhvdyBmYXIgYmFjayB0aGUgcGF0aCBzaG91bGQgc3RhcnRcclxuICAgIGNvbnN0IHN5bnRoZXRpY1N0YXJ0ID0gZ29vZ2xlLm1hcHMuZ2VvbWV0cnkuc3BoZXJpY2FsLmNvbXB1dGVPZmZzZXQoc3RhcnRQb3MsIC1PRkZTRVRfTUVURVJTLCAxODApO1xyXG5cclxuICAgIGNvbnN0IHdheXBvaW50czogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1dheXBvaW50W10gPSBtYXJrZXJQb3NpdGlvbnMubWFwKHBvcyA9PiAoe1xyXG4gICAgICBsb2NhdGlvbjogcG9zLFxyXG4gICAgICBzdG9wb3ZlcjogdHJ1ZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGRpcmVjdGlvbnNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBkaXJlY3Rpb25zUmVuZGVyZXIgPSBuZXcgZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlbmRlcmVyKHtcclxuICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwISxcclxuICAgICAgc3VwcHJlc3NNYXJrZXJzOiB0cnVlLFxyXG4gICAgICBwb2x5bGluZU9wdGlvbnM6IHtcclxuICAgICAgICBzdHJva2VDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgICAgIHN0cm9rZU9wYWNpdHk6IDEuMCxcclxuICAgICAgICBzdHJva2VXZWlnaHQ6IDQsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgb3JpZ2luOiBzeW50aGV0aWNTdGFydCxcclxuICAgICAgICBkZXN0aW5hdGlvbixcclxuICAgICAgICB3YXlwb2ludHMsXHJcbiAgICAgICAgdHJhdmVsTW9kZTogZ29vZ2xlLm1hcHMuVHJhdmVsTW9kZS5EUklWSU5HLFxyXG4gICAgICAgIG9wdGltaXplV2F5cG9pbnRzOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgKHJlc3BvbnNlLCBzdGF0dXMpID0+IHtcclxuICAgICAgICBpZiAoc3RhdHVzID09PSBnb29nbGUubWFwcy5EaXJlY3Rpb25zU3RhdHVzLk9LICYmIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBkaXJlY3Rpb25zUmVuZGVyZXIuc2V0RGlyZWN0aW9ucyhyZXNwb25zZSk7XHJcblxyXG4gICAgICAgICAgLy8gRHJhdyBjdXN0b20gbWFya2Vyc1xyXG4gICAgICAgICAgbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzeW50aGV0aWNTdGFydCxcclxuICAgICAgICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwISxcclxuICAgICAgICAgICAgaWNvbjoge1xyXG4gICAgICAgICAgICAgIHVybDogJ2Fzc2V0cy9pY29ucy9zdGFydC1sb2MtbWFya2VyLnN2ZycsXHJcbiAgICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoMzAsIDMwKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6ICdTdGFydCBQb2ludCcsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGRlc3RpbmF0aW9uLFxyXG4gICAgICAgICAgICBtYXA6IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhLFxyXG4gICAgICAgICAgICBpY29uOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiAnYXNzZXRzL2ljb25zL2VuLWxvY2F0aW9uLnN2ZycsXHJcbiAgICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoMzAsIDMwKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6ICdFbmQgUG9pbnQnLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWNyZWF0ZS1pdGluZXJhcnktaGVhZGVyXHJcbiAgW3Byb2dyZXNzQmFyVmFsdWVdPVwiMTAwXCJcclxuICBoZWFkaW5nPVwiQ3JlYXRlIEl0aW5lcmFyeVwiXHJcbj48L2FwcC1jcmVhdGUtaXRpbmVyYXJ5LWhlYWRlcj5cclxuPGxpYi1tYXAgI2xpYk1hcCBjbGFzcz1cIm1hcHMtMTAwdmhcIj48L2xpYi1tYXA+XHJcblxyXG48YXBwLWJvdHRvbS1tb2RhbFxyXG4gICAgWyhpc09wZW4pXT1cImlzT3BlblwiXHJcbj5cclxuICAgIDxkaXYgY2xhc3M9XCJwbC00IHByLTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xIHRleHQteHNcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIFtzcmNdPVwiSUNPTlNbJ2xvY2F0aW9uV2hpdGUnXVwiXHJcbiAgICAgICAgYWx0PVwibG9jYXRpb25cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4+e3t0cmFuc2ZlclNlcnZpY2Uuc2VsZWN0ZWRQbGFjZXM/Lmxlbmd0aH19IHt7IFwiSVRJTkVSQVJZX1NVTU1BUlkuUExBQ0VTXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoLTQgYm9yZGVyIHctMCBib3JkZXItc2Vjb25kYXJ5XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLXgtMiB0ZXh0LXhzXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiSUNPTlNbJ2Nsb2NrJ11cIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgIDxzcGFuPjQ1IHt7IFwiREFURV9USU1FLk1JTlVURVNcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5IGZvbnQtdGhpblwiPig2LjYgS20pPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgIGNsYXNzPVwiYm9yZGVyIGJvcmRlci1kYXNoZWQgb3BhY2l0eS01NSByb3RhdGUtOTAgYWJzb2x1dGUgLWxlZnQtNiB0b3AtMzZcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvbnQtR2lscm95IG10LTUgbWItMyBmbGV4IGZsZXgtY29sIGdhcC15LTVcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHctZnVsbCBnYXAteC00IG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLXgtNlwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInotNTAgaWNvbiB3LTggaC04IG91dHNldC1zaGFkb3cgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjJcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIklDT05TWydzdGFydExvY2F0aW9uJ11cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRvdHRlZC1saW5lXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvZG90dGVkLWxpbmUuc3ZnXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgPGgyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImYtc20gZi14cyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xIHRleHQteHMgbWItMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTaGFuLXVsLWhhcSBoYXFlZSByb2FkXHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmLXhzIHRleHQtc2Vjb25kYXJ5IHRleHQteHMgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgU3RhcnRpbmcgbG9jYXRpb25cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtM1wiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctWzE1cHhdIGgtWzE1cHhdIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ2VkaXRQaW5rJ11cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdy1mdWxsIGdhcC14LTQgbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBnYXAteC02XCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiei01MCBpY29uIHctOCBoLTggb3V0c2V0LXNoYWRvdyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMlwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjE4XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ3Jlc3R1J11cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRvdHRlZC1saW5lXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvZG90dGVkLWxpbmUuc3ZnXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgPGgyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImYtc20gZi14cyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xIHRleHQteHMgbWItMVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBLYWJ1bCB0aWtrYVxyXG4gICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZi14cyB0ZXh0LXNlY29uZGFyeSB0ZXh0LXhzIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIEFmZ2hhbiBjdWlzaW5lXHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC14LTNcIj5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJJQ09OU1snaGFtYnVyZ2VyJ11cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTVweF0gaC1bMTVweF0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIklDT05TWydkZWxldGVQaW5rJ11cIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTVweF0gaC1bMTVweF0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGwgZ2FwLXgtNCBtYi0xXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGdhcC14LTZcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ6LTUwIGljb24gdy04IGgtOCBvdXRzZXQtc2hhZG93IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCByZWxhdGl2ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjIyXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMThcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJJQ09OU1sncmVzdHUnXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZG90dGVkLWxpbmVcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ltYWdlcy9kb3R0ZWQtbGluZS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICA8aDJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZi1zbSBmLXhzIGZsZXggaXRlbXMtY2VudGVyIGdhcC14LTEgdGV4dC14cyBtYi0xXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFF1ZXR0YSBUTlRcclxuICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImYteHMgdGV4dC1zZWNvbmRhcnkgdGV4dC14cyBtYi0xXCI+VGVhIENvZmZlZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtM1wiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIklDT05TWydoYW1idXJnZXInXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNXB4XSBoLVsxNXB4XSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiSUNPTlNbJ2RlbGV0ZVBpbmsnXVwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNXB4XSBoLVsxNXB4XSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxsaWItZm9vdGVyLXNoYXJlZFxyXG4gICAgKGNvbnRpbnVlQnV0dG9uQ2xpY2spPVwicHJldmlldygpXCJcclxuICAgIFtjYW5Db250aW51ZV09XCJ0cnVlXCJcclxuICAgIFtjb250aW51ZUJ1dHRvblRleHRdPVwiJ0lUSU5FUkFSWS5QUkVWSUVXJyB8IHRyYW5zbGF0ZVwiXHJcbiAgPjwvbGliLWZvb3Rlci1zaGFyZWQ+XHJcbjwvYXBwLWJvdHRvbS1tb2RhbD5cclxuPGRpdlxyXG4gIChjbGljayk9XCJzaG93Qm90dG9tTW9kYWwoKVwiXHJcbiAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCBjdXJzb3ItcG9pbnRlciB6LTEwXCJcclxuICBzdHlsZT1cImxlZnQ6IDUwJVwiXHJcbj5cclxuICA8aW1nXHJcbiAgICBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDI3MGRlZylcIlxyXG4gICAgW3NyY109XCJJQ09OU1sncmlnaHRBcnJvdyddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiMTVcIlxyXG4gICAgd2lkdGg9XCIxNVwiXHJcbiAgLz5cclxuPC9kaXY+XHJcbiJdfQ==
|