logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

app.89064324e3c7c7a2f31c.js.map (1604544B)


  1. {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/components/user_avatar/user_avatar.vue?4ccd","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?e43c","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue?5301","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue?ca76","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?8ceb","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?3cbc","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.vue?e532","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.vue?7b40","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.vue?3913","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?441e","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?0e76","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?20bd","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.vue?9410","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?ef51","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?75b3","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?40f8","webpack:///./src/components/status_content/status_content.js","webpack:///./src/services/tiny_post_html_processor/tiny_post_html_processor.service.js","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/status_content/status_content.vue?0aa3","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.vue?1f5d","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/media_upload/media_upload.vue?aa26","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.vue?4c09","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/post_status_form/post_status_form.vue?a43c","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?313d","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?c261","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///src/components/list/list.vue","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?c7b8","webpack:///src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?d59e","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.vue?d5f5","webpack:///./src/i18n/messages.js","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?6be4","webpack:///./src/services/locale/locale.service.js","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/follow_button/follow_button.vue?72f1","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?063a","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7538","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.vue?9a59","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?4b46","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.vue?e3d4","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.vue?b437","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?84e5","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?5d60","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.vue?f674","webpack:///./src/components/timeline/timeline.vue?d6bb","webpack:///./src/components/status/status.scss?412d","webpack:///./src/components/status/status.scss","webpack:///./src/components/reply_button/reply_button.vue?912e","webpack:///./src/components/reply_button/reply_button.vue?e387","webpack:///./src/components/favorite_button/favorite_button.vue?0184","webpack:///./src/components/favorite_button/favorite_button.vue?9b9b","webpack:///./src/components/react_button/react_button.vue?f6fc","webpack:///./src/components/react_button/react_button.vue?5317","webpack:///./src/components/popover/popover.vue?1bf1","webpack:///./src/components/popover/popover.vue?333e","webpack:///./src/components/retweet_button/retweet_button.vue?8eee","webpack:///./src/components/retweet_button/retweet_button.vue?ecd9","webpack:///./src/components/extra_buttons/extra_buttons.vue?2134","webpack:///./src/components/extra_buttons/extra_buttons.vue?bef5","webpack:///./src/components/post_status_form/post_status_form.vue?fd6e","webpack:///./src/components/post_status_form/post_status_form.vue?5887","webpack:///./src/components/media_upload/media_upload.vue?d613","webpack:///./src/components/media_upload/media_upload.vue?1e11","webpack:///./src/components/scope_selector/scope_selector.vue?baf6","webpack:///./src/components/scope_selector/scope_selector.vue?341e","webpack:///./src/components/emoji_input/emoji_input.vue?88c6","webpack:///./src/components/emoji_input/emoji_input.vue?c0d0","webpack:///./src/components/emoji_picker/emoji_picker.scss?a54d","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?3599","webpack:///./src/components/checkbox/checkbox.vue?bf55","webpack:///./src/components/poll/poll_form.vue?43b8","webpack:///./src/components/poll/poll_form.vue?f333","webpack:///./src/components/attachment/attachment.vue?4fa7","webpack:///./src/components/attachment/attachment.vue?5971","webpack:///./src/components/still-image/still-image.vue?21db","webpack:///./src/components/still-image/still-image.vue?da13","webpack:///./src/components/status_content/status_content.vue?2f26","webpack:///./src/components/status_content/status_content.vue?6841","webpack:///./src/components/poll/poll.vue?7318","webpack:///./src/components/poll/poll.vue?192f","webpack:///./src/components/gallery/gallery.vue?ea2c","webpack:///./src/components/gallery/gallery.vue?759e","webpack:///./src/components/link-preview/link-preview.vue?95df","webpack:///./src/components/link-preview/link-preview.vue?40b7","webpack:///./src/components/user_card/user_card.vue?1920","webpack:///./src/components/user_card/user_card.vue?a3c0","webpack:///./src/components/user_avatar/user_avatar.vue?aac8","webpack:///./src/components/user_avatar/user_avatar.vue?6951","webpack:///./src/components/remote_follow/remote_follow.vue?44cd","webpack:///./src/components/remote_follow/remote_follow.vue?2689","webpack:///./src/components/moderation_tools/moderation_tools.vue?3b42","webpack:///./src/components/moderation_tools/moderation_tools.vue?870b","webpack:///./src/components/dialog_modal/dialog_modal.vue?66ca","webpack:///./src/components/dialog_modal/dialog_modal.vue?e653","webpack:///./src/components/account_actions/account_actions.vue?755f","webpack:///./src/components/account_actions/account_actions.vue?1dab","webpack:///./src/components/avatar_list/avatar_list.vue?83d0","webpack:///./src/components/avatar_list/avatar_list.vue?4546","webpack:///./src/components/status_popover/status_popover.vue?91c2","webpack:///./src/components/status_popover/status_popover.vue?2f11","webpack:///./src/components/user_list_popover/user_list_popover.vue?2010","webpack:///./src/components/user_list_popover/user_list_popover.vue?2f9d","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?bab1","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?6021","webpack:///./src/components/conversation/conversation.vue?e1e5","webpack:///./src/components/conversation/conversation.vue?e01a","webpack:///./src/components/timeline_menu/timeline_menu.vue?c2cd","webpack:///./src/components/timeline_menu/timeline_menu.vue?9147","webpack:///./src/components/timeline/timeline_quick_settings.vue?d45e","webpack:///./src/components/timeline/timeline_quick_settings.vue?0ad2","webpack:///./src/components/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/notification/notification.scss?2458","webpack:///./src/components/notification/notification.scss","webpack:///./src/components/notifications/notification_filters.vue?e46d","webpack:///./src/components/notifications/notification_filters.vue?735e","webpack:///./src/components/chat_list/chat_list.vue?81f0","webpack:///./src/components/chat_list/chat_list.vue?e459","webpack:///./src/components/chat_list_item/chat_list_item.vue?5950","webpack:///./src/components/chat_list_item/chat_list_item.vue?c379","webpack:///./src/components/chat_title/chat_title.vue?5034","webpack:///./src/components/chat_title/chat_title.vue?11d1","webpack:///./src/components/chat_new/chat_new.vue?b3ff","webpack:///./src/components/chat_new/chat_new.vue?4b23","webpack:///./src/components/basic_user_card/basic_user_card.vue?ba41","webpack:///./src/components/basic_user_card/basic_user_card.vue?0481","webpack:///./src/components/list/list.vue?17ca","webpack:///./src/components/list/list.vue?e2c8","webpack:///./src/components/chat/chat.vue?445e","webpack:///./src/components/chat/chat.vue?559d","webpack:///./src/components/chat_message/chat_message.vue?7fac","webpack:///./src/components/chat_message/chat_message.vue?9c38","webpack:///./src/components/user_profile/user_profile.vue?7fb4","webpack:///./src/components/user_profile/user_profile.vue?899c","webpack:///./src/components/follow_card/follow_card.vue?5688","webpack:///./src/components/follow_card/follow_card.vue?ad43","webpack:///./src/components/search/search.vue?9825","webpack:///./src/components/search/search.vue?e198","webpack:///./src/components/registration/registration.vue?d518","webpack:///./src/components/registration/registration.vue?fd73","webpack:///./src/components/password_reset/password_reset.vue?d048","webpack:///./src/components/password_reset/password_reset.vue?5ec5","webpack:///./src/components/follow_request_card/follow_request_card.vue?c9e7","webpack:///./src/components/follow_request_card/follow_request_card.vue?b0bb","webpack:///./src/components/login_form/login_form.vue?99e8","webpack:///./src/components/login_form/login_form.vue?9c6d","webpack:///./src/components/chat_panel/chat_panel.vue?9dd9","webpack:///./src/components/chat_panel/chat_panel.vue?d094","webpack:///./src/components/who_to_follow/who_to_follow.vue?6f47","webpack:///./src/components/who_to_follow/who_to_follow.vue?4eb6","webpack:///./src/components/about/about.vue?47a2","webpack:///./src/components/about/about.vue?7cdd","webpack:///./src/components/features_panel/features_panel.vue?b8ab","webpack:///./src/components/features_panel/features_panel.vue?867d","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7e97","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7643","webpack:///./src/components/staff_panel/staff_panel.vue?020d","webpack:///./src/components/staff_panel/staff_panel.vue?a8d5","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?eece","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?6ed6","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?7d1a","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?f8d3","webpack:///./src/App.scss?b70d","webpack:///./src/App.scss","webpack:///./src/components/user_panel/user_panel.vue?e12b","webpack:///./src/components/user_panel/user_panel.vue?63b4","webpack:///./src/components/nav_panel/nav_panel.vue?7be9","webpack:///./src/components/nav_panel/nav_panel.vue?be5f","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?2f6b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?1274","webpack:///./src/components/settings_modal/settings_modal.scss?e42a","webpack:///./src/components/settings_modal/settings_modal.scss","webpack:///./src/components/modal/modal.vue?a37f","webpack:///./src/components/modal/modal.vue?328d","webpack:///./src/components/panel_loading/panel_loading.vue?b42a","webpack:///./src/components/panel_loading/panel_loading.vue?0d54","webpack:///./src/components/async_component_error/async_component_error.vue?82c7","webpack:///./src/components/async_component_error/async_component_error.vue?e57d","webpack:///./src/components/media_modal/media_modal.vue?2930","webpack:///./src/components/media_modal/media_modal.vue?1d79","webpack:///./src/components/side_drawer/side_drawer.vue?472d","webpack:///./src/components/side_drawer/side_drawer.vue?fcf9","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?1868","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7cf2","webpack:///./src/components/mobile_nav/mobile_nav.vue?46cb","webpack:///./src/components/mobile_nav/mobile_nav.vue?9a0e","webpack:///./src/components/desktop_nav/desktop_nav.scss?1471","webpack:///./src/components/desktop_nav/desktop_nav.scss","webpack:///./src/components/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?7889","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?1af4","webpack:///./src/components/post_status_modal/post_status_modal.vue?892e","webpack:///./src/components/post_status_modal/post_status_modal.vue?b34c","webpack:///./src/components/global_notice_list/global_notice_list.vue?353b","webpack:///./src/components/global_notice_list/global_notice_list.vue?3d13","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/chat.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/conversation/conversation.vue?3eac","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?a288","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.vue?a6f2","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.vue?22b5","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?88ea","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_timeline/public_timeline.vue?bba0","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?0d56","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.vue?0810","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.vue?ee38","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?9b5f","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/conversation-page/conversation-page.vue?d63c","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.vue?7fc3","webpack:///src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/notifications/notification_filters.vue?f817","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?1137","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.vue?db62","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/dm_timeline/dm_timeline.vue?4177","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_title/chat_title.vue?144f","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue?29dd","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.vue?3553","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list/chat_list.vue?e1d2","webpack:///src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?3398","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message/chat_message.vue?4801","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat/chat.vue?4822","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.vue?ac60","webpack:///./src/hocs/with_load_more/with_load_more.js","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/user_profile/user_profile.vue?458a","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?6927","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?b424","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/components/password_reset/password_reset.vue?06cf","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?5d68","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?ba79","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/oauth_callback/oauth_callback.vue?99e7","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.vue?888c","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/components/mfa_form/recovery_form.vue?d5df","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?6c57","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/chat_panel/chat_panel.js","webpack:///./src/components/chat_panel/chat_panel.vue","webpack:///./src/components/chat_panel/chat_panel.vue?667d","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue?4a17","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?3490","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.vue?bf77","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?25e4","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.vue?4f64","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/about/about.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?8c91","webpack:///./src/components/about/about.vue","webpack:///./src/components/about/about.vue?7acf","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?5c98","webpack:///./src/boot/routes.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/user_panel/user_panel.vue?b455","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/nav_panel/nav_panel.vue?bdc9","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?3d0c","webpack:///src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?8f96","webpack:///src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/panel_loading/panel_loading.vue?ad58","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?f1f8","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?e889","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/media_modal/media_modal.vue?5170","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?3ba5","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?58b1","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue?ed4a","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/search_bar/search_bar.vue?b0f6","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/desktop_nav/desktop_nav.vue?7ebd","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?8ebe","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.vue?e267","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.vue?1547","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?b00c","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","2","3","Promise","resolve","reject","href","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","undefined","setTimeout","head","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","screen_name","acct","statusnet_profile_url","url","display_name","name_html","addEmojis","escape","emojis","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","string","matchOperatorsRegex","reduce","acc","emoji","regexSafeShortCode","shortcode","RegExp","concat","parseStatus","status","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","statusnet_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_html","external_url","poll","options","_objectSpread","title_html","title","pinned","is_post_verb","uri","match","qvitter_delete_notice","activity_type","isNsfw","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","favourite","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","flakeId","arguments","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","_Error","_this","errors","classCallCheck_default","possibleConstructorReturn_default","getPrototypeOf_default","assertThisInitialized_default","parse","typeof_default","errorContents","ap_id","username","entries","errs","_ref","_ref2","slicedToArray_default","k","capitalize_default","toConsumableArray_default","inherits_default","wrapNativeSuper_default","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","_ref$headers","headers","Accept","Content-Type","_ref3","encodeURIComponent","authHeaders","json","ok","accessToken","Authorization","fetchFriends","_ref20","sinceId","_ref20$limit","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","_ref82","stream","_ref82$args","access_token","_ref83","_ref84","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","_ref85","_ref85$preprocessor","preprocessor","handleMastoWS","_ref85$id","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","JOINED","CLOSED","ERROR","DISABLED","STARTING","STARTING_INITIAL","apiService","verifyCredentials","fetchTimeline","_ref34","timeline","_ref34$since","since","_ref34$until","until","_ref34$userId","userId","_ref34$tag","_ref34$withMuted","withMuted","_ref34$replyVisibilit","replyVisibility","isNotifications","public","friends","dms","notifications","publicAndExternal","media","favorites","bookmarks","queryString","map_default","param","statusText","pagination","fetchPinnedStatuses","_ref35","fetchConversation","_ref24","urlContext","MASTODON_STATUS_CONTEXT_URL","_ref25","ancestors","descendants","fetchStatus","_ref26","MASTODON_STATUS_URL","exportFriends","_ref21","more","users","regenerator_default","async","_context","last_default","awrap","sent","concat_default","t0","stop","fetchFollowers","_ref22","_ref22$limit","MASTODON_FOLLOWERS_URL","followUser","_ref8","objectWithoutProperties_default","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","_ref9","MASTODON_UNFOLLOW_URL","pinOwnStatus","_ref10","unpinOwnStatus","_ref11","muteConversation","_ref12","unmuteConversation","_ref13","blockUser","_ref14","MASTODON_BLOCK_USER_URL","unblockUser","_ref15","MASTODON_UNBLOCK_USER_URL","fetchUser","_ref18","fetchUserRelationship","_ref19","favorite","_ref36","unfavorite","_ref37","retweet","_ref38","unretweet","_ref39","bookmarkStatus","_ref40","unbookmarkStatus","_ref41","postStatus","_ref42","spoilerText","_ref42$mediaIds","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","_ref43","MASTODON_DELETE_URL","uploadMedia","_ref44","formData","setMediaDescription","_ref45","fetchMutes","_ref57","muteUser","_ref58","unmuteUser","_ref59","subscribeUser","_ref60","unsubscribeUser","_ref61","fetchBlocks","_ref62","fetchOAuthTokens","_ref63","revokeOAuthToken","_ref64","tagUser","_ref27","nicknames","untagUser","_ref28","deleteUser","_ref33","addRight","_ref29","deleteRight","_ref30","activateUser","_ref31","nickname","get_default","deactivateUser","_ref32","register","_ref7","rest","locale","agreement","getCaptcha","resp","updateProfileImages","_ref5","_ref5$avatar","_ref5$banner","banner","_ref5$background","background","updateProfile","_ref6","importMutes","_ref46","file","importBlocks","_ref47","importFollows","_ref48","deleteAccount","_ref49","password","changeEmail","_ref50","email","changePassword","_ref51","newPassword","newPasswordConfirmation","settingsMFA","_ref52","mfaDisableOTP","_ref53","generateMfaBackupCodes","_ref56","mfaSetupOTP","_ref55","mfaConfirmOTP","_ref54","fetchFollowRequests","_ref23","approveUser","_ref16","MASTODON_APPROVE_USER_URL","denyUser","_ref17","MASTODON_DENY_USER_URL","suggestions","_ref65","markNotificationsAsSeen","_ref66","_ref66$single","single","dismissNotification","_ref81","vote","_ref67","pollId","choices","fetchPoll","_ref68","fetchFavoritedByUsers","_ref69","fetchRebloggedByUsers","_ref70","fetchEmojiReactions","_ref71","reactions","accounts","reactWithEmoji","_ref72","unreactWithEmoji","_ref73","reportUser","_ref74","statusIds","comment","forward","account_id","status_ids","updateNotificationSettings","_ref4","settings","each_default","search2","_ref76","q","offset","u","statuses","searchUsers","_ref75","query","fetchKnownDomains","_ref77","fetchDomainMutes","_ref78","muteDomain","_ref79","domain","unmuteDomain","_ref80","chats","_ref86","getOrCreateChat","_ref87","accountId","chatMessages","_ref88","_ref88$limit","sendChatMessage","_ref89","_ref89$mediaId","mediaId","readChat","_ref90","lastReadId","last_read_id","deleteChatMessage","_ref91","rgb2hex","g","b","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default","_r","_map","Math","ceil","_map2","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","_srgbToLinear","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","isExternal","generateProfileLink","restrictedNicknames","complicated","lodash_includes__WEBPACK_IMPORTED_MODULE_0___default","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__vue_styles__","context","Component","component_normalizer","user_avatar","_vm","_h","$createElement","_c","_self","staticClass","class","avatar-compact","compact","better-shadow","betterShadow","attrs","alt","image-load-error","__webpack_exports__","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default","unseenNotificationsFromStore","lodash_filter__WEBPACK_IMPORTED_MODULE_2___default","i18nString","notifObj","icon","image","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","destroyed","removeEventListener","popover","on","mouseenter","mouseleave","ref","click","_t","_v","_e","style","fileType","fileTypeService","fileMatchesSomeType","DialogModal","darkOverlay","default","onCancel","Function","dialog_modal_dialog_modal","dialog_modal","dark-overlay","$event","currentTarget","stopPropagation","library","add","faChevronDown","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","computed","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","tagName","toggleTag","api","backendInteractor","commit","toggleRight","_this2","toggleActivationStatus","dispatch","deleteUserDialog","show","_this3","isProfile","$route","isTargetUser","history","back","setToggled","moderation_tools_vue_styles_","moderation_tools_moderation_tools","moderation_tools","slot","_s","$t","menu-checkbox-checked","to","on-cancel","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","$router","recipient_id","mapState","pleromaChatMessagesAvailable","account_actions_vue_styles_","account_actions_account_actions","account_actions","bound-to","remove-padding","showing_reblogs","faRss","faBell","faSearchPlus","faExternalLinkAlt","user_card","followRequestInProgress","browserSupport","cssFilter","user_card_objectSpread","getters","findUser","classes","user-card-rounded-t","rounded","user-card-rounded","user-card-bordered","bordered","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","userHighlightType","highlight","set","mapGetters","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","setProfileView","v","switcher","linkClicked","open","userProfileLink","zoomAvatar","mentionUser","replyTo","repliedUser","user_card_vue_styles_","user_card_Component","hide-bio","hideBio","domProps","innerHTML","size","hideUserStats","directives","rawName","expression","composing","for","change","$$selectedVal","Array","selected","_value","subscribing","flip","preventDefault","LAYERS","DEFAULT_OPACITY","SLOT_INHERITANCE","chromatism__WEBPACK_IMPORTED_MODULE_0__","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_1__","undelay","topBar","badge","profileTint","panel","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","faint","underlay","alertPopup","depends","priority","wallpaper","mod","brightness","layer","link","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","_getColors","getColors","htmlColors","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3___default","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","fromEntries","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default","computeDynamicColor","variableSlot","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","composePreset","getThemes","cache","themes","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default","statePositionAcc","position","getOpacitySlot","substring","getPreset","isV1","isArray","setPreset","faReply","ReplyButton","reply_button_reply_button","reply_button","-active","replying","faStar","faStarRegular","FavoriteButton","animated","favorite_button_vue_styles_","favorite_button_favorite_button","favorite_button","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","done","indexOfFilterWord","indexOf","flat","react_button_vue_styles_","react_button_react_button","react_button","scopedSlots","_u","fn","placeholder","_l","faRetweet","RetweetButton","retweet_button_vue_styles_","retweet_button_retweet_button","retweet_button","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","_this4","copyLink","_this5","navigator","clipboard","writeText","statusLink","_this6","_this7","reportStatus","canDelete","ownStatus","canPin","canMute","extra_buttons_vue_styles_","extra_buttons_extra_buttons","extra_buttons","fixed-width","faCircleNotch","StatusPopover","find_default","allStatuses","statusId","Status","enter","status_popover_vue_styles_","status_popover_status_popover","status_popover","popover-class","is-preview","statusoid","UserListPopover","usersCapped","user_list_popover_vue_styles_","user_list_popover_user_list_popover","user_list_popover","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","emoji_reactions_vue_styles_","emoji_reactions_emoji_reactions","picked-reaction","not-clickable","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","unmuted","userExpanded","mediaPlaying","suspendable","showReasonMutedThread","inConversation","repeaterClass","highlightClass","userClass","deleted","repeaterStyle","highlightStyle","userStyle","noHeading","generateUserProfileLink","replyProfileLink","isReply","replyToName","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","relationshipReblog","reasonsToMute","excusesNotToMute","inProfile","profileUserId","hideFilteredStatuses","hideStatus","virtualHidden","isFocused","focused","replySubject","decodedSummary","unescape_default","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","uniqBy_default","tagObj","isSuspendable","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","watch","rect","scrollBy","status.repeat_num","num","status.fave_num","filters","capitalize","str","charAt","toUpperCase","status_vue_styles_","status_Component","status_status","-focused","-conversation","inlineExpanded","isPreview","highlighted","toggle","-repeat","data-tags","nativeOn","!click","user-id","time","auto-update","_f","expandable","-strikethrough","staticStyle","min-width","status-id","aria-label","replies","reply","no-heading","mediaplay","mediapause","emojiReactionsOnTimeline","logged-in","onError","onSuccess","reply-to","replied-user","copy-message-scope","subject","posted","loading","polls","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","index","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","allElements","querySelectorAll","clickedElement","checked","forEach_default","element","optionId","poll_poll","disabled","voters_count","$tc","path","now-threshold","faFile","faMusic","faImage","faLink","faPollH","showingTall","fullContent","showingLongSubject","expandingSubject","collapseMessageWithSubject","localCollapseSubjectDefault","hideAttachments","hideAttachmentsInConv","tallStatus","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","nsfwClickthrough","attachmentSize","maxThumbnails","galleryTypes","playVideosInModal","galleryAttachments","nonGalleryAttachments","attachmentTypes","postBodyHtml","html","greentext","handledTags","openCloseTags","buffer","level","textBuffer","tagBuffer","flush","trim","handleBr","handleOpen","handleClose","pop","char","tagFull","processHtml","Attachment","Poll","Gallery","LinkPreview","className","attn","attention","_attention$screen_nam","_attention$screen_nam2","namepart","instancepart","matchstring","mentionMatchesUrl","dataset","generateTagLink","toggleShowMore","setMedia","status_content_vue_styles_","status_content_Component","status_content","tall-subject","tall-subject-hider_focused","tall-status","tall-status-hider_focused","single-line","singleLine","base-poll","allow-play","set-media","play","pause","MINUTE","HOUR","DAY","relativeTime","relativeTimeShort","WEEK","MONTH","YEAR","date","nowThreshold","now","abs","BasicUserCard","basic_user_card","CURRENT_VERSION","getLayersArray","array","parent","unshift","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","_sourceColor$split$ma","_sourceColor$split$ma2","variable","modifier","sourceOpacity","deps","isTextColor","backgroundColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","dropFiles","fileInfos","media_upload_media_upload","media_upload","faPlus","poll_form","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","uniq_default","poll_form_vue_styles_","poll_poll_form","maxlength","keydown","_k","keyCode","$set","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","_ref$attentions","allAttentions","reject_default","buildMentionsString","scope","copyMessageScope","_this$$store$getters$","postContentType","sensitiveByDefault","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","postingOptions","_args","optimisticPosting","abrupt","disableSubmit","submitOnEnter","setAllMediaDescriptions","postHandler","statusPoster","debouncePreviewStatus","debounce_default","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","openProfileTab","post_status_form_vue_styles_","post_status_form_Component","post_status_form","autocomplete","submit","dragover","animation","dragleave","drop","disableLockWarning","disableSubject","enable-emoji-picker","suggest","model","callback","$$v","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","sticker-uploaded","sticker-upload-failed","shown","scrollable-form","rows","cols","ctrlKey","shiftKey","altKey","metaKey","compositionupdate","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","update-poll","drop-files","uploaded","upload-failed","all-uploaded","touchstart","disableSensitivityCheckbox","faVideo","faPlayCircle","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","VideoAttachment","usePlaceholder","placeholderName","placeholderIconClass","referrerpolicy","mediaProxyAvailable","isEmpty","oembed","isSmall","fullwidth","useModal","openModal","toggleHidden","useOneClickNsfw","onImageLoad","naturalWidth","naturalHeight","naturalSizeLoad","_obj","small","image-load-handler","allowPlay","controls","thumb_url","oembedHTML","timeago","interval","localeDateString","browserLocale","locale_service","internalToBrowserLocale","$i18n","toLocaleString","refreshRelativeTimeObject","longFormat","date_utils","autoUpdate","datetime","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_0__","prefs","solidColor","tintColor","tintColor2","backgroundPosition","list","items","getKey","item","$slots","empty","prop","indeterminate","_ref$media","_ref$inReplyToStatusI","_ref$contentType","_ref$preview","_ref$idempotencyKey","lodash_map__WEBPACK_IMPORTED_MODULE_0___default","showImmediately","noIdUpdate","stopGifs","onLoad","imageLoadHandler","canvas","getContext","drawImage","still_image","load","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","languages","en","require","setLanguage","language","_messages","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","setLocaleMessage","exponent","units","log","toFixed","progress_button","progress","specialLanguageCodes","localeService","defaultState","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","streaming","autohideFloatingPostButton","pauseOnUnfocused","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","useContainFit","virtualScrolling","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","del","actions","statusSummary","lodash_filter__WEBPACK_IMPORTED_MODULE_0___default","muteWord","desktopNotificationOpts","Notification","permission","desktopNotificationSilence","desktopNotification","child","_ref$top","_ref$left","ignorePadding","offsetTop","offsetLeft","_findPadding","findPadding","topPadding","leftPadding","_findPadding2","leftPaddingStr","requestFollow","requested","fetchRelationship","attempt","follow_button","inProgress","isPressed","label","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","video_attachment","preload","loop","playsinline","playing","sizes","chunk_default","lastAttachment","allButLastRow","dropRight_default","onNaturalSizeLoad","rowStyle","itemsPerRow","padding-bottom","itemStyle","row","total","sumBy_default","getAspectRatio","flex","gallery","contain-fit","cover-fit","natural-size-load","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","Image","link_preview","provider_name","remote_follow","slicedUsers","avatar_list","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","imageUrl","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","contents","render","h","tabs","classesTab","classesWrapper","_fortawesome_vue_fontawesome__WEBPACK_IMPORTED_MODULE_3__","fullHeight","renderSlot","getComponentProps","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default","isFunction","getComponentOptions","addPositionToWords","words","reduce_default","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","emoji_picker_emoji_picker","emoji_picker","refInFor","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","slots","elm","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","newValue","newWord","firstchar","matchedSuggestions","take_default","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","_ref2$surroundingSpac","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","panelBody","_this$input$elm","offsetBottom","setPlacement","container","overflowsBottom","emoji_input_vue_styles_","emoji_input_Component","emoji_input","with-picker","hide","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","scope_selector","locals","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","_ref13$messageArgs","messageArgs","_ref13$level","_ref13$timeout","registrationOpen","vapidPublicKey","defaultBanner","disableChat","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","chatAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","defineProperty_default","getStaticEmoji","res","values","getCustomEmoji","_context2","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","_context3","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","POSITIVE_INFINITY","idStore","conversationsObject","timelines","mergeOrAdd","arr","obj","oldItem","merge_default","omitBy_default","new","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","_ref2$showImmediately","_ref2$user","_ref2$noIdUpdate","_ref2$pagination","isArray_default","timelineObject","minNew","minBy_default","maxNew","maxBy_default","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","remove_default","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","first_default","showNewStatuses","oldTimeline","slice_default","resetStatuses","emptyState","clearTimeline","_ref8$excludeUserId","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","findIndex_default","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","statuses_objectSpread","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","_ref35$showImmediatel","_ref35$timeline","_ref35$noIdUpdate","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","promiseInterval","promiseCall","stopped","func","fetchAndUpdate","_ref2$timeline","_ref2$older","_ref2$userId","_ref2$tag","timelineData","camelCase_default","_getters$mergedConfig","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","_ref3$timeline","_ref3$userId","_ref3$tag","fetchNotifications","readNotifsIds","notificationsFetcher","boundFetchAndUpdate","followRequestFetcher","requests","backendInteractorService","backend_interactor_service_objectSpread","startFetchingTimeline","_ref$userId","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","from","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","mention","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","oldValue","mergeWith_default","predictedRelationship","relationships","loggingIn","lastLoginName","usersObject","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","setCurrentUser","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","compact_default","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","users_objectSpread","logout","_store$rootState","oauthApi","userToken","loginUser","requestPermission","latest","maybeShowChatNotification","currentChatId","opts","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSING","disableMastoSockets","startMastoUserSocket","closeEvent","ignoreCodes","stopMastoUserSocket","_ref7$timeline","_ref7$tag","_ref7$userId","stopFetchingTimeline","extends_default","api_objectSpread","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","channel","setChannel","addMessage","setMessages","initializeChat","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","auth_flow","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","mediaViewer","currentIndex","activated","setCurrent","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","_ref3$statusIds","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","_ref$updateMaxId","updateMaxId","_loop","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","_ret","getView","currentMessageChainId","orderBy_default","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","uniqueId_default","deleteMessage","cullOlderMessages","maxIndex","minIndex","sortBy_default","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","getChatById","chatList","chats_objectSpread","chatListFetcher","openedChats","openedChatMessageServices","lastReadMessageId","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","loaded","defaultReducer","paths","substate","set_default","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","_ref$key","_ref$paths","_ref$getState","getItem","_ref$setState","setState","setItem","_ref$reducer","reducer","_ref$storage","_ref$subscriber","subscriber","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","push_notifications_plugin","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","lockerEls","disableBodyScroll","scrollBarGap","documentElement","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","unbind","idA","idB","expanded","isPage","statusComponent","originalStatusId","getConversationId","isExpanded","clone_default","statusIndex","filter_default","sortAndFilterConversation","irid","hiddenStyle","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","src_components_conversation_conversation","components_conversation_conversation","-expanded","inline-expanded","collapsable","show-pinned","pinnedStatusIdsObject","in-conversation","in-profile","profile-user-id","goto","faUsers","faHome","TimelineMenuContent","timeline_menu_content_objectSpread","privateMode","federating","timeline_menu_timeline_menu_content","timeline_menu_content","TimelineMenu","isOpen","public-timeline","public-external-timeline","openMenu","blockOpen","timelineName","route","i18nkey","timeline_menu_vue_styles_","timeline_menu_timeline_menu","timeline_menu","faFilter","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","timeline_quick_settings_objectSpread","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","timeline_quick_settings_vue_styles_","timeline_timeline_quick_settings","timeline_quick_settings","menu-checkbox-radio","faCog","Timeline","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","showLoadButton","loadButtonString","rootClasses","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","keyBy_default","statusesToDisplay","statusesPerSide","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","throttle_default","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","timeline_vue_styles_","components_timeline_timeline","timeline_timeline","pinned-status-ids-object","virtual-hidden","PublicTimeline","public_timeline_public_timeline","public_timeline","timeline-name","PublicAndExternalTimeline","public_and_external_timeline_public_and_external_timeline","public_and_external_timeline","FriendsTimeline","friends_timeline_friends_timeline","friends_timeline","TagTimeline","tag_timeline_tag_timeline","tag_timeline","Bookmarks","bookmark_timeline_bookmark_timeline","bookmark_timeline","conversationPage","conversation_page_conversation_page","conversation_page","is-page","faCheck","faUserPlus","faUser","faSuitcaseRolling","getUser","notification_objectSpread","targetUser","targetUserProfileLink","needMute","notification_vue_styles_","components_notification_notification","notification_notification","white-space","fontawesome_svg_core_index_es","free_solid_svg_icons_index_es","notification_filters","toggleNotificationFilter","notification_filters_objectSpread","favimg","favcanvas","favcontext","isImageLoaded","clearFaviconBadge","notification_filters_vue_styles_","notifications_notification_filters","FaviconService","initFaviconService","nodes","clearRect","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","faviconWidth","PI","fill","Notifications","NotificationFilters","minimalMode","filterMode","seenToDisplayCount","notifications_objectSpread","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","notifications_vue_styles_","components_notifications_notifications","notifications_notifications","minimal","unseen","tabModeDict","likes+repeats","Interactions","allowFollowingMove","onModeSwitch","interactions_interactions","interactions","on-switch","minimal-mode","filter-mode","DMs","dm_timeline_dm_timeline","dm_timeline","htmlTitle","getUserProfileLink","chat_title_vue_styles_","chat_title_chat_title","chat_title","withAvatar","ChatListItem","ChatTitle","chat_list_item_objectSpread","attachmentInfo","messageForStatusContent","isYou","messagePreview","chat_list_item_vue_styles_","chat_list_item_chat_list_item","chat_list_item","faSearch","faChevronLeft","chatNew","userIds","chat_new_objectSpread","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","chat_new_vue_styles_","chat_new_chat_new","chat_new","ChatList","List","ChatNew","chat_list_objectSpread","isNew","cancelNewChat","newChat","chat_list_vue_styles_","chat_list_chat_list","chat_list","cancel","chat_message_date","displayDate","today","toLocaleDateString","day","month","chat_message_date_chat_message_date","ChatMessage","ChatMessageDate","chat_message_objectSpread","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","author","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","chat_message_vue_styles_","chat_message_chat_message","chat_message","hovered-message-chain","hoveredMessageChain","mouseover","outgoing","incoming","without-attachment","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleLayoutChange","updateScrollableContainerHeight","handleResize","setChatLayout","unsetChatLayout","chat_objectSpread","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","expand","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","inner","_opts$expand","_opts$delayed","_this7$lastScrollPosi","scrollable","diff","scrollTo","_options$behavior","_options$forceRead","isBottomedOut","reachedTop","cullOlderCheck","_this8","_this9","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","_this10","_ref2$isFirstFetch","_ref2$fetchLatest","fetchLatest","fetchOlderMessages","positionBeforeUpdate","isScrollable","_this11","doStartFetching","_this12","handleAttachmentPosting","_this13","sendMessage","_this14","buildFakeMessage","doSendMessage","retriesLeft","_this15","_ref4$retriesLeft","chat_vue_styles_","src_components_chat_chat","components_chat_chat","with-avatar","chat-view-item","hover","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","optimistic-posting","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","follow_card_vue_styles_","follow_card_follow_card","follow_card","noFollowsYou","label-following","withLoadMore","select","destroy","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","WrappedComponent","fetchEntries","$props","updateEntries","newEntries","with_load_more_objectSpread","$listeners","$scopedSlots","helper_default","index_es","FollowerList","FriendList","UserProfile","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","$route.params.id","$route.params.name","$route.query","TabSwitcher","user_profile_vue_styles_","user_profile_user_profile","user_profile","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","searchTerm","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","search_vue_styles_","components_search_search","search_search","keyup","uses","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","accountApprovalRequired","signedIn","setCaptcha","registration_objectSpread","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","registration_vue_styles_","src_components_registration_registration","components_registration_registration","form-group--error","$error","modifiers","$forceUpdate","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","password_reset_objectSpread","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","password_reset_vue_styles_","components_password_reset_password_reset","password_reset_password_reset","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","follow_request_card_vue_styles_","FollowRequests","follow_request_card","follow_requests_follow_requests","follow_requests","oac","_this$$store$state$oa","oauth_callback_oauth_callback","oauth_callback","LoginForm","login_form_objectSpread","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","_this$oauth","identifier","focusOnPasswordInput","passwordInput","login_form_vue_styles_","login_form_login_form","login_form","mfa","recovery_form","recovery_form_objectSpread","authSettings","mfa_token","mfaApi","mfa_form_recovery_form","totp_form","totp_form_objectSpread","mfa_form_totp_form","AuthForm","is","authForm","auth_form_objectSpread","MFARecoveryForm","MFATOTPForm","faBullhorn","chatPanel","currentMessage","collapsed","togglePanel","scrollEl","chat_panel_vue_styles_","chat_panel_chat_panel","chat_panel","floating","chat-heading","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","who_to_follow_vue_styles_","who_to_follow_who_to_follow","who_to_follow","InstanceSpecificPanel","instance_specific_panel_instance_specific_panel","instance_specific_panel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","features_panel_vue_styles_","features_panel_features_panel","features_panel","TermsOfServicePanel","terms_of_service_panel_vue_styles_","terms_of_service_panel_terms_of_service_panel","terms_of_service_panel","StaffPanel","staffAccounts","staff_panel_objectSpread","groupedStaffAccounts","groupBy","staff_panel_vue_styles_","staff_panel_staff_panel","staff_panel","MRFTransparencyPanel","mrf_transparency_panel_objectSpread","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","mrf_transparency_panel_vue_styles_","About","mrf_transparency_panel","policy","textContent","pattern","about_vue_styles_","about_about","about","RemoteUserResolver","redirect","hostname","remote_user_resolver_vue_styles_","remote_user_resolver_remote_user_resolver","remote_user_resolver","boot_routes","validateAuthenticatedRoute","routes","_to","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","ChatPanel","OAuthCallback","UserPanel","user_panel_objectSpread","user_panel_vue_styles_","user_panel_user_panel","user_panel","faChevronUp","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","nav_panel_objectSpread","followRequestCount","nav_panel_vue_styles_","nav_panel_nav_panel","nav_panel","usersToFollow","toFollow","shuffled","shuffle_default","WhoToFollowPanel","oldUser","who_to_follow_panel_vue_styles_","who_to_follow_panel_who_to_follow_panel","who_to_follow_panel","modal","noBackground","modal-background","modal_vue_styles_","modal_modal","panel_loading_vue_styles_","async_component_error_vue_styles_","getResettableAsyncComponent","SettingsModal","Modal","SettingsModalContent","asyncComponent","asyncComponentFactory","resettable_async_component_objectSpread","observe","observable","functional","resetAsyncComponent","retry","delay","closeModal","peekModal","modalOpenedOnce","modalPeeked","settings_modal_vue_styles_","settings_modal_settings_modal","settings_modal","peek","is-open","no-background","touchEventCoord","touches","screenX","screenY","vectorLength","sqrt","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","oldCoord","newCoord","delta","towardsDir","perpendicularDir","towardsPerpendicular","faChevronRight","MediaModal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","media_modal_vue_styles_","media_modal_media_modal","media_modal","backdropClicked","touchmove","faSignInAlt","faSignOutAlt","faTachometerAlt","SideDrawer","closed","closeGesture","toggleDrawer","side_drawer_objectSpread","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","side_drawer_vue_styles_","side_drawer_side_drawer","side_drawer","side-drawer-container-closed","side-drawer-container-open","side-drawer-darken-closed","side-drawer-closed","side-drawer-click-outside-closed","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","mobile_post_status_button_vue_styles_","mobile_post_status_button_mobile_post_status_button","mobile_post_status_button","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","mobile_nav_objectSpread","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","_ref$target","mobile_nav_vue_styles_","mobile_nav_mobile_nav","mobile_nav","mobile-hidden","active-class","SearchBar","search_bar_vue_styles_","search_bar_search_bar","search_bar","desktop_nav","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","mask-image","background-color","logoBgStyle","onSearchBarToggled","desktop_nav_vue_styles_","desktop_nav_desktop_nav","-logoLeft","UserReportingModal","statusIdsToReport","processing","remoteInstance","user_reporting_modal_objectSpread","isChecked","toggleStatus","user_reporting_modal_vue_styles_","user_reporting_modal_user_reporting_modal","user_reporting_modal","PostStatusModal","resettingForm","isFormVisible","post_status_modal_vue_styles_","post_status_modal_post_status_modal","post_status_modal","_b","GlobalNoticeList","notices","closeNotice","global_notice_list_vue_styles_","global_notice_list_global_notice_list","global_notice_list","windowWidth","App","DesktopNav","mobileActivePanel","updateMobileState","App_objectSpread","userBackground","instanceBackground","bgStyle","--body-background-image","isMobileLayout","sidebarAlign","order","App_vue_styles_","src_App","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","_context4","setSettings","apiConfig","staticConfig","overrides","env","copyInstanceOption","_context5","___pleromafe_dev_overrides","___pleromafe_mode","NODE_ENV","staticConfigPreference","getTOS","_context6","getInstancePanel","_context7","getStickers","_context9","resPack","_context8","pack","localeCompare","t1","getAppSecret","_context10","after_store_objectSpread","resolveStaffAccounts","getNodeInfo","metadata","features","uploadLimits","software","priv","federation","_context11","nodeName","openRegistrations","general","fieldsLimits","enabled","web","version","mrf_policies","setConfig","configInfos","_context12","checkOAuthToken","_context14","_context13","afterStoreSetup","_store$state$config","router","_context15","VueRouter","scrollBehavior","_from","savedPosition","matched","currentLocale","use","Vuex","VueI18n","VueClickOutside","PortalVue","FontAwesomeIcon","FontAwesomeLayers","fallbackLocale","storageError","plugins","persistedState","persistedStateOptions","pushNotifications","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","chatModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"aACA,SAAAA,EAAAC,GAQA,IAPA,IAMAC,EAAAC,EANAC,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GACAK,EAAAL,EAAA,GAIAM,EAAA,EAAAC,EAAA,GACQD,EAAAH,EAAAK,OAAoBF,IAC5BJ,EAAAC,EAAAG,GACAG,EAAAP,IACAK,EAAAG,KAAAD,EAAAP,GAAA,IAEAO,EAAAP,GAAA,EAEA,IAAAD,KAAAG,EACAO,OAAAC,UAAAC,eAAAC,KAAAV,EAAAH,KACAc,EAAAd,GAAAG,EAAAH,IAKA,IAFAe,KAAAhB,GAEAO,EAAAC,QACAD,EAAAU,OAAAV,GAOA,OAHAW,EAAAR,KAAAS,MAAAD,EAAAb,GAAA,IAGAe,IAEA,SAAAA,IAEA,IADA,IAAAC,EACAf,EAAA,EAAiBA,EAAAY,EAAAV,OAA4BF,IAAA,CAG7C,IAFA,IAAAgB,EAAAJ,EAAAZ,GACAiB,GAAA,EACAC,EAAA,EAAkBA,EAAAF,EAAAd,OAA2BgB,IAAA,CAC7C,IAAAC,EAAAH,EAAAE,GACA,IAAAf,EAAAgB,KAAAF,GAAA,GAEAA,IACAL,EAAAQ,OAAApB,IAAA,GACAe,EAAAM,IAAAC,EAAAN,EAAA,KAIA,OAAAD,EAIA,IAAAQ,EAAA,GAGAC,EAAA,CACAC,EAAA,GAMAtB,EAAA,CACAsB,EAAA,GAGAb,EAAA,GAQA,SAAAS,EAAA1B,GAGA,GAAA4B,EAAA5B,GACA,OAAA4B,EAAA5B,GAAA+B,QAGA,IAAAC,EAAAJ,EAAA5B,GAAA,CACAK,EAAAL,EACAiC,GAAA,EACAF,QAAA,IAUA,OANAjB,EAAAd,GAAAa,KAAAmB,EAAAD,QAAAC,IAAAD,QAAAL,GAGAM,EAAAC,GAAA,EAGAD,EAAAD,QAKAL,EAAAQ,EAAA,SAAAjC,GACA,IAAAkC,EAAA,GAKAN,EAAA5B,GAAAkC,EAAA1B,KAAAoB,EAAA5B,IACA,IAAA4B,EAAA5B,IAFA,CAAoBmC,EAAA,EAAAC,EAAA,GAEpBpC,IACAkC,EAAA1B,KAAAoB,EAAA5B,GAAA,IAAAqC,QAAA,SAAAC,EAAAC,GAIA,IAHA,IAAAC,EAAA,kBAAmCxC,OAAA,KAA6BmC,EAAA,uBAAAC,EAAA,uBAAAK,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAA41BrE,GAAA,OAC55BsE,EAAA7C,EAAA8C,EAAA/B,EACAgC,EAAAC,SAAAC,qBAAA,QACAtE,EAAA,EAAmBA,EAAAoE,EAAAlE,OAA6BF,IAAA,CAChD,IACAuE,GADAC,EAAAJ,EAAApE,IACAyE,aAAA,cAAAD,EAAAC,aAAA,QACA,kBAAAD,EAAAE,MAAAH,IAAAnC,GAAAmC,IAAAL,GAAA,OAAAhC,IAEA,IAAAyC,EAAAN,SAAAC,qBAAA,SACA,IAAAtE,EAAA,EAAmBA,EAAA2E,EAAAzE,OAA8BF,IAAA,CACjD,IAAAwE,EAEA,IADAD,GADAC,EAAAG,EAAA3E,IACAyE,aAAA,gBACArC,GAAAmC,IAAAL,EAAA,OAAAhC,IAEA,IAAA0C,EAAAP,SAAAQ,cAAA,QACAD,EAAAF,IAAA,aACAE,EAAAE,KAAA,WACAF,EAAAG,OAAA7C,EACA0C,EAAAI,QAAA,SAAAC,GACA,IAAAC,EAAAD,KAAAE,QAAAF,EAAAE,OAAAC,KAAAlB,EACAmB,EAAA,IAAAC,MAAA,qBAAA1F,EAAA,cAAAsF,EAAA,KACAG,EAAAH,iBACA1D,EAAA5B,GACAgF,EAAAW,WAAAC,YAAAZ,GACAzC,EAAAkD,IAEAT,EAAAxC,KAAA8B,EAEAG,SAAAC,qBAAA,WACAmB,YAAAb,KACKc,KAAA,WACLlE,EAAA5B,GAAA,KAMA,IAAA+F,EAAAxF,EAAAP,GACA,OAAA+F,EAGA,GAAAA,EACA7D,EAAA1B,KAAAuF,EAAA,QACK,CAEL,IAAAC,EAAA,IAAA3D,QAAA,SAAAC,EAAAC,GACAwD,EAAAxF,EAAAP,GAAA,CAAAsC,EAAAC,KAEAL,EAAA1B,KAAAuF,EAAA,GAAAC,GAGA,IACAC,EADAC,EAAAzB,SAAAQ,cAAA,UAGAiB,EAAAC,QAAA,QACAD,EAAAE,QAAA,IACA3E,EAAA4E,IACAH,EAAAI,aAAA,QAAA7E,EAAA4E,IAEAH,EAAAV,IAlGA,SAAAxF,GACA,OAAAyB,EAAA8C,EAAA,iBAAoDvE,OAAA,KAA6BmC,EAAA,uBAAAC,EAAA,uBAAAK,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAA41BrE,GAAA,MAiG76BuG,CAAAvG,GAGA,IAAAwG,EAAA,IAAAd,MACAO,EAAA,SAAAZ,GAEAa,EAAAd,QAAAc,EAAAf,OAAA,KACAsB,aAAAL,GACA,IAAAM,EAAAnG,EAAAP,GACA,OAAA0G,EAAA,CACA,GAAAA,EAAA,CACA,IAAAC,EAAAtB,IAAA,SAAAA,EAAAH,KAAA,UAAAG,EAAAH,MACA0B,EAAAvB,KAAAE,QAAAF,EAAAE,OAAAC,IACAgB,EAAAK,QAAA,iBAAA7G,EAAA,cAAA2G,EAAA,KAAAC,EAAA,IACAJ,EAAAtB,KAAAyB,EACAH,EAAAlB,QAAAsB,EACAF,EAAA,GAAAF,GAEAjG,EAAAP,QAAA8G,IAGA,IAAAV,EAAAW,WAAA,WACAd,EAAA,CAAwBf,KAAA,UAAAK,OAAAW,KAClB,MACNA,EAAAd,QAAAc,EAAAf,OAAAc,EACAxB,SAAAuC,KAAAnB,YAAAK,GAGA,OAAA7D,QAAA4E,IAAA/E,IAIAT,EAAAyF,EAAArG,EAGAY,EAAA0F,EAAAxF,EAGAF,EAAA2F,EAAA,SAAAtF,EAAAuF,EAAAC,GACA7F,EAAA8F,EAAAzF,EAAAuF,IACA5G,OAAA+G,eAAA1F,EAAAuF,EAAA,CAA0CI,YAAA,EAAAC,IAAAJ,KAK1C7F,EAAAkG,EAAA,SAAA7F,GACA,oBAAA8F,eAAAC,aACApH,OAAA+G,eAAA1F,EAAA8F,OAAAC,YAAA,CAAwDC,MAAA,WAExDrH,OAAA+G,eAAA1F,EAAA,cAAiDgG,OAAA,KAQjDrG,EAAAsG,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArG,EAAAqG,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAzH,OAAA0H,OAAA,MAGA,GAFA1G,EAAAkG,EAAAO,GACAzH,OAAA+G,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArG,EAAA2F,EAAAc,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzG,EAAA6G,EAAA,SAAAvG,GACA,IAAAuF,EAAAvF,KAAAkG,WACA,WAA2B,OAAAlG,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAN,EAAA2F,EAAAE,EAAA,IAAAA,GACAA,GAIA7F,EAAA8F,EAAA,SAAAgB,EAAAC,GAAsD,OAAA/H,OAAAC,UAAAC,eAAAC,KAAA2H,EAAAC,IAGtD/G,EAAA8C,EAAA,IAGA9C,EAAAgH,GAAA,SAAAhD,GAA8D,MAApBiD,QAAAlC,MAAAf,GAAoBA,GAE9D,IAAAkD,EAAAC,OAAA,aAAAA,OAAA,iBACAC,EAAAF,EAAAnI,KAAA6H,KAAAM,GACAA,EAAAnI,KAAAX,EACA8I,IAAAG,QACA,QAAA1I,EAAA,EAAgBA,EAAAuI,EAAArI,OAAuBF,IAAAP,EAAA8I,EAAAvI,IACvC,IAAAU,EAAA+H,EAIA7H,EAAAR,KAAA,SAEAU,ijBC1PA,IAyBa6H,EAAY,SAACjJ,GACxB,IAAMkJ,EAAS,GACTC,EAAQnJ,EAAKa,eAAe,QAE5BuI,EAAaD,IAAUnJ,EAAKa,eAAe,UAIjD,GAFAqI,EAAOG,GAAKC,OAAOtJ,EAAKqJ,IAEpBF,EAAO,CAKT,GAJAD,EAAOK,YAAcvJ,EAAKwJ,KAC1BN,EAAOO,sBAAwBzJ,EAAK0J,IAGhCN,EACF,OAAOF,EAkCT,GA/BAA,EAAO3B,KAAOvH,EAAK2J,aACnBT,EAAOU,UAAYC,EAAUC,IAAO9J,EAAK2J,cAAe3J,EAAK+J,QAE7Db,EAAOc,YAAchK,EAAKiK,KAC1Bf,EAAOgB,iBAAmBL,EAAU7J,EAAKiK,KAAMjK,EAAK+J,QAEpDb,EAAOiB,OAASnK,EAAKmK,OACrBjB,EAAOkB,YAAcpK,EAAKmK,OAAOE,IAAI,SAAAC,GACnC,MAAO,CACL/C,KAAMsC,EAAUC,IAAOQ,EAAM/C,MAAOvH,EAAK+J,QACzC/B,MAAO6B,EAAUS,EAAMtC,MAAOhI,EAAK+J,WAGvCb,EAAOqB,YAAcvK,EAAKmK,OAAOE,IAAI,SAAAC,GACnC,MAAO,CACL/C,KAAMiD,SAASF,EAAM/C,KAAKkD,QAAQ,WAAY,KAC9CzC,MAAOwC,SAASF,EAAMtC,MAAMyC,QAAQ,WAAY,QAKpDvB,EAAOwB,kBAAoB1K,EAAK2K,OAChCzB,EAAO0B,2BAA6B5K,EAAK2K,OAGzCzB,EAAO2B,YAAc7K,EAAK8K,OAE1B5B,EAAO6B,cAAgB/K,EAAKgL,gBAE5B9B,EAAO+B,IAAMjL,EAAKiL,IAEdjL,EAAKkL,QAAS,CAChB,IAAMC,EAAenL,EAAKkL,QAAQC,aAElCjC,EAAOkC,iBAAmBpL,EAAKkL,QAAQE,iBACvClC,EAAOmC,QAAUrL,EAAKkL,QAAQG,QAC9BnC,EAAOoC,MAAQtL,EAAKkL,QAAQK,WAExBJ,IACFjC,EAAOiC,aAAeA,GAGxBjC,EAAOsC,qBAAuBxL,EAAKkL,QAAQM,qBAE3CtC,EAAOuC,aAAezL,EAAKkL,QAAQO,aACnCvC,EAAOwC,eAAiB1L,EAAKkL,QAAQQ,eACrCxC,EAAOyC,mBAAqB3L,EAAKkL,QAAQS,mBACzCzC,EAAO0C,qBAAuB5L,EAAKkL,QAAQU,qBAE3C1C,EAAO2C,OAAS,CACdC,UAAW9L,EAAKkL,QAAQa,aACxBC,MAAOhM,EAAKkL,QAAQe,UAGlB/C,EAAO2C,OAAOG,MAChB9C,EAAOgD,KAAO,QACLhD,EAAO2C,OAAOC,UACvB5C,EAAOgD,KAAO,YAEdhD,EAAOgD,KAAO,SAIdlM,EAAKmM,SACPjD,EAAOc,YAAchK,EAAKmM,OAAOlC,KACjCf,EAAOkD,cAAgBpM,EAAKmM,OAAOE,QACnCnD,EAAOiB,OAASnK,EAAKmM,OAAOhC,OACxBnK,EAAKmM,OAAOjB,UACdhC,EAAOoD,aAAetM,EAAKmM,OAAOjB,QAAQoB,aAC1CpD,EAAOqD,UAAYvM,EAAKmM,OAAOjB,QAAQqB,UACvCrD,EAAOsD,aAAexM,EAAKmM,OAAOjB,QAAQsB,eAK9CtD,EAAOuD,UAAYvD,EAAOK,YAAYmD,SAAS,UAE/CxD,EAAOK,YAAcvJ,EAAKuJ,YAE1BL,EAAO3B,KAAOvH,EAAKuH,KACnB2B,EAAOU,UAAY5J,EAAK4J,UAExBV,EAAOc,YAAchK,EAAKgK,YAC1Bd,EAAOgB,iBAAmBlK,EAAKkK,iBAE/BhB,EAAOwB,kBAAoB1K,EAAK0K,kBAChCxB,EAAO0B,2BAA6B5K,EAAK4K,2BAEzC1B,EAAO2B,YAAc7K,EAAK6K,YAE1B3B,EAAO6B,cAAgB/K,EAAK+K,cAI5B7B,EAAOO,sBAAwBzJ,EAAKyJ,sBAEpCP,EAAOuD,SAAWzM,EAAKyM,SACvBvD,EAAOgD,KAAOlM,EAAKkM,KACnBhD,EAAOqD,UAAYvM,EAAKuM,UAEpBvM,EAAK6L,SACP3C,EAAO2C,OAAS,CACdC,UAAW9L,EAAK6L,OAAOc,qBACvBX,MAAOhM,EAAK6L,OAAOG,QAGvB9C,EAAOoD,aAAetM,EAAKsM,aAC3BpD,EAAOkD,cAAgBpM,EAAKoM,cAC5BlD,EAAOuC,aAAezL,EAAKyL,aAC3BvC,EAAOwC,eAAiB1L,EAAK0L,eAC7BxC,EAAOyC,mBAAqB3L,EAAK2L,mBACjCzC,EAAO0C,qBAAuB5L,EAAK4L,qBACnC1C,EAAOkC,iBAAmBpL,EAAKoL,iBAE/BlC,EAAOoC,MAAQtL,EAAKsL,MAGpBpC,EAAOiC,aAAe,CACpByB,OAAQ5M,EAAK6M,MACbC,SAAU9M,EAAK+M,mBACfC,YAAahN,EAAKiN,YAClBC,UAAWlN,EAAKkN,WA8BpB,GA1BAhE,EAAOiE,WAAa,IAAIC,KAAKpN,EAAKmN,YAClCjE,EAAOmE,OAASrN,EAAKqN,OACrBnE,EAAOoE,gBAAkBtN,EAAKsN,gBAC9BpE,EAAOqE,eAAiBvN,EAAKuN,eAEzBvN,EAAKkL,UACPhC,EAAOsE,qBAAuBxN,EAAKkL,QAAQsC,qBAE3CtE,EAAOuE,KAAOzN,EAAKkL,QAAQuC,KAI3BvE,EAAOwE,iBAAgD,IAA3B1N,EAAKkL,QAAQyC,WACpC3N,EAAKkL,QAAQyC,UACd3N,EAAKkL,QAAQwC,YAEjBxE,EAAO0E,sBAAwB5N,EAAKkL,QAAQ0C,sBAC5C1E,EAAO2E,kBAAoB7N,EAAKkL,QAAQ2C,mBAG1C3E,EAAOuE,KAAOvE,EAAOuE,MAAQ,GAC7BvE,EAAO2C,OAAS3C,EAAO2C,QAAU,GACjC3C,EAAO0E,sBAAwB1E,EAAO0E,uBAAyB,GAG/D1E,EAAO4E,eAAiB5E,EAAOK,YAC3BL,EAAOK,YAAYmD,SAAS,KAAM,CACpC,IAAMqB,EAAQ7E,EAAOK,YAAYyE,MAAM,KACnCC,EAAgBC,IAASC,UAAUJ,EAAM,IACzCE,IAAkBF,EAAM,KAG1BE,EAAgB,KAAOA,EACvB/E,EAAO4E,eAAiB,CAACC,EAAM,GAAIE,GAAeG,KAAK,MAI3D,OAAOlF,GAGImF,EAAkB,SAACrO,GAC9B,IAAMkJ,EAAS,GAiBf,OAhBelJ,EAAKa,eAAe,WAIjCqI,EAAOoF,SAAWtO,EAAKkL,QAAUlL,EAAKkL,QAAQqD,UAAYvO,EAAKoF,KAC/D8D,EAAOsF,KAAOxO,EAAKwO,KACnBtF,EAAOG,GAAKrJ,EAAKqJ,IAEjBH,EAAOoF,SAAWtO,EAAKsO,SAIzBpF,EAAOQ,IAAM1J,EAAK0J,IAClBR,EAAOuF,gBAAkBzO,EAAK0O,YAC9BxF,EAAOc,YAAchK,EAAKgK,YAEnBd,GAEIW,EAAY,SAAC8E,EAAQ5E,GAChC,IAAM6E,EAAsB,uBAC5B,OAAO7E,EAAO8E,OAAO,SAACC,EAAKC,GACzB,IAAMC,EAAqBD,EAAME,UAAUxE,QAAQmE,EAAqB,QACxE,OAAOE,EAAIrE,QACT,IAAIyE,OAAJ,IAAAC,OAAeH,EAAf,KAAsC,KADjC,aAAAG,OAEQJ,EAAMrF,IAFd,YAAAyF,OAE4BJ,EAAME,UAFlC,eAAAE,OAEyDJ,EAAME,UAF/D,yBAINN,IAGQS,EAAc,SAAdA,EAAepP,GAC1B,IA/OyBqP,EA+OnBnG,EAAS,GACTC,EAAQnJ,EAAKa,eAAe,WAElC,GAAIsI,EAAO,CAgBT,GAfAD,EAAOoG,UAAYtP,EAAKuP,WACxBrG,EAAOsG,SAAWxP,EAAKyP,iBAEvBvG,EAAOwG,SAAW1P,EAAK2P,UACvBzG,EAAO0G,WAAa5P,EAAK6P,cAEzB3G,EAAO4G,WAAa9P,EAAK8P,WAEzB5G,EAAO9D,KAAOpF,EAAK+P,OAAS,UAAY,SACxC7G,EAAO8G,KAAOhQ,EAAKiQ,UAEnB/G,EAAOgH,eAAiBrG,EAAU7J,EAAKmQ,QAASnQ,EAAK+J,QAErDb,EAAOuE,KAAOzN,EAAKyN,KAEfzN,EAAKkL,QAAS,KACRA,EAAYlL,EAAZkL,QACRhC,EAAOkH,KAAOlF,EAAQiF,QAAUnQ,EAAKkL,QAAQiF,QAAQ,cAAgBnQ,EAAKmQ,QAC1EjH,EAAOmH,QAAUnF,EAAQoF,aAAetQ,EAAKkL,QAAQoF,aAAa,cAAgBtQ,EAAKsQ,aACvFpH,EAAOqH,0BAA4BvQ,EAAKkL,QAAQsF,gBAChDtH,EAAOuD,SAAWvB,EAAQuF,MAC1BvH,EAAOwH,wBAA0B1Q,EAAKkL,QAAQyF,yBAC9CzH,EAAO0H,aAAe1F,EAAQ0F,aAC9B1H,EAAO2H,gBAAkB3F,EAAQ2F,gBACjC3H,EAAO4H,oBAA4C9J,IAA3BkE,EAAQ4F,gBAAsC5F,EAAQ4F,oBAE9E5H,EAAOkH,KAAOpQ,EAAKmQ,QACnBjH,EAAOmH,QAAUrQ,EAAKsQ,aAGxBpH,EAAO6H,sBAAwB/Q,EAAKgR,eACpC9H,EAAO+H,oBAAsBjR,EAAKkR,uBAClChI,EAAOiI,cAAgBnR,EAAKmR,cAER,YAAhBjI,EAAO9D,OACT8D,EAAOkI,iBAAmBhC,EAAYpP,EAAK+P,SAG7C7G,EAAOmI,aAAexH,EAAUC,IAAO9J,EAAKsQ,cAAetQ,EAAK+J,QAChEb,EAAOoI,aAAetR,EAAK0J,IAC3BR,EAAOqI,KAAOvR,EAAKuR,KACfrI,EAAOqI,OACTrI,EAAOqI,KAAKC,SAAWtI,EAAOqI,KAAKC,SAAW,IAAInH,IAAI,SAAAC,GAAK,oWAAAmH,CAAA,GACtDnH,EADsD,CAEzDoH,WAAY7H,EAAUC,IAAOQ,EAAMqH,OAAQ3R,EAAK+J,aAGpDb,EAAO0I,OAAS5R,EAAK4R,OACrB1I,EAAO2D,MAAQ7M,EAAK6M,WAEpB3D,EAAOoG,UAAYtP,EAAKsP,UACxBpG,EAAOsG,SAAWxP,EAAKwP,SAEvBtG,EAAOwG,SAAW1P,EAAK0P,SACvBxG,EAAO0G,WAAa5P,EAAK4P,WAKzB1G,EAAO9D,MA9SgBiK,EA8SSrP,GA7SvB6R,aACF,SAGLxC,EAAO+B,iBACF,UAGkB,iBAAf/B,EAAOyC,KAAoBzC,EAAOyC,IAAIC,MAAM,gCAC5B,iBAAhB1C,EAAOe,MAAqBf,EAAOe,KAAK2B,MAAM,aACjD,WAGL1C,EAAOe,KAAK2B,MAAM,yBAA2B1C,EAAO2C,sBAC/C,WAGL3C,EAAOe,KAAK2B,MAAM,sBAAiD,WAAzB1C,EAAO4C,cAC5C,SAGF,eA0RajL,IAAdhH,EAAKgQ,MACP9G,EAAO8G,KAAOkC,EAAOlS,GACjBA,EAAKoR,mBACPlI,EAAO8G,KAAOhQ,EAAKoR,iBAAiBpB,OAGtC9G,EAAO8G,KAAOhQ,EAAKgQ,KAGrB9G,EAAOgH,eAAiBlQ,EAAKkQ,eAC7BhH,EAAOkH,KAAOpQ,EAAKoQ,KAEnBlH,EAAO6H,sBAAwB/Q,EAAK+Q,sBACpC7H,EAAO+H,oBAAsBjR,EAAKiR,oBAClC/H,EAAOwH,wBAA0B1Q,EAAK0Q,wBACtCxH,EAAOqH,0BAA4BvQ,EAAKuQ,0BAEpB,YAAhBrH,EAAO9D,OACT8D,EAAOkI,iBAAmBhC,EAAYpP,EAAKoR,mBAG7ClI,EAAOmH,QAAUrQ,EAAKqQ,QACtBnH,EAAOmI,aAAerR,EAAKqR,aAC3BnI,EAAOoI,aAAetR,EAAKsR,aAC3BpI,EAAOuD,SAAWzM,EAAKyM,SAGzBvD,EAAOG,GAAKC,OAAOtJ,EAAKqJ,IACxBH,EAAOiJ,WAAanS,EAAKmS,WACzBjJ,EAAOkJ,KAAOpS,EAAKoS,KACnBlJ,EAAOiE,WAAa,IAAIC,KAAKpN,EAAKmN,YAGlCjE,EAAO6H,sBAAwB7H,EAAO6H,sBAClCzH,OAAOJ,EAAO6H,uBACd,KACJ7H,EAAO+H,oBAAsB/H,EAAO+H,oBAChC3H,OAAOJ,EAAO+H,qBACd,KAEJ/H,EAAOmJ,KAAOpJ,EAAUE,EAAQnJ,EAAKsS,QAAUtS,EAAKqS,MAEpDnJ,EAAOqJ,aAAepJ,EAAQnJ,EAAKwS,SAAWxS,EAAKuS,aAAe,IAAIlI,IAAIpB,GAE1EC,EAAOuJ,cAAgBtJ,EAAQnJ,EAAK0S,kBAAoB1S,EAAKyS,cAAgB,IAC1EpI,IAAIgE,GAEP,IAAMsE,EAAkBxJ,EAAQnJ,EAAK+P,OAAS/P,EAAKoR,iBAQnD,OAPIuB,IACFzJ,EAAOkI,iBAAmBhC,EAAYuD,IAGxCzJ,EAAO0J,YAAc,GACrB1J,EAAO2J,YAAc,GAEd3J,GAGI4J,EAAoB,SAAC9S,GAChC,IAKMkJ,EAAS,GAEf,IAHelJ,EAAKa,eAAe,SAIjCqI,EAAO9D,KARS,CAChB2N,UAAa,OACbhD,OAAU,UAMc/P,EAAKoF,OAASpF,EAAKoF,KAC3C8D,EAAO8J,KAAOhT,EAAKkL,QAAQ+H,QAC3B/J,EAAOmG,OAAS6D,YAAqBhK,EAAO9D,MAAQgK,EAAYpP,EAAKqP,QAAU,KAC/EnG,EAAOiK,OAASjK,EAAOmG,OACvBnG,EAAOzD,OAAyB,SAAhByD,EAAO9D,KACnB,KACA6D,EAAUjJ,EAAKyF,QACnByD,EAAOkK,aAAenK,EAAUjJ,EAAKsS,SACrCpJ,EAAO6F,MAAQ/O,EAAK+O,UACf,CACL,IAAMsE,EAAejE,EAAYpP,EAAKsT,QACtCpK,EAAO9D,KAAOpF,EAAKuT,MACnBrK,EAAO8J,KAAOQ,QAAQxT,EAAKiT,SAC3B/J,EAAOmG,OAAyB,SAAhBnG,EAAO9D,KACnBgK,EAAYpP,EAAKsT,OAAOG,kBACxBJ,EACJnK,EAAOiK,OAASE,EAChBnK,EAAOkK,aAA+B,yBAAhBlK,EAAO9D,KAAkC6D,EAAUjJ,EAAKsS,SAAWrJ,EAAUjJ,EAAKoT,cAM1G,OAHAlK,EAAOiE,WAAa,IAAIC,KAAKpN,EAAKmN,YAClCjE,EAAOG,GAAKqK,SAAS1T,EAAKqJ,IAEnBH,GAGHgJ,EAAS,SAAC7C,GAEd,OAAQA,EAAO5B,MAAQ,IAAIf,SAAS,YAAc2C,EAAOe,MAAQ,IAAI2B,MADnD,WAIP4B,EAA4B,SAACC,GAA0B,IAC5DC,GAD4DC,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAP,IACtCD,QACfE,EAAmBC,IAAgBJ,GACzC,GAAKG,EAAL,CACA,IAAME,EAAQF,EAAiBG,KAAKC,OAC9BC,EAAQL,EAAiBM,KAAKC,OAEpC,MAAO,CACLL,MAAOJ,EAAUI,EAAQP,SAASO,EAAO,IACzCG,MAAOP,EAAUO,EAAQV,SAASU,EAAO,OAIhCG,EAAY,SAACC,GACxB,IAAMtL,EAAS,GAMf,OALAA,EAAOG,GAAKmL,EAAKnL,GACjBH,EAAOoJ,QAAUrJ,EAAUuL,EAAKlC,SAChCpJ,EAAOuL,OAASD,EAAKC,OACrBvL,EAAOwL,YAAcC,EAAiBH,EAAKI,cAC3C1L,EAAO2L,WAAa,IAAIzH,KAAKoH,EAAKK,YAC3B3L,GAGIyL,EAAmB,SAAC5N,GAC/B,GAAKA,EAAL,CACA,GAAIA,EAAQ+N,aAAgB,OAAO/N,EACnC,IAAMmC,EAASnC,EAkBf,OAjBAmC,EAAOG,GAAKtC,EAAQsC,GACpBH,EAAOiE,WAAa,IAAIC,KAAKrG,EAAQoG,YACrCjE,EAAO6L,QAAUhO,EAAQgO,QACrBhO,EAAQoJ,QACVjH,EAAOiH,QAAUtG,EAAU9C,EAAQoJ,QAASpJ,EAAQgD,QAEpDb,EAAOiH,QAAU,GAEfpJ,EAAQiO,WACV9L,EAAOuJ,YAAc,CAACpE,EAAgBtH,EAAQiO,aAE9C9L,EAAOuJ,YAAc,GAEvBvJ,EAAO+L,UAAYlO,EAAQkO,QAC3B/L,EAAOxC,OAAQ,EACfwC,EAAOgM,gBAAkBnO,EAAQmO,gBACjChM,EAAO4L,cAAe,EACf5L,oWC1cF,SAASiM,EAAiBC,EAAYC,EAAM7D,EAAS8D,GAC1DC,KAAKhO,KAAO,kBACZgO,KAAKH,WAAaA,EAClBG,KAAKxO,QAAUqO,EAAa,OAASI,MAAQA,KAAKC,UAAYD,KAAKC,UAAUJ,GAAQA,GACrFE,KAAK7O,MAAQ2O,EACbE,KAAK/D,QAAUA,EACf+D,KAAKD,SAAWA,EAEZ1P,MAAM8P,mBACR9P,MAAM8P,kBAAkBH,MAG5BJ,EAAgBvU,UAAYD,OAAO0H,OAAOzC,MAAMhF,WAChDuU,EAAgBvU,UAAU+U,YAAcR,EAEjC,IAAMS,EAAb,SAAAC,GACE,SAAAD,EAAalP,GAAO,IAAAoP,EChBUC,EDgBVC,IAAAT,KAAAK,GAClBE,EAAAG,IAAAV,KAAAW,IAAAN,GAAA9U,KAAAyU,OACI3P,MAAM8P,mBACR9P,MAAM8P,kBAANS,IAAAL,IAGF,IASE,GAPqB,iBAAVpP,IACTA,EAAQ8O,KAAKY,MAAM1P,IACT7F,eAAe,WACvB6F,EAAQ8O,KAAKY,MAAM1P,EAAMA,QAIR,WAAjB2P,IAAO3P,GAAoB,CAC7B,IAAM4P,EAAgBd,KAAKY,MAAM1P,EAAMA,OAMnC4P,EAAcC,QAChBD,EAAcE,SAAWF,EAAcC,aAChCD,EAAcC,OAGvBT,EAAK/O,SC3CmBgP,ED2CMO,EC1C7B3V,OAAO8V,QAAQV,GAAQlH,OAAO,SAAC6H,EAADC,GAAoB,IAAAC,EAAAC,IAAAF,EAAA,GAAZG,EAAYF,EAAA,GACnD7P,EADmD6P,EAAA,GACrC/H,OAAO,SAACC,EAAK/H,GAE7B,OAAO+H,EAAM,CADHiI,IAAWD,EAAErM,QAAQ,KAAM,MAClB1D,GAASqH,KAAK,KAAO,MACvC,IACH,SAAAe,OAAA6H,IAAWN,GAAX,CAAiB3P,KAChB,UDsCG+O,EAAK/O,QAAUL,EAEjB,MAAOvE,GAEP2T,EAAK/O,QAAUL,EAjCC,OAAAoP,EADtB,OAAAmB,IAAArB,EAAAC,GAAAD,EAAA,CAAAsB,IAAuCtR,sqBEZvC,IAOMuR,EAAuB,SAACC,EAAYC,GAAb,kCAAAlI,OAAmDiI,EAAnD,sBAAAjI,OAAkFkI,IAmBzGC,EAAoC,SAAAjO,GAAE,+BAAA8F,OAA6B9F,EAA7B,aACtCkO,EAAwB,SAAAlO,GAAE,0BAAA8F,OAAwB9F,EAAxB,eAC1BmO,EAA0B,SAAAnO,GAAE,0BAAA8F,OAAwB9F,EAAxB,iBAC5BoO,EAAuB,SAAApO,GAAE,0BAAA8F,OAAwB9F,EAAxB,YACzBqO,EAAyB,SAAArO,GAAE,0BAAA8F,OAAwB9F,EAAxB,cAgB3BsO,EAA6B,SAAAtO,GAAE,0BAAA8F,OAAwB9F,EAAxB,cAC/BuO,EAA4B,SAAA9S,GAAG,+BAAAqK,OAA6BrK,IAM5D+S,EAAyB,SAAAxO,GAAE,0BAAA8F,OAAwB9F,EAAxB,UAC3ByO,EAA2B,SAAAzO,GAAE,0BAAA8F,OAAwB9F,EAAxB,YAC7B0O,GAA0B,SAAA1O,GAAE,kCAAA8F,OAAgC9F,EAAhC,eAC5B2O,GAA4B,SAAA3O,GAAE,kCAAA8F,OAAgC9F,EAAhC,iBAC9B4O,GAA+B,SAAA5O,GAAE,0BAAA8F,OAAwB9F,EAAxB,cACjC6O,GAAiC,SAAA7O,GAAE,0BAAA8F,OAAwB9F,EAAxB,gBAKnC8O,GAAkC,SAAA9O,GAAE,0BAAA8F,OAAwB9F,EAAxB,mBACpC+O,GAAkC,SAAA/O,GAAE,0BAAA8F,OAAwB9F,EAAxB,kBAGpCgP,GAA0B,SAAAhP,GAAE,0BAAA8F,OAAwB9F,EAAxB,SAC5BiP,GAA4B,SAAAjP,GAAE,0BAAA8F,OAAwB9F,EAAxB,WAC9BkP,GAA6B,SAAAlP,GAAE,0BAAA8F,OAAwB9F,EAAxB,UAC/BmP,GAA+B,SAAAnP,GAAE,0BAAA8F,OAAwB9F,EAAxB,YAMjCoP,GAA8B,SAAApP,GAAE,kCAAA8F,OAAgC9F,EAAhC,eAChCqP,GAA0B,SAACrP,EAAI0F,GAAL,kCAAAI,OAA2C9F,EAA3C,eAAA8F,OAA2DJ,IACrF4J,GAA4B,SAACtP,EAAI0F,GAAL,kCAAAI,OAA2C9F,EAA3C,eAAA8F,OAA2DJ,IAGvF6J,GAA4B,SAAAvP,GAAE,+BAAA8F,OAA6B9F,EAA7B,cAC9BwP,GAAwB,SAAAxP,GAAE,+BAAA8F,OAA6B9F,EAA7B,UAC1ByP,GAAkC,SAACC,EAAQC,GAAT,+BAAA7J,OAAgD4J,EAAhD,cAAA5J,OAAmE6J,IAErGC,GAAWnQ,OAAOoQ,MAEpBA,GAAQ,SAACxP,EAAK8H,GAEhB,IACM2H,EADU,GACUzP,EAE1B,OAJA8H,EAAUA,GAAW,IAGb4H,YAAc,cACfH,GAASE,EAAS3H,IAGrB6H,GAAkB,SAAA1C,GAAiE,IAA9D2C,EAA8D3C,EAA9D2C,OAAQ5P,EAAsDiN,EAAtDjN,IAAK6P,EAAiD5C,EAAjD4C,OAAQC,EAAyC7C,EAAzC6C,QAASJ,EAAgCzC,EAAhCyC,YAAgCK,EAAA9C,EAAnB+C,QAC9DlI,EAAU,CACd8H,SACAI,QAAOjI,EAAA,CACLkI,OAAU,mBACVC,eAAgB,yBALmE,IAAAH,EAAT,GAASA,IAuBvF,OAdIF,IACF7P,GAAO,IAAM/I,OAAO8V,QAAQ8C,GACzBlP,IAAI,SAAAuM,GAAA,IAAAiD,EAAAhD,IAAAD,EAAA,GAAEtO,EAAFuR,EAAA,GAAO7R,EAAP6R,EAAA,UAAkBC,mBAAmBxR,GAAO,IAAMwR,mBAAmB9R,KACzEoG,KAAK,MAENoL,IACFhI,EAAQ6D,KAAOG,KAAKC,UAAU+D,IAE5BJ,IACF5H,EAAQkI,QAARjI,EAAA,GACKD,EAAQkI,QADb,GAEKK,GAAYX,KAGZF,GAAMxP,EAAK8H,GACfxL,KAAK,SAACsP,GACL,OAAO,IAAI/S,QAAQ,SAACC,EAASC,GAAV,OAAqB6S,EAAS0E,OAC9ChU,KAAK,SAACgU,GACL,OAAK1E,EAAS2E,GAGPzX,EAAQwX,GAFNvX,EAAO,IAAI0S,EAAgBG,EAASjG,OAAQ2K,EAAM,CAAEtQ,MAAK8H,WAAW8D,MAHzC,MAO/B,SAAC5O,GACN,OAAOjE,EAAO,IAAI0S,EAAgBG,EAASjG,OAAQ3I,EAAO,CAAEgD,MAAK8H,WAAW8D,WAsFhFyE,GAAc,SAACG,GACnB,OAAIA,EACK,CAAEC,cAAA,UAAAhL,OAA2B+K,IAE7B,IAgGLE,GAAe,SAAAC,GAAqD,IAAlDhR,EAAkDgR,EAAlDhR,GAAI4K,EAA8CoG,EAA9CpG,MAAOqG,EAAuCD,EAAvCC,QAAuCC,EAAAF,EAA9BG,aAA8B,IAAAD,EAAtB,GAAsBA,EAAlBnB,EAAkBiB,EAAlBjB,YAClD1P,EAzRyB,SAAAL,GAAE,0BAAA8F,OAAwB9F,EAAxB,cAyRrBoR,CAAuBpR,GAC3BqR,EAAO,CACXzG,GAAK,UAAA9E,OAAc8E,GACnBqG,GAAO,YAAAnL,OAAgBmL,GACvBE,GAAK,SAAArL,OAAaqL,GAHP,2BAKXG,OAAO,SAAAC,GAAC,OAAIA,IAAGxM,KAAK,KAGtB,OAAO8K,GADPxP,GAAagR,EAAO,IAAMA,EAAO,GACf,CAAEhB,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GAAD,OAAUA,EAAKqK,IAAIpB,QAgvBhB4R,GAAuB,SAAAC,GAAwC,IAArC1B,EAAqC0B,EAArC1B,YAAa2B,EAAwBD,EAAxBC,OAAwBC,EAAAF,EAAhBJ,YAAgB,IAAAM,EAAT,GAASA,EAC1E,OAAOra,OAAO8V,QAAPhF,EAAA,GACD2H,EACA,CAAE6B,aAAc7B,GAChB,GAHC,CAKL2B,UACGL,IACF7L,OAAO,SAACC,EAADoM,GAAqB,IAAAC,EAAAtE,IAAAqE,EAAA,GAAd5S,EAAc6S,EAAA,GAATC,EAASD,EAAA,GAC7B,OAAOrM,EAAG,GAAAK,OAAM7G,EAAN,KAAA6G,OAAaiM,EAAb,MACTC,uBAGCC,GAA4B,IAAIC,IAAI,CACxC,SACA,eACA,SACA,oBAGIC,GAA2B,IAAID,IAAI,CACvC,wBAKWE,GAAc,SAAAC,GAIrB,IAHJhS,EAGIgS,EAHJhS,IAGIiS,EAAAD,EAFJE,oBAEI,IAAAD,EAFWE,GAEXF,EAAAG,EAAAJ,EADJrS,UACI,IAAAyS,EADC,UACDA,EACEC,EAAc,IAAIC,YAClBC,EAAS,IAAIC,UAAUxS,GAC7B,IAAKuS,EAAQ,MAAM,IAAIrW,MAAJ,2BAAAuJ,OAAqC9F,IACxD,IAAM8S,EAAQ,SAACC,EAAUC,GAAkC,IAAvBC,EAAuBxI,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAX,SAAAyI,GAAC,OAAIA,GACnDH,EAASI,iBAAiBH,EAAW,SAACI,GACpCV,EAAYW,cAAc,IAAIC,YAC5BN,EACA,CAAEO,OAAQN,EAAUG,SAmC1B,OA/BAR,EAAOO,iBAAiB,OAAQ,SAACK,GAC/BjU,QAAQkU,MAAR,QAAA3N,OAAsB9F,EAAtB,sBAA8CwT,KAEhDZ,EAAOO,iBAAiB,QAAS,SAACK,GAChCjU,QAAQkU,MAAR,QAAA3N,OAAsB9F,EAAtB,oBAA4CwT,KAE9CZ,EAAOO,iBAAiB,QAAS,SAACK,GAChCjU,QAAQkU,MAAR,QAAA3N,OACU9F,EADV,oCAAA8F,OAC+C0N,EAAQE,MACrDF,KAaJV,EAAMF,EAAQ,QACdE,EAAMF,EAAQ,SACdE,EAAMF,EAAQ,UAAWL,GACzBO,EAAMF,EAAQ,SAGdF,EAAYiB,MAAQ,WAAQf,EAAOe,MAAM,IAAM,yBAC/CjB,EAAYkB,SAAW,kBAAMhB,EAAOiB,YAE7BnB,GAGIF,GAAgB,SAACgB,GAAY,IAChC7c,EAAS6c,EAAT7c,KACR,GAAKA,EAAL,CACA,IAAMmd,EAAc3H,KAAKY,MAAMpW,GACvBuF,EAAmB4X,EAAnB5X,MAAOiU,EAAY2D,EAAZ3D,QACf,IAAI8B,GAA0B8B,IAAI7X,KAAUiW,GAAyB4B,IAAI7X,GAevE,OADAqD,QAAQyU,KAAK,gBAAiBR,GACvB,KAbP,GAAc,WAAVtX,EACF,MAAO,CAAEA,QAAO8D,GAAImQ,GAEtB,IAAMxZ,EAAOwZ,EAAUhE,KAAKY,MAAMoD,GAAW,KAC7C,MAAc,WAAVjU,EACK,CAAEA,QAAO8J,OAAQD,YAAYpP,IACjB,iBAAVuF,EACF,CAAEA,QAAO+X,aAAcxK,YAAkB9S,IAC7B,wBAAVuF,EACF,CAAEA,QAAOgY,WAAYhJ,YAAUvU,SADjC,IASEwd,GAAqB7c,OAAO8c,OAAO,CAC9CC,OAAU,EACVC,OAAU,EACVC,MAAS,EACTC,SAAY,EACZC,SAAY,EACZC,iBAAoB,IA+EhBC,GAAa,CACjBC,kBA9qBwB,SAAC5L,GACzB,OAAO6G,GA7iBkB,sCA6iBQ,CAC/BQ,QAASK,GAAY1H,KAEpBrM,KAAK,SAACsP,GACL,OAAIA,EAAS2E,GACJ3E,EAAS0E,OAET,CACLtT,MAAO4O,KAIZtP,KAAK,SAAChG,GAAD,OAAUA,EAAK0G,MAAQ1G,EAAOiJ,YAAUjJ,MAkqBhDke,cA3wBoB,SAAAC,GAShB,IARJC,EAQID,EARJC,SACAhF,EAOI+E,EAPJ/E,YAOIiF,EAAAF,EANJG,aAMI,IAAAD,KAAAE,EAAAJ,EALJK,aAKI,IAAAD,KAAAE,EAAAN,EAJJO,cAII,IAAAD,KAAAE,EAAAR,EAHJrZ,WAGI,IAAA6Z,KAAAC,EAAAT,EAFJU,iBAEI,IAAAD,KAAAE,EAAAX,EADJY,uBACI,IAAAD,EADc,MACdA,EAaEE,EAA+B,kBAAbZ,EAClB7E,EAAS,GAEX7P,EAfiB,CACnBuV,OAzc6B,2BA0c7BC,QAzcoC,yBA0cpCC,IA5c0C,2BA6c1CC,cA3doC,wBA4dpCC,kBA7c6B,2BA8c7BhN,KAAMsF,EACN2H,MAAO3H,EACP4H,UAheyC,qBAiezCza,IAAK8S,EACL4H,UA1cmC,qBA+cdpB,GAEN,SAAbA,GAAoC,UAAbA,IACzB1U,EAAMA,EAAIgV,IAGRJ,GACF/E,EAAO7Y,KAAK,CAAC,WAAY4d,IAEvBE,GACFjF,EAAO7Y,KAAK,CAAC,SAAU8d,IAErB1Z,IACF4E,EAAMA,EAAI5E,IAEK,UAAbsZ,GACF7E,EAAO7Y,KAAK,CAAC,aAAc,IAEZ,WAAb0d,GACF7E,EAAO7Y,KAAK,CAAC,SAAS,IAEP,WAAb0d,GAAsC,sBAAbA,GAC3B7E,EAAO7Y,KAAK,CAAC,cAAc,IAEZ,cAAb0d,GAAyC,cAAbA,GAC9B7E,EAAO7Y,KAAK,CAAC,aAAcme,IAEL,QAApBE,GACFxF,EAAO7Y,KAAK,CAAC,mBAAoBqe,IAGnCxF,EAAO7Y,KAAK,CAAC,QAAS,KAEtB,IAAM+e,EAAcC,IAAInG,EAAQ,SAACoG,GAAD,SAAAxQ,OAAcwQ,EAAM,GAApB,KAAAxQ,OAA0BwQ,EAAM,MAAMvR,KAAK,KAC3E1E,GAAG,IAAAyF,OAAQsQ,GAEX,IAAIpQ,EAAS,GACTuQ,EAAa,GAEbC,EAAa,GACjB,OAAO3G,GAAMxP,EAAK,CAAEgQ,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GAML,OALAqP,EAASrP,EAAKqP,OACduQ,EAAa5f,EAAK4f,WAClBC,EAAalM,YAA0B3T,EAAK0Z,QAAQ9R,IAAI,QAAS,CAC/DiM,QAAsB,cAAbuK,GAAyC,kBAAbA,IAEhCpe,IAERgG,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GACL,OAAKA,EAAK+V,QAGR/V,EAAKqP,OAASA,EACdrP,EAAK4f,WAAaA,EACX5f,GAJA,CAAEA,KAAMA,EAAKqK,IAAI2U,EAAkBlM,IAAoB1D,KAAcyQ,iBA+rBlFC,oBAtrB0B,SAAAC,GAAyB,IAAtB1W,EAAsB0W,EAAtB1W,GAAI+P,EAAkB2G,EAAlB3G,YAC3B1P,EAAMiO,EAA2BtO,GAAM,eAC7C,OAAOgQ,GAAgB,CAAE3P,MAAK0P,gBAC3BpT,KAAK,SAAChG,GAAD,OAAUA,EAAKqK,IAAI+E,QAorB3B4Q,kBAh4BwB,SAAAC,GAAyB,IAAtB5W,EAAsB4W,EAAtB5W,GAAI+P,EAAkB6G,EAAlB7G,YAC3B8G,EAzU8B,SAAA7W,GAAE,0BAAA8F,OAAwB9F,EAAxB,YAyUnB8W,CAA4B9W,GAC7C,OAAO6P,GAAMgH,EAAY,CAAExG,QAASK,GAAYX,KAC7CpT,KAAK,SAAChG,GACL,GAAIA,EAAKia,GACP,OAAOja,EAET,MAAM,IAAI4F,MAAM,0BAA2B5F,KAE5CgG,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAAoa,GAAA,IAAGC,EAAHD,EAAGC,UAAWC,EAAdF,EAAcE,YAAd,MAAiC,CACrCD,UAAWA,EAAUhW,IAAI+E,KACzBkR,YAAaA,EAAYjW,IAAI+E,SAq3BjCmR,YAj3BkB,SAAAC,GAAyB,IAAtBnX,EAAsBmX,EAAtBnX,GAAI+P,EAAkBoH,EAAlBpH,YACrB1P,EA1VsB,SAAAL,GAAE,0BAAA8F,OAAwB9F,GA0V1CoX,CAAoBpX,GAC9B,OAAO6P,GAAMxP,EAAK,CAAEgQ,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GACL,GAAIA,EAAKia,GACP,OAAOja,EAET,MAAM,IAAI4F,MAAM,0BAA2B5F,KAE5CgG,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAw2B9Boa,gBACAsG,cA76BoB,SAAAC,GAAyB,IAAtBtX,EAAsBsX,EAAtBtX,GAAI+P,EAAkBuH,EAAlBvH,YAC3B,OAAO,IAAI7W,QAAQ,SAAOC,EAASC,GAAhB,IAAAyc,EAAA0B,EAAA3M,EAAA4M,EAAA,OAAAC,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,OAAA8M,EAAA3M,KAAA,EAEX6K,EAAU,GACV0B,GAAO,EAHI,WAIRA,EAJQ,CAAAI,EAAA9M,KAAA,gBAKPD,EAAQiL,EAAQ1e,OAAS,EAAIygB,IAAK/B,GAAS7V,QAAKrC,EALzCga,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAMO9G,GAAa,CAAE/Q,KAAI4K,QAAOmF,iBANjC,OAMPyH,EANOG,EAAAG,KAObjC,EAAUkC,IAAOlC,EAAS2B,GACL,IAAjBA,EAAMrgB,SACRogB,GAAO,GATII,EAAA9M,KAAA,gBAYf1R,EAAQ0c,GAZO8B,EAAA9M,KAAA,iBAAA8M,EAAA3M,KAAA,GAAA2M,EAAAK,GAAAL,EAAA,SAcfve,EAAMue,EAAAK,IAdS,yBAAAL,EAAAM,SAAA,uBA66BnBC,eA15BqB,SAAAC,GAAqD,IAAlDnY,EAAkDmY,EAAlDnY,GAAI4K,EAA8CuN,EAA9CvN,MAAOqG,EAAuCkH,EAAvClH,QAAuCmH,EAAAD,EAA9BhH,aAA8B,IAAAiH,EAAtB,GAAsBA,EAAlBrI,EAAkBoI,EAAlBpI,YACpD1P,EA3TyB,SAAAL,GAAE,0BAAA8F,OAAwB9F,EAAxB,cA2TrBqY,CAAuBrY,GAC3BqR,EAAO,CACXzG,GAAK,UAAA9E,OAAc8E,GACnBqG,GAAO,YAAAnL,OAAgBmL,GACvBE,GAAK,SAAArL,OAAaqL,GAHP,2BAKXG,OAAO,SAAAC,GAAC,OAAIA,IAAGxM,KAAK,KAGtB,OAAO8K,GADPxP,GAAOgR,EAAO,IAAMA,EAAO,GACT,CAAEhB,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GAAD,OAAUA,EAAKqK,IAAIpB,QA+4B3B0Y,WA1hCiB,SAAAC,GAAqC,IAAlCvY,EAAkCuY,EAAlCvY,GAAI+P,EAA8BwI,EAA9BxI,YAAgB5H,EAAcqQ,IAAAD,EAAA,sBAClDlY,EA/LsB,SAAAL,GAAE,0BAAA8F,OAAwB9F,EAAxB,WA+LlByY,CAAoBzY,GACxB0Y,EAAO,GAEb,YADwB/a,IAApBwK,EAAQwQ,UAAyBD,EAAI,QAAcvQ,EAAQwQ,SACxD9I,GAAMxP,EAAK,CAChB2L,KAAMG,KAAKC,UAAUsM,GACrBrI,QAAOjI,EAAA,GACFsI,GAAYX,GADV,CAELQ,eAAgB,qBAElBN,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAghCvBiI,aA7gCmB,SAAAC,GAAyB,IAAtB7Y,EAAsB6Y,EAAtB7Y,GAAI+P,EAAkB8I,EAAlB9I,YACtB1P,EA5MwB,SAAAL,GAAE,0BAAA8F,OAAwB9F,EAAxB,aA4MpB8Y,CAAsB9Y,GAChC,OAAO6P,GAAMxP,EAAK,CAChBgQ,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAygCvBoI,aAtgCmB,SAAAC,GAAyB,IAAtBhZ,EAAsBgZ,EAAtBhZ,GAAI+P,EAAkBiJ,EAAlBjJ,YAC1B,OAAOC,GAAgB,CAAE3P,IAAK2O,GAAwBhP,GAAK+P,cAAaE,OAAQ,SAC7EtT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAqgC9BsiB,eAlgCqB,SAAAC,GAAyB,IAAtBlZ,EAAsBkZ,EAAtBlZ,GAAI+P,EAAkBmJ,EAAlBnJ,YAC5B,OAAOC,GAAgB,CAAE3P,IAAK4O,GAA0BjP,GAAK+P,cAAaE,OAAQ,SAC/EtT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAigC9BwiB,iBA9/BuB,SAAAC,GAAyB,IAAtBpZ,EAAsBoZ,EAAtBpZ,GAAI+P,EAAkBqJ,EAAlBrJ,YAC9B,OAAOC,GAAgB,CAAE3P,IAAK6O,GAA2BlP,GAAK+P,cAAaE,OAAQ,SAChFtT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MA6/B9B0iB,mBA1/ByB,SAAAC,GAAyB,IAAtBtZ,EAAsBsZ,EAAtBtZ,GAAI+P,EAAkBuJ,EAAlBvJ,YAChC,OAAOC,GAAgB,CAAE3P,IAAK8O,GAA6BnP,GAAK+P,cAAaE,OAAQ,SAClFtT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAy/B9B4iB,UAt/BgB,SAAAC,GAAyB,IAAtBxZ,EAAsBwZ,EAAtBxZ,GAAI+P,EAAkByJ,EAAlBzJ,YACvB,OAAOF,GAtNuB,SAAA7P,GAAE,0BAAA8F,OAAwB9F,EAAxB,UAsNnByZ,CAAwBzZ,GAAK,CACxCqQ,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAm/BvB+I,YAh/BkB,SAAAC,GAAyB,IAAtB3Z,EAAsB2Z,EAAtB3Z,GAAI+P,EAAkB4J,EAAlB5J,YACzB,OAAOF,GA5NyB,SAAA7P,GAAE,0BAAA8F,OAAwB9F,EAAxB,YA4NrB4Z,CAA0B5Z,GAAK,CAC1CqQ,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UA6+BvBkJ,UA19BgB,SAAAC,GAAyB,IAAtB9Z,EAAsB8Z,EAAtB9Z,GAAI+P,EAAkB+J,EAAlB/J,YACnB1P,EAAG,GAAAyF,OA3PiB,mBA2PjB,KAAAA,OAA2B9F,GAClC,OAAOgQ,GAAgB,CAAE3P,MAAK0P,gBAC3BpT,KAAK,SAAChG,GAAD,OAAUiJ,YAAUjJ,MAw9B5BojB,sBAr9B4B,SAAAC,GAAyB,IAAtBha,EAAsBga,EAAtBha,GAAI+P,EAAkBiK,EAAlBjK,YAC/B1P,EAAG,GAAAyF,OAhQ+B,iCAgQ/B,SAAAA,OAA6C9F,GACpD,OAAO6P,GAAMxP,EAAK,CAAEgQ,QAASK,GAAYX,KACtCpT,KAAK,SAACsP,GACL,OAAO,IAAI/S,QAAQ,SAACC,EAASC,GAAV,OAAqB6S,EAAS0E,OAC9ChU,KAAK,SAACgU,GACL,OAAK1E,EAAS2E,GAGPzX,EAAQwX,GAFNvX,EAAO,IAAI0S,EAAgBG,EAASjG,OAAQ2K,EAAM,CAAEtQ,OAAO4L,WA+8B5EgO,SAhrBe,SAAAC,GAAyB,IAAtBla,EAAsBka,EAAtBla,GAAI+P,EAAkBmK,EAAlBnK,YACtB,OAAOC,GAAgB,CAAE3P,IAAK6N,EAAsBlO,GAAKiQ,OAAQ,OAAQF,gBACtEpT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MA+qB9BwjB,WA5qBiB,SAAAC,GAAyB,IAAtBpa,EAAsBoa,EAAtBpa,GAAI+P,EAAkBqK,EAAlBrK,YACxB,OAAOC,GAAgB,CAAE3P,IAAK8N,EAAwBnO,GAAKiQ,OAAQ,OAAQF,gBACxEpT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MA2qB9B0jB,QAxqBc,SAAAC,GAAyB,IAAtBta,EAAsBsa,EAAtBta,GAAI+P,EAAkBuK,EAAlBvK,YACrB,OAAOC,GAAgB,CAAE3P,IAAK+N,EAAqBpO,GAAKiQ,OAAQ,OAAQF,gBACrEpT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAuqB9B4jB,UApqBgB,SAAAC,GAAyB,IAAtBxa,EAAsBwa,EAAtBxa,GAAI+P,EAAkByK,EAAlBzK,YACvB,OAAOC,GAAgB,CAAE3P,IAAKgO,EAAuBrO,GAAKiQ,OAAQ,OAAQF,gBACvEpT,KAAK,SAAChG,GAAD,OAAUoP,YAAYpP,MAmqB9B8jB,eAhqBqB,SAAAC,GAAyB,IAAtB1a,EAAsB0a,EAAtB1a,GAAI+P,EAAkB2K,EAAlB3K,YAC5B,OAAOC,GAAgB,CACrB3P,IAAKuO,GAA6B5O,GAClCqQ,QAASK,GAAYX,GACrBE,OAAQ,UA6pBV0K,iBAzpBuB,SAAAC,GAAyB,IAAtB5a,EAAsB4a,EAAtB5a,GAAI+P,EAAkB6K,EAAlB7K,YAC9B,OAAOC,GAAgB,CACrB3P,IAAKwO,GAA+B7O,GACpCqQ,QAASK,GAAYX,GACrBE,OAAQ,UAspBV4K,WAlpBiB,SAAAC,GAYb,IAXJ/K,EAWI+K,EAXJ/K,YACA/J,EAUI8U,EAVJ9U,OACA+U,EASID,EATJC,YACAjS,EAQIgS,EARJhS,WACAlC,EAOIkU,EAPJlU,UACAsB,EAMI4S,EANJ5S,KAMI8S,EAAAF,EALJG,gBAKI,IAAAD,EALO,GAKPA,EAJJE,EAIIJ,EAJJI,kBACAC,EAGIL,EAHJK,YACAC,EAEIN,EAFJM,QACAC,EACIP,EADJO,eAEM3C,EAAO,IAAI4C,SACXC,EAAcrT,EAAKC,SAAW,GAWpC,GATAuQ,EAAK8C,OAAO,SAAUxV,GACtB0S,EAAK8C,OAAO,SAAU,cAClBT,GAAarC,EAAK8C,OAAO,eAAgBT,GACzCjS,GAAY4P,EAAK8C,OAAO,aAAc1S,GACtClC,GAAW8R,EAAK8C,OAAO,YAAa5U,GACpCuU,GAAazC,EAAK8C,OAAO,eAAgBL,GAC7CF,EAASQ,QAAQ,SAAA1J,GACf2G,EAAK8C,OAAO,cAAezJ,KAEzBwJ,EAAYG,KAAK,SAAAC,GAAM,MAAe,KAAXA,IAAgB,CAC7C,IAAMC,EAAiB,CACrBC,WAAY3T,EAAK4T,UACjBC,SAAU7T,EAAK6T,UAEjBzkB,OAAO0kB,KAAKJ,GAAgBH,QAAQ,SAAAxc,GAClCyZ,EAAK8C,OAAL,QAAA1V,OAAoB7G,EAApB,KAA4B2c,EAAe3c,MAG7Csc,EAAYE,QAAQ,SAAAE,GAClBjD,EAAK8C,OAAO,kBAAmBG,KAG/BT,GACFxC,EAAK8C,OAAO,iBAAkBN,GAE5BE,GACF1C,EAAK8C,OAAO,UAAW,QAGzB,IAAIS,EAAcvL,GAAYX,GAK9B,OAJIsL,IACFY,EAAY,mBAAqBZ,GAG5BxL,GA7mBwB,mBA6mBQ,CACrC7D,KAAM0M,EACNzI,OAAQ,OACRI,QAAS4L,IAERtf,KAAK,SAACsP,GACL,OAAOA,EAAS0E,SAEjBhU,KAAK,SAAChG,GAAD,OAAUA,EAAK0G,MAAQ1G,EAAOoP,YAAYpP,MAylBlDulB,aAtlBmB,SAAAC,GAAyB,IAAtBnc,EAAsBmc,EAAtBnc,GAAI+P,EAAkBoM,EAAlBpM,YAC1B,OAAOF,GArpBmB,SAAA7P,GAAE,0BAAA8F,OAAwB9F,GAqpBvCoc,CAAoBpc,GAAK,CACpCqQ,QAASK,GAAYX,GACrBE,OAAQ,YAolBVoM,YAhlBkB,SAAAC,GAA+B,IAA5BC,EAA4BD,EAA5BC,SAAUxM,EAAkBuM,EAAlBvM,YAC/B,OAAOF,GA/nByB,gBA+nBQ,CACtC7D,KAAMuQ,EACNtM,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GAAD,OAAUqO,YAAgBrO,MA0kBlC6lB,oBAvkB0B,SAAAC,GAAsC,IAAnCzc,EAAmCyc,EAAnCzc,GAAIW,EAA+B8b,EAA/B9b,YAAaoP,EAAkB0M,EAAlB1M,YAC9C,OAAOC,GAAgB,CACrB3P,IAAG,GAAAyF,OA1oB2B,gBA0oB3B,KAAAA,OAAkC9F,GACrCiQ,OAAQ,MACRI,QAASK,GAAYX,GACrBI,QAAS,CACPxP,iBAEDhE,KAAK,SAAChG,GAAD,OAAUqO,YAAgBrO,MAgkBlC+lB,WArciB,SAAAC,GAAqB,IAAlB5M,EAAkB4M,EAAlB5M,YACpB,OAAOC,GAAgB,CAAE3P,IAtxBK,iBAsxByB0P,gBACpDpT,KAAK,SAAC6a,GAAD,OAAWA,EAAMxW,IAAIpB,QAoc7Bgd,SAjce,SAAAC,GAAyB,IAAtB7c,EAAsB6c,EAAtB7c,GAAI+P,EAAkB8M,EAAlB9M,YACtB,OAAOC,GAAgB,CAAE3P,IAAKmO,EAAuBxO,GAAK+P,cAAaE,OAAQ,UAic/E6M,WA9biB,SAAAC,GAAyB,IAAtB/c,EAAsB+c,EAAtB/c,GAAI+P,EAAkBgN,EAAlBhN,YACxB,OAAOC,GAAgB,CAAE3P,IAAKoO,EAAyBzO,GAAK+P,cAAaE,OAAQ,UA8bjF+M,cA3boB,SAAAC,GAAyB,IAAtBjd,EAAsBid,EAAtBjd,GAAI+P,EAAkBkN,EAAlBlN,YAC3B,OAAOC,GAAgB,CAAE3P,IAAKqO,GAAwB1O,GAAK+P,cAAaE,OAAQ,UA2bhFiN,gBAxbsB,SAAAC,GAAyB,IAAtBnd,EAAsBmd,EAAtBnd,GAAI+P,EAAkBoN,EAAlBpN,YAC7B,OAAOC,GAAgB,CAAE3P,IAAKsO,GAA0B3O,GAAK+P,cAAaE,OAAQ,UAwblFmN,YArbkB,SAAAC,GAAqB,IAAlBtN,EAAkBsN,EAAlBtN,YACrB,OAAOC,GAAgB,CAAE3P,IA5yBM,kBA4yByB0P,gBACrDpT,KAAK,SAAC6a,GAAD,OAAWA,EAAMxW,IAAIpB,QAob7B0d,iBAjbuB,SAAAC,GAAqB,IAAlBxN,EAAkBwN,EAAlBxN,YAG1B,OAAOF,GAFK,yBAEM,CAChBQ,QAASK,GAAYX,KACpBpT,KAAK,SAAChG,GACP,GAAIA,EAAKia,GACP,OAAOja,EAAKga,OAEd,MAAM,IAAIpU,MAAM,6BAA8B5F,MAyahD6mB,iBArauB,SAAAC,GAAyB,IAAtBzd,EAAsByd,EAAtBzd,GAAI+P,EAAkB0N,EAAlB1N,YACxB1P,EAAG,qBAAAyF,OAAwB9F,GAEjC,OAAO6P,GAAMxP,EAAK,CAChBgQ,QAASK,GAAYX,GACrBE,OAAQ,YAiaVyN,QAp4Bc,SAAAC,GAAgC,IAA7BliB,EAA6BkiB,EAA7BliB,IAAKsU,EAAwB4N,EAAxB5N,YAEhB2I,EAAO,CACXkF,UAAW,CAHiCD,EAAX3U,KACX9I,aAGtBkE,KAAM,CAAC3I,IAGH4U,EAAUK,GAAYX,GAG5B,OAFAM,EAAQ,gBAAkB,mBAEnBR,GApZY,+BAoZQ,CACzBI,OAAQ,MACRI,QAASA,EACTrE,KAAMG,KAAKC,UAAUsM,MAw3BvBmF,UAp3BgB,SAAAC,GAAgC,IAA7BriB,EAA6BqiB,EAA7BriB,IAAKsU,EAAwB+N,EAAxB/N,YAElB/D,EAAO,CACX4R,UAAW,CAHmCE,EAAX9U,KACb9I,aAGtBkE,KAAM,CAAC3I,IAGH4U,EAAUK,GAAYX,GAG5B,OAFAM,EAAQ,gBAAkB,mBAEnBR,GAraY,+BAqaQ,CACzBI,OAAQ,SACRI,QAASA,EACTrE,KAAMG,KAAKC,UAAUJ,MAw2BvB+R,WA1zBiB,SAAAC,GAA2B,IAAxBjO,EAAwBiO,EAAxBjO,YACdhC,EADsCiQ,EAAXhV,KACT9I,YAClBmQ,EAAUK,GAAYX,GAE5B,OAAOF,GAAK,GAAA/J,OAtdU,2BAsdV,cAAAA,OAAgCiI,GAAc,CACxDkC,OAAQ,SACRI,QAASA,KAqzBX4N,SAr2Be,SAAAC,GAAkC,IAA/BlQ,EAA+BkQ,EAA/BlQ,MAAO+B,EAAwBmO,EAAxBnO,YACnBhC,EAD2CmQ,EAAXlV,KACd9I,YAExB,OAAO2P,GAAM/B,EAAqBC,EAAYC,GAAQ,CACpDiC,OAAQ,OACRI,QAASK,GAAYX,GACrB/D,KAAM,MAg2BRmS,YA51BkB,SAAAC,GAAkC,IAA/BpQ,EAA+BoQ,EAA/BpQ,MAAO+B,EAAwBqO,EAAxBrO,YACtBhC,EAD8CqQ,EAAXpV,KACjB9I,YAExB,OAAO2P,GAAM/B,EAAqBC,EAAYC,GAAQ,CACpDiC,OAAQ,SACRI,QAASK,GAAYX,GACrB/D,KAAM,MAu1BRqS,aAn1BmB,SAAAC,GAAsD,IAAnDvO,EAAmDuO,EAAnDvO,YAAkCwO,EAAiBD,EAAtCtV,KAAQ9I,YAC3C,OAAO8P,GAAgB,CACrB3P,IAhcsB,oCAictB4P,OAAQ,QACRF,cACAI,QAAS,CACPyN,UAAW,CAACW,MAEb5hB,KAAK,SAAAsP,GAAQ,OAAIuS,IAAIvS,EAAU,cA40BlCwS,eAz0BqB,SAAAC,GAAsD,IAAnD3O,EAAmD2O,EAAnD3O,YAAkCwO,EAAiBG,EAAtC1V,KAAQ9I,YAC7C,OAAO8P,GAAgB,CACrB3P,IA1cwB,sCA2cxB4P,OAAQ,QACRF,cACAI,QAAS,CACPyN,UAAW,CAACW,MAEb5hB,KAAK,SAAAsP,GAAQ,OAAIuS,IAAIvS,EAAU,cAk0BlC0S,SA/lCe,SAAAC,GAA6B,IAA1B1O,EAA0B0O,EAA1B1O,OAAQH,EAAkB6O,EAAlB7O,YAClBwO,EAAsBrO,EAAtBqO,SAAaM,EADuBrG,IACdtI,EADc,cAE5C,OAAOL,GAvKyB,mBAuKQ,CACtCI,OAAQ,OACRI,QAAOjI,EAAA,GACFsI,GAAYX,GADV,CAELQ,eAAgB,qBAElBvE,KAAMG,KAAKC,UAALhE,EAAA,CACJmW,WACAO,OAAQ,QACRC,WAAW,GACRF,MAGJliB,KAAK,SAACsP,GACL,OAAIA,EAAS2E,GACJ3E,EAAS0E,OAET1E,EAAS0E,OAAOhU,KAAK,SAACU,GAAY,MAAM,IAAIkP,EAAkBlP,QA6kC3E2hB,WAxkCiB,kBAAMnP,GAAM,wBAAwBlT,KAAK,SAAAsiB,GAAI,OAAIA,EAAKtO,UAykCvEuO,oBAzoC0B,SAAAC,GAAsE,IAAnEpP,EAAmEoP,EAAnEpP,YAAmEqP,EAAAD,EAAtD7d,cAAsD,IAAA8d,EAA7C,KAA6CA,EAAAC,EAAAF,EAAvCG,cAAuC,IAAAD,EAA9B,KAA8BA,EAAAE,EAAAJ,EAAxBK,kBAAwB,IAAAD,EAAX,KAAWA,EAC1F7G,EAAO,IAAI4C,SAIjB,OAHe,OAAXha,GAAiBoX,EAAK8C,OAAO,SAAUla,GAC5B,OAAXge,GAAiB5G,EAAK8C,OAAO,SAAU8D,GACxB,OAAfE,GAAqB9G,EAAK8C,OAAO,2BAA4BgE,GAC1D3P,GAxF2B,sCAwFQ,CACxCQ,QAASK,GAAYX,GACrBE,OAAQ,QACRjE,KAAM0M,IAEL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GACL,GAAIA,EAAK0G,MACP,MAAM,IAAId,MAAM5F,EAAK0G,OAEvB,OAAOuC,YAAUjJ,MA2nCrB8oB,cAvnCoB,SAAAC,GAA6B,IAA1B3P,EAA0B2P,EAA1B3P,YAAaG,EAAawP,EAAbxP,OACpC,OAAOF,GAAgB,CACrB3P,IAxGgC,sCAyGhC4P,OAAQ,QACRE,QAASD,EACTH,gBACCpT,KAAK,SAAChG,GAAD,OAAUiJ,YAAUjJ,MAknC5BgpB,YAhlBkB,SAAAC,GAA2B,IAAxBC,EAAwBD,EAAxBC,KAAM9P,EAAkB6P,EAAlB7P,YACrBwM,EAAW,IAAIjB,SAErB,OADAiB,EAASf,OAAO,OAAQqE,GACjBhQ,GAltBgB,4BAktBQ,CAC7B7D,KAAMuQ,EACNtM,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS2E,MAykB/BkP,aAtkBmB,SAAAC,GAA2B,IAAxBF,EAAwBE,EAAxBF,KAAM9P,EAAkBgQ,EAAlBhQ,YACtBwM,EAAW,IAAIjB,SAErB,OADAiB,EAASf,OAAO,OAAQqE,GACjBhQ,GA5tBiB,6BA4tBQ,CAC9B7D,KAAMuQ,EACNtM,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS2E,MA+jB/BoP,cA5jBoB,SAAAC,GAA2B,IAAxBJ,EAAwBI,EAAxBJ,KAAM9P,EAAkBkQ,EAAlBlQ,YACvBwM,EAAW,IAAIjB,SAErB,OADAiB,EAASf,OAAO,OAAQqE,GACjBhQ,GAtuBiB,6BAsuBQ,CAC9B7D,KAAMuQ,EACNtM,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS2E,MAqjB/BsP,cAljBoB,SAAAC,GAA+B,IAA5BpQ,EAA4BoQ,EAA5BpQ,YAAaqQ,EAAeD,EAAfC,SAC9B1H,EAAO,IAAI4C,SAIjB,OAFA5C,EAAK8C,OAAO,WAAY4E,GAEjBvQ,GAlvBkB,8BAkvBQ,CAC/B7D,KAAM0M,EACNzI,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS0E,UAyiB/B0P,YAtiBkB,SAAAC,GAAsC,IAAnCvQ,EAAmCuQ,EAAnCvQ,YAAawQ,EAAsBD,EAAtBC,MAAOH,EAAeE,EAAfF,SACnC1H,EAAO,IAAI4C,SAKjB,OAHA5C,EAAK8C,OAAO,QAAS+E,GACrB7H,EAAK8C,OAAO,WAAY4E,GAEjBvQ,GA/vBgB,4BA+vBQ,CAC7B7D,KAAM0M,EACNzI,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS0E,UA4hB/B6P,eAzhBqB,SAAAC,GAAqE,IAAlE1Q,EAAkE0Q,EAAlE1Q,YAAaqQ,EAAqDK,EAArDL,SAAUM,EAA2CD,EAA3CC,YAAaC,EAA8BF,EAA9BE,wBACtDjI,EAAO,IAAI4C,SAMjB,OAJA5C,EAAK8C,OAAO,WAAY4E,GACxB1H,EAAK8C,OAAO,eAAgBkF,GAC5BhI,EAAK8C,OAAO,4BAA6BmF,GAElC9Q,GA7wBmB,+BA6wBQ,CAChC7D,KAAM0M,EACNzI,OAAQ,OACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS0E,UA8gB/BiQ,YA3gBkB,SAAAC,GAAqB,IAAlB9Q,EAAkB8Q,EAAlB9Q,YACrB,OAAOF,GA5wBgB,4BA4wBQ,CAC7BQ,QAASK,GAAYX,GACrBE,OAAQ,QACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAwgBvBmQ,cArgBoB,SAAAC,GAA+B,IAA5BhR,EAA4BgR,EAA5BhR,YAAaqQ,EAAeW,EAAfX,SAC9B1H,EAAO,IAAI4C,SAIjB,OAFA5C,EAAK8C,OAAO,WAAY4E,GAEjBvQ,GAlxBmB,iCAkxBQ,CAChC7D,KAAM0M,EACNzI,OAAQ,SACRI,QAASK,GAAYX,KAEpBpT,KAAK,SAACsP,GAAD,OAAcA,EAAS0E,UA4f/BqQ,uBAve6B,SAAAC,GAAqB,IAAlBlR,EAAkBkR,EAAlBlR,YAChC,OAAOF,GAjzBoB,yCAizBQ,CACjCQ,QAASK,GAAYX,GACrBE,OAAQ,QACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAoevBuQ,YA9ekB,SAAAC,GAAqB,IAAlBpR,EAAkBoR,EAAlBpR,YACrB,OAAOF,GAzyBiB,uCAyyBQ,CAC9BQ,QAASK,GAAYX,GACrBE,OAAQ,QACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UA2evByQ,cA3foB,SAAAC,GAAsC,IAAnCtR,EAAmCsR,EAAnCtR,YAAaqQ,EAAsBiB,EAAtBjB,SAAUne,EAAYof,EAAZpf,MACxCyW,EAAO,IAAI4C,SAKjB,OAHA5C,EAAK8C,OAAO,WAAY4E,GACxB1H,EAAK8C,OAAO,OAAQvZ,GAEb4N,GAjyBmB,yCAiyBQ,CAChC7D,KAAM0M,EACNrI,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAkfvB2Q,oBA97B0B,SAAAC,GAAqB,IAAlBxR,EAAkBwR,EAAlBxR,YAE7B,OAAOF,GA1U4B,0BA0UjB,CAAEQ,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GAAD,OAAUA,EAAKqK,IAAIpB,QA27B3B4hB,YArhCkB,SAAAC,GAAyB,IAAtBzhB,EAAsByhB,EAAtBzhB,GAAI+P,EAAkB0R,EAAlB1R,YACrB1P,EAlP4B,SAAAL,GAAE,iCAAA8F,OAA+B9F,EAA/B,cAkPxB0hB,CAA0B1hB,GACpC,OAAO6P,GAAMxP,EAAK,CAChBgQ,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAihCvBgR,SA9gCe,SAAAC,GAAyB,IAAtB5hB,EAAsB4hB,EAAtB5hB,GAAI+P,EAAkB6R,EAAlB7R,YAClB1P,EAzPyB,SAAAL,GAAE,iCAAA8F,OAA+B9F,EAA/B,WAyPrB6hB,CAAuB7hB,GACjC,OAAO6P,GAAMxP,EAAK,CAChBgQ,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UA0gCvBmR,YAtbkB,SAAAC,GAAqB,IAAlBhS,EAAkBgS,EAAlBhS,YACrB,OAAOF,GA72Be,sBA62BQ,CAC5BQ,QAASK,GAAYX,KACpBpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAobvBqR,wBAjb8B,SAAAC,GAAyC,IAAtCjiB,EAAsCiiB,EAAtCjiB,GAAI+P,EAAkCkS,EAAlClS,YAAkCmS,EAAAD,EAArBE,cAAqB,IAAAD,KACjElW,EAAO,IAAIsP,SAQjB,OANI6G,EACFnW,EAAKwP,OAAO,KAAMxb,GAElBgM,EAAKwP,OAAO,SAAUxb,GAGjB6P,GAz3BqB,qCAy3BQ,CAClC7D,OACAqE,QAASK,GAAYX,GACrBE,OAAQ,SACPtT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAqavByR,oBAlQ0B,SAAAC,GAAyB,IAAtBtS,EAAsBsS,EAAtBtS,YAAa/P,EAASqiB,EAATriB,GAC1C,OAAOgQ,GAAgB,CACrB3P,IAAK4N,EAAkCjO,GACvCiQ,OAAQ,OACRE,QAAS,CAAEnQ,MACX+P,iBA8PFuS,KAnaW,SAAAC,GAAsC,IAh1BzBviB,EAg1BVwiB,EAAmCD,EAAnCC,OAAQC,EAA2BF,EAA3BE,QAAS1S,EAAkBwS,EAAlBxS,YAI/B,OAHa,IAAIuL,UACZE,OAAO,UAAWiH,GAEhBzS,GAAgB,CACrB3P,KAr1BsBL,EAq1BCyQ,mBAAmB+R,GAr1BlB,iBAAA1c,OAAqB9F,EAArB,WAs1BxBiQ,OAAQ,OACRF,cACAI,QAAS,CACPsS,QAASA,MA2ZbC,UAtZgB,SAAAC,GAA6B,IA71BrB3iB,EA61BLwiB,EAA0BG,EAA1BH,OAAQzS,EAAkB4S,EAAlB5S,YAC3B,OAAOC,GACL,CACE3P,KAh2BoBL,EAg2BGyQ,mBAAmB+R,GAh2BpB,iBAAA1c,OAAqB9F,IAi2B3CiQ,OAAQ,MACRF,iBAkZJ6S,sBA7Y4B,SAAAC,GAAyB,IAAtB7iB,EAAsB6iB,EAAtB7iB,GAAI+P,EAAkB8S,EAAlB9S,YACnC,OAAOC,GAAgB,CACrB3P,IAAKyO,GAAgC9O,GACrCiQ,OAAQ,MACRF,gBACCpT,KAAK,SAAC6a,GAAD,OAAWA,EAAMxW,IAAIpB,QAyY7BkjB,sBAtY4B,SAAAC,GAAyB,IAAtB/iB,EAAsB+iB,EAAtB/iB,GAAI+P,EAAkBgT,EAAlBhT,YACnC,OAAOC,GAAgB,CACrB3P,IAAK0O,GAAgC/O,GACrCiQ,OAAQ,MACRF,gBACCpT,KAAK,SAAC6a,GAAD,OAAWA,EAAMxW,IAAIpB,QAkY7BojB,oBA/X0B,SAAAC,GAAyB,IAAtBjjB,EAAsBijB,EAAtBjjB,GAAI+P,EAAkBkT,EAAlBlT,YACjC,OAAOC,GAAgB,CAAE3P,IAAK+O,GAA4BpP,GAAK+P,gBAC5DpT,KAAK,SAACumB,GAAD,OAAeA,EAAUliB,IAAI,SAAAxC,GAEjC,OADAA,EAAE2kB,SAAW3kB,EAAE2kB,SAASniB,IAAIpB,KACrBpB,OA4XX4kB,eAxXqB,SAAAC,GAAgC,IAA7BrjB,EAA6BqjB,EAA7BrjB,GAAI0F,EAAyB2d,EAAzB3d,MAAOqK,EAAkBsT,EAAlBtT,YACnC,OAAOC,GAAgB,CACrB3P,IAAKgP,GAAwBrP,EAAI0F,GACjCuK,OAAQ,MACRF,gBACCpT,KAAKoJ,MAoXRud,iBAjXuB,SAAAC,GAAgC,IAA7BvjB,EAA6BujB,EAA7BvjB,GAAI0F,EAAyB6d,EAAzB7d,MAAOqK,EAAkBwT,EAAlBxT,YACrC,OAAOC,GAAgB,CACrB3P,IAAKiP,GAA0BtP,EAAI0F,GACnCuK,OAAQ,SACRF,gBACCpT,KAAKoJ,MA6WRyd,WA1WiB,SAAAC,GAA0D,IAAvD1T,EAAuD0T,EAAvD1T,YAAasF,EAA0CoO,EAA1CpO,OAAQqO,EAAkCD,EAAlCC,UAAWC,EAAuBF,EAAvBE,QAASC,EAAcH,EAAdG,QAC7D,OAAO5T,GAAgB,CACrB3P,IA74B6B,kBA84B7B4P,OAAQ,OACRE,QAAS,CACP0T,WAAcxO,EACdyO,WAAcJ,EACdC,UACAC,WAEF7T,iBAiWFgU,2BAlrCiC,SAAAC,GAA+B,IAA5BjU,EAA4BiU,EAA5BjU,YAAakU,EAAeD,EAAfC,SAC3CvL,EAAO,IAAI4C,SAMjB,OAJA4I,IAAKD,EAAU,SAACtlB,EAAOM,GACrByZ,EAAK8C,OAAOvc,EAAKN,KAGZkR,GAjIyB,qCAiIQ,CACtCQ,QAASK,GAAYX,GACrBE,OAAQ,MACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAwqCvBwT,QAlVc,SAAAC,GAA2D,IAAxDrU,EAAwDqU,EAAxDrU,YAAasU,EAA2CD,EAA3CC,EAAGlrB,EAAwCirB,EAAxCjrB,QAASgY,EAA+BiT,EAA/BjT,MAAOmT,EAAwBF,EAAxBE,OAAQzgB,EAAgBugB,EAAhBvgB,UACrDxD,EAj6BiB,iBAk6BjB6P,EAAS,GAETmU,GACFnU,EAAO7Y,KAAK,CAAC,IAAKoZ,mBAAmB4T,KAGnClrB,GACF+W,EAAO7Y,KAAK,CAAC,UAAW8B,IAGtBgY,GACFjB,EAAO7Y,KAAK,CAAC,QAAS8Z,IAGpBmT,GACFpU,EAAO7Y,KAAK,CAAC,SAAUitB,IAGrBzgB,GACFqM,EAAO7Y,KAAK,CAAC,aAAa,IAG5B6Y,EAAO7Y,KAAK,CAAC,sBAAsB,IAEnC,IAAI+e,EAAcC,IAAInG,EAAQ,SAACoG,GAAD,SAAAxQ,OAAcwQ,EAAM,GAApB,KAAAxQ,OAA0BwQ,EAAM,MAAMvR,KAAK,KAGzE,OAFA1E,GAAG,IAAAyF,OAAQsQ,GAEJvG,GAAMxP,EAAK,CAAEgQ,QAASK,GAAYX,KACtCpT,KAAK,SAAChG,GACL,GAAIA,EAAKia,GACP,OAAOja,EAET,MAAM,IAAI4F,MAAM,+BAAgC5F,KAEjDgG,KAAK,SAAChG,GAAW,OAAOA,EAAKga,SAC7BhU,KAAK,SAAChG,GAGL,OAFAA,EAAKwsB,SAAWxsB,EAAKwsB,SAASxjB,MAAM,EAAGwR,GAAOnQ,IAAI,SAAAujB,GAAC,OAAI3kB,YAAU2kB,KACjE5tB,EAAK6tB,SAAW7tB,EAAK6tB,SAAS7kB,MAAM,EAAGwR,GAAOnQ,IAAI,SAAAzI,GAAC,OAAIwN,YAAYxN,KAC5D5B,KA2SX8tB,YA/VkB,SAAAC,GAA4B,IAAzB3U,EAAyB2U,EAAzB3U,YAAa4U,EAAYD,EAAZC,MAClC,OAAO3U,GAAgB,CACrB3P,IAr5B6B,0BAs5B7B6P,OAAQ,CACNmU,EAAGM,EACHxrB,SAAS,GAEX4W,gBAECpT,KAAK,SAAChG,GAAD,OAAUA,EAAKqK,IAAIpB,QAuV3BglB,kBAxSwB,SAAAC,GAAqB,IAAlB9U,EAAkB8U,EAAlB9U,YAC3B,OAAOC,GAAgB,CAAE3P,IAz8BY,yBAy8ByB0P,iBAwS9D+U,iBArSuB,SAAAC,GAAqB,IAAlBhV,EAAkBgV,EAAlBhV,YAC1B,OAAOC,GAAgB,CAAE3P,IA/8BQ,wBA+8ByB0P,iBAqS1DiV,WAlSiB,SAAAC,GAA6B,IAA1BC,EAA0BD,EAA1BC,OAAQnV,EAAkBkV,EAAlBlV,YAC5B,OAAOC,GAAgB,CACrB3P,IAp9B+B,wBAq9B/B4P,OAAQ,OACRE,QAAS,CAAE+U,UACXnV,iBA8RFoV,aA1RmB,SAAAC,GAA6B,IAA1BF,EAA0BE,EAA1BF,OAAQnV,EAAkBqV,EAAlBrV,YAC9B,OAAOC,GAAgB,CACrB3P,IA79B+B,wBA89B/B4P,OAAQ,SACRE,QAAS,CAAE+U,UACXnV,iBAsRFsV,MA5JY,SAAAC,GAAqB,IAAlBvV,EAAkBuV,EAAlBvV,YACf,OAAOF,GArlCc,wBAqlCW,CAAEQ,QAASK,GAAYX,KACpDpT,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAChG,GACL,MAAO,CAAE0uB,MAAO1uB,EAAKqK,IAAIkK,KAAWoG,OAAO,SAAAtT,GAAC,OAAIA,QAyJpDunB,gBArJsB,SAAAC,GAAgC,IA3lC/BxlB,EA2lCEylB,EAA6BD,EAA7BC,UAAW1V,EAAkByV,EAAlBzV,YACpC,OAAOC,GAAgB,CACrB3P,KA7lCqBL,EA6lCCylB,EA7lCC,uCAAA3f,OAA2C9F,IA8lClEiQ,OAAQ,OACRF,iBAkJF2V,aA9ImB,SAAAC,GAAqD,IAAlD3lB,EAAkD2lB,EAAlD3lB,GAAI+P,EAA8C4V,EAA9C5V,YAAanF,EAAiC+a,EAAjC/a,MAAOqG,EAA0B0U,EAA1B1U,QAA0B2U,EAAAD,EAAjBxU,aAAiB,IAAAyU,EAAT,GAASA,EACpEvlB,EAAMkP,GAA0BvP,GAC9BqR,EAAO,CACXzG,GAAK,UAAA9E,OAAc8E,GACnBqG,GAAO,YAAAnL,OAAgBmL,GACvBE,GAAK,SAAArL,OAAaqL,IAClBG,OAAO,SAAAC,GAAC,OAAIA,IAAGxM,KAAK,KAItB,OAAOiL,GAAgB,CACrB3P,IAHFA,GAAagR,EAAO,IAAMA,EAAO,GAI/BpB,OAAQ,MACRF,iBAkIF8V,gBA9HsB,SAAAC,GAAkE,IAA/D9lB,EAA+D8lB,EAA/D9lB,GAAI8G,EAA2Dgf,EAA3Dhf,QAA2Dif,EAAAD,EAAlDE,eAAkD,IAAAD,EAAxC,KAAwCA,EAAlC1K,EAAkCyK,EAAlCzK,eAAgBtL,EAAkB+V,EAAlB/V,YAChEI,EAAU,CACdrJ,QAAWA,GAGTkf,IACF7V,EAAO,SAAe6V,GAGxB,IAAM3V,EAAU,GAMhB,OAJIgL,IACFhL,EAAQ,mBAAqBgL,GAGxBrL,GAAgB,CACrB3P,IAAKkP,GAA0BvP,GAC/BiQ,OAAQ,OACRE,QAASA,EACTJ,cACAM,aA2GF4V,SAvGe,SAAAC,GAAqC,IAAlClmB,EAAkCkmB,EAAlClmB,GAAImmB,EAA8BD,EAA9BC,WAAYpW,EAAkBmW,EAAlBnW,YAClC,OAAOC,GAAgB,CACrB3P,IAAKmP,GAAsBxP,GAC3BiQ,OAAQ,OACRE,QAAS,CACPiW,aAAgBD,GAElBpW,iBAiGFsW,kBA7FwB,SAAAC,GAAwC,IAArC5W,EAAqC4W,EAArC5W,OAAQC,EAA6B2W,EAA7B3W,UAAWI,EAAkBuW,EAAlBvW,YAC9C,OAAOC,GAAgB,CACrB3P,IAAKoP,GAAgCC,EAAQC,GAC7CM,OAAQ,SACRF,kBA4FW4E,8nBCz0CR,IASM4R,EAAU,SAAC/nB,EAAGgoB,EAAGC,GAC5B,GAAIjoB,QAAJ,CAIA,GAAa,MAATA,EAAE,IAAoB,gBAANA,EAClB,OAAOA,EAET,GAAiB,WAAbkoB,IAAOloB,GAAgB,KAAAmoB,EACVnoB,EAAZA,EADsBmoB,EACtBnoB,EAAGgoB,EADmBG,EACnBH,EAAGC,EADgBE,EAChBF,EATuB,IAAAG,EAWtB,CAACpoB,EAAGgoB,EAAGC,GAAGzlB,IAAI,SAAA+Q,GAIxB,OADAA,GADAA,GADAA,EAAM8U,KAAKC,KAAK/U,IACJ,EAAI,EAAIA,GACR,IAAM,IAAMA,IAdQgV,EAAAC,IAAAJ,EAAA,GAiBlC,OANCpoB,EAXiCuoB,EAAA,GAW9BP,EAX8BO,EAAA,GAW3BN,EAX2BM,EAAA,GAiBlC,IAAAjhB,SAAa,GAAK,KAAOtH,GAAK,KAAOgoB,GAAK,GAAKC,GAAGQ,SAAS,IAAItnB,MAAM,MA8BjEunB,EAAe,SAACC,GACpB,MAAO,MAAMxiB,MAAM,IAAIa,OAAO,SAACC,EAAKzH,GAAoC,OAA5ByH,EAAIzH,GAnBjC,SAACopB,GAKhB,IAAMppB,EAAIopB,EAAM,IAChB,OAAIppB,EAAI,OACCA,EAAI,MAEJ6oB,KAAKQ,KAAKrpB,EAAI,MAAS,MAAO,KAUcspB,CAASH,EAAKnpB,IAAYyH,GAAO,KAW3E8hB,EAAoB,SAACJ,GAAS,IAAAK,EACrBN,EAAaC,GACjC,MAAO,MAFkCK,EACjChpB,EACY,MAFqBgpB,EAC9BhB,EACsB,MAFQgB,EAC3Bf,GAYHgB,EAAmB,SAACvU,EAAGuT,GAClC,IAAMiB,EAAKH,EAAkBrU,GACvByU,EAAKJ,EAAkBd,GAFWnZ,EAGvBoa,EAAKC,EAAK,CAACD,EAAIC,GAAM,CAACA,EAAID,GAHHna,EAAAyZ,IAAA1Z,EAAA,GAKxC,OALwCC,EAAA,GAK3B,MAL2BA,EAAA,GAKb,MAUhBqa,EAAyB,SAAC7gB,EAAM8gB,EAAQC,GACnD,OAAOL,EAAiBM,EAAiBD,EAASD,GAAS9gB,IAWhDihB,EAAa,SAACC,EAAIC,EAAKC,GAClC,OAAY,IAARD,QAA4B,IAARA,EAA4BD,EAC7C,MAAMtjB,MAAM,IAAIa,OAAO,SAACC,EAAKzH,GAIlC,OADAyH,EAAIzH,GAAMiqB,EAAGjqB,GAAKkqB,EAAMC,EAAGnqB,IAAM,EAAIkqB,GAC9BziB,GACN,KASQsiB,EAAmB,SAACD,EAASD,GAAV,OAAqBA,EAAOriB,OAAO,SAACC,EAAD+K,GAA2B,IAAAwT,EAAAgD,IAAAxW,EAAA,GAApB4X,EAAoBpE,EAAA,GAAbqE,EAAarE,EAAA,GAC5F,OAAOgE,EAAWI,EAAOC,EAAS5iB,IACjCqiB,IAeUQ,EAAU,SAACC,GACtB,IAAMvwB,EAAS,4CAA4CwwB,KAAKD,GAChE,OAAOvwB,EAAS,CACdwG,EAAG6L,SAASrS,EAAO,GAAI,IACvBwuB,EAAGnc,SAASrS,EAAO,GAAI,IACvByuB,EAAGpc,SAASrS,EAAO,GAAI,KACrB,MAUOywB,EAAS,SAACvV,EAAGuT,GACxB,MAAO,MAAM9hB,MAAM,IAAIa,OAAO,SAACC,EAAKgI,GAElC,OADAhI,EAAIgI,IAAMyF,EAAEzF,GAAKgZ,EAAEhZ,IAAM,EAClBhI,GACN,KAQQijB,EAAW,SAAUC,GAChC,cAAA7iB,OAAe+gB,KAAK+B,MAAMD,EAAKnqB,GAA/B,MAAAsH,OAAsC+gB,KAAK+B,MAAMD,EAAKnC,GAAtD,MAAA1gB,OAA6D+gB,KAAK+B,MAAMD,EAAKlC,GAA7E,MAAA3gB,OAAoF6iB,EAAKzV,EAAzF,MAaW2V,EAAe,SAAUV,EAAIphB,EAAM+hB,GAG9C,GAFiBrB,EAAiBU,EAAIphB,GAEvB,IAAK,CAClB,IAAMgiB,OAAyB,IAAXhiB,EAAKmM,EAAoB,CAAEA,EAAGnM,EAAKmM,GAAM,GACvDlb,EAASV,OAAO0xB,OAAOD,EAAME,0BAAgBliB,GAAMmiB,KACzD,OAAKJ,GAAYrB,EAAiBU,EAAInwB,GAAU,IAEvCmxB,wBAAchB,EAAIphB,GAAMmiB,IAG1BlxB,EAET,OAAO+O,GAUIqiB,EAAc,SAACC,EAAOnW,GACjC,IAAIgW,EAAM,GACV,GAAqB,WAAjBxC,IAAO2C,GACTH,EAAMG,OACD,GAAqB,iBAAVA,EAAoB,CACpC,IAAIA,EAAMC,WAAW,KAGnB,OAAOD,EAFPH,EAAMZ,EAAQe,GAKlB,OAAOX,+VAAQtgB,CAAA,GAAM8gB,EAAN,CAAWhW,kEClNtBqW,EAAa,SAAAxb,GAAU,OAAIA,GAAcA,EAAW1K,SAAS,MAEpDmmB,IAVa,SAACxpB,EAAI+N,EAAY0b,GAC3C,IAAMC,GAAe3b,GAAewb,EAAWxb,IAAe4b,IAASF,EAAqB1b,GAC5F,MAAO,CACL7P,KAAOwrB,EAAc,wBAA0B,eAC/CxZ,OAASwZ,EAAc,CAAE1pB,MAAO,CAAE9B,KAAM6P,8CCqB7B6b,EAzBI,CACjBC,MAAO,CACL,OACA,eACA,WAEFlzB,KANiB,WAOf,MAAO,CACLmzB,iBAAiB,EACjBC,cAAa,GAAAjkB,OAAKoG,KAAK8d,OAAOC,MAAMC,SAASC,OAASje,KAAK8d,OAAOC,MAAMC,SAASH,iBAGrFK,WAAY,CACVC,oBAEFC,QAAS,CACPC,OADO,SACCluB,GACN,OAASA,GAAO6P,KAAK4d,gBAAmB5d,KAAK6d,cAAgB1tB,GAE/DmuB,eAJO,WAKLte,KAAK4d,iBAAkB,YCd7B,IAEAW,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACduzB,ECjBF,WAA0B,IAAAC,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,KAAAG,EAAA,cAAmCE,YAAA,SAAAC,MAAA,CAA4BC,iBAAAP,EAAAQ,QAAAC,gBAAAT,EAAAU,cAAmEC,MAAA,CAAQC,IAAAZ,EAAA9hB,KAAAvE,eAAA6D,MAAAwiB,EAAA9hB,KAAAvE,eAAApI,IAAAyuB,EAAAP,OAAAO,EAAA9hB,KAAAzH,4BAAAoqB,mBAAAb,EAAAN,kBAA2JS,EAAA,OAAYE,YAAA,sBAAAC,MAAA,CAAyCC,iBAAAP,EAAAQ,YACnb,IDOA,EAaAb,EATA,KAEA,MAYemB,EAAA,QAAAjB,EAAiB,iTEtBnBkB,EAAyB,SAAAC,GAAK,OAAIA,EAAM7B,MAAMzF,SAASzO,cAAcpf,MAErEo1B,EAAe,SAAAD,GAC1B,IAAME,EAAYF,EAAME,WAAaF,EAAM7B,MAE3C,MAAQ,CACN+B,EAAUC,OAAOC,uBAAuBC,OAAS,OACjDH,EAAUC,OAAOC,uBAAuB/iB,UAAY,UACpD6iB,EAAUC,OAAOC,uBAAuBE,SAAW,SACnDJ,EAAUC,OAAOC,uBAAuBG,SAAW,SACnDL,EAAUC,OAAOC,uBAAuBI,eAAiB,iBACzDN,EAAUC,OAAOC,uBAAuBK,OAAS,OACjDP,EAAUC,OAAOC,uBAAuBM,gBAAkB,0BAC1Dlb,OAAO,SAAAC,GAAC,OAAIA,KAGVkb,EAAsB,CAAC,OAAQ,UAAW,SAAU,0BAE7C5iB,EAAuB,SAAC9N,GAAD,OAAU4tB,IAAS8C,EAAqB1wB,IAE/D2wB,EAAsB,SAACzY,GAClC,QAAIpK,EAAqBoK,EAAalY,QAAUkY,EAAajO,SAMzD2mB,EAAW,SAACzZ,EAAGuT,GACnB,IAAMmG,EAAOC,OAAO3Z,EAAElT,IAChB8sB,EAAOD,OAAOpG,EAAEzmB,IAChB+sB,GAAUF,OAAOG,MAAMJ,GACvBK,GAAUJ,OAAOG,MAAMF,GAC7B,OAAIC,GAAUE,EACLL,EAAOE,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GACZ,EAED/Z,EAAElT,GAAKymB,EAAEzmB,IAAM,EAAI,GASjBktB,EAAwB,SAACpB,EAAO7X,GAC3C,IAAM+X,EAAYF,EAAME,WAAaF,EAAM7B,MAE3C,IAAIhW,EAAatK,MACZoiB,EAAaD,GAAOzoB,SAAS4Q,EAAalY,QACrB,YAAtBkY,EAAalY,OAVS,SAAC+vB,EAAO7X,GAClC,GAAKA,EAAajO,OAClB,OAAOiO,EAAajO,OAAOxC,OAAS2pB,YAAalZ,EAAajO,OAAQ8lB,EAAMsB,YAAYC,aAAaC,WAAWn2B,OAAS,EAQlFo2B,CAAoBzB,EAAO7X,IAAlE,CAEA,IAAMuZ,EAAqBC,EAA0BxZ,EAAc6X,EAAMsB,YAAYM,MACrFC,YAAwB3B,EAAWwB,KAGxBI,EAAiC,SAAC9B,EAAO+B,GAEpD,IAAIC,EAAsBjC,EAAuBC,GAAO9qB,IAAI,SAAAuQ,GAAC,OAAIA,IAAGwc,KAAKpB,GAEzE,OADAmB,EAAsBE,IAAOF,EAAqB,SACvBxc,OACzB,SAAC2C,GAAD,OAAmB4Z,GAAS9B,EAAaD,IAAQzoB,SAAS4Q,EAAalY,SAI9DkyB,EAA+B,SAAAnC,GAAK,OAC/CoC,IAAON,EAA+B9B,GAAQ,SAAAxe,GAAA,OAAAA,EAAG3D,QAEtC8jB,EAA4B,SAACxZ,EAAcyZ,GACtD,IAOIS,EAPEC,EAAW,CACf3yB,IAAKwY,EAAajU,IAEdgG,EAASiO,EAAajO,OACtBsC,EAAQ2L,EAAalK,aAAa7L,KAIxC,OAHAkwB,EAAS9lB,MAAQA,EACjB8lB,EAASC,KAAOpa,EAAalK,aAAa1I,kBAElC4S,EAAalY,MACnB,IAAK,OACHoyB,EAAa,gBACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,OACHA,EAAa,cACb,MACF,IAAK,iBACHA,EAAa,iBAkBjB,MAd0B,2BAAtBla,EAAalY,KACfqyB,EAASpiB,KAAO0hB,EAAK9uB,EAAE,6BAA8B,CAACqV,EAAavO,QAC1DyoB,EACTC,EAASpiB,KAAO0hB,EAAK9uB,EAAE,iBAAmBuvB,GACjCtkB,EAAqBoK,EAAalY,QAC3CqyB,EAASpiB,KAAOiI,EAAajO,OAAOe,MAIlCf,GAAUA,EAAOoD,aAAepD,EAAOoD,YAAYjS,OAAS,IAAM6O,EAAOW,MAC3EX,EAAOoD,YAAY,GAAGnE,SAASqkB,WAAW,YAC1C8E,EAASE,MAAQtoB,EAAOoD,YAAY,GAAG/I,KAGlC+tB,wCCpHT,IA0LeG,EA1LC,CACdrwB,KAAM,UACN2rB,MAAO,CAEL2E,QAASvuB,OAGTwuB,UAAWxuB,OAKXyuB,QAASp3B,OAITq3B,gBAAiB1uB,OAIjB2uB,OAAQt3B,OAIRgtB,OAAQhtB,OAKRu3B,aAAc5uB,OAId6uB,cAAe3kB,SAEjBxT,KAnCc,WAoCZ,MAAO,CACLo4B,QAAQ,EACRC,OAAQ,CAAE3G,QAAS,GACnB4G,QAAS,CAAEC,MAAO,EAAGC,OAAQ,KAGjC7E,QAAS,CACP8E,4BADO,WAGL,OADkBljB,KAAKyiB,gBAAkBziB,KAAKmjB,IAAIC,QAAQpjB,KAAKyiB,iBAAmBziB,KAAKmjB,IAAIE,cAC1EC,yBAEnBC,aALO,WAML,GAAIvjB,KAAK6iB,OACP7iB,KAAK8iB,OAAS,CACZ3G,QAAS,OAFb,CASA,IAAMqH,EAAYxjB,KAAKyjB,MAAMnB,SAAWtiB,KAAKyjB,MAAMnB,QAAQoB,SAAS,IAAO1jB,KAAKmjB,IAE1EQ,EAAcH,EAASI,aAAeJ,EAASK,YAC/CC,EAAeN,EAASO,cAAgBP,EAASQ,aACjDC,EAAYT,EAASF,wBAErBY,EAAcD,EAAUE,KAAyB,GAAlBF,EAAUjB,MAAzCkB,EAAyDD,EAAUG,IACnExpB,EAAUoF,KAAKyjB,MAAM7oB,QAErBypB,EAAerkB,KAAKwiB,UACJ,cAAnBxiB,KAAKwiB,QAAQ8B,GAAwC,cAAnBtkB,KAAKwiB,QAAQ+B,IAChDvkB,KAAKkjB,8BAEDR,EAAS1iB,KAAK0iB,QAAU,GAIxB8B,EAAUxkB,KAAKwiB,SAA8B,cAAnBxiB,KAAKwiB,QAAQ8B,EAAoB,CAC/DG,IAAKJ,EAAaF,MAAQzB,EAAOyB,MAAQ,GACzCO,IAAKL,EAAaviB,OAAS4gB,EAAO5gB,OAAS,IACzC,CACF2iB,IAAK,GAAK/B,EAAOyB,MAAQ,IACzBO,IAAKnxB,OAAOoxB,YAAcjC,EAAO5gB,OAAS,KAGtC8iB,EAAU5kB,KAAKwiB,SAA8B,cAAnBxiB,KAAKwiB,QAAQ+B,EAAoB,CAC/DE,IAAKJ,EAAaD,KAAO1B,EAAO0B,KAAO,GACvCM,IAAKL,EAAaQ,QAAUnC,EAAOmC,QAAU,IAC3C,CACFJ,IAAK,GAAK/B,EAAO0B,KAAO,IACxBM,IAAKnxB,OAAOuxB,aAAepC,EAAOmC,QAAU,IAG1CE,EAAc,EAGbb,EAAiC,GAAtBtpB,EAAQgpB,YAAqBY,EAAQC,MACnDM,KAAiBb,EAAiC,GAAtBtpB,EAAQgpB,aAAqBY,EAAQC,KAI9DP,EAAWa,EAAoC,GAAtBnqB,EAAQgpB,YAAqBY,EAAQE,MACjEK,GAAgBb,EAAWa,EAAoC,GAAtBnqB,EAAQgpB,YAAqBY,EAAQE,KAIhF,IAAIM,EAA8B,WAAnBhlB,KAAKuiB,UAKhB2B,EAAWtpB,EAAQmpB,aAAea,EAAQF,MAAKM,GAAW,GAC1Dd,EAAWtpB,EAAQmpB,aAAea,EAAQH,MAAKO,GAAW,GAE9D,IAAIC,EAAW,EACf,GAAIjlB,KAAK4iB,eAAiBoC,EAAU,CAClC,IAAME,EAAcC,iBAAiB3B,GACrCyB,EAAWG,WAAWF,EAAYG,YAAcD,WAAWF,EAAYI,eAGzE,IAAMC,EAAWvlB,KAAKoY,QAAUpY,KAAKoY,OAAOmM,GAAM,EAC5CiB,EAAaR,GACdlB,EAAemB,EAAWM,EAAU3qB,EAAQmpB,aAC7CwB,EAEEE,EAAWzlB,KAAKoY,QAAUpY,KAAKoY,OAAOkM,GAAM,EAC5CoB,EAA2B,GAAd/B,EAA0C,GAAtB/oB,EAAQgpB,YAAoBmB,EAAcU,EAIjFzlB,KAAK8iB,OAAS,CACZ3G,QAAS,EACTwJ,UAAS,cAAA/rB,OAAgB+gB,KAAKiL,MAAMF,GAA3B,mBAAA9rB,OAAwD+gB,KAAKiL,MAAMJ,GAAnE,UAGbK,YA1FO,WA0FQ,IAAAtlB,EAAAP,KACP8lB,EAAY9lB,KAAK6iB,OACvB7iB,KAAK6iB,QAAS,EACd7iB,KAAK+lB,UAAU,WACTD,GAAWvlB,EAAKylB,MAAM,QAC1BzlB,EAAKgjB,kBAGT0C,YAlGO,WAmGAjmB,KAAK6iB,QAAQ7iB,KAAKgmB,MAAM,SAC7BhmB,KAAK6iB,QAAS,EACd7iB,KAAK8iB,OAAS,CAAE3G,QAAS,IAE3B+J,aAvGO,SAuGOt5B,GACS,UAAjBoT,KAAKsiB,SAAqBtiB,KAAK6lB,eAErCM,aA1GO,SA0GOv5B,GACS,UAAjBoT,KAAKsiB,SAAqBtiB,KAAKimB,eAErCG,QA7GO,SA6GEx5B,GACc,UAAjBoT,KAAKsiB,UACHtiB,KAAK6iB,OACP7iB,KAAK6lB,cAEL7lB,KAAKimB,gBAIXI,eAtHO,SAsHSz5B,GACVoT,KAAK6iB,QACL7iB,KAAKmjB,IAAImD,SAAS15B,EAAEsD,SACxB8P,KAAKimB,gBAGTM,QAtKc,WA0KZ,IAAM3rB,EAAUoF,KAAKyjB,MAAM7oB,QACtBA,IACDoF,KAAK+iB,QAAQC,QAAUpoB,EAAQgpB,aAAe5jB,KAAK+iB,QAAQE,SAAWroB,EAAQmpB,eAChF/jB,KAAKujB,eACLvjB,KAAK+iB,QAAU,CAAEC,MAAOpoB,EAAQgpB,YAAaX,OAAQroB,EAAQmpB,iBAGjEyC,QAjLc,WAkLZp3B,SAAS6X,iBAAiB,QAASjH,KAAKqmB,iBAE1CI,UApLc,WAqLZr3B,SAASs3B,oBAAoB,QAAS1mB,KAAKqmB,gBAC3CrmB,KAAKimB,uBC9KT,IAEA1H,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdu7B,ECjBF,WAA0B,IAAA/H,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiB6H,GAAA,CAAIC,WAAAjI,EAAAsH,aAAAY,WAAAlI,EAAAuH,eAA6D,CAAApH,EAAA,UAAegI,IAAA,UAAA9H,YAAA,oDAAAM,MAAA,CAAqF1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAApI,EAAAwH,UAAqB,CAAAxH,EAAAqI,GAAA,eAAArI,EAAAsI,GAAA,KAAAtI,EAAAiE,OAAgNjE,EAAAuI,KAAhNpI,EAAA,OAA4DgI,IAAA,UAAA9H,YAAA,UAAAC,MAAAN,EAAA+D,cAAA,kBAAAyE,MAAAxI,EAAA,QAAmG,CAAAA,EAAAqI,GAAA,gBAAyBxf,MAAAmX,EAAAqH,eAAwB,MACzgB,IDOA,EAaA1H,EATA,KAEA,MAYemB,EAAA,QAAAjB,EAAiB,wCEvBhC,IAAM4I,EAAW,SAAAtuB,GACf,OAAIA,EAASyD,MAAM,cACV,OAGLzD,EAASyD,MAAM,SACV,QAGLzD,EAASyD,MAAM,SACV,QAGLzD,EAASyD,MAAM,SACV,QAGF,WAMH8qB,EAAkB,CACtBD,WACAE,oBAL0B,SAAC5F,EAAOhO,GAAR,OAC1BgO,EAAMnS,KAAK,SAAA3f,GAAI,OAAIw3B,EAAS1T,EAAK5a,YAAclJ,MAOlCy3B,4GClBAE,EAbK,CAClB7J,MAAO,CACL8J,YAAa,CACXC,SAAS,EACT73B,KAAMoO,SAER0pB,SAAU,CACRD,QAAS,aACT73B,KAAM+3B,mBCAZ,IAEArJ,EAVA,SAAAC,GACEpyB,EAAQ,MAyBKy7B,EAVCz8B,OAAAszB,EAAA,EAAAtzB,CACd08B,ECjBF,WAA0B,IAAAlJ,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,QAAkBG,MAAA,CAAO6I,eAAAnJ,EAAA6I,aAAkCb,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAAA,EAAA93B,SAAA83B,EAAAC,cAA2C,MAAeD,EAAAE,kBAAyBtJ,EAAA+I,eAAwB,CAAA5I,EAAA,OAAYE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAA,SAAAgB,GAAyBA,EAAAE,qBAA4B,CAAAnJ,EAAA,OAAYE,YAAA,sCAAiD,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAqI,GAAA,gBAAArI,EAAAsI,GAAA,KAAAnI,EAAA,OAA+CE,YAAA,wBAAmC,CAAAL,EAAAqI,GAAA,eAAArI,EAAAsI,GAAA,KAAAnI,EAAA,OAA8CE,YAAA,sDAAiE,CAAAL,EAAAqI,GAAA,mBAC/qB,IDOA,EAaA1I,EATA,KAEA,MAYgC,gBEpBhC4J,IAAQC,IAAIC,KAEZ,IAiGeC,EAzFS,CACtB3K,MAAO,CACL,QAEFlzB,KAJsB,WAKpB,MAAO,CACLyN,KAAM,CACJqwB,WAfW,2BAgBXC,YAfY,sBAgBZC,eAfe,yBAgBfC,4BAf4B,sCAgB5BC,yBAfyB,mCAgBzBC,QAfQ,kBAgBRC,WAfW,sBAiBbC,sBAAsB,EACtBC,SAAS,IAGb7K,WAAY,CACVsJ,cACAnF,mBAEF2G,SAAU,CACRC,QADQ,WAEN,OAAO,IAAIjjB,IAAIhG,KAAKlD,KAAK5E,OAE3BgxB,aAJQ,WAKN,OAAOlpB,KAAK8d,OAAOC,MAAMC,SAASmL,qBAGtC/K,QAAS,CACPgL,OADO,SACCC,GACN,OAAOrpB,KAAKipB,QAAQphB,IAAIwhB,IAE1BC,UAJO,SAII/5B,GAAK,IAAAgR,EAAAP,KACR4f,EAAQ5f,KAAK8d,OACf9d,KAAKipB,QAAQphB,IAAItY,GACnBqwB,EAAM7B,MAAMwL,IAAIC,kBAAkB7X,UAAU,CAAE7U,KAAMkD,KAAKlD,KAAMvN,QAAOkB,KAAK,SAAAsP,GACpEA,EAAS2E,IACdkb,EAAM6J,OAAO,YAAa,CAAE3sB,KAAMyD,EAAKzD,KAAMvN,UAG/CqwB,EAAM7B,MAAMwL,IAAIC,kBAAkBhY,QAAQ,CAAE1U,KAAMkD,KAAKlD,KAAMvN,QAAOkB,KAAK,SAAAsP,GAClEA,EAAS2E,IACdkb,EAAM6J,OAAO,UAAW,CAAE3sB,KAAMyD,EAAKzD,KAAMvN,WAIjDm6B,YAlBO,SAkBM5nB,GAAO,IAAA6nB,EAAA3pB,KACZ4f,EAAQ5f,KAAK8d,OACf9d,KAAKlD,KAAKxG,OAAOwL,GACnB8d,EAAM7B,MAAMwL,IAAIC,kBAAkBvX,YAAY,CAAEnV,KAAMkD,KAAKlD,KAAMgF,UAASrR,KAAK,SAAAsP,GACxEA,EAAS2E,IACdkb,EAAM6J,OAAO,cAAe,CAAE3sB,KAAM6sB,EAAK7sB,KAAMgF,QAAOrP,OAAO,MAG/DmtB,EAAM7B,MAAMwL,IAAIC,kBAAkBzX,SAAS,CAAEjV,KAAMkD,KAAKlD,KAAMgF,UAASrR,KAAK,SAAAsP,GACrEA,EAAS2E,IACdkb,EAAM6J,OAAO,cAAe,CAAE3sB,KAAM6sB,EAAK7sB,KAAMgF,QAAOrP,OAAO,OAInEm3B,uBAhCO,WAiCL5pB,KAAK8d,OAAO+L,SAAS,yBAA0B,CAAE/sB,KAAMkD,KAAKlD,QAE9DgtB,iBAnCO,SAmCWC,GAChB/pB,KAAK8oB,qBAAuBiB,GAE9BlY,WAtCO,WAsCO,IAAAmY,EAAAhqB,KACN4f,EAAQ5f,KAAK8d,OACbhhB,EAAOkD,KAAKlD,KACVhJ,EAAagJ,EAAbhJ,GAAI9B,EAAS8K,EAAT9K,KACZ4tB,EAAM7B,MAAMwL,IAAIC,kBAAkB3X,WAAW,CAAE/U,SAC5CrM,KAAK,SAAA7D,GACJo9B,EAAKlM,OAAO+L,SAAS,wBAAyB,SAAA/vB,GAAM,OAAIgD,EAAKhJ,KAAOgG,EAAOgD,KAAKhJ,KAChF,IAAMm2B,EAAiC,0BAArBD,EAAKE,OAAOl4B,MAAyD,iBAArBg4B,EAAKE,OAAOl4B,KACxEm4B,EAAeH,EAAKE,OAAOlmB,OAAOhS,OAASA,GAAQg4B,EAAKE,OAAOlmB,OAAOlQ,KAAOA,EAC/Em2B,GAAaE,GACf52B,OAAO62B,QAAQC,UAIvBC,WApDO,SAoDK73B,GACVuN,KAAK+oB,QAAUt2B,KC5FrB,IAEI83B,EAVJ,SAAoB/L,GAClBpyB,EAAQ,MAyBKo+B,EAVCp/B,OAAAszB,EAAA,EAAAtzB,CACdq/B,ECjBQ,WAAgB,IAAA7L,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,WAA+BE,YAAA,2BAAAM,MAAA,CAA8C+C,QAAA,QAAAC,UAAA,SAAAnK,OAAA,CAAiDmM,EAAA,IAAQqC,GAAA,CAAKmD,KAAA,SAAA/B,GAAwB,OAAApJ,EAAA0L,YAAA,IAA4B7iB,MAAA,SAAAugB,GAA0B,OAAApJ,EAAA0L,YAAA,MAA+B,CAAAvL,EAAA,OAAYQ,MAAA,CAAOmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAA9hB,KAAA,SAAAiiB,EAAA,QAAAA,EAAA,UAA8CE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA8K,YAAA,YAAkC,CAAA9K,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAAhM,EAAA9hB,KAAAxG,OAAAG,MAAA,2FAAAmoB,EAAAsI,GAAA,KAAAnI,EAAA,UAAwLE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA8K,YAAA,gBAAsC,CAAA9K,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAAhM,EAAA9hB,KAAAxG,OAAAC,UAAA,mGAAAqoB,EAAAsI,GAAA,KAAAnI,EAAA,OAAiME,YAAA,mBAAAM,MAAA,CAAsC5oB,KAAA,iBAAoBioB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAAsCE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAgL,4BAAsC,CAAAhL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAAhM,EAAA9hB,KAAA3E,YAAA,oGAAAymB,EAAAsI,GAAA,KAAAnI,EAAA,UAA8LE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAkL,kBAAA,MAAoC,CAAAlL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,aAAAG,EAAA,OAAuIE,YAAA,mBAAAM,MAAA,CAAsC5oB,KAAA,eAAoBioB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,aAAAG,EAAA,QAAAA,EAAA,UAAkEE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAAqwB,eAA4C,CAAAxJ,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAAqwB,eAA4D3J,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAuHE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAAswB,gBAA6C,CAAAzJ,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAAswB,gBAA6D5J,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAwHE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAAuwB,mBAAgD,CAAA1J,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAAuwB,mBAAgE7J,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0DAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA2HE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAA0wB,YAAyC,CAAA7J,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAA0wB,YAAyDhK,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mDAAAhM,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA,SAAAiiB,EAAA,UAAwIE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAAwwB,gCAA6D,CAAA3J,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAAwwB,gCAA6E9J,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uEAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA,SAAAiiB,EAAA,UAAqKE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAAywB,6BAA0D,CAAA5J,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAAywB,6BAA0E/J,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oEAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA,SAAAiiB,EAAA,UAAkKE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA0K,UAAA1K,EAAA1mB,KAAA2wB,eAA4C,CAAA9J,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAwK,OAAAxK,EAAA1mB,KAAA2wB,eAA4DjK,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sDAAAhM,EAAAuI,OAAAvI,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAA+IE,YAAA,uDAAAC,MAAA,CAA0E6J,QAAAnK,EAAAmK,SAAuBxJ,MAAA,CAAQmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA9L,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gDAAA7L,EAAA,UAA+FQ,MAAA,CAAO4C,KAAA,mBAAuB,KAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,UAAiCQ,MAAA,CAAOuL,GAAA,UAAc,CAAAlM,EAAA,qBAAAG,EAAA,eAA+CQ,MAAA,CAAOwL,YAAAnM,EAAAkL,iBAAA92B,KAAAgN,MAAA,KAAoD,CAAA+e,EAAA,YAAiB2L,KAAA,UAAc,CAAA9L,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,YAAgN2L,KAAA,UAAc,CAAA3L,EAAA,UAAeE,YAAA,qBAAA2H,GAAA,CAAqCI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAkL,kBAAA,MAAqC,CAAAlL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAkGE,YAAA,4BAAA2H,GAAA,CAA4CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA/M,gBAA0B,CAAA+M,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2DAAAhM,EAAAuI,MAAA,QACrxK,IDOY,EAa7BoD,EATiB,KAEU,MAYG,2OElBhCpC,IAAQC,IACN4C,KAGF,IAyCeC,EAzCQ,CACrBtN,MAAO,CACL,OAAQ,gBAEVlzB,KAJqB,WAKnB,MAAO,IAETyzB,WAAY,CACVgN,mBACA7I,mBAEFjE,QAAS,CACP+M,YADO,WAELnrB,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKlD,KAAKhJ,KAEhDs3B,YAJO,WAKLprB,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKlD,KAAKhJ,KAEhDuZ,UAPO,WAQLrN,KAAK8d,OAAO+L,SAAS,YAAa7pB,KAAKlD,KAAKhJ,KAE9C0Z,YAVO,WAWLxN,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKlD,KAAKhJ,KAEhDwjB,WAbO,WAcLtX,KAAK8d,OAAO+L,SAAS,yBAA0B,CAAE1gB,OAAQnJ,KAAKlD,KAAKhJ,MAErEu3B,SAhBO,WAiBLrrB,KAAKsrB,QAAQngC,KAAK,CAChB6G,KAAM,OACNgS,OAAQ,CAAEunB,aAAcvrB,KAAKlD,KAAKhJ,QAIxCk1B,sWAAQ9sB,CAAA,GACHsvB,YAAS,CACVC,6BAA8B,SAAA1N,GAAK,OAAIA,EAAMC,SAASyN,kCCxC5D,IAEIC,EAVJ,SAAoBlN,GAClBpyB,EAAQ,MAyBKu/B,EAVCvgC,OAAAszB,EAAA,EAAAtzB,CACdwgC,ECjBQ,WAAgB,IAAAhN,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,kBAA6B,CAAAF,EAAA,WAAgBQ,MAAA,CAAO+C,QAAA,QAAAC,UAAA,SAAAsJ,WAAA,CAAmDvH,EAAA,aAAiBwH,iBAAA,KAAsB,CAAA/M,EAAA,OAAYE,YAAA,wBAAAM,MAAA,CAA2CmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAhpB,aAAA,WAAAgpB,EAAAhpB,aAAA,gBAAAmpB,EAAA,UAAgFE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAApI,EAAAwM,cAAyB,CAAAxM,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAhpB,aAAAm2B,gBAAuOnN,EAAAuI,KAAvOpI,EAAA,UAA2JE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAApI,EAAAuM,cAAyB,CAAAvM,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAoHE,YAAA,mBAAAM,MAAA,CAAsC5oB,KAAA,gBAAoBioB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAhpB,aAAA,SAAAmpB,EAAA,UAAiEE,YAAA,6CAAA2H,GAAA,CAA6DI,MAAApI,EAAApR,cAAyB,CAAAoR,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAA7L,EAAA,UAAyFE,YAAA,6CAAA2H,GAAA,CAA6DI,MAAApI,EAAAvR,YAAuB,CAAAuR,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAmGE,YAAA,6CAAA2H,GAAA,CAA6DI,MAAApI,EAAAtH,aAAwB,CAAAsH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,6BAAAG,EAAA,UAAuIE,YAAA,6CAAA2H,GAAA,CAA6DI,MAAApI,EAAAyM,WAAsB,CAAAzM,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAuI,MAAA,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAiHE,YAAA,kBAAAM,MAAA,CAAqCmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,UAAeE,YAAA,OAAAM,MAAA,CAA0B4C,KAAA,iBAAqB,UACj2D,IDOY,EAa7BuJ,EATiB,KAEU,MAYG,2kBEThCvD,IAAQC,IACN4D,IACAC,IACA5D,IACA6D,IACAC,KAGa,IAAAC,EAAA,CACbzO,MAAO,CACL,SAAU,WAAY,WAAY,UAAW,UAAW,WAAY,sBAEtElzB,KAJa,WAKX,MAAO,CACL4hC,yBAAyB,EACzB/M,aAActf,KAAK8d,OAAOC,MAAZ,UAA4BuO,eAAeC,YAG7D/F,QAVa,WAWXxmB,KAAK8d,OAAO+L,SAAS,wBAAyB7pB,KAAKlD,KAAKhJ,KAE1Dk1B,SAAUwD,EAAA,CACR1vB,KADM,WAEJ,OAAOkD,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAKmJ,SAE3CvT,aAJM,WAKJ,OAAOoK,KAAK8d,OAAO2O,QAAQ72B,aAAaoK,KAAKmJ,SAE/CwjB,QAPM,WAQJ,MAAO,CAAC,CACNC,sBAAwC,QAAjB5sB,KAAK6sB,QAC5BC,qBAAsC,IAAjB9sB,KAAK6sB,QAC1BE,sBAAwC,IAAlB/sB,KAAKgtB,YAG/B5F,MAdM,WAeJ,MAAO,CACL6F,gBAAiB,6EAAArzB,OAERoG,KAAKlD,KAAKxH,YAFF,MAGfuD,KAAK,QAGXq0B,YAtBM,WAuBJ,OAAOltB,KAAKlD,KAAKhJ,KAAOkM,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYr5B,IAE9Ds5B,aAzBM,WA2BJ,IAAMC,EAAY,IAAIC,IAAIttB,KAAKlD,KAAK5I,uBACpC,SAAA0F,OAAUyzB,EAAUE,SAApB,MAAA3zB,OAAiCyzB,EAAUG,KAA3C,kBAEFC,SA9BM,WA+BJ,OAAOztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjCO,SAjCM,WAkCJ,IAAMC,EAAOhT,KAAKC,MAAM,IAAI/iB,KAAS,IAAIA,KAAKmI,KAAKlD,KAAKlF,aAAjC,OACvB,OAAO+iB,KAAKiL,MAAM5lB,KAAKlD,KAAK9E,eAAiB21B,IAE/CC,kBAAmBpB,EAAA,CACjBn6B,IADe,WAEb,IAAM5H,EAAOuV,KAAK8d,OAAO2O,QAAQtL,aAAa0M,UAAU7tB,KAAKlD,KAAK9I,aAClE,OAAQvJ,GAAQA,EAAKoF,MAAS,YAEhCi+B,IALe,SAKVj+B,GACH,IAAMpF,EAAOuV,KAAK8d,OAAO2O,QAAQtL,aAAa0M,UAAU7tB,KAAKlD,KAAK9I,aACrD,aAATnE,EACFmQ,KAAK8d,OAAO+L,SAAS,eAAgB,CAAE/sB,KAAMkD,KAAKlD,KAAK9I,YAAakoB,MAAQzxB,GAAQA,EAAKyxB,OAAU,UAAWrsB,SAE9GmQ,KAAK8d,OAAO+L,SAAS,eAAgB,CAAE/sB,KAAMkD,KAAKlD,KAAK9I,YAAakoB,WAAOzqB,MAG5Es8B,YAAW,CAAC,kBAEjBC,mBAAoB,CAClB37B,IADkB,WAEhB,IAAM5H,EAAOuV,KAAK8d,OAAO2O,QAAQtL,aAAa0M,UAAU7tB,KAAKlD,KAAK9I,aAClE,OAAOvJ,GAAQA,EAAKyxB,OAEtB4R,IALkB,SAKb5R,GACHlc,KAAK8d,OAAO+L,SAAS,eAAgB,CAAE/sB,KAAMkD,KAAKlD,KAAK9I,YAAakoB,YAGxE+R,YA7DM,WA8DJ,IAAM33B,EAAS0J,KAAKlD,KAAKxG,OACzB,GAAKA,EAAL,CACA,IAAM43B,EAAY53B,EAAOG,OAASH,EAAOC,UACnC43B,EAAY73B,EAAOG,MAAQ,QAAU,YAC3C,OAAOy3B,GAAaC,IAEtBC,iBApEM,WAqEJ,OAAOpuB,KAAKktB,aAAeltB,KAAKlD,KAAK1G,oBAEvCi4B,mBAvEM,WAwEJ,OAAOruB,KAAKktB,aAAeltB,KAAKlD,KAAKzG,uBAEpC03B,YAAW,CAAC,kBAEjB7P,WAAY,CACVR,qBACA4Q,iBACAhG,kBACA2C,iBACAC,mBACAqD,kBAEFnQ,QAAS,CACP1N,SADO,WAEL1Q,KAAK8d,OAAO+L,SAAS,WAAY7pB,KAAKlD,KAAKhJ,KAE7C8c,WAJO,WAKL5Q,KAAK8d,OAAO+L,SAAS,aAAc7pB,KAAKlD,KAAKhJ,KAE/Cgd,cAPO,WAQL,OAAO9Q,KAAK8d,OAAO+L,SAAS,gBAAiB7pB,KAAKlD,KAAKhJ,KAEzDkd,gBAVO,WAWL,OAAOhR,KAAK8d,OAAO+L,SAAS,kBAAmB7pB,KAAKlD,KAAKhJ,KAE3D06B,eAbO,SAaSC,GACVzuB,KAAK0uB,UACO1uB,KAAK8d,OACb2L,OAAO,iBAAkB,CAAEgF,OAGrCE,YAnBO,SAAAvtB,GAmBkB,IAAVlR,EAAUkR,EAAVlR,OACU,SAAnBA,EAAOm5B,UACTn5B,EAASA,EAAOI,YAEK,MAAnBJ,EAAOm5B,SACT91B,OAAOq7B,KAAK1+B,EAAO/C,KAAM,WAG7B0hC,gBA3BO,SA2BU/xB,GACf,OAAOwgB,YACLxgB,EAAKhJ,GAAIgJ,EAAK9I,YACdgM,KAAK8d,OAAOC,MAAMC,SAAST,sBAG/BuR,WAjCO,WAkCL,IAAMrvB,EAAa,CACjBtL,IAAK6L,KAAKlD,KAAKzH,2BACf0D,SAAU,SAEZiH,KAAK8d,OAAO+L,SAAS,WAAY,CAACpqB,IAClCO,KAAK8d,OAAO+L,SAAS,aAAcpqB,IAErCsvB,YAzCO,WA0CL/uB,KAAK8d,OAAO+L,SAAS,sBAAuB,CAAEmF,SAAS,EAAMC,YAAajvB,KAAKlD,UC5JrF,IAEIoyB,EAVJ,SAAoB1Q,GAClBpyB,EAAQ,MAeN+iC,EAAY/jC,OAAAszB,EAAA,EAAAtzB,CACdghC,ECjBQ,WAAgB,IAAAxN,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,YAAAC,MAAAN,EAAA+N,SAA0C,CAAA5N,EAAA,OAAYE,YAAA,mBAAAC,MAAA,CAAsCkQ,WAAAxQ,EAAAyQ,SAA0BjI,MAAAxI,EAAA,QAAmBA,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,aAAwB,CAAAF,EAAA,OAAYE,YAAA,aAAwB,CAAAL,EAAA,mBAAAG,EAAA,KAAmCE,YAAA,wBAAA2H,GAAA,CAAwCI,MAAApI,EAAAkQ,aAAwB,CAAA/P,EAAA,cAAmBQ,MAAA,CAAOF,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAA9hB,QAAkD8hB,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,iCAA4C,CAAAF,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,kBAAsB,OAAApD,EAAA,eAA4BQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,gBAAAjQ,EAAA9hB,QAAoC,CAAAiiB,EAAA,cAAmBQ,MAAA,CAAOF,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAA9hB,SAAkD,GAAA8hB,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,gBAA2B,CAAAF,EAAA,OAAYE,YAAA,YAAuB,CAAAL,EAAA9hB,KAAA,UAAAiiB,EAAA,OAAiCE,YAAA,YAAAM,MAAA,CAA+BnjB,MAAAwiB,EAAA9hB,KAAA9K,MAAsBs9B,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA/L,EAAA9hB,KAAAzI,cAAwC0qB,EAAA,OAAYE,YAAA,YAAAM,MAAA,CAA+BnjB,MAAAwiB,EAAA9hB,KAAA9K,OAAuB,CAAA4sB,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAA9K,MAAA,oBAAA4sB,EAAAsI,GAAA,KAAAtI,EAAAsO,cAAAtO,EAAA9hB,KAAA5F,SAAA6nB,EAAA,KAAkIE,YAAA,uBAAAM,MAAA,CAA0CpyB,KAAAyxB,EAAA9hB,KAAA5I,sBAAAhE,OAAA,WAAyD,CAAA6uB,EAAA,UAAeE,YAAA,OAAAM,MAAA,CAA0B4C,KAAA,wBAA4B,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAsO,aAAAtO,EAAA6O,SAAA1O,EAAA,kBAAkFQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,KAAAlH,aAAAgpB,EAAAhpB,gBAAiDgpB,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqCE,YAAA,eAA0B,CAAAF,EAAA,eAAoBE,YAAA,mBAAAM,MAAA,CAAsCnjB,MAAAwiB,EAAA9hB,KAAAvE,eAAAuyB,GAAAlM,EAAAiQ,gBAAAjQ,EAAA9hB,QAAoE,CAAA8hB,EAAAsI,GAAA,oBAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAAvE,gBAAA,oBAAAqmB,EAAAsI,GAAA,KAAAtI,EAAAyQ,QAA+VzQ,EAAAuI,KAA/V,CAAAvI,EAAAqP,YAAAlP,EAAA,QAA4IE,YAAA,mBAA8B,CAAAL,EAAAsI,GAAA,qBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gBAAAhM,EAAAqP,cAAA,sBAAArP,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA,IAAAiiB,EAAA,QAAuJE,YAAA,mBAA8B,CAAAL,EAAAsI,GAAA,qBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,MAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA,OAAAiiB,EAAA,QAAAA,EAAA,UAA6JE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,OAAAqN,KAAA,SAA2B,GAAA5Q,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuC,aAAAsO,eAAA7Q,EAAAyQ,QAA+GzQ,EAAAuI,KAA/GpI,EAAA,QAAwFE,YAAA,YAAuB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA8O,UAAA,IAAA9O,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAkHE,YAAA,aAAwB,CAAAL,EAAAhpB,aAAA6B,aAAAmnB,EAAA6O,UAAA7O,EAAAsO,YAAAnO,EAAA,OAA8EE,YAAA,aAAwB,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAAsO,cAAAtO,EAAA6O,UAAA7O,EAAA8P,SAA2kE9P,EAAAuI,KAA3kEpI,EAAA,OAAoKE,YAAA,eAA0B,cAAAL,EAAAgP,kBAAA7O,EAAA,SAAqD2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,mBAAAgR,WAAA,uBAA8F3Q,YAAA,oBAAAM,MAAA,CAAyCzrB,GAAA,uBAAA8qB,EAAA9hB,KAAAhJ,GAAAjE,KAAA,QAAsDy/B,SAAA,CAAW78B,MAAAmsB,EAAA,oBAAiCgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAAoP,mBAAAhG,EAAA93B,OAAAuC,WAA6CmsB,EAAAuI,KAAAvI,EAAAsI,GAAA,kBAAAtI,EAAAgP,kBAAA7O,EAAA,SAA0E2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,mBAAAgR,WAAA,uBAA8F3Q,YAAA,kBAAAM,MAAA,CAAuCzrB,GAAA,qBAAA8qB,EAAA9hB,KAAAhJ,GAAAjE,KAAA,SAAqDy/B,SAAA,CAAW78B,MAAAmsB,EAAA,oBAAiCgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAAoP,mBAAAhG,EAAA93B,OAAAuC,WAA6CmsB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,SAAmCE,YAAA,0BAAAM,MAAA,CAA6CuQ,IAAA,cAAmB,CAAA/Q,EAAA,UAAe2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,kBAAAgR,WAAA,sBAA4F3Q,YAAA,mBAAAM,MAAA,CAAwCzrB,GAAA,mBAAA8qB,EAAA9hB,KAAAhJ,IAAoC8yB,GAAA,CAAKmJ,OAAA,SAAA/H,GAA0B,IAAAgI,EAAAC,MAAA5kC,UAAA+Z,OAAA7Z,KAAAy8B,EAAA93B,OAAA+L,QAAA,SAAA/J,GAAkF,OAAAA,EAAAg+B,WAAkBp7B,IAAA,SAAA5C,GAA+D,MAA7C,WAAAA,IAAAi+B,OAAAj+B,EAAAO,QAA0DmsB,EAAAgP,kBAAA5F,EAAA93B,OAAA2f,SAAAmgB,IAAA,MAAmF,CAAAjR,EAAA,UAAeQ,MAAA,CAAO9sB,MAAA,aAAoB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAoFQ,MAAA,CAAO9sB,MAAA,UAAiB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAiFQ,MAAA,CAAO9sB,MAAA,YAAmB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAmFQ,MAAA,CAAO9sB,MAAA,SAAgB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAkFE,YAAA,mBAAAM,MAAA,CAAsC4C,KAAA,mBAAuB,OAAAvD,EAAAsI,GAAA,KAAAtI,EAAA6O,UAAA7O,EAAAsO,YAAAnO,EAAA,OAA2EE,YAAA,qBAAgC,CAAAF,EAAA,OAAYE,YAAA,aAAwB,CAAAF,EAAA,gBAAqBQ,MAAA,CAAO3pB,aAAAgpB,EAAAhpB,gBAAiCgpB,EAAAsI,GAAA,KAAAtI,EAAAhpB,aAAA,WAAAgpB,EAAAhpB,aAAAw6B,YAA+OrR,EAAA,kBAA2BE,YAAA,6BAAAM,MAAA,CAAgDyH,MAAApI,EAAA5N,gBAAA5U,MAAAwiB,EAAAgM,GAAA,2BAAqE,CAAA7L,EAAA,YAAAA,EAAA,UAA8BQ,MAAA,CAAO4C,KAAA,MAAAwD,UAAA,iCAAA0K,KAAA,gBAA+EzR,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BQ,MAAA,CAAO4C,KAAA,MAAAwD,UAAA,qCAA4D/G,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BQ,MAAA,CAAO4C,KAAA,WAAe,OAAloBpD,EAAA,kBAAiGE,YAAA,qBAAAM,MAAA,CAAwCyH,MAAApI,EAAA9N,cAAA1U,MAAAwiB,EAAAgM,GAAA,yBAAiE,CAAA7L,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,WAAe,IAAmZvD,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAAH,EAAAhpB,aAAA,OAAAmpB,EAAA,UAAqFE,YAAA,uCAAA2H,GAAA,CAAuDI,MAAApI,EAAAhO,aAAwB,CAAAgO,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAA7L,EAAA,UAA2FE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAApI,EAAAlO,WAAsB,CAAAkO,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAAA,EAAA,UAAkHE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAApI,EAAAmQ,cAAyB,CAAAnQ,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAsI,GAAA,eAAAtI,EAAA6O,SAAA92B,KAAAooB,EAAA,mBAAoJQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,QAAiB8hB,EAAAuI,MAAA,GAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAA6O,UAAA7O,EAAA9hB,KAAA5F,SAAA6nB,EAAA,OAAmFE,YAAA,qBAAgC,CAAAF,EAAA,gBAAqBQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,SAAiB,GAAA8hB,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAtI,EAAAyQ,QAA81CzQ,EAAAuI,KAA91CpI,EAAA,OAAwDE,YAAA,cAAyB,EAAAL,EAAAuC,aAAAsO,eAAA7Q,EAAA8P,SAAA3P,EAAA,OAA8DE,YAAA,eAA0B,CAAAF,EAAA,OAAYE,YAAA,aAAA2H,GAAA,CAA6BI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4P,eAAA,eAAwC,CAAAzP,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAA9E,gBAAA,KAAA+mB,EAAA,UAAAH,EAAAsI,GAAA,KAAAnI,EAAA,OAAgKE,YAAA,aAAA2H,GAAA,CAA6BI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4P,eAAA,cAAuC,CAAAzP,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAwP,iBAAAxP,EAAAgM,GAAA,oBAAAhM,EAAA9hB,KAAAtH,oBAAAopB,EAAAsI,GAAA,KAAAnI,EAAA,OAAuME,YAAA,aAAA2H,GAAA,CAA6BI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4P,eAAA,gBAAyC,CAAAzP,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAyP,mBAAAzP,EAAAgM,GAAA,oBAAAhM,EAAA9hB,KAAA/E,wBAAA6mB,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAAyQ,SAAAzQ,EAAA9hB,KAAAnI,iBAAAoqB,EAAA,KAAgQE,YAAA,gBAAAqQ,SAAA,CAAsCC,UAAA3Q,EAAA+L,GAAA/L,EAAA9hB,KAAAnI,mBAA8CiyB,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,OAAiCpJ,EAAAyQ,QAAqDzQ,EAAAuI,KAArDpI,EAAA,KAAyBE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAArI,aAAA,iBACpqP,IDOY,EAa7By6B,EATiB,KAEU,MAYdxP,EAAA,EAAAyP,EAAiB,sCE1BhC/iC,EAAA2F,EAAA2tB,EAAA,sBAAA6Q,IAAAnkC,EAAA2F,EAAA2tB,EAAA,sBAAA8Q,IAAApkC,EAAA2F,EAAA2tB,EAAA,sBAAA+Q,IAAA,IAAAC,EAAAtkC,EAAA,IAAAukC,EAAAvkC,EAAA,IAMamkC,EAAS,CACpBK,QAAS,KACTC,OAAQ,KACRC,MAAO,KACPC,YAAa,KACbhV,GAAI,KACJE,GAAI,WACJ4R,UAAW,KACXmD,MAAO,KACPrK,QAAS,KACTsK,aAAc,UACdC,IAAK,KACLC,SAAU,QACVC,UAAW,SACXjU,MAAO,KACPkU,WAAY,QACZC,YAAa,SACbC,MAAO,KACPC,WAAY,QACZx1B,KAAM,KACNy1B,OAAQ,WACRC,YAAa,UAMFlB,EAAkB,CAC7BO,YAAa,GACbQ,MAAO,GACPpU,MAAO,GACPwU,MAAO,GACPC,SAAU,IACVC,WAAY,KAyCDpB,EAAmB,CAC9BxU,GAAI,CACF6V,QAAS,GACT3V,QAAS,KACT4V,SAAU,GAEZC,UAAW,CACTF,QAAS,CAAC,MACV5V,MAAO,SAAC+V,EAAKhW,GAAN,OAAaiW,sBAAY,EAAID,EAAKhW,GAAIe,MAE/CjB,GAAI,CACF+V,QAAS,GACTC,SAAU,GAEZl3B,KAAM,CACJi3B,QAAS,GACTK,MAAO,KACPhW,QAAS,KACT4V,SAAU,GAEZH,SAAU,CACRlK,QAAS,UACTvL,QAAS,YAEXiW,KAAM,CACJN,QAAS,CAAC,UACVC,SAAU,GAEZM,OAAQ,CACNP,QAAS,CAAC,QACVC,SAAU,GAEZJ,MAAO,CACLG,QAAS,CAAC,QACV3V,QAAS,SAEXmW,UAAW,CACTR,QAAS,CAAC,QACV3V,QAAS,SAEXoW,cAAe,CACbT,QAAS,CAAC,YACV3V,QAAS,SAGXqW,MAAO,UACPC,KAAM,UACNC,OAAQ,UACRC,QAAS,UAETC,UAAW,CACTd,QAAS,CAAC,MACV5V,MAAO,SAAC+V,EAAKhW,GAAN,MAAc,CACnB3pB,EAAGqoB,KAAK+B,MAAa,IAAPT,EAAG3pB,GACjBgoB,EAAGK,KAAK+B,MAAa,IAAPT,EAAG3B,GACjBC,EAAGI,KAAK+B,MAAa,IAAPT,EAAG1B,MAGrBwW,YAAa,CACXe,QAAS,CAAC,MACVK,MAAO,cACPhW,QAAS,eAGX0R,UAAW,CACTiE,QAAS,CAAC,MACV5V,MAAO,SAAC+V,EAAKhW,GAAN,OAAaiW,qBAAW,EAAID,EAAKhW,GAAIe,MAE9C6V,mBAAoB,CAClBf,QAAS,CAAC,aACVK,MAAO,YACPW,WAAW,GAEbC,kBAAmB,CACjBjB,QAAS,CAAC,YACVK,MAAO,YACPW,UAAW,YAEbE,mBAAoB,CAClBlB,QAAS,CAAC,SACVK,MAAO,YACPW,WAAW,GAEbG,mBAAoB,CAClBnB,QAAS,CAAC,aACVK,MAAO,YACPW,UAAW,YAEbI,uBAAwB,CACtBpB,QAAS,CAAC,iBACVK,MAAO,YACPW,UAAW,YAEbK,cAAe,CACbrB,QAAS,CAAC,QACVK,MAAO,YACPW,WAAW,GAEbM,cAAe,CACbtB,QAAS,CAAC,QACVK,MAAO,YACPW,UAAW,YAEbO,cAAe,CACbvB,QAAS,CAAC,YAAa,iBACvB5V,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAGvC8rB,QAAS,CACPmL,QAAS,CAAC,MACV3V,QAAS,WAEXmX,iBAAkB,CAChBxB,QAAS,CAAC,aACVK,MAAO,UACPW,WAAW,GAEbS,gBAAiB,CACfzB,QAAS,CAAC,YACVK,MAAO,UACPW,UAAW,YAEbU,iBAAkB,CAChB1B,QAAS,CAAC,SACVK,MAAO,UACPW,WAAW,GAEbW,iBAAkB,CAChB3B,QAAS,CAAC,aACVK,MAAO,UACPW,UAAW,YAEbY,qBAAsB,CACpB5B,QAAS,CAAC,iBACVK,MAAO,UACPW,UAAW,YAEba,YAAa,CACX7B,QAAS,CAAC,QACVK,MAAO,UACPW,WAAW,GAEbc,YAAa,CACX9B,QAAS,CAAC,QACVK,MAAO,UACPW,UAAW,YAEbe,YAAa,CACX/B,QAAS,CAAC,UAAW,eACrB5V,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAGvCi5B,aAAc,cACdC,sBAAuB,CACrBjC,QAAS,CAAC,sBACVK,MAAO,YACP6B,QAAS,eACTlB,WAAW,GAEbmB,sBAAuB,CACrBnC,QAAS,CAAC,sBACVK,MAAO,YACP6B,QAAS,eACTlB,WAAW,GAEboB,qBAAsB,CACpBpC,QAAS,CAAC,qBACVK,MAAO,YACP6B,QAAS,eACTlB,UAAW,YAEbqB,sBAAuB,CACrBrC,QAAS,CAAC,sBACVK,MAAO,YACP6B,QAAS,eACTlB,UAAW,YAEbsB,iBAAkB,CAChBtC,QAAS,CAAC,iBACVK,MAAO,YACP6B,QAAS,eACTlB,WAAW,GAEbuB,iBAAkB,CAChBvC,QAAS,CAAC,iBACVK,MAAO,YACP6B,QAAS,eACTlB,UAAW,YAEbwB,iBAAkB,CAChBxC,QAAS,CAAC,eAAgB,oBAC1B5V,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAGvCo2B,aAAc,CACZa,QAAS,CAAC,MACV5V,MAAO,SAAC+V,EAAKhW,GAAN,OAAaiW,qBAAW,EAAID,EAAKhW,GAAIe,MAE9CuX,sBAAuB,CACrBzC,QAAS,CAAC,sBACVK,MAAO,eACP6B,QAAS,eACTlB,WAAW,GAEb0B,sBAAuB,CACrB1C,QAAS,CAAC,sBACVK,MAAO,eACP6B,QAAS,eACTlB,WAAW,GAEb2B,sBAAuB,CACrB3C,QAAS,CAAC,sBACVK,MAAO,eACP6B,QAAS,eACTlB,UAAW,YAEb4B,iBAAkB,CAChB5C,QAAS,CAAC,iBACVK,MAAO,eACP6B,QAAS,eACTlB,WAAW,GAEb6B,iBAAkB,CAChB7C,QAAS,CAAC,iBACVK,MAAO,eACP6B,QAAS,eACTlB,UAAW,YAEb8B,iBAAkB,CAChB9C,QAAS,CAAC,eAAgB,oBAC1B5V,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAGvCg6B,oBAAqB,CACnB/C,QAAS,CAAC,WACV5V,MAAO,SAAC+V,EAAKhW,GAAN,OAAaiW,qBAAW,EAAID,EAAKhW,GAAIe,MAE9C8X,6BAA8B,CAC5BhD,QAAS,CAAC,yBACVK,MAAO,sBACP6B,QAAS,sBACTlB,WAAW,GAEbiC,6BAA8B,CAC5BjD,QAAS,CAAC,yBACVK,MAAO,sBACP6B,QAAS,sBACTlB,WAAW,GAEbkC,6BAA8B,CAC5BlD,QAAS,CAAC,yBACVK,MAAO,sBACP6B,QAAS,sBACTlB,UAAW,YAEbmC,wBAAyB,CACvBnD,QAAS,CAAC,oBACVK,MAAO,sBACP6B,QAAS,sBACTlB,WAAW,GAEboC,wBAAyB,CACvBpD,QAAS,CAAC,oBACVK,MAAO,sBACP6B,QAAS,sBACTlB,UAAW,YAEbqC,wBAAyB,CACvBrD,QAAS,CAAC,sBAAuB,oBACjC5V,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAGvCu6B,UAAW,CACTtD,QAAS,CAAC,QACVK,MAAO,KACPW,UAAW,WACX5W,MAAO,SAAC+V,EAAKp3B,GAAN,OAAeq3B,qBAAW,GAAKD,EAAKp3B,GAAMmiB,MAGnDqY,SAAU,CACRvD,QAAS,CAAC,QACVK,MAAO,KACPW,UAAW,YAGbwC,cAAe,CACbxD,QAAS,CAAC,UACVK,MAAO,KACPW,UAAW,YAGbyC,OAAQ,CACNzD,QAAS,CAAC,MACV3V,QAAS,SACTD,MAAO,SAAC+V,EAAKlW,GAAN,OAAamW,qBAAW,EAAID,EAAKlW,GAAIiB,MAG9ChhB,KAAM,CACJ81B,QAAS,CAAC,SAAU,MACpB0D,SAAU,OACVtZ,MAAO,SAAC+V,EAAKI,EAAQpW,GAAd,OAAqBH,YAAWuW,EAAQ,GAAKpW,KAEtDwZ,SAAU,CACR3D,QAAS,CAAC,QACVK,MAAO,OACPW,WAAW,GAGb3Q,KAAM,CACJ2P,QAAS,CAAC,KAAM,QAChB4D,iBAAiB,EACjBxZ,MAAO,SAAC+V,EAAKhW,EAAIphB,GAAV,OAAmB0hB,YAAON,EAAIphB,KAIvC86B,OAAQ,CACN7D,QAAS,CAAC,QACVK,MAAO,KACPW,WAAW,GAEb8C,OAAQ,CACN9D,QAAS,CAAC,QACVK,MAAO,KACPW,UAAW,YAIb9B,MAAO,CACLc,QAAS,CAAC,MACV3V,QAAS,SAEX0Z,UAAW,CACT/D,QAAS,CAAC,QACVK,MAAO,QACPW,WAAW,GAEbgD,WAAY,CACVhE,QAAS,CAAC,UACVK,MAAO,QACPhW,QAAS,QACT2W,WAAW,GAEbiD,UAAW,CACTjE,QAAS,CAAC,UACVK,MAAO,QACPW,UAAW,YAIbjC,OAAQ,OACRmF,WAAY,CACVlE,QAAS,CAAC,UACVK,MAAO,SACPW,WAAW,GAEbmD,WAAY,CACVnE,QAAS,CAAC,UACVK,MAAO,SACPW,UAAW,YAIboD,IAAK,CACHpE,QAAS,CAAC,QAEZqE,QAAS,CACPrE,QAAS,CAAC,WACVK,MAAO,MACPW,WAAW,GAEbsD,cAAe,CACbtE,QAAS,CAAC,QACVK,MAAO,KACPW,WAAW,GAIb5B,IAAK,CACHY,QAAS,CAAC,MACVkC,QAAS,MACT7X,QAAS,OAEXka,QAAS,CACPvE,QAAS,CAAC,UACVK,MAAO,MACPW,WAAW,GAEbwD,aAAc,CACZxE,QAAS,CAAC,WACVK,MAAO,WACP6B,QAAS,MACTlB,WAAW,GAEbyD,cAAe,CACbzE,QAAS,CAAC,WACVK,MAAO,YACP6B,QAAS,MACTlB,WAAW,GAIb0D,WAAY,CACV1E,QAAS,CAAC,OACVK,MAAO,OAETsE,eAAgB,CACd3E,QAAS,CAAC,WACVK,MAAO,MACP6B,QAAS,aACTlB,WAAW,GAEb4D,gBAAiB,CACf5E,QAAS,CAAC,cACVK,MAAO,OAETwE,oBAAqB,CACnB7E,QAAS,CAAC,gBACVK,MAAO,WACP6B,QAAS,aACTlB,WAAW,GAEb8D,iBAAkB,CAChB9E,QAAS,CAAC,cACVK,MAAO,OAET0E,qBAAsB,CACpB/E,QAAS,CAAC,iBACVK,MAAO,YACP6B,QAAS,aACTlB,WAAW,GAIbgE,WAAY,CACVhF,QAAS,CAAC,OACVK,MAAO,MACPjW,MAAO,SAAC+V,EAAKf,GAAN,OAAcgB,qBAAiB,GAAND,EAAUf,GAAKlU,MAEjD+Z,eAAgB,CACdjF,QAAS,CAAC,WACVK,MAAO,MACP6B,QAAS,aACTlB,WAAW,GAEbkE,oBAAqB,CACnBlF,QAAS,CAAC,gBACVK,MAAO,WACP6B,QAAS,aACTlB,WAAW,GAEbmE,qBAAsB,CACpBnF,QAAS,CAAC,iBACVK,MAAO,YACP6B,QAAS,aACTlB,WAAW,GAIboE,YAAa,CACXpF,QAAS,CAAC,MAAO,MACjB5V,MAAO,SAAC+V,EAAKf,EAAKjV,GAAX,OAAkBH,YAAWoV,EAAK,IAAMjV,KAEjDkb,gBAAiB,CACfrF,QAAS,CAAC,UAAW,eACrBK,MAAO,MACP6B,QAAS,cACT9X,MAAO,SAAC+V,EAAKp3B,EAAMq2B,GAAZ,OAAoBpV,YAAWjhB,EAAM,IAAMq2B,KAEpDkG,qBAAsB,CACpBtF,QAAS,CAAC,eAAgB,eAC1BK,MAAO,WACP6B,QAAS,cACT9X,MAAO,SAAC+V,EAAKp3B,EAAMq2B,GAAZ,OAAoBpV,YAAWjhB,EAAM,IAAMq2B,KAEpDmG,sBAAuB,CACrBvF,QAAS,CAAC,gBAAiB,eAC3BK,MAAO,YACP6B,QAAS,cACT9X,MAAO,SAAC+V,EAAKp3B,EAAMq2B,GAAZ,OAAoBpV,YAAWjhB,EAAM,IAAMq2B,KAIpD/T,MAAO,CACL2U,QAAS,CAAC,MACV3V,QAAS,SAEXmb,UAAW,CACTxF,QAAS,CAAC,QACVK,MAAO,QACPW,WAAW,GAEbyE,eAAgB,CACdzF,QAAS,CAAC,aACVK,MAAO,aACP6B,QAAS,QACTlB,WAAW,GAEb0E,gBAAiB,CACf1F,QAAS,CAAC,cACVK,MAAO,cACP6B,QAAS,QACTlB,WAAW,GAGb2E,WAAY,CACV3F,QAAS,CAAC,QACV3V,QAAS,SAEXub,eAAgB,CACd5F,QAAS,CAAC,QACVK,MAAO,QACP6B,QAAS,aACTlB,WAAW,GAEb6E,oBAAqB,CACnB7F,QAAS,CAAC,aACVK,MAAO,aACP6B,QAAS,aACTlB,WAAW,GAGb8E,aAAc,CACZ9F,QAAS,CAAC,WACV3V,QAAS,SAEX0b,iBAAkB,CAChB/F,QAAS,CAAC,QACVK,MAAO,QACP6B,QAAS,eACTlB,WAAW,GAEbgF,sBAAuB,CACrBhG,QAAS,CAAC,aACVK,MAAO,aACP6B,QAAS,eACTlB,WAAW,GAGbiF,aAAc,CACZjG,QAAS,CAAC,UACV3V,QAAS,SAEX6b,iBAAkB,CAChBlG,QAAS,CAAC,QACVK,MAAO,QACP6B,QAAS,eACTlB,WAAW,GAEbmF,sBAAuB,CACrBnG,QAAS,CAAC,aACVK,MAAO,aACP6B,QAAS,eACTlB,WAAW,GAGboF,aAAc,CACZpG,QAAS,CAAC,QACV3V,QAAS,SAEXgc,iBAAkB,CAChBrG,QAAS,CAAC,QACVK,MAAO,QACP6B,QAAS,eACT9X,MAAO,SAAC+V,EAAKp3B,GAAN,OAAekiB,0BAAgBliB,GAAMmiB,KAC5C8V,WAAW,GAEbsF,sBAAuB,CACrBtG,QAAS,CAAC,aACVK,MAAO,aACP6B,QAAS,eACTlB,WAAW,GAGbuF,gBAAiB,CACfvG,QAAS,CAAC,cACV3V,QAAS,cAEXmc,oBAAqB,CACnBxG,QAAS,CAAC,kBACVK,MAAO,UACP6B,QAAS,kBACTlB,WAAW,GAGbyF,kBAAmB,CACjBzG,QAAS,CAAC,gBACV3V,QAAS,cAEXqc,sBAAuB,CACrB1G,QAAS,CAAC,oBACVK,MAAO,UACP6B,QAAS,oBACTlB,WAAW,GAGb2F,kBAAmB,CACjB3G,QAAS,CAAC,gBACV3V,QAAS,cAEXuc,sBAAuB,CACrB5G,QAAS,CAAC,oBACVK,MAAO,UACP6B,QAAS,oBACTlB,WAAW,GAGb6F,kBAAmB,CACjB7G,QAAS,CAAC,gBACV3V,QAAS,cAEXyc,sBAAuB,CACrB9G,QAAS,CAAC,oBACVK,MAAO,UACP6B,QAAS,oBACTlB,WAAW,GAGb+F,kBAAmB,SACnBC,sBAAuB,CACrBhH,QAAS,CAAC,OAAQ,qBAClBK,MAAO,QACP6B,QAAS,oBACTlB,UAAW,MAGbrB,OAAQ,CACNK,QAAS,CAAC,OAGZiH,sBAAuB,CACrBjH,QAAS,CAAC,WAGZkH,wBAAyB,CACvBlH,QAAS,CAAC,QACVK,MAAO,cACP6B,QAAS,wBACTlB,WAAW,GAGbmG,wBAAyB,CACvBnH,QAAS,CAAC,QACVK,MAAO,cACP6B,QAAS,wBACTlB,UAAW,YAGboG,0BAA2B,CACzBpH,QAAS,CAAC,UACV3V,QAAS,SACTD,MAAO,SAAC+V,EAAKsD,GAAN,OAAiBrD,qBAAW,EAAID,EAAKsD,GAAQvY,MAGtDmc,sBAAuB,CACrBrH,QAAS,CAAC,yBACV5V,MAAO,SAAC+V,EAAKP,GAAN,OAAsBQ,qBAAW,EAAID,EAAKP,GAAa1U,MAGhEoc,wBAAyB,CACvBtH,QAAS,CAAC,QACVK,MAAO,cACP6B,QAAS,wBACTlB,WAAW,GAGbuG,wBAAyB,CACvBvH,QAAS,CAAC,QACVK,MAAO,cACP6B,QAAS,wBACTlB,UAAW,YAGbwG,0BAA2B,CACzBxH,QAAS,CAAC,yBACV3V,QAAS,SACTD,MAAO,SAAC+V,EAAKsD,GAAN,OAAiBrD,qBAAW,EAAID,EAAKsD,GAAQvY,gmCC/uBjD,IAAMuc,EAAa,SAACpc,GAAU,IAC3Bqc,EAAUC,EAAetc,GAAzBqc,MACF7nC,EAAOvC,SAASuC,KAChBmO,EAAO1Q,SAAS0Q,KACtBA,EAAK45B,UAAUtR,IAAI,UAEnB,IAAMuR,EAAUvqC,SAASQ,cAAc,SACvC+B,EAAKnB,YAAYmpC,GACjB,IAAMC,EAAaD,EAAQE,MAE3BD,EAAW7e,WACX6e,EAAWE,WAAX,UAAAlgC,OAAgC4/B,EAAMO,MAAtC,MAAiD,aACjDH,EAAWE,WAAX,UAAAlgC,OAAgC4/B,EAAMQ,OAAtC,MAAkD,aAClDJ,EAAWE,WAAX,UAAAlgC,OAAgC4/B,EAAMS,QAAtC,MAAmD,aACnDL,EAAWE,WAAX,UAAAlgC,OAAgC4/B,EAAMU,MAAtC,MAAiD,aACjDp6B,EAAK45B,UAAUS,OAAO,WAGXC,EAAe,SAACjd,EAAOkd,GAClC,OAAqB,IAAjBld,EAAMlyB,OACD,OAGFkyB,EACJ/X,OAAO,SAAAC,GAAC,OAAIg1B,EAAiBh1B,EAAEi1B,MAAQj1B,IACvCvQ,IAAI,SAACylC,GAAD,MAAU,CACbA,EAAKjW,EACLiW,EAAKhW,EACLgW,EAAKC,KACLD,EAAKE,QACL3lC,IAAI,SAAAuQ,GAAC,OAAIA,EAAI,OAAMzL,OAAO,CAC1BsjB,YAAYqd,EAAKre,MAAOqe,EAAKG,OAC7BH,EAAKD,MAAQ,QAAU,KACtBzhC,KAAK,OAAMA,KAAK,OAuBV8hC,EAAiB,SAACC,GAC7B,IAAMC,EAAgBD,EAAUE,mBAE5BF,EAAUZ,QAAUY,EADpBG,EAAWH,EAAUZ,QAAUY,GAFQI,EAKfC,YAAUJ,EAAcD,EAAUze,SAAW,IAAjE6d,EALmCgB,EAKnChB,OAAQ7d,EAL2B6e,EAK3B7e,QAEV+e,EAAa9vC,OAAO8V,QAAQ84B,GAC/B1gC,OAAO,SAACC,EAAD6H,GAAiB,IAAAC,EAAA85B,IAAA/5B,EAAA,GAAVG,EAAUF,EAAA,GAAPotB,EAAOptB,EAAA,GACvB,OAAKotB,GACLl1B,EAAI6hC,MAAM75B,GAAK8Y,YAAQoU,GACvBl1B,EAAI8hC,SAAS95B,QAAoB,IAARktB,EAAEznB,EAAoBqT,YAAQoU,GAAKjS,YAASiS,GAC9Dl1B,GAHQA,GAId,CAAE8hC,SAAU,GAAID,MAAO,KAC5B,MAAO,CACL5B,MAAO,CACLQ,OAAQ5uC,OAAO8V,QAAQg6B,EAAWG,UAC/Bj2B,OAAO,SAAAd,GAAA,IAAAwT,EAAAqjB,IAAA72B,EAAA,GAAAwT,EAAA,UAAAA,EAAA,KACPhjB,IAAI,SAAAme,GAAA,IAAAO,EAAA2nB,IAAAloB,EAAA,GAAE1R,EAAFiS,EAAA,GAAKib,EAALjb,EAAA,cAAA5Z,OAAiB2H,EAAjB,MAAA3H,OAAuB60B,KAC3B51B,KAAK,MAEVyiC,MAAO,CACLtB,OAAQkB,EAAWE,MACnBjf,aAKOof,EAAgB,SAACpe,GAC5B,IAAIqe,EAAare,EAAM4c,OAAS,QAED,IAApB5c,EAAMse,YACfD,EAAapwC,OACV8V,QAAQic,GACR/X,OAAO,SAAAsN,GAAA,IAAArG,EAAA8uB,IAAAzoB,EAAA,GAAEnR,EAAF8K,EAAA,GAAAA,EAAA,UAAY9K,EAAEm6B,SAAS,YAC9BpiC,OAAO,SAACC,EAAK3M,GAA6C,OAArC2M,EAAI3M,EAAE,GAAG6L,MAAM,UAAU,IAAM7L,EAAE,GAAW2M,GAAO,KAE7E,IAAMwgC,EAAQ3uC,OAAO8V,QAAQs6B,GAAYp2B,OAAO,SAAAuH,GAAA,IAAAG,EAAAquB,IAAAxuB,EAAA,GAAAG,EAAA,UAAAA,EAAA,KAAexT,OAAO,SAACC,EAADyT,GAAiB,IAAAE,EAAAiuB,IAAAnuB,EAAA,GAAVzL,EAAU2L,EAAA,GAAPuhB,EAAOvhB,EAAA,GAErF,OADA3T,EAAIgI,GAAKktB,EACFl1B,GACN,CACD23B,IAAK,EACL/T,MAAO,EACPwe,SAAU,EACV3K,MAAO,GACP57B,OAAQ,EACRwmC,UAAW,GACXC,QAAS,EACTp8B,WAAY,EACZiyB,YAAa8J,EAAWxK,QAG1B,MAAO,CACLwI,MAAO,CACLO,MAAO3uC,OAAO8V,QAAQ64B,GAAO30B,OAAO,SAAAgI,GAAA,IAAAE,EAAA6tB,IAAA/tB,EAAA,GAAAE,EAAA,UAAAA,EAAA,KAAexY,IAAI,SAAA2Y,GAAA,IAAA8H,EAAA4lB,IAAA1tB,EAAA,GAAElM,EAAFgU,EAAA,GAAKkZ,EAALlZ,EAAA,cAAA3b,OAAiB2H,EAAjB,YAAA3H,OAA6B60B,EAA7B,QAAoC51B,KAAK,MAElGyiC,MAAO,CACLvB,WAKO+B,EAAgB,SAAC3e,GAC5B,IAAM+c,EAAQ9uC,OAAO8V,QAAQic,EAAM+c,OAAS,IAAI90B,OAAO,SAAAsQ,GAAA,IAAA9H,EAAAutB,IAAAzlB,EAAA,GAAA9H,EAAA,UAAAA,EAAA,KAAetU,OAAO,SAACC,EAADuU,GAAiB,IAAAhJ,EAAAq2B,IAAArtB,EAAA,GAAVvM,EAAUuD,EAAA,GAAP2pB,EAAO3pB,EAAA,GAK5F,OAJAvL,EAAIgI,GAAKnW,OAAO8V,QAAQutB,GAAGrpB,OAAO,SAAAgG,GAAA,IAAAa,EAAAkvB,IAAA/vB,EAAA,GAAAa,EAAA,UAAAA,EAAA,KAAe3S,OAAO,SAACC,EAAD8b,GAAiB,IAAA3K,EAAAywB,IAAA9lB,EAAA,GAAV9T,EAAUmJ,EAAA,GAAP+jB,EAAO/jB,EAAA,GAEvE,OADAnR,EAAIgI,GAAKktB,EACFl1B,GACNA,EAAIgI,IACAhI,GACN,CACDwiC,UAAW,CACTC,OAAQ,cAEV7e,MAAO,CACL6e,OAAQ,WAEVC,KAAM,CACJD,OAAQ,WAEVE,SAAU,CACRF,OAAQ,eAIZ,MAAO,CACLxC,MAAO,CACLU,MAAO9uC,OACJ8V,QAAQg5B,GACR90B,OAAO,SAAAyF,GAAA,IAAAI,EAAAkwB,IAAAtwB,EAAA,GAAAI,EAAA,UAAAA,EAAA,KACPnW,IAAI,SAAA2c,GAAA,IAAAG,EAAAupB,IAAA1pB,EAAA,GAAElQ,EAAFqQ,EAAA,GAAK6c,EAAL7c,EAAA,cAAAhY,OAAiB2H,EAAjB,UAAA3H,OAA2B60B,EAAEuN,UAAUnjC,KAAK,MAErDyiC,MAAO,CACLpB,WAKA3E,EAAS,SAACnR,EAAK+X,GAAN,MAAkB,CAC/B7X,EAAG,EACHC,EAAGH,EAAM,GAAK,EACdoW,KAAM,EACNC,OAAQ,EACRve,MAAOigB,EAAS,UAAY,UAC5BzB,MAAO,GACPJ,OAAO,IAEH8B,EAAyB,CAAC7G,GAAO,GAAM,GAAQA,GAAO,GAAO,IAC7D8G,EAAwB,CAAC9G,GAAO,GAAM,GAAOA,GAAO,GAAO,IAC3D+G,EAAY,CAChBhY,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,GAGI6B,EAAkB,CAC7BvL,MAAO,CAAC,CACN1M,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,KAET7J,OAAQ,CAAC,CACPvM,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,KAET8B,MAAO,CAAC,CACNlY,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,KAETtlC,OAAQ,CAAC,CACPkvB,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,KAET+B,aAAc,GACdC,YAAa,GACbC,OAAM,CAAG,CACPrY,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNC,OAAQ,EACRve,MAAO,UACPwe,MAAO,IANH9gC,OAOAwiC,GACNQ,YAAW,CAAGN,GAAH1iC,OAAiBwiC,GAC5BS,cAAa,CAAGP,GAAH1iC,OAAiByiC,GAC9Blf,MAAK,GAAAvjB,OAAMyiC,EAAN,CAA6B,CAChC/X,EAAG,EACHC,EAAG,EACHiW,KAAM,EACNF,OAAO,EACPG,OAAQ,EACRve,MAAO,UACPwe,MAAO,MAGEoC,EAAkB,SAAC3f,EAAO6c,GAGrC,IAAM+C,EAAkB,CACtBJ,OAAQ,MACR3L,MAAO,KACP5M,IAAK,SACLoY,MAAO,UACPpnC,OAAQ,KACRsnC,YAAa,QACbvf,MAAO,SAGH6f,EAAoB5xC,OAAO6xC,YAC/B7xC,OAAO8V,QAAQic,EAAM8c,SAAW,IAC7BnlC,IAAI,SAAAkd,GAAA,IAAAE,EAAAipB,IAAAnpB,EAAA,SAAwB,CAAxBE,EAAA,GAAAA,EAAA,GAGQpd,IAAI,SAAAooC,GAAS,OAAAhhC,EAAA,CAAOggB,MAAO,WAAcghB,SAGpDC,EAAeH,IAAsB7f,EAAM2d,mBAC7CsC,EAAYJ,EAAmB7f,EAAMhB,SACrC6gB,GAAqB,GACnB/C,EAAU7uC,OAAO8V,QAAPhF,EAAA,GACXqgC,EADW,GAEXY,IACF7jC,OAAO,SAAC+jC,EAADjrB,GAAwC,IAAAI,EAAA2oB,IAAA/oB,EAAA,GAA1BkrB,EAA0B9qB,EAAA,GAAhB+qB,EAAgB/qB,EAAA,GAC1CgrB,EAAgBF,EAASpoC,QAAQ,WAAY,IAC7CuoC,EAAgBV,EAAgBS,GAEhCvL,EADgB5W,YAAkBqiB,kBAAQ1D,EAAOyD,IAAgBzgB,KAAO,GAClD,GAAK,EAC3B2gB,EAAYJ,EAAWjkC,OAAO,SAACskC,EAAWC,GAAZ,SAAAjkC,OAAAkkC,IAC/BF,GAD+B,CAAA1hC,EAAA,GAG7B2hC,EAH6B,CAIhC3hB,MAAO7B,YAAQ0jB,YACbF,EAAI3hB,MACJ,SAAC8hB,GAAD,OAAkBN,kBAAQ1D,EAAOgE,IAAehhB,KAChDiV,SAGH,IACH,OAAA/1B,EAAA,GAAYmhC,EAAZY,IAAA,GAAyBX,EAAWK,KACnC,IAEH,MAAO,CACLnE,MAAO,CACLS,QAAS7uC,OACN8V,QAAQ+4B,GAGRnlC,IAAI,SAAAgd,GAAA,IApPeqL,EAoPfvU,EAAAuyB,IAAArpB,EAAA,GAAEvQ,EAAFqH,EAAA,GAAK6lB,EAAL7lB,EAAA,SAAY,MAAAhP,OACV2H,EADU,YAAA3H,OACEwgC,EAAa3L,IADf,KAAA70B,OAEV2H,EAFU,kBAAA3H,QApPGujB,EAsPwBsR,EArP7B,IAAjBtR,EAAMlyB,OACD,OAGFkyB,EAEJ/X,OAAO,SAACm1B,GAAD,OAAWA,EAAKD,OAAiC,IAAxB3Z,OAAO4Z,EAAKE,UAC5C3lC,IAAI,SAACylC,GAAD,MAAU,CACbA,EAAKjW,EACLiW,EAAKhW,EAELgW,EAAKC,KAAO,GACZ1lC,IAAI,SAAAuQ,GAAC,OAAIA,EAAI,OAAMzL,OAAO,CAC1BsjB,YAAYqd,EAAKre,MAAOqe,EAAKG,SAC5B7hC,KAAK,OACP/D,IAAI,SAAAuQ,GAAC,qBAAAzL,OAAmByL,EAAnB,OACLxM,KAAK,OAmOe,KAAAe,OAGV2H,EAHU,iBAAA3H,OAGOwgC,EAAa3L,GAAG,KACtC51B,KAAK,OACNA,KAAK,MAEVyiC,MAAO,CACLrB,aAKOiE,EAAgB,SAAClE,EAAQD,EAAOE,EAASC,GACpD,MAAO,CACLV,MAAKt9B,EAAA,GACA+9B,EAAQT,MADR,GAEAQ,EAAOR,MAFP,GAGAO,EAAMP,MAHN,GAIAU,EAAMV,OAEX8B,MAAKp/B,EAAA,GACA+9B,EAAQqB,MADR,GAEAtB,EAAOsB,MAFP,GAGAvB,EAAMuB,MAHN,GAIApB,EAAMoB,SAKF7B,EAAiB,SAACtc,GAC7B,IAAM6c,EAASW,EAAexd,GAC9B,OAAO+gB,EACLlE,EACAuB,EAAcpe,GACd2f,EAAgB3f,EAAO6c,EAAOsB,MAAMtB,OAAQA,EAAO/H,KACnD6J,EAAc3e,KAILghB,EAAY,WAGvB,OAAO5qC,OAAOoQ,MAAM,sBAAuB,CAAEy6B,MAF/B,aAGX3tC,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAAC4tC,GACL,OAAOjzC,OAAO8V,QAAQm9B,GAAQvpC,IAAI,SAAA0V,GAAY,IAAAwD,EAAAmtB,IAAA3wB,EAAA,GAAVjJ,EAAUyM,EAAA,GAAPygB,EAAOzgB,EAAA,GACxCrd,EAAU,KAWd,MAViB,WAAb2tC,IAAO7P,GACT99B,EAAU3D,QAAQC,QAAQwhC,GACJ,iBAANA,IAChB99B,EAAU4C,OAAOoQ,MAAM8qB,EAAG,CAAE2P,MAVtB,aAWH3tC,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SADb,MAED,SAAC7X,GAEN,OADAyG,QAAQlC,MAAMvE,GACP,QAGN,CAAC2U,EAAG5Q,OAGdF,KAAK,SAAC5D,GACL,OAAOA,EACJyM,OAAO,SAACC,EAAD2U,GAAiB,IAAAE,EAAA+sB,IAAAjtB,EAAA,GAAV3M,EAAU6M,EAAA,GAAPqgB,EAAOrgB,EAAA,GAEvB,OADA7U,EAAIgI,GAAKktB,EACFl1B,GACN,OAGEwhC,EAAa,SAACf,GACzB,OAAO5uC,OAAO8V,QAAQ84B,GAAQ1gC,OAAO,SAACC,EAAD+U,GAA4B,IAAAE,EAAA2sB,IAAA7sB,EAAA,GAArBgvB,EAAqB9uB,EAAA,GAAX0N,EAAW1N,EAAA,GAE/D,OAAQ8uB,GACN,IAAK,UACH,OAAAphC,EAAA,GAAY3C,EAAZ,CAAiBs0B,UAAW3R,IAC9B,IAAK,UACH,OAAAhgB,EAAA,GACK3C,EADL,GALiB,CAAC,GAAI,QAAS,UAQ1BD,OACC,SAACilC,EAAkBC,GAAnB,OAAAtiC,EAAA,GACQqiC,EADRN,IAAA,GAC2B,MAAQO,EAAW,OAAStiB,KACrD,KAGV,QACE,OAAAhgB,EAAA,GAAY3C,EAAZ0kC,IAAA,GAAkBX,EAAWphB,MAEhC,KAQQkhB,EAAc,SAACnD,EAAS9d,GACnC,OAAO/wB,OAAO8V,QAAQ+4B,GAAS3gC,OAAO,SAAC+jC,EAAD3uB,GAAwC,IAAAE,EAAAusB,IAAAzsB,EAAA,GAA1B4uB,EAA0B1uB,EAAA,GAAhB2uB,EAAgB3uB,EAAA,GAGtE+uB,EAAYJ,EAAWjkC,OAAO,SAACskC,EAAWC,GAAZ,SAAAjkC,OAAAkkC,IAC/BF,GAD+B,CAAA1hC,EAAA,GAG7B2hC,EAH6B,CAIhCnD,OANczqB,EAMG4tB,EANH5tB,EAAGiM,MAAkBkB,WAAW,OAC/BhN,EAKoBytB,EALjB3hB,EAAH9L,EAAG8L,MAAYC,EAAQsiB,YAAeviB,EAAMwiB,UAAU,GAAGjmC,MAAM,KAAK,MAKxC,GAAIolC,EAAInD,WALpC,IAAAtqB,EAAG8L,EADJjM,GAQf,IACH,OAAA/T,EAAA,GAAYmhC,EAAZY,IAAA,GAAyBX,EAAWK,KACnC,KAGQgB,EAAY,SAAC94B,GACxB,OAAOs4B,IACJ1tC,KAAK,SAAC4tC,GAAD,OAAYA,EAAOx4B,GAAOw4B,EAAOx4B,GAAOw4B,EAAO,kBACpD5tC,KAAK,SAAC6qC,GACL,IAAMsD,EAAO3O,MAAM4O,QAAQvD,GACrB7wC,EAAOm0C,EAAO,GAAKtD,EAAMA,MAE/B,GAAIsD,EAAM,CACR,IAAM3iB,EAAKG,YAAQkf,EAAM,IACnBvf,EAAKK,YAAQkf,EAAM,IACnBzgC,EAAOuhB,YAAQkf,EAAM,IACrBlJ,EAAOhW,YAAQkf,EAAM,IAErB7I,EAAOrW,YAAQkf,EAAM,IAAM,WAC3B5I,EAAStW,YAAQkf,EAAM,IAAM,WAC7B9I,EAAQpW,YAAQkf,EAAM,IAAM,WAC5B3I,EAAUvW,YAAQkf,EAAM,IAAM,WAEpC7wC,EAAKuvC,OAAS,CAAE/d,KAAIF,KAAIlhB,OAAMu3B,OAAMK,OAAMD,QAAOE,SAAQC,WAG3D,MAAO,CAAE2I,MAAO7wC,EAAMmM,OAAQ0kC,EAAM1kC,WAI7BkoC,EAAY,SAACj5B,GAAD,OAAS84B,EAAU94B,GAAKpV,KAAK,SAAAhG,GAAI,OAAI8uC,EAAW9uC,EAAK6wC,qGCja9EnT,IAAQC,IAAI2W,KAEZ,IAUeC,EAVK,CAClBhtC,KAAM,cACN2rB,MAAO,CAAC,SAAU,YAClBqL,SAAU,CACRyE,SADQ,WAEN,QAASztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,sBCFvC,IAEA5O,EAVA,SAAAC,GACEpyB,EAAQ,MAyBK6yC,EAVC7zC,OAAAszB,EAAA,EAAAtzB,CACd8zC,ECjBF,WAA0B,IAAAtgB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,eAA0B,CAAAL,EAAA,SAAAG,EAAA,UAA8BE,YAAA,8BAAAC,MAAA,CAAiDigB,UAAAvgB,EAAAwgB,UAAwB7f,MAAA,CAAQnjB,MAAAwiB,EAAAgM,GAAA,mBAAiChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAoH,MAAA,aAA6B,CAAAjH,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,YAAgB,GAAApD,EAAA,QAAAA,EAAA,UAA8BE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,QAAA/lB,MAAAwiB,EAAAgM,GAAA,sBAAiD,GAAAhM,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA8B,cAAA,EAAAmjB,EAAA,QAA4DE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAA8B,eAAA,UAAAgjB,EAAAuI,QAChpB,IDOA,EAaA5I,EATA,KAEA,MAYgC,mQEnBhC4J,IAAQC,IACNiX,IACAC,KAGF,IAyBeC,EAzBQ,CACrB5hB,MAAO,CAAC,SAAU,YAClBlzB,KAFqB,WAGnB,MAAO,CACL+0C,UAAU,IAGdphB,QAAS,CACPrQ,SADO,WACK,IAAAxN,EAAAP,KACLA,KAAKlG,OAAOC,UAGfiG,KAAK8d,OAAO+L,SAAS,aAAc,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAFrDkM,KAAK8d,OAAO+L,SAAS,WAAY,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAIrDkM,KAAKw/B,UAAW,EAChB9tC,WAAW,WACT6O,EAAKi/B,UAAW,GACf,OAGPxW,sWAAQ9sB,CAAA,GACH6xB,YAAW,CAAC,mBCzBnB,IAEI0R,EAVJ,SAAoBjhB,GAClBpyB,EAAQ,MAyBKszC,EAVCt0C,OAAAszB,EAAA,EAAAtzB,CACdu0C,ECjBQ,WAAgB,IAAA/gB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,kBAA6B,CAAAL,EAAA,SAAAG,EAAA,UAA8BE,YAAA,8BAAAC,MAAAN,EAAA9kB,OAAAC,WAAA,aAAAwlB,MAAA,CAA4FnjB,MAAAwiB,EAAAgM,GAAA,sBAAoChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA7Q,cAAwB,CAAAgR,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,CAAAvD,EAAA9kB,OAAAC,UAAA,oBAAA6lC,KAAAhhB,EAAA4gB,aAA2E,GAAAzgB,EAAA,QAAAA,EAAA,UAA8BE,YAAA,8BAAAM,MAAA,CAAiDnjB,MAAAwiB,EAAAgM,GAAA,qBAAAzI,KAAA,mBAA4D,GAAAvD,EAAAsI,GAAA,MAAAtI,EAAAuC,aAAA0e,eAAAjhB,EAAA9kB,OAAAG,SAAA,EAAA8kB,EAAA,QAA0FE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAAG,UAAA,UAAA2kB,EAAAuI,QAC7uB,IDOY,EAa7BsY,EATiB,KAEU,MAYG,gBEtBhCtX,IAAQC,IAAI0X,KAEZ,IA8DeC,EA9DK,CAClBpiB,MAAO,CAAC,UACRlzB,KAFkB,WAGhB,MAAO,CACLu1C,WAAY,KAGhB9hB,WAAY,CACVmE,mBAEFjE,QAAS,CACP6hB,YADO,SACMjwC,EAAOwJ,EAAOiO,GACzB,IAAMy4B,EAAmBlgC,KAAKlG,OAAOwB,gBAAgB6kC,KAAK,SAAA7tC,GAAC,OAAIA,EAAEN,OAASwH,IACtE0mC,GAAoBA,EAAiBE,GACvCpgC,KAAK8d,OAAO+L,SAAS,mBAAoB,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,GAAI0F,UAE/DwG,KAAK8d,OAAO+L,SAAS,iBAAkB,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,GAAI0F,UAE/DiO,KAEF44B,WAVO,WAUO,IAAA9/B,EAAAP,KACZA,KAAK+lB,UAAU,WACb,IAAM5I,EAAQ5c,EAAK4iB,IAAImd,cAAc,SACjCnjB,GAAOA,EAAMojB,YAIvBvX,SAAU,CACRwX,aADQ,WAEN,MAAO,CACL,CAAEC,YAAa,WAAYC,YAAa,MACxC,CAAED,YAAa,QAASC,YAAa,MACrC,CAAED,YAAa,OAAQC,YAAa,MACpC,CAAED,YAAa,MAAOC,YAAa,MACnC,CAAED,YAAa,OAAQC,YAAa,QAGxClsC,OAVQ,WAWN,GAAwB,KAApBwL,KAAKggC,WAAmB,CAC1B,IAAMW,EAAsB3gC,KAAKggC,WAAWY,cACxCC,EAAmB,GAFGC,GAAA,EAAAC,GAAA,EAAAC,OAAAvvC,EAAA,IAG1B,QAAAwvC,EAAAC,EAAoBlhC,KAAK8d,OAAOC,MAAMC,SAASxkB,MAA/CjH,OAAA4uC,cAAAL,GAAAG,EAAAC,EAAAviC,QAAAyiC,MAAAN,GAAA,EAAsD,KAA3CtnC,EAA2CynC,EAAAxuC,MACpD,GAAI+G,EAAMknC,cAAgB1gC,KAAKggC,WAAY,MAAO,CAACxmC,GAEnD,IAAM6nC,EAAoB7nC,EAAMinC,YAAYG,cAAcU,QAAQX,GAC9DU,GAAqB,IAClBpR,MAAM4O,QAAQgC,EAAiBQ,MAClCR,EAAiBQ,GAAqB,IAExCR,EAAiBQ,GAAmBl2C,KAAKqO,KAXnB,MAAApJ,GAAA2wC,GAAA,EAAAC,EAAA5wC,EAAA,YAAA0wC,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAc1B,OAAOH,EAAiBU,OAE1B,OAAOvhC,KAAK8d,OAAOC,MAAMC,SAASxkB,OAAS,IAE7C2nB,aA7BQ,WA8BN,OAAOnhB,KAAK8d,OAAO2O,QAAQtL,gBCvDjC,IAEIqgB,EAVJ,SAAoBhjB,GAClBpyB,EAAQ,MAyBKq1C,EAVCr2C,OAAAszB,EAAA,EAAAtzB,CACds2C,ECjBQ,WAAgB,IAAA9iB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,YAAA,cAAAM,MAAA,CAAiC+C,QAAA,QAAAC,UAAA,MAAAnK,OAAA,CAA8CmM,EAAA,GAAOsH,WAAA,CAAavH,EAAA,aAAiBwH,iBAAA,IAAqBlF,GAAA,CAAKmD,KAAAnL,EAAAyhB,YAAsBsB,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,UAAA8uC,GAAA,SAAA9a,GACxS,IAAAtf,EAAAsf,EAAAtf,MACA,OAAAsX,EAAA,SAAkB,CAAAA,EAAA,OAAYE,YAAA,0BAAqC,CAAAF,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,WAAAgR,WAAA,eAA8ErQ,MAAA,CAASiQ,KAAA,IAAAsS,YAAAljB,EAAAgM,GAAA,uBAAsD0E,SAAA,CAAW78B,MAAAmsB,EAAA,YAAyBgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAAohB,WAAAhY,EAAA93B,OAAAuC,aAAqCmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,mBAA8B,CAAAL,EAAAmjB,GAAAnjB,EAAA,sBAAAplB,GAA4C,OAAAulB,EAAA,QAAkBhsB,IAAAyG,EAAAknC,YAAAzhB,YAAA,eAAAM,MAAA,CAAwDnjB,MAAA5C,EAAAinC,aAA0B7Z,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqhB,YAAAjY,EAAAxuB,EAAAknC,YAAAj5B,MAA2D,CAAAmX,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAAnxB,EAAAknC,aAAA,gBAA8D9hB,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,4BAAsCL,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,gBAAAplB,EAAAzG,GAAsD,OAAAgsB,EAAA,QAAkBhsB,MAAAksB,YAAA,eAAAM,MAAA,CAA0CnjB,MAAA5C,EAAAinC,aAA0B7Z,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqhB,YAAAjY,EAAAxuB,EAAAknC,YAAAj5B,MAA2D,CAAAmX,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAAnxB,EAAAknC,aAAA,gBAA8D9hB,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,2BAAoC,UAAY,CAAAL,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBE,YAAA,kBAAAM,MAAA,CAAqCmL,KAAA,UAAAtuB,MAAAwiB,EAAAgM,GAAA,0BAAyDF,KAAA,WAAgB,CAAA3L,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,yBAA8B,MACl1C,IDKY,EAa7Bqf,EATiB,KAEU,MAYG,QEvBhCrZ,IAAQC,IAAI4Z,KAEZ,IA2BeC,EA3BO,CACpBtkB,MAAO,CAAC,SAAU,WAAY,cAC9BlzB,KAFoB,WAGlB,MAAO,CACL+0C,UAAU,IAGdphB,QAAS,CACPjQ,QADO,WACI,IAAA5N,EAAAP,KACJA,KAAKlG,OAAOK,SAGf6F,KAAK8d,OAAO+L,SAAS,YAAa,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAFpDkM,KAAK8d,OAAO+L,SAAS,UAAW,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAIpDkM,KAAKw/B,UAAW,EAChB9tC,WAAW,WACT6O,EAAKi/B,UAAW,GACf,OAGPxW,SAAU,CACR7H,aADQ,WAEN,OAAOnhB,KAAK8d,OAAO2O,QAAQtL,gBCnBjC,IAEI+gB,EAVJ,SAAoB1jB,GAClBpyB,EAAQ,MAyBK+1C,EAVC/2C,OAAAszB,EAAA,EAAAtzB,CACdg3C,ECjBQ,WAAgB,IAAAxjB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,iBAA4B,aAAAL,EAAAhiB,YAAA,WAAAgiB,EAAAhiB,YAAAgiB,EAAA6O,SAAA1O,EAAA,UAA6FE,YAAA,8BAAAC,MAAAN,EAAA9kB,OAAAK,UAAA,YAAAolB,MAAA,CAA0FnjB,MAAAwiB,EAAAgM,GAAA,oBAAkChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAzQ,aAAuB,CAAA4Q,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,UAAAyd,KAAAhhB,EAAA4gB,aAAsC,GAAA5gB,EAAA,SAAAG,EAAA,QAAAA,EAAA,UAA6CE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,OAAA/lB,MAAAwiB,EAAAgM,GAAA,gCAA0D,GAAA7L,EAAA,QAAAA,EAAA,UAA8BE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,UAAA/lB,MAAAwiB,EAAAgM,GAAA,uBAAoD,GAAAhM,EAAAsI,GAAA,MAAAtI,EAAAuC,aAAA0e,eAAAjhB,EAAA9kB,OAAAO,WAAA,EAAA0kB,EAAA,QAA4FE,YAAA,YAAuB,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAAO,YAAA,UAAAukB,EAAAuI,QAC74B,IDOY,EAa7B+a,EATiB,KAEU,MAYG,QEXhC/Z,IAAQC,IACNia,IACAC,IACAC,IACAC,IACAC,KACAC,IACAvW,IACAwW,KAGF,IAuEeC,EAvEM,CACnBjlB,MAAO,CAAE,UACTO,WAAY,CAAEmE,mBACdjE,QAAS,CACPpO,aADO,WAEazc,OAAOsvC,QAAQ7iC,KAAK4qB,GAAG,2BAEvC5qB,KAAK8d,OAAO+L,SAAS,eAAgB,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,MAG3DgvC,UAPO,WAOM,IAAAviC,EAAAP,KACXA,KAAK8d,OAAO+L,SAAS,YAAa7pB,KAAKlG,OAAOhG,IAC3CrD,KAAK,kBAAM8P,EAAKylB,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAImQ,EAAKylB,MAAM,UAAW51B,EAAIe,MAAMA,UAElD4xC,YAZO,WAYQ,IAAApZ,EAAA3pB,KACbA,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKlG,OAAOhG,IAC7CrD,KAAK,kBAAMk5B,EAAK3D,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAIu5B,EAAK3D,MAAM,UAAW51B,EAAIe,MAAMA,UAElD8b,iBAjBO,WAiBa,IAAA+c,EAAAhqB,KAClBA,KAAK8d,OAAO+L,SAAS,mBAAoB7pB,KAAKlG,OAAOhG,IAClDrD,KAAK,kBAAMu5B,EAAKhE,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAI45B,EAAKhE,MAAM,UAAW51B,EAAIe,MAAMA,UAElDgc,mBAtBO,WAsBe,IAAA61B,EAAAhjC,KACpBA,KAAK8d,OAAO+L,SAAS,qBAAsB7pB,KAAKlG,OAAOhG,IACpDrD,KAAK,kBAAMuyC,EAAKhd,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAI4yC,EAAKhd,MAAM,UAAW51B,EAAIe,MAAMA,UAElD8xC,SA3BO,WA2BK,IAAAC,EAAAljC,KACVmjC,UAAUC,UAAUC,UAAUrjC,KAAKsjC,YAChC7yC,KAAK,kBAAMyyC,EAAKld,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAI8yC,EAAKld,MAAM,UAAW51B,EAAIe,MAAMA,UAElDod,eAhCO,WAgCW,IAAAg1B,EAAAvjC,KAChBA,KAAK8d,OAAO+L,SAAS,WAAY,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAChDrD,KAAK,kBAAM8yC,EAAKvd,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAImzC,EAAKvd,MAAM,UAAW51B,EAAIe,MAAMA,UAElDsd,iBArCO,WAqCa,IAAA+0B,EAAAxjC,KAClBA,KAAK8d,OAAO+L,SAAS,aAAc,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,KAClDrD,KAAK,kBAAM+yC,EAAKxd,MAAM,eADzB,MAES,SAAA51B,GAAG,OAAIozC,EAAKxd,MAAM,UAAW51B,EAAIe,MAAMA,UAElDsyC,aA1CO,WA2CLzjC,KAAK8d,OAAO+L,SAAS,yBAA0B,CAAE1gB,OAAQnJ,KAAKlG,OAAOgD,KAAKhJ,GAAI0jB,UAAW,CAACxX,KAAKlG,OAAOhG,QAG1Gk1B,SAAU,CACRmE,YADQ,WACS,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAChDuW,UAFQ,WAGN,GAAK1jC,KAAKmtB,YAEV,OADkBntB,KAAKmtB,YAAY72B,OAAOC,WAAayJ,KAAKmtB,YAAY72B,OAAOG,OAC3DuJ,KAAKlG,OAAOgD,KAAKhJ,KAAOkM,KAAKmtB,YAAYr5B,IAE/D6vC,UAPQ,WAQN,OAAO3jC,KAAKlG,OAAOgD,KAAKhJ,KAAOkM,KAAKmtB,YAAYr5B,IAElD8vC,OAVQ,WAWN,OAAO5jC,KAAK2jC,YAAyC,WAA3B3jC,KAAKlG,OAAO8C,YAAsD,aAA3BoD,KAAKlG,OAAO8C,aAE/EinC,QAbQ,WAcN,QAAS7jC,KAAKmtB,aAEhBmW,WAhBQ,WAiBN,SAAA1pC,OAAUoG,KAAK8d,OAAOC,MAAMC,SAASC,QAArCrkB,OAA8CoG,KAAKsrB,QAAQr+B,QAAQ,CAAE+E,KAAM,eAAgBgS,OAAQ,CAAElQ,GAAIkM,KAAKlG,OAAOhG,MAAQ3G,SCpFnI,IAEI22C,EAVJ,SAAoBtlB,GAClBpyB,EAAQ,MAyBK23C,EAVC34C,OAAAszB,EAAA,EAAAtzB,CACd44C,ECjBQ,WAAgB,IAAAplB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,YAAA,eAAAM,MAAA,CAAkC+C,QAAA,QAAAC,UAAA,MAAAnK,OAAA,CAA8CmM,EAAA,GAAOsH,WAAA,CAAavH,EAAA,aAAiBwH,iBAAA,IAAqB6V,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,UAAA8uC,GAAA,SAAA9a,GAC9Q,IAAAtf,EAAAsf,EAAAtf,MACA,OAAAsX,EAAA,SAAkB,CAAAA,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAilB,UAAAjlB,EAAA9kB,OAAAuB,aAAA0jB,EAAA,UAAyDE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA3R,iBAAA+a,MAAsC,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,eAAqCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAilB,SAAAjlB,EAAA9kB,OAAAuB,aAAA0jB,EAAA,UAAiJE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAzR,mBAAA6a,MAAwC,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,eAAqCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAA9kB,OAAAuC,QAAAuiB,EAAAglB,OAAA7kB,EAAA,UAA6IE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAkkB,UAAA9a,IAA6BvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,eAAqCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAAuC,QAAAuiB,EAAAglB,OAAA7kB,EAAA,UAA4HE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAmkB,YAAA/a,IAA+BvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,eAAqCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wBAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAAS,WAAuVqkB,EAAAuI,KAAvVpI,EAAA,UAAqHE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAArQ,eAAAyZ,IAAkCvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,sBAA6CpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA,WAAAilB,EAAA,UAAuHE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAnQ,iBAAAuZ,IAAoCvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,cAAoCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,UAAAG,EAAA,UAAiHE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA5O,aAAAgY,IAAgCvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,WAAiCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yBAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAA6FE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAqkB,SAAAjb,IAA4BvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,eAAqCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4BAAAhM,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA5C,SAAoT0nB,EAAAuI,KAApTpI,EAAA,KAAyGE,YAAA,kDAAAM,MAAA,CAAqEnjB,MAAA,SAAAjP,KAAAyxB,EAAA9kB,OAAAiC,aAAA7L,OAAA,WAAmE,CAAA6uB,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,uBAA6CpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAsGE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,UAAAgB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA6kB,aAAAzb,IAAgCvgB,KAAS,CAAAsX,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,kBAAyCpD,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAsE,CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBE,YAAA,kBAAAM,MAAA,CAAqCmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,iBAAqB,MAC/9G,IDKY,EAa7B2hB,EATiB,KAEU,MAYG,0EEtBhC3b,IAAQC,IACN8b,KAGF,IAkCeC,EAlCO,CACpBnyC,KAAM,gBACN2rB,MAAO,CACL,YAEFlzB,KALoB,WAMlB,MAAO,CACL0G,OAAO,IAGX63B,SAAU,CACRlvB,OADQ,WAEN,OAAOsqC,IAAKpkC,KAAK8d,OAAOC,MAAMzF,SAAS+rB,YAAa,CAAEvwC,GAAIkM,KAAKskC,aAGnEpmB,WAAY,CACVqmB,OAAQ,kBAAMv3C,QAAAC,UAAAwD,KAAArE,EAAA4G,KAAA,WACdqvB,QAAS,kBAAMr1B,QAAAC,UAAAwD,KAAArE,EAAA4G,KAAA,YAEjBorB,QAAS,CACPomB,MADO,WACE,IAAAjkC,EAAAP,KACP,IAAKA,KAAKlG,OAAQ,CAChB,IAAKkG,KAAKskC,SAER,YADAtkC,KAAK7O,OAAQ,GAGf6O,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKskC,UACtC7zC,KAAK,SAAAhG,GAAI,OAAK8V,EAAKpP,OAAQ,IAD9B,MAES,SAAAvE,GAAC,OAAK2T,EAAKpP,OAAQ,QC5BpC,IAEIszC,EAVJ,SAAoBjmB,GAClBpyB,EAAQ,MAyBKs4C,EAVCt5C,OAAAszB,EAAA,EAAAtzB,CACdu5C,ECjBQ,WAAgB,IAAA/lB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBQ,MAAA,CAAO+C,QAAA,QAAAsiB,gBAAA,iCAAA/Y,WAAA,CAA+EvH,EAAA,cAAkBsC,GAAA,CAAKmD,KAAAnL,EAAA4lB,QAAkB,CAAAzlB,EAAA,YAAiB2L,KAAA,WAAe,CAAA9L,EAAAqI,GAAA,eAAArI,EAAAsI,GAAA,KAAAnI,EAAA,OAA8CQ,MAAA,CAAOmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA9L,EAAA,OAAAG,EAAA,UAA4BQ,MAAA,CAAOslB,cAAA,EAAAC,UAAAlmB,EAAA9kB,OAAAslB,SAAA,KAAyDR,EAAA,MAAAG,EAAA,OAAwBE,YAAA,mCAA8C,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAA7L,EAAA,OAAsFE,YAAA,6BAAwC,CAAAF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,SAA6C,YACnrB,IDOY,EAa7BiV,EATiB,KAEU,MAYG,QEvBhCtc,IAAQC,IACN8b,KAGF,IAgBea,EAhBS,CACtB/yC,KAAM,kBACN2rB,MAAO,CACL,SAEFO,WAAY,CACVmE,QAAS,kBAAMr1B,QAAAC,UAAAwD,KAAArE,EAAA4G,KAAA,WACf0qB,WAAY,kBAAM1wB,QAAAC,UAAAwD,KAAArE,EAAA4G,KAAA,YAEpBg2B,SAAU,CACRgc,YADQ,WAEN,OAAOhlC,KAAKsL,MAAM7X,MAAM,EAAG,OCVjC,IAEIwxC,EAVJ,SAAoBzmB,GAClBpyB,EAAQ,MAyBK84C,EAVC95C,OAAAszB,EAAA,EAAAtzB,CACd+5C,ECjBQ,WAAgB,IAAAvmB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBQ,MAAA,CAAO+C,QAAA,QAAAC,UAAA,MAAAnK,OAAA,CAA8CmM,EAAA,KAAS,CAAAxF,EAAA,YAAiB2L,KAAA,WAAe,CAAA9L,EAAAqI,GAAA,eAAArI,EAAAsI,GAAA,KAAAnI,EAAA,OAA8CE,YAAA,oBAAAM,MAAA,CAAuCmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA9L,EAAAtT,MAAA,OAAAyT,EAAA,MAAAH,EAAAmjB,GAAAnjB,EAAA,qBAAA9hB,GAAsE,OAAAiiB,EAAA,OAAiBhsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,iBAAwC,CAAAF,EAAA,cAAmBE,YAAA,eAAAM,MAAA,CAAkCziB,OAAAsiB,SAAA,KAA4BR,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,mBAA8B,CAAAF,EAAA,QAAauQ,SAAA,CAAUC,UAAA3Q,EAAA+L,GAAA7tB,EAAAzI,cAAoCuqB,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBE,YAAA,yBAAoC,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA7tB,EAAAvE,sBAAA,KAA8C,GAAAwmB,EAAA,OAAAA,EAAA,UAA4BQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,SAA6C,UAC3yB,IDOY,EAa7ByV,EATiB,KAEU,MAYG,QE0CjBG,EA/DQ,CACrBpzC,KAAM,iBACNksB,WAAY,CACVR,qBACAqnB,mBAEFpnB,MAAO,CAAC,UACRlzB,KAAM,iBAAO,CACX46C,SAAS,IAEXrc,SAAU,CACRsc,iBADQ,WAEN,OAAOtlC,KAAKlG,OAAOwB,gBAAgBrQ,OAdL,IAgBhCq1B,eAJQ,WAKN,OAAOtgB,KAAKqlC,QACRrlC,KAAKlG,OAAOwB,gBACZ0E,KAAKlG,OAAOwB,gBAAgB7H,MAAM,EAnBR,KAqBhC8xC,eATQ,WAUN,UAAA3rC,OAAWoG,KAAKlG,OAAOwB,gBAAgBrQ,OAtBT,KAwBhCu6C,iBAZQ,WAaN,OAAOxlC,KAAKlG,OAAOwB,gBAAgBhC,OAAO,SAACC,EAAKksC,GAE9C,OADAlsC,EAAIksC,EAASzzC,MAAQyzC,EAASxuB,UAAY,GACnC1d,GACN,KAELk0B,SAlBQ,WAmBN,QAASztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,cAGrC/O,QAAS,CACPsnB,cADO,WAEL1lC,KAAKqlC,SAAWrlC,KAAKqlC,SAEvBM,YAJO,SAIMnsC,GACX,OAAOwG,KAAKlG,OAAOwB,gBAAgB6kC,KAAK,SAAA7tC,GAAC,OAAIA,EAAEN,OAASwH,IAAO4mC,IAEjEwF,+BAPO,WAQiB5lC,KAAKlG,OAAOwB,gBAAgB6kC,KAAK,SAAA7tC,GAAC,OAAKA,EAAE2kB,YAE7DjX,KAAK8d,OAAO+L,SAAS,wBAAyB7pB,KAAKlG,OAAOhG,KAG9D+xC,UAbO,SAaIrsC,GACTwG,KAAK8d,OAAO+L,SAAS,iBAAkB,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,GAAI0F,WAE/DssC,QAhBO,SAgBEtsC,GACPwG,KAAK8d,OAAO+L,SAAS,mBAAoB,CAAE/1B,GAAIkM,KAAKlG,OAAOhG,GAAI0F,WAEjEusC,aAnBO,SAmBOvsC,EAAOxJ,GACdgQ,KAAKytB,WAENztB,KAAK2lC,YAAYnsC,GACnBwG,KAAK8lC,QAAQtsC,GAEbwG,KAAK6lC,UAAUrsC,OCtDvB,IAEIwsC,EAVJ,SAAoBxnB,GAClBpyB,EAAQ,MAyBK65C,EAVC76C,OAAAszB,EAAA,EAAAtzB,CACdkQ,ECjBQ,WAAgB,IAAAsjB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,mBAA8B,CAAAL,EAAAmjB,GAAAnjB,EAAA,wBAAA6mB,GAAiD,OAAA1mB,EAAA,mBAA6BhsB,IAAA0yC,EAAAzzC,KAAAutB,MAAA,CAAyBjU,MAAAsT,EAAA4mB,iBAAAC,EAAAzzC,QAA6C,CAAA+sB,EAAA,UAAeE,YAAA,oCAAAC,MAAA,CAAuDgnB,kBAAAtnB,EAAA+mB,YAAAF,EAAAzzC,MAAAm0C,iBAAAvnB,EAAA6O,UAAoF7G,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAmnB,aAAAN,EAAAzzC,KAAAg2B,IAA+CnB,WAAA,SAAAmB,GAA+B,OAAApJ,EAAAgnB,oCAA8C,CAAA7mB,EAAA,QAAaE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA8a,EAAAzzC,SAAA4sB,EAAAsI,GAAA,KAAAnI,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA8a,EAAAW,gBAA8FxnB,EAAAsI,GAAA,KAAAtI,EAAA,iBAAAG,EAAA,KAA6CE,YAAA,8BAAAM,MAAA,CAAiDpyB,KAAA,sBAA4By5B,GAAA,CAAKI,MAAApI,EAAA8mB,gBAA2B,CAAA9mB,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAymB,QAAAzmB,EAAAgM,GAAA,qBAAAhM,EAAA2mB,gBAAA,UAAA3mB,EAAAuI,MAAA,IAC/1B,IDOY,EAa7B6e,EATiB,KAEU,MAYG,iCEWhC7d,IAAQC,IACNie,IACAC,IACAC,IACAC,IACAC,KACAzE,IACAjD,IACA2H,IACArH,IACAS,IACAuC,IACAG,IACAmE,IACAlE,MAGF,IAoSe8B,EApSA,CACbvyC,KAAM,SACNksB,WAAY,CACV8gB,cACAO,iBACAQ,cACAkC,gBACAW,eACAgE,mBACAC,aACAnpB,qBACAopB,eACAC,YACA5C,gBACAY,kBACAK,iBACA4B,mBAEFrpB,MAAO,CACL,YACA,aACA,iBACA,UACA,YACA,UACA,UACA,YACA,YACA,iBACA,aACA,YACA,iBAEFlzB,KAjCa,WAkCX,MAAO,CACL20C,UAAU,EACV6H,SAAS,EACTC,cAAc,EACdC,aAAc,GACdC,aAAa,EACbj2C,MAAO,OAGX63B,SAAU,CACR5H,UADQ,WAEN,OAAOphB,KAAKmhB,aAAaC,WAE3BimB,sBAJQ,WAKN,OACErnC,KAAKlG,OAAOuB,cACT2E,KAAKlG,OAAOU,QAAUwF,KAAKlG,OAAOU,OAAOa,gBACxC2E,KAAKsnC,gBAEbC,cAVQ,WAWN,IAAMzqC,EAAOkD,KAAK8kC,UAAUhoC,KAC5B,OAAO0qC,YAAe1qC,IAExB2qC,UAdQ,WAeN,IAAM3qC,EAAOkD,KAAKmO,QAAWnO,KAAK8kC,UAAUjpC,iBAAiBiB,KAAQkD,KAAK8kC,UAAUhoC,KACpF,OAAO0qC,YAAe1qC,IAExB4qC,QAlBQ,WAmBN,OAAO1nC,KAAK8kC,UAAU4C,SAExBC,cArBQ,WAsBN,IAAM7qC,EAAOkD,KAAK8kC,UAAUhoC,KACtB+wB,EAAY7tB,KAAKmhB,aAAa0M,UACpC,OAAO+Z,YAAe/Z,EAAU/wB,EAAK9I,eAEvC6zC,UA1BQ,WA2BN,IAAI7nC,KAAK8nC,UAAT,CACA,IAAMhrC,EAAOkD,KAAKmO,QAAWnO,KAAK8kC,UAAUjpC,iBAAiBiB,KAAQkD,KAAK8kC,UAAUhoC,KAC9E+wB,EAAY7tB,KAAKmhB,aAAa0M,UACpC,OAAO+Z,YAAe/Z,EAAU/wB,EAAK9I,gBAEvC66B,gBAhCQ,WAiCN,OAAO7uB,KAAK+nC,wBAAwB/nC,KAAKlG,OAAOgD,KAAKhJ,GAAIkM,KAAKlG,OAAOgD,KAAK9I,cAE5Eg0C,iBAnCQ,WAoCN,GAAIhoC,KAAKioC,QACP,OAAOjoC,KAAK+nC,wBAAwB/nC,KAAKlG,OAAO4B,oBAAqBsE,KAAKkoC,cAG9E/5B,QAxCQ,WAwCK,QAASnO,KAAK8kC,UAAUjpC,kBACrCssC,UAzCQ,WAyCO,OAAOnoC,KAAK8kC,UAAUhoC,KAAK9K,MAAQgO,KAAK8kC,UAAUhoC,KAAKvE,gBACtE6vC,cA1CQ,WA0CW,OAAOpoC,KAAK8kC,UAAUhoC,KAAKzI,WAC9Cg0C,qBA3CQ,WA2CkB,OAAOroC,KAAK+nC,wBAAwB/nC,KAAK8kC,UAAUhoC,KAAKhJ,GAAIkM,KAAK8kC,UAAUhoC,KAAK9I,cAC1G8F,OA5CQ,WA6CN,OAAIkG,KAAKmO,QACAnO,KAAK8kC,UAAUjpC,iBAEfmE,KAAK8kC,WAGhBwD,2BAnDQ,WAqDN,OAAOtoC,KAAK8d,OAAOC,MAAMzF,SAASiwB,kBAAkBvoC,KAAKlG,OAAOhG,KAElE25B,SAvDQ,WAwDN,QAASztB,KAAKmtB,aAEhBlM,aA1DQ,WA2DN,OAAOA,YAAajhB,KAAKlG,OAAQkG,KAAKohB,YAExC9pB,MA7DQ,WA8DN,GAAI0I,KAAK8kC,UAAUhoC,KAAKhJ,KAAOkM,KAAKmtB,YAAYr5B,GAAI,OAAO,EADpD,IAECgG,EAAWkG,KAAXlG,OACAU,EAAWV,EAAXU,OACF5E,EAAeoK,KAAK8d,OAAO2O,QAAQ72B,aAAakE,EAAOgD,KAAKhJ,IAC5D00C,EAAqBhuC,GAAUwF,KAAK8d,OAAO2O,QAAQ72B,aAAa4E,EAAOsC,KAAKhJ,IAC5E20C,EAEJ3uC,EAAOxC,OAENkD,GAAUA,EAAOlD,OAElB1B,EAAayB,QAEZmxC,GAAsBA,EAAmBnxC,QAE1CyC,EAAOuB,cAEP2E,KAAKihB,aAAah2B,OAAS,EAEvBy9C,GAEF1oC,KAAK2oC,aAEDnuC,GAAUV,EAAOgD,KAAKhJ,KAAOkM,KAAK4oC,eAEnCpuC,GAAUA,EAAOsC,KAAKhJ,KAAOkM,KAAK4oC,gBAItC5oC,KAAKsnC,gBAAkBxtC,EAAOuB,gBAE3B2E,KAAKihB,aAAah2B,OAAS,EAEjC,OAAQ+U,KAAKinC,UAAYyB,GAAoBD,GAE/CI,qBAjGQ,WAkGN,OAAO7oC,KAAKmhB,aAAa0nB,sBAE3BC,WApGQ,WAqGN,OAAQ9oC,KAAK1I,OAAS0I,KAAK6oC,sBAAyB7oC,KAAK+oC,eAE3DC,UAvGQ,WAyGN,QAAIhpC,KAAKipC,WAEGjpC,KAAKsnC,gBAIVtnC,KAAKlG,OAAOhG,KAAOkM,KAAK6tB,WAEjCoa,QAjHQ,WAkHN,SAAUjoC,KAAKlG,OAAO0B,wBAAyBwE,KAAKlG,OAAO4B,sBAE7DwsC,YApHQ,WAqHN,GAAIloC,KAAKlG,OAAOqB,wBACd,OAAO6E,KAAKlG,OAAOqB,wBAEnB,IAAM2B,EAAOkD,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAKlG,OAAO4B,qBACtD,OAAOoB,GAAQA,EAAKvE,gBAGxB2wC,aA5HQ,WA6HN,IAAKlpC,KAAKlG,OAAOgB,QAAS,MAAO,GACjC,IAAMquC,EAAiBC,IAASppC,KAAKlG,OAAOgB,SACtCuuC,EAAWrpC,KAAKmhB,aAAamoB,oBAC7BC,EAAeJ,EAAe3sC,MAAM,YAC1C,MAAkB,SAAb6sC,GAAuBE,GAA8B,UAAbF,EACpCF,EACe,UAAbE,EACF,OAAOzvC,OAAOuvC,GACC,SAAbE,EACF,QADF,GAITG,4BAzIQ,WA2IN,IAAMC,EAAgB,GAAG7vC,OACvBoG,KAAKsoC,2BAA2BjrC,YAChC2C,KAAKsoC,2BAA2BhrC,aAElC,OAAOosC,IAAOD,EAAe,OAE/BvxC,KAjJQ,WAkJN,OAAO8H,KAAKlG,OAAO5B,KAAKkN,OAAO,SAAAukC,GAAM,OAAIA,EAAOr+C,eAAe,UAASwJ,IAAI,SAAA60C,GAAM,OAAIA,EAAO33C,OAAM6G,KAAK,MAE1GgnC,cApJQ,WAqJN,OAAO7/B,KAAKmhB,aAAa0e,eAE3B1S,YAvJQ,WAwJN,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjC7N,aA1JQ,WA2JN,OAAOtf,KAAK8d,OAAOC,MAAZ,UAA4BuO,eAAeC,WAEpDpL,aA7JQ,WA8JN,OAAOnhB,KAAK8d,OAAO2O,QAAQtL,cAE7ByoB,cAhKQ,WAiKN,OAAQ5pC,KAAKo/B,UAAyC,IAA7Bp/B,KAAKmnC,aAAal8C,SAG/CmzB,QAAS,CACPyrB,eADO,SACSjtC,GACd,OAAQA,GACN,IAAK,UACH,MAAO,OACT,IAAK,WACH,MAAO,YACT,IAAK,SACH,MAAO,WACT,QACE,MAAO,UAGbktC,UAbO,SAaI34C,GACT6O,KAAK7O,MAAQA,GAEf44C,WAhBO,WAiBL/pC,KAAK7O,WAAQM,GAEfu4C,eAnBO,WAoBLhqC,KAAKo/B,UAAYp/B,KAAKo/B,UAExB6K,aAtBO,SAsBOn2C,GACRkM,KAAKsnC,gBACPtnC,KAAKgmB,MAAM,OAAQlyB,IAGvBo2C,eA3BO,WA4BLlqC,KAAKgmB,MAAM,mBAEbmkB,WA9BO,WA+BLnqC,KAAKinC,SAAWjnC,KAAKinC,SAEvBmD,mBAjCO,WAkCLpqC,KAAKknC,cAAgBlnC,KAAKknC,cAE5Ba,wBApCO,SAoCkBj0C,EAAI9B,GAC3B,OAAOsrB,YAAoBxpB,EAAI9B,EAAMgO,KAAK8d,OAAOC,MAAMC,SAAST,sBAElE8sB,gBAvCO,SAuCUv2C,GACfkM,KAAKmnC,aAAah8C,KAAK2I,IAEzBw2C,mBA1CO,SA0Cax2C,GAClBkM,KAAKmnC,aAAennC,KAAKmnC,aAAa/hC,OAAO,SAAA0U,GAAO,OAAIA,IAAYhmB,MAGxEy2C,MAAO,CACL1c,UAAa,SAAU/5B,GACrB,GAAIkM,KAAKlG,OAAOhG,KAAOA,EAAI,CACzB,IAAI02C,EAAOxqC,KAAKmjB,IAAIG,wBAChBknB,EAAKpmB,IAAM,IAEb7wB,OAAOk3C,SAAS,EAAGD,EAAKpmB,IAAM,KACrBomB,EAAKvnB,QAAW1vB,OAAOuxB,YAAc,GAE9CvxB,OAAOk3C,SAAS,EAAGD,EAAKpmB,IAAM,KACrBomB,EAAK3lB,OAAStxB,OAAOuxB,YAAc,IAE5CvxB,OAAOk3C,SAAS,EAAGD,EAAK3lB,OAAStxB,OAAOuxB,YAAc,MAI5D4lB,oBAAqB,SAAUC,GAEzB3qC,KAAKgpC,WAAahpC,KAAKsoC,2BAA2BhrC,aAAe0C,KAAKsoC,2BAA2BhrC,YAAYrS,SAAW0/C,GAC1H3qC,KAAK8d,OAAO+L,SAAS,eAAgB7pB,KAAKlG,OAAOhG,KAGrD82C,kBAAmB,SAAUD,GAEvB3qC,KAAKgpC,WAAahpC,KAAKsoC,2BAA2BjrC,aAAe2C,KAAKsoC,2BAA2BjrC,YAAYpS,SAAW0/C,GAC1H3qC,KAAK8d,OAAO+L,SAAS,YAAa7pB,KAAKlG,OAAOhG,KAGlD81C,cAAiB,SAAU/jC,GACzB7F,KAAKonC,YAAcvhC,IAGvBglC,QAAS,CACPC,WAAY,SAAUC,GACpB,OAAOA,EAAIC,OAAO,GAAGC,cAAgBF,EAAIt3C,MAAM,MC7UrD,IAEIy3C,EAVJ,SAAoB1sB,GAClBpyB,EAAQ,MAeN++C,EAAY//C,OAAAszB,EAAA,EAAAtzB,CACdggD,ECjBQ,WAAgB,IAAAxsB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAkqB,WAA2xUlqB,EAAAuI,KAA3xUpI,EAAA,OAAmCE,YAAA,SAAAC,MAAA,EAA6BmsB,WAAAzsB,EAAAoqB,WAA4B,CAAGsC,gBAAA1sB,EAAA2sB,kBAAwC,CAAA3sB,EAAA,MAAAG,EAAA,OAAwBE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAztB,OAAA,YAAA4tB,EAAA,QAA6DE,YAAA,8BAAA2H,GAAA,CAA8CI,MAAApI,EAAAmrB,aAAwB,CAAAhrB,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,KAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAtnB,QAAAsnB,EAAA4sB,UAAA,CAAAzsB,EAAA,OAAsEE,YAAA,0BAAqC,CAAAF,EAAA,SAAcE,YAAA,mBAA8B,CAAAL,EAAAtnB,OAAAsnB,EAAAzQ,QAAA4Q,EAAA,UAA0CE,YAAA,0CAAAM,MAAA,CAA6D4C,KAAA,aAAkBvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,eAAyCQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,kBAA0B,CAAAjQ,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAAgD,KAAAvE,gBAAA,sBAAAqmB,EAAAsI,GAAA,KAAAtI,EAAA,sBAAAG,EAAA,SAA2IE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAyoB,uBAAAzoB,EAAAqC,aAAAh2B,OAAA,EAAA8zB,EAAA,SAA0KE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,SAAyHE,YAAA,aAAAM,MAAA,CAAgCnjB,MAAAwiB,EAAAqC,aAAApoB,KAAA,QAAqC,CAAA+lB,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAqC,aAAApoB,KAAA,uBAAA+lB,EAAAsI,GAAA,KAAAnI,EAAA,UAAqGE,YAAA,yBAAA2H,GAAA,CAAyCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAurB,WAAAniB,MAAgC,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,gBAAoB,OAAAvD,EAAA,WAAAG,EAAA,OAAqCE,YAAA,OAAkB,CAAAF,EAAA,UAAeE,YAAA,QAAAM,MAAA,CAA2B4C,KAAA,eAAoBvD,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBE,YAAA,SAAoB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yBAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAAzQ,SAAAyQ,EAAAkpB,WAAAlpB,EAAA0oB,eAA23B1oB,EAAAuI,KAA33BpI,EAAA,OAAsIE,YAAA,+BAAAC,MAAA,CAAAN,EAAA2oB,cAAA,CAAsEkE,YAAA7sB,EAAA+oB,gBAAiCvgB,MAAA,CAAAxI,EAAA+oB,gBAA8B,CAAA/oB,EAAA,QAAAG,EAAA,cAAiCE,YAAA,4BAAAM,MAAA,CAA+CF,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAAkmB,UAAAhoC,QAA4D8hB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAiCE,YAAA,oBAA+B,CAAAF,EAAA,QAAaE,YAAA,gCAAAM,MAAA,CAAmDnjB,MAAAwiB,EAAAupB,YAAuB,CAAAvpB,EAAA,cAAAG,EAAA,eAAwCQ,MAAA,CAAOuL,GAAAlM,EAAAypB,sBAA8B/Y,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA/L,EAAAwpB,kBAAuCrpB,EAAA,eAAoBQ,MAAA,CAAOuL,GAAAlM,EAAAypB,uBAA+B,CAAAzpB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAupB,eAAA,GAAAvpB,EAAAsI,GAAA,KAAAnI,EAAA,UAA+DE,YAAA,cAAAM,MAAA,CAAiC4C,KAAA,UAAA/lB,MAAAwiB,EAAAgM,GAAA,sBAAoDhM,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA8oB,QAA88N3oB,EAAA,OAA+BE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,aAAwB,CAAAF,EAAA,cAAmBQ,MAAA,CAAOH,QAAAR,EAAAQ,YAAuB,GAAAR,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,SAAAG,EAAA,gBAAkIQ,MAAA,CAAO6f,SAAAxgB,EAAAwgB,SAAAtlC,OAAA8kB,EAAA9kB,QAA4C8sB,GAAA,CAAK8kB,OAAA9sB,EAAAorB,kBAA6BprB,EAAAuI,MAAA,KAA94OpI,EAAA,OAAgIE,YAAA,mBAAAC,MAAA,CAAAN,EAAA6oB,UAAA,CAAsDgE,YAAA7sB,EAAAipB,UAAA8D,UAAA/sB,EAAAzQ,UAAAyQ,EAAA0oB,iBAA4ElgB,MAAA,CAAAxI,EAAAipB,WAAAtoB,MAAA,CAAmCqsB,YAAAhtB,EAAA1mB,OAAsB,CAAA0mB,EAAAkpB,UAAgVlpB,EAAAuI,KAAhVpI,EAAA,OAA6BE,YAAA,aAAwB,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,iBAAyBgd,SAAA,CAAWC,SAAA,SAAA9jB,GAA2E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAwrB,mBAAApiB,MAAwC,CAAAjJ,EAAA,cAAmBQ,MAAA,CAAOH,QAAAR,EAAAQ,QAAAC,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAA9kB,OAAAgD,SAA+E,OAAA8hB,EAAAsI,GAAA,KAAAnI,EAAA,OAAyCE,YAAA,cAAyB,CAAAL,EAAA,aAAAG,EAAA,YAAoCE,YAAA,WAAAM,MAAA,CAA8BwsB,UAAAntB,EAAA9kB,OAAAgD,KAAAhJ,GAAA+4B,SAAA,EAAAG,UAAA,KAA6DpO,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAkpB,UAAixHlpB,EAAAuI,KAAjxHpI,EAAA,OAAkDE,YAAA,kBAA6B,CAAAF,EAAA,OAAYE,YAAA,oBAA+B,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAL,EAAA9kB,OAAAgD,KAAA,UAAAiiB,EAAA,MAAuCE,YAAA,kBAAAM,MAAA,CAAqCnjB,MAAAwiB,EAAA9kB,OAAAgD,KAAA9K,MAA6Bs9B,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA/L,EAAA9kB,OAAAgD,KAAAzI,cAA+C0qB,EAAA,MAAWE,YAAA,kBAAAM,MAAA,CAAqCnjB,MAAAwiB,EAAA9kB,OAAAgD,KAAA9K,OAA8B,CAAA4sB,EAAAsI,GAAA,uBAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAAgD,KAAA9K,MAAA,wBAAA4sB,EAAAsI,GAAA,KAAAnI,EAAA,eAAmHE,YAAA,eAAAM,MAAA,CAAkCnjB,MAAAwiB,EAAA9kB,OAAAgD,KAAAvE,eAAAuyB,GAAAlM,EAAAiQ,kBAAiE,CAAAjQ,EAAAsI,GAAA,uBAAAtI,EAAA+L,GAAA/L,EAAA9kB,OAAAgD,KAAAvE,gBAAA,wBAAAqmB,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAAgD,MAAA8hB,EAAA9kB,OAAAgD,KAAAhH,QAAAipB,EAAA,OAAsKE,YAAA,iBAAAM,MAAA,CAAoCpvB,IAAAyuB,EAAA9kB,OAAAgD,KAAAhH,WAA+B8oB,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,QAAsCE,YAAA,iBAA4B,CAAAF,EAAA,eAAoBE,YAAA,qBAAAM,MAAA,CAAwCuL,GAAA,CAAM94B,KAAA,eAAAgS,OAAA,CAAgClQ,GAAA8qB,EAAA9kB,OAAAhG,OAAwB,CAAAirB,EAAA,WAAgBQ,MAAA,CAAOysB,KAAAptB,EAAA9kB,OAAAlC,WAAAq0C,cAAA,OAA+C,GAAArtB,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA,WAAAilB,EAAA,QAAqDE,YAAA,kBAAAM,MAAA,CAAqCnjB,MAAAwiB,EAAAstB,GAAA,aAAAttB,GAAA9kB,OAAA8C,cAAqD,CAAAmiB,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAAvD,EAAAirB,eAAAjrB,EAAA9kB,OAAA8C,gBAAmE,GAAAgiB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAutB,aAAAvtB,EAAA4sB,UAAAzsB,EAAA,UAA2EE,YAAA,kBAAAM,MAAA,CAAqCnjB,MAAAwiB,EAAAgM,GAAA,kBAAgChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAsrB,eAAAliB,MAAoC,CAAAjJ,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,kBAAuC,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,QAAAG,EAAA,UAAsDE,YAAA,kBAAA2H,GAAA,CAAkCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAurB,WAAAniB,MAAgC,CAAAjJ,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,gBAAqC,GAAAvD,EAAAuI,MAAA,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA2CE,YAAA,qBAAgC,CAAAL,EAAA,QAAAG,EAAA,OAA0BE,YAAA,4BAAuC,CAAAL,EAAA4sB,UAAsmBzsB,EAAA,QAAmHE,YAAA,uBAAkC,CAAAF,EAAA,QAAaE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yBAApyB7L,EAAA,iBAAuCE,YAAA,mBAAAC,MAAA,CAAsCktB,kBAAAxtB,EAAA9kB,OAAAyB,gBAA+C8wC,YAAA,CAAcC,YAAA,KAAgB/sB,MAAA,CAAQgtB,YAAA3tB,EAAA9kB,OAAAyB,gBAAAqjB,EAAA9kB,OAAA0B,wBAA2E,CAAAujB,EAAA,UAAeE,YAAA,2BAAAM,MAAA,CAA8CitB,aAAA5tB,EAAAgM,GAAA,mBAAsChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAqrB,aAAArrB,EAAA9kB,OAAA0B,0BAA4D,CAAAujB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,QAAAkO,KAAA,gBAAoCzR,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAA,2BAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sDAA8LhM,EAAAsI,GAAA,KAAAnI,EAAA,eAA8EE,YAAA,gBAAAM,MAAA,CAAmCnjB,MAAAwiB,EAAAspB,YAAApd,GAAAlM,EAAAopB,mBAAmD,CAAAppB,EAAAsI,GAAA,uBAAAtI,EAAA+L,GAAA/L,EAAAspB,aAAA,wBAAAtpB,EAAAsI,GAAA,KAAAtI,EAAA6tB,SAAA7tB,EAAA6tB,QAAAxhD,OAAA8zB,EAAA,QAA2IE,YAAA,2BAAsC,CAAAL,EAAAsI,GAAA,6CAAAtI,EAAAuI,MAAA,GAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA0oB,iBAAA1oB,EAAA4sB,WAAA5sB,EAAA6tB,SAAA7tB,EAAA6tB,QAAAxhD,OAAA8zB,EAAA,OAA8KE,YAAA,WAAsB,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,iBAAA8tB,GAAmG,OAAA3tB,EAAA,iBAA2BhsB,IAAA25C,EAAA54C,GAAAyrB,MAAA,CAAoBgtB,YAAAG,EAAA54C,KAAsB,CAAAirB,EAAA,UAAeE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAqrB,aAAAyC,EAAA54C,OAAoC,CAAA8qB,EAAAsI,GAAA,yBAAAtI,EAAA+L,GAAA+hB,EAAA16C,MAAA,+BAAiF,GAAA4sB,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,iBAA4DQ,MAAA,CAAOzlB,OAAA8kB,EAAA9kB,OAAA6yC,aAAA/tB,EAAAkpB,UAAAja,UAAAjP,EAAAiP,UAAAob,QAAArqB,EAAAoqB,WAAiGpiB,GAAA,CAAKgmB,UAAA,SAAA5kB,GAA6B,OAAApJ,EAAAyrB,gBAAAriB,IAAmC6kB,WAAA,SAAA7kB,GAA+B,OAAApJ,EAAA0rB,mBAAAtiB,OAAwCpJ,EAAAsI,GAAA,KAAAnI,EAAA,cAA+BQ,MAAA,CAAOvtB,KAAA,SAAe,EAAA4sB,EAAAihB,eAAAjhB,EAAAoqB,WAAApqB,EAAA4qB,4BAAAv+C,OAAA,EAAA8zB,EAAA,OAAgGE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAA0pB,2BAAAhrC,aAAAshB,EAAA0pB,2BAAAhrC,YAAArS,OAAA,EAAA8zB,EAAA,mBAA8HQ,MAAA,CAAOjU,MAAAsT,EAAA0pB,2BAAAhrC,cAAoD,CAAAyhB,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,KAAUE,YAAA,cAAyB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAmEE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,2BAAAtI,EAAA+L,GAAA/L,EAAA0pB,2BAAAhrC,YAAArS,QAAA,gCAAA2zB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA0pB,2BAAAjrC,aAAAuhB,EAAA0pB,2BAAAjrC,YAAApS,OAAA,EAAA8zB,EAAA,mBAA+QQ,MAAA,CAAOjU,MAAAsT,EAAA0pB,2BAAAjrC,cAAoD,CAAA0hB,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,KAAUE,YAAA,cAAyB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAqEE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,2BAAAtI,EAAA+L,GAAA/L,EAAA0pB,2BAAAjrC,YAAApS,QAAA,gCAAA2zB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA6JE,YAAA,cAAyB,CAAAF,EAAA,cAAmBQ,MAAA,CAAOjU,MAAAsT,EAAA4qB,gCAAyC,SAAA5qB,EAAAuI,OAAAvI,EAAAsI,GAAA,MAAAtI,EAAAuC,aAAA2rB,2BAAAluB,EAAAoqB,WAAApqB,EAAAkpB,WAAAlpB,EAAA4sB,UAAyL5sB,EAAAuI,KAAzLpI,EAAA,kBAA6JQ,MAAA,CAAOzlB,OAAA8kB,EAAA9kB,UAAqB8kB,EAAAsI,GAAA,KAAAtI,EAAAkpB,WAAAlpB,EAAA4sB,UAAymB5sB,EAAAuI,KAAzmBpI,EAAA,OAAoEE,YAAA,kBAA6B,CAAAF,EAAA,gBAAqBQ,MAAA,CAAO6f,SAAAxgB,EAAAwgB,SAAAtlC,OAAA8kB,EAAA9kB,QAA4C8sB,GAAA,CAAK8kB,OAAA9sB,EAAAorB,kBAA6BprB,EAAAsI,GAAA,KAAAnI,EAAA,kBAAmCQ,MAAA,CAAO3iB,WAAAgiB,EAAA9kB,OAAA8C,WAAAmwC,YAAAnuB,EAAA6O,SAAA3zB,OAAA8kB,EAAA9kB,UAAiF8kB,EAAAsI,GAAA,KAAAnI,EAAA,mBAAoCQ,MAAA,CAAOwtB,YAAAnuB,EAAA6O,SAAA3zB,OAAA8kB,EAAA9kB,UAA8C8kB,EAAAsI,GAAA,KAAAtI,EAAA,SAAAG,EAAA,eAA+CQ,MAAA,CAAOzlB,OAAA8kB,EAAA9kB,UAAqB8kB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,iBAA2CQ,MAAA,CAAOzlB,OAAA8kB,EAAA9kB,QAAoB8sB,GAAA,CAAKomB,QAAApuB,EAAAkrB,UAAAmD,UAAAruB,EAAAmrB,eAAoD,SAAgcnrB,EAAAsI,GAAA,KAAAtI,EAAA,SAAAG,EAAA,OAAsDE,YAAA,+BAA0C,CAAAF,EAAA,kBAAuBE,YAAA,aAAAM,MAAA,CAAgC2tB,WAAAtuB,EAAA9kB,OAAAhG,GAAAkJ,WAAA4hB,EAAA9kB,OAAAkD,WAAAmwC,eAAAvuB,EAAA9kB,OAAAgD,KAAAswC,qBAAAxuB,EAAA9kB,OAAA8C,WAAAywC,QAAAzuB,EAAAsqB,cAAiKtiB,GAAA,CAAK0mB,OAAA1uB,EAAAorB,mBAA6B,GAAAprB,EAAAuI,OAAA,IACj2U,IDOY,EAa7B+jB,EATiB,KAEU,MAYdxrB,EAAA,QAAAyrB,EAAiB,qGEvBjBnvC,EAAA,CACbhK,KAAM,OACN2rB,MAAO,CAAC,YACRO,WAAY,CAAE6oB,iBACdt8C,KAJa,WAKX,MAAO,CACL8iD,SAAS,EACTh3B,QAAS,KAGbiQ,QAVa,WAWNxmB,KAAK8d,OAAOC,MAAMyvB,MAAMC,YAAYztC,KAAKsW,SAC5CtW,KAAK8d,OAAO+L,SAAS,iBAAkB7pB,KAAK0tC,UAE9C1tC,KAAK8d,OAAO+L,SAAS,YAAa7pB,KAAKsW,SAEzCmQ,UAhBa,WAiBXzmB,KAAK8d,OAAO+L,SAAS,cAAe7pB,KAAKsW,SAE3C0S,SAAU,CACR1S,OADQ,WAEN,OAAOtW,KAAK0tC,SAAS55C,IAEvBkI,KAJQ,WAMN,OADkBgE,KAAK8d,OAAOC,MAAMyvB,MAAMC,YAAYztC,KAAKsW,SACvC,IAEtBra,QARQ,WASN,OAAQ+D,KAAKhE,MAAQgE,KAAKhE,KAAKC,SAAY,IAE7C0xC,UAXQ,WAYN,OAAQ3tC,KAAKhE,MAAQgE,KAAKhE,KAAK4xC,YAAe,GAEhDC,QAdQ,WAeN,OAAQ7tC,KAAKhE,MAAQgE,KAAKhE,KAAK6xC,UAAY,GAE7CpgB,SAjBQ,WAkBN,OAAOztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjC2gB,YApBQ,WAqBN,OAAO9tC,KAAKhE,KAAK+xC,OAAS/tC,KAAK6tC,UAAY7tC,KAAKytB,UAElDugB,gBAvBQ,WAwBN,OAAOhuC,KAAKhE,KAAKiyC,aAEnBC,eA1BQ,WA2BN,MAAO,CACLX,QAASvtC,KAAKutC,UAGlBY,cA/BQ,WAmCN,OAAOnuC,KAAKuW,QACTzhB,IAAI,SAACs5C,EAAOC,GAAR,OAAkBD,GAASC,IAC/BjpC,OAAO,SAAA3S,GAAK,MAAqB,iBAAVA,KAE5B67C,WAvCQ,WAwCN,IAAMC,EAAyC,IAA9BvuC,KAAKmuC,cAAcljD,OACpC,OAAO+U,KAAKutC,SAAWgB,IAG3BnwB,QAAS,CACPowB,oBADO,SACcpI,GACnB,OAAgC,IAAzBpmC,KAAKguC,gBAAwB,EAAIrzB,KAAKiL,MAAMwgB,EAAQpmC,KAAKguC,gBAAkB,MAEpFS,YAJO,SAIMh/B,GACX,SAAA7V,OAAU6V,EAAOw+B,YAAjB,KAAAr0C,OAAgCoG,KAAKguC,gBAArC,KAAAp0C,OAAwDoG,KAAK4qB,GAAG,iBAElEpU,UAPO,WAQLxW,KAAK8d,OAAO+L,SAAS,cAAe,CAAE/1B,GAAIkM,KAAKskC,SAAUhuB,OAAQtW,KAAKhE,KAAKlI,MAE7E46C,eAVO,SAUSL,GASd,IAAMM,EAAc3uC,KAAKmjB,IAAIyrB,iBAAiB,SACxCC,EAAiB7uC,KAAKmjB,IAAImd,cAAT,gBAAA1mC,OAAuCy0C,EAAvC,OACnBruC,KAAKhE,KAAK6T,SAEZg/B,EAAeC,SAAWD,EAAeC,SAGzCC,IAAQJ,EAAa,SAAAK,GAAaA,EAAQF,SAAU,IACpDD,EAAeC,SAAU,GAE3B9uC,KAAKuW,QAAUpM,IAAIwkC,EAAa,SAAA/hD,GAAC,OAAIA,EAAEkiD,WAEzCG,SA/BO,SA+BGZ,GACR,aAAAz0C,OAAcoG,KAAKhE,KAAKlI,GAAxB,KAAA8F,OAA8By0C,IAEhCj4B,KAlCO,WAkCC,IAAA7V,EAAAP,KAC4B,IAA9BA,KAAKmuC,cAAcljD,SACvB+U,KAAKutC,SAAU,EACfvtC,KAAK8d,OAAO+L,SACV,WACA,CAAE/1B,GAAIkM,KAAKskC,SAAUhuB,OAAQtW,KAAKhE,KAAKlI,GAAIyiB,QAASvW,KAAKmuC,gBACzD19C,KAAK,SAAAuL,GACLuE,EAAKgtC,SAAU,eCnGvB,IAEAhvB,EAVA,SAAAC,GACEpyB,EAAQ,MAyBK8iD,EAVC9jD,OAAAszB,EAAA,EAAAtzB,CACd4Q,ECjBF,WAA0B,IAAA4iB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,OAAAC,MAAAN,EAAAsvB,gBAA4C,CAAAtvB,EAAAmjB,GAAAnjB,EAAA,iBAAAnP,EAAA4+B,GAA8C,OAAAtvB,EAAA,OAAiBhsB,IAAAs7C,EAAApvB,YAAA,eAAoC,CAAAL,EAAA,YAAAG,EAAA,OAA8BE,YAAA,gBAAAM,MAAA,CAAmCnjB,MAAAwiB,EAAA6vB,YAAAh/B,KAAiC,CAAAsP,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,QAAaE,YAAA,qBAAgC,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAA4vB,oBAAA/+B,EAAAw+B,cAAA,iBAAArvB,EAAAsI,GAAA,KAAAnI,EAAA,QAAoHuQ,SAAA,CAAUC,UAAA3Q,EAAA+L,GAAAlb,EAAAtT,iBAAuCyiB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAAmI,MAAA,CAAkCpE,MAAApE,EAAA4vB,oBAAA/+B,EAAAw+B,aAAA,SAAmElvB,EAAA,OAAc6H,GAAA,CAAII,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA8vB,eAAAL,MAAmC,CAAAzvB,EAAA5iB,KAAA,SAAA+iB,EAAA,SAAkCQ,MAAA,CAAO1vB,KAAA,WAAAs/C,SAAAvwB,EAAA2uB,SAAyCje,SAAA,CAAW78B,MAAA47C,KAAetvB,EAAA,SAAcQ,MAAA,CAAO1vB,KAAA,QAAAs/C,SAAAvwB,EAAA2uB,SAAsCje,SAAA,CAAW78B,MAAA47C,KAAezvB,EAAAsI,GAAA,KAAAnI,EAAA,SAA0BE,YAAA,eAA0B,CAAAF,EAAA,OAAYuQ,SAAA,CAAUC,UAAA3Q,EAAA+L,GAAAlb,EAAAtT,uBAA+CyiB,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,gBAA2B,CAAAL,EAAAkvB,YAA4JlvB,EAAAuI,KAA5JpI,EAAA,UAAkCE,YAAA,sCAAAM,MAAA,CAAyD1vB,KAAA,SAAAs/C,SAAAvwB,EAAA0vB,YAA0C1nB,GAAA,CAAKI,MAAApI,EAAAxI,OAAkB,CAAAwI,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA4FE,YAAA,SAAoB,kBAAAL,EAAA5iB,KAAAozC,aAAA,CAAAxwB,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAywB,IAAA,2BAAAzwB,EAAA5iB,KAAAozC,aAAA,CAAsIhJ,MAAAxnB,EAAA5iB,KAAAozC,gBAA+B,iBAAAxwB,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAywB,IAAA,oBAAAzwB,EAAA5iB,KAAAiyC,YAAA,CAAmG7H,MAAAxnB,EAAA5iB,KAAAiyC,eAA8B,oBAAArvB,EAAAsI,GAAA,KAAAnI,EAAA,QAA8CQ,MAAA,CAAO+vB,KAAA1wB,EAAAivB,QAAA,qCAA2D,CAAA9uB,EAAA,WAAgBQ,MAAA,CAAOysB,KAAAptB,EAAA+uB,UAAA1B,cAAA,GAAAsD,gBAAA,MAAyD,YACv4D,IDOA,EAaAhxB,EATA,KAEA,MAYgC,2SEPhC4J,IAAQC,IACN8b,IACAsL,IACAC,IACAC,IACAC,IACAC,KAGF,IA2Le5I,EA3LO,CACpBh1C,KAAM,gBACN2rB,MAAO,CACL,SACA,UACA,YACA,cACA,cAEFlzB,KAToB,WAUlB,MAAO,CACLolD,YAAa7vC,KAAK8vC,aAAgB9vC,KAAKsnC,gBAAkBtnC,KAAKipC,QAC9D8G,oBAAoB,EAEpBC,kBAAmBhwC,KAAK8d,OAAO2O,QAAQtL,aAAa8uB,6BAGxDjnB,sWAAQ9sB,CAAA,CACNg0C,4BADM,WAEJ,OAAOlwC,KAAKmhB,aAAa8uB,4BAE3BE,gBAJM,WAKJ,OAAQnwC,KAAKmhB,aAAagvB,kBAAoBnwC,KAAKsnC,gBAChDtnC,KAAKmhB,aAAaivB,uBAAyBpwC,KAAKsnC,gBASrD+I,WAfM,WAiBJ,OADoBrwC,KAAKlG,OAAOa,eAAelC,MAAM,UAAUxN,OAAS+U,KAAKlG,OAAOe,KAAK5P,OAAS,GAC7E,IAEvBqlD,YAnBM,WAoBJ,OAAOtwC,KAAKlG,OAAOgB,QAAQ7P,OAAS,KAGtCslD,wBAvBM,WAwBJ,QAASvwC,KAAKlG,OAAOgB,SAAWkF,KAAKkwC,6BAEvCM,qBA1BM,WA2BJ,OAAOxwC,KAAKqwC,cAAgBrwC,KAAKlG,OAAOgB,SAAWkF,KAAKkwC,8BAE1DO,kBA7BM,WA8BJ,OAAOzwC,KAAKuwC,0BAA4BvwC,KAAKgwC,kBAE/CU,eAhCM,WAiCJ,OAAO1wC,KAAKwwC,uBAAyBxwC,KAAK6vC,aAE5Cc,YAnCM,WAoCJ,OAAQ3wC,KAAKwwC,sBAAwBxwC,KAAK6vC,aAAiB7vC,KAAKuwC,yBAA2BvwC,KAAKgwC,kBAElGY,iBAtCM,WAuCJ,QAAK5wC,KAAKlG,OAAOW,QAGbuF,KAAKlG,OAAOgB,UAAWkF,KAAKkwC,8BAKlCW,eA/CM,WAgDJ,OAAK7wC,KAAKmhB,aAAagvB,kBAAoBnwC,KAAKsnC,gBAC7CtnC,KAAKmhB,aAAaivB,uBAAyBpwC,KAAKsnC,gBAChDtnC,KAAKlG,OAAOoD,YAAYjS,OAAS+U,KAAK8wC,cAChC,OACE9wC,KAAKof,QACP,QAEF,UAET2xB,aAzDM,WA0DJ,MAA4B,SAAxB/wC,KAAK6wC,eACA,GAEF7wC,KAAKmhB,aAAa6vB,kBACrB,CAAC,QAAS,SACV,CAAC,UAEPC,mBAjEM,WAiEgB,IAAA1wC,EAAAP,KACpB,OAAOA,KAAKlG,OAAOoD,YAAYkI,OAC7B,SAAAuO,GAAI,OAAI0T,IAASE,oBAAoBhnB,EAAKwwC,aAAcp9B,MAG5Du9B,sBAtEM,WAsEmB,IAAAvnB,EAAA3pB,KACvB,OAAOA,KAAKlG,OAAOoD,YAAYkI,OAC7B,SAAAuO,GAAI,OAAK0T,IAASE,oBAAoBoC,EAAKonB,aAAcp9B,MAG7Dw9B,gBA3EM,WA4EJ,OAAOnxC,KAAKlG,OAAOoD,YAAYpI,IAAI,SAAA6e,GAAI,OAAI0T,IAASA,SAAS1T,EAAK5a,aAEpE+3C,cA9EM,WA+EJ,OAAO9wC,KAAKmhB,aAAa2vB,eAE3BM,aAjFM,WAkFJ,IAAMC,EAAOrxC,KAAKlG,OAAOa,eAEzB,IAAIqF,KAAKmhB,aAAamwB,UAwBpB,OAAOD,EAvBP,IACE,OAAIA,EAAKl6C,SAAS,QCzHD,SAACk6C,EAAMtqC,GA2ChC,IA1CA,IAUQjb,EAVFylD,EAAc,IAAIvrC,IAAI,CAAC,IAAK,KAAM,QAClCwrC,EAAgB,IAAIxrC,IAAI,CAAC,IAAK,QAEhCyrC,EAAS,GACPC,EAAQ,GACVC,EAAa,GACbC,EAAY,KAQVC,EAAQ,WACRF,EAAWG,OAAO7mD,OAAS,EAC7BwmD,GAAU1qC,EAAU4qC,GAEpBF,GAAUE,EAEZA,EAAa,IAGTI,EAAW,SAACxiD,GAChBsiD,IACAJ,GAAUliD,GAGNyiD,EAAa,SAACziD,GAClBsiD,IACAJ,GAAUliD,EACVmiD,EAAMvmD,KAAKoE,IAGP0iD,EAAc,SAAC1iD,GACnBsiD,IACAJ,GAAUliD,EACNmiD,EAAMA,EAAMzmD,OAAS,KAAOsE,GAC9BmiD,EAAMQ,OAIDnnD,EAAI,EAAGA,EAAIsmD,EAAKpmD,OAAQF,IAAK,CACpC,IAAMonD,EAAOd,EAAKtmD,GAClB,GAAa,MAATonD,GAA8B,OAAdP,EAClBA,EAAYO,OACP,GAAa,MAATA,GAA8B,OAAdP,EACzBA,GAAaO,OACR,GAAa,MAATA,GAA8B,OAAdP,EAAoB,CAE7C,IAAMQ,EADNR,GAAaO,EAEbP,EAAY,KACZ,IAAMvoB,GA1CFv9B,YAAS,sCAAsCwwB,KA0CxB81B,MAzCXtmD,EAAO,IAAMA,EAAO,KA0ChCylD,EAAY1pC,IAAIwhB,GACF,OAAZA,EACF0oB,EAASK,GACAZ,EAAc3pC,IAAIwhB,KACR,MAAf+oB,EAAQ,GACVH,EAAYG,GAC6B,MAAhCA,EAAQA,EAAQnnD,OAAS,GAElC8mD,EAASK,GAETJ,EAAWI,IAIfT,GAAcS,MAEE,OAATD,EACTJ,EAASI,GAETR,GAAcQ,EASlB,OANIP,IACFD,GAAcC,GAGhBC,IAEOJ,EDyCUY,CAAYhB,EAAM,SAACj4C,GACxB,OAAIA,EAAOjC,SAAS,SAChBiC,EACGlE,QAAQ,aAAc,IACtBA,QAAQ,SAAU,IAClB48C,OACA10B,WAAW,QAChB,2BAAAxjB,OAAkCR,EAAlC,WAEOA,IAIJi4C,EAET,MAAOzkD,GAEP,OADAyG,QAAQjD,IAAI,gCAAiCxD,GACtCykD,KAMVtjB,YAAW,CAAC,iBA/GT,GAgHHvC,YAAS,CACVlM,aAAc,SAAAvB,GAAK,OAAIA,EAAK,UAAWuO,eAAeC,WACtDY,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,gBAGtCjP,WAAY,CACVo0B,eACAC,OACAC,YACAC,iBAEFr0B,QAAS,CACPuQ,YADO,SACM3+B,GACX,IE3J4BmE,EAE1BrI,EFyJIoE,EAASF,EAAME,OAAOkzB,QAAQ,qBACpC,GAAIlzB,EAAQ,CACV,GAAIA,EAAOwiD,UAAUl2C,MAAM,WAAY,CACrC,IAAMrP,EAAO+C,EAAO/C,KACdwlD,EAAO3yC,KAAKlG,OAAOkD,WAAWmjC,KAAK,SAAAwS,GAAI,OE9KtB,SAACC,EAAWz+C,GAC3C,GAAIA,IAAQy+C,EAAU1+C,sBACpB,OAAO,EAF0C,IAAA2+C,EAIlBD,EAAU5+C,YAAYyE,MAAM,KAJVq6C,EAAAxxC,IAAAuxC,EAAA,GAI5CE,EAJ4CD,EAAA,GAIlCE,EAJkCF,EAAA,GAK7CG,EAAc,IAAIt5C,OAAO,MAAQq5C,EAAe,MAAQD,EAAW,IAAK,KAE9E,QAAS5+C,EAAIqI,MAAMy2C,GFuKsCC,CAAkBP,EAAMxlD,KACzE,GAAIwlD,EAAM,CACR3iD,EAAMk4B,kBACNl4B,EAAMsgC,iBACN,IAAM8B,EAAOpyB,KAAK+nC,wBAAwB4K,EAAK7+C,GAAI6+C,EAAK3+C,aAExD,YADAgM,KAAKsrB,QAAQngC,KAAKinC,IAItB,GAAIliC,EAAOT,IAAI+M,MAAM,wBAA0BtM,EAAOwiD,UAAUl2C,MAAM,WAAY,CAEhF,IAAMjN,EAAMW,EAAOijD,QAAQ5jD,ME1KH4E,EF0K4BjE,EAAO/C,QExK7DrB,EADQ,mBACOwwB,KAAKnoB,KAInBrI,EAAO,IFqKN,GAAIyD,EAAK,CACP,IAAM6iC,EAAOpyB,KAAKozC,gBAAgB7jD,GAElC,YADAyQ,KAAKsrB,QAAQngC,KAAKinC,IAItB7+B,OAAOq7B,KAAK1+B,EAAO/C,KAAM,YAG7BkmD,eA3BO,WA4BDrzC,KAAKwwC,qBACPxwC,KAAK6vC,aAAe7vC,KAAK6vC,YAChB7vC,KAAKuwC,0BACdvwC,KAAKgwC,kBAAoBhwC,KAAKgwC,mBAGlCjI,wBAlCO,SAkCkBj0C,EAAI9B,GAC3B,OAAOsrB,YAAoBxpB,EAAI9B,EAAMgO,KAAK8d,OAAOC,MAAMC,SAAST,sBAElE61B,gBArCO,SAqCU7jD,GACf,cAAAqK,OAAerK,IAEjB+jD,SAxCO,WAwCK,IAAAtpB,EAAAhqB,KACJ9C,EAAsC,SAAxB8C,KAAK6wC,eAA4B7wC,KAAKlG,OAAOoD,YAAc8C,KAAKixC,mBACpF,OAAO,kBAAMjnB,EAAKlM,OAAO+L,SAAS,WAAY3sB,OG1MpD,IAEIq2C,EAVJ,SAAoB/0B,GAClBpyB,EAAQ,MAeNonD,EAAYpoD,OAAAszB,EAAA,EAAAtzB,CACdqoD,ECjBQ,WAAgB,IAAA70B,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,iBAA4B,CAAAL,EAAAqI,GAAA,UAAArI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA,aAAAilB,EAAA,OAAmEE,YAAA,kBAAAC,MAAA,CAAqCw0B,eAAA90B,EAAA0xB,cAAA1xB,EAAAmxB,qBAAgE,CAAAhxB,EAAA,OAAYE,YAAA,qBAAAqQ,SAAA,CAA2CC,UAAA3Q,EAAA+L,GAAA/L,EAAA9kB,OAAAgC,eAA4C8qB,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,OAAiCpJ,EAAAsI,GAAA,KAAAtI,EAAA0xB,aAAA1xB,EAAAmxB,mBAAAhxB,EAAA,UAAuEE,YAAA,2CAAA2H,GAAA,CAA2DI,MAAA,SAAAgB,GAAyBA,EAAAsI,iBAAwB1R,EAAAmxB,oBAAA,KAA+B,CAAAnxB,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAA,YAAAG,EAAA,UAA0GE,YAAA,2CAAAC,MAAA,CAA8Dy0B,6BAAA/0B,EAAAqqB,SAA4CriB,GAAA,CAAKI,MAAA,SAAAgB,GAAyBA,EAAAsI,iBAAwB1R,EAAAmxB,oBAAA,KAA8B,CAAAnxB,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAuI,OAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqHE,YAAA,yBAAAC,MAAA,CAA4C00B,cAAAh1B,EAAA8xB,iBAAmC,CAAA9xB,EAAA,eAAAG,EAAA,UAAoCE,YAAA,0CAAAC,MAAA,CAA6D20B,4BAAAj1B,EAAAqqB,SAA2CriB,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAy0B,eAAArrB,MAAoC,CAAApJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA6xB,kBAAkV7xB,EAAAuI,KAAlVpI,EAAA,OAA4HE,YAAA,4BAAAC,MAAA,CAA+C40B,cAAAl1B,EAAAm1B,YAAgCzkB,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA/L,EAAAwyB,eAAqCxqB,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,OAAiCpJ,EAAAsI,GAAA,KAAAtI,EAAA,kBAAAG,EAAA,UAA4DE,YAAA,wCAAA2H,GAAA,CAAwDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAy0B,eAAArrB,MAAoC,CAAApJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAuyB,gBAAAh6C,SAAA,SAAA4nB,EAAA,UAA2HQ,MAAA,CAAO4C,KAAA,WAAgBvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuyB,gBAAAh6C,SAAA,SAAA4nB,EAAA,UAA4EQ,MAAA,CAAO4C,KAAA,WAAgBvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuyB,gBAAAh6C,SAAA,SAAA4nB,EAAA,UAA4EQ,MAAA,CAAO4C,KAAA,WAAgBvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuyB,gBAAAh6C,SAAA,WAAA4nB,EAAA,UAA8EQ,MAAA,CAAO4C,KAAA,UAAevD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAAkC,MAAA4iB,EAAA9kB,OAAAkC,KAAAC,QAAA8iB,EAAA,UAAiFQ,MAAA,CAAO4C,KAAA,YAAiBvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAA,KAAAilB,EAAA,UAAsDQ,MAAA,CAAO4C,KAAA,UAAevD,EAAAuI,MAAA,GAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA+xB,cAAA/xB,EAAAkxB,YAAA/wB,EAAA,UAAuFE,YAAA,uCAAA2H,GAAA,CAAuDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAy0B,eAAArrB,MAAoC,CAAApJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAyxB,WAAAzxB,EAAAgM,GAAA,qBAAAhM,EAAAgM,GAAA,oCAAAhM,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAA9kB,OAAAkC,MAAA4iB,EAAA9kB,OAAAkC,KAAAC,UAAA2iB,EAAA6xB,kBAAA1xB,EAAA,OAAAA,EAAA,QAAwOQ,MAAA,CAAOy0B,YAAAp1B,EAAA9kB,OAAAkC,SAA6B,GAAA4iB,EAAAuI,KAAAvI,EAAAsI,GAAA,SAAAtI,EAAA9kB,OAAAoD,YAAAjS,QAAA2zB,EAAA6xB,oBAAA7xB,EAAAmxB,mBAAguBnxB,EAAAuI,KAAhuBpI,EAAA,OAAiIE,YAAA,0BAAqC,CAAAL,EAAAmjB,GAAAnjB,EAAA,+BAAAnf,GAA0D,OAAAsf,EAAA,cAAwBhsB,IAAA0M,EAAA3L,GAAAmrB,YAAA,cAAAM,MAAA,CAAmDiQ,KAAA5Q,EAAAiyB,eAAAp2C,KAAAmkB,EAAAgyB,iBAAAnxC,aAAAw0C,cAAA,EAAAC,YAAAt1B,EAAA00B,YAA2H1sB,GAAA,CAAKutB,KAAA,SAAAnsB,GAAwB,OAAApJ,EAAAoH,MAAA,YAAAvmB,EAAA3L,KAA6CsgD,MAAA,SAAApsB,GAA0B,OAAApJ,EAAAoH,MAAA,aAAAvmB,EAAA3L,UAAkD8qB,EAAAsI,GAAA,KAAAtI,EAAAqyB,mBAAAhmD,OAAA,EAAA8zB,EAAA,WAAgEQ,MAAA,CAAO9kB,KAAAmkB,EAAAgyB,iBAAA1zC,YAAA0hB,EAAAqyB,mBAAAiD,YAAAt1B,EAAA00B,cAA6F10B,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,MAAAtI,EAAA9kB,OAAA+C,MAAA+hB,EAAA6xB,mBAAA7xB,EAAAkpB,UAA4PlpB,EAAAuI,KAA5PpI,EAAA,OAA4GE,YAAA,2BAAsC,CAAAF,EAAA,gBAAqBQ,MAAA,CAAO1iB,KAAA+hB,EAAA9kB,OAAA+C,KAAA2yB,KAAA5Q,EAAAiyB,eAAAp2C,KAAAmkB,EAAAgyB,qBAA8E,GAAAhyB,EAAAsI,GAAA,KAAAtI,EAAAqI,GAAA,eACh9H,IDOY,EAa7BssB,EATiB,KAEU,MAYd7zB,EAAA,EAAA8zB,EAAiB,sCE1BhCpnD,EAAA2F,EAAA2tB,EAAA,sBAAA20B,IAAAjoD,EAAA2F,EAAA2tB,EAAA,sBAAA40B,IAAAloD,EAAA2F,EAAA2tB,EAAA,sBAAA60B,IAAAnoD,EAAA2F,EAAA2tB,EAAA,sBAAA80B,IAAApoD,EAAA2F,EAAA2tB,EAAA,sBAAA+0B,IAAO,IACMJ,EAAS,IACTC,EAAO,GAAKD,EACZE,EAAM,GAAKD,EACXI,EAAO,EAAIH,EACXI,EAAQ,GAAKJ,EACbK,EAAO,OAASL,EAEhBC,EAAe,SAACK,GAA2B,IAArBC,EAAqBv2C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAN,EAC5B,iBAATs2C,IAAmBA,EAAOh9C,KAAKgJ,MAAMg0C,IAChD,IAAMjvB,EAAQ/tB,KAAKk9C,MAAQF,EAAOl6B,KAAK+B,MAAQ/B,KAAKC,KAC9C7oB,EAAI4oB,KAAKq6B,IAAIn9C,KAAKk9C,MAAQF,GAC5BviD,EAAI,CAAEq4C,IAAK/kB,EAAM7zB,EAAI6iD,GAAO7hD,IAAK,cAyBrC,OAxBIhB,EAbgB,IAaZ+iD,GACNxiD,EAAEq4C,IAAM,EACRr4C,EAAES,IAAM,YACChB,EAAIsiD,GACb/hD,EAAEq4C,IAAM/kB,EAAM7zB,EAjBI,KAkBlBO,EAAES,IAAM,gBACChB,EAAIuiD,GACbhiD,EAAEq4C,IAAM/kB,EAAM7zB,EAAIsiD,GAClB/hD,EAAES,IAAM,gBACChB,EAAIwiD,GACbjiD,EAAEq4C,IAAM/kB,EAAM7zB,EAAIuiD,GAClBhiD,EAAES,IAAM,cACChB,EAAI2iD,GACbpiD,EAAEq4C,IAAM/kB,EAAM7zB,EAAIwiD,GAClBjiD,EAAES,IAAM,aACChB,EAAI4iD,GACbriD,EAAEq4C,IAAM/kB,EAAM7zB,EAAI2iD,GAClBpiD,EAAES,IAAM,cACChB,EAAI6iD,IACbtiD,EAAEq4C,IAAM/kB,EAAM7zB,EAAI4iD,GAClBriD,EAAES,IAAM,eAGI,IAAVT,EAAEq4C,MAAWr4C,EAAES,IAAMT,EAAES,IAAIU,MAAM,GAAI,IAClCnB,GAGImiD,EAAoB,SAACI,GAA2B,IAArBC,EAAqBv2C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAN,EAC/CjM,EAAIkiD,EAAaK,EAAMC,GAE7B,OADAxiD,EAAES,KAAO,SACFT,iEChBM2iD,EAvBO,CACpBt3B,MAAO,CACL,QAEFlzB,KAJoB,WAKlB,MAAO,CACLy8C,cAAc,IAGlBhpB,WAAY,CACV2oB,aACAnpB,sBAEFU,QAAS,CACPgsB,mBADO,WAELpqC,KAAKknC,cAAgBlnC,KAAKknC,cAE5BrY,gBAJO,SAIU/xB,GACf,OAAOwgB,YAAoBxgB,EAAKhJ,GAAIgJ,EAAK9I,YAAagM,KAAK8d,OAAOC,MAAMC,SAAST,+BCdvF,IAEAgB,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd8pD,ECjBF,WAA0B,IAAAt2B,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,mBAA8B,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,gBAAAjQ,EAAA9hB,QAAoC,CAAAiiB,EAAA,cAAmBE,YAAA,SAAAM,MAAA,CAA4BziB,KAAA8hB,EAAA9hB,MAAgB+uC,SAAA,CAAW7kB,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAwrB,mBAAApiB,QAAwC,GAAApJ,EAAAsI,GAAA,KAAAtI,EAAA,aAAAG,EAAA,OAA+CE,YAAA,oCAA+C,CAAAF,EAAA,YAAiBQ,MAAA,CAAOwsB,UAAAntB,EAAA9hB,KAAAhJ,GAAA+4B,SAAA,EAAAG,UAAA,MAAsD,GAAAjO,EAAA,OAAgBE,YAAA,qCAAgD,CAAAF,EAAA,OAAYE,YAAA,4BAAAM,MAAA,CAA+CnjB,MAAAwiB,EAAA9hB,KAAA9K,OAAuB,CAAA4sB,EAAA9hB,KAAA,UAAAiiB,EAAA,QAAkCE,YAAA,kCAAAqQ,SAAA,CAAwDC,UAAA3Q,EAAA+L,GAAA/L,EAAA9hB,KAAAzI,cAAwC0qB,EAAA,QAAaE,YAAA,mCAA8C,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAA9K,WAAA4sB,EAAAsI,GAAA,KAAAnI,EAAA,OAAAA,EAAA,eAA4EE,YAAA,8BAAAM,MAAA,CAAiDuL,GAAAlM,EAAAiQ,gBAAAjQ,EAAA9hB,QAAoC,CAAA8hB,EAAAsI,GAAA,cAAAtI,EAAA+L,GAAA/L,EAAA9hB,KAAAvE,gBAAA,kBAAAqmB,EAAAsI,GAAA,KAAAtI,EAAAqI,GAAA,oBACtgC,IDOA,EAaA1I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,+3BEYzB,IAAM02B,EAAkB,EAElBC,EAAiB,SAACjjB,GAG7B,IAHsD,IAAlB1nC,EAAkB8T,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAXgyB,IACvC8kB,EAAQ,CAACljB,GACTmjB,EAAS7qD,EAAK0nC,GACXmjB,GACLD,EAAME,QAAQD,GACdA,EAAS7qD,EAAK6qD,GAEhB,OAAOD,GAGIG,EAAY,SAACrjB,GAAyD,IAAlD6B,EAAkDz1B,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAxC4zB,EAAOsjB,EAAiCl3C,UAAAtT,OAAA,EAAAsT,UAAA,QAAA9M,EAApBuoC,EAAoBz7B,UAAAtT,OAAA,EAAAsT,UAAA,QAAA9M,EAAZ0qB,EAAY5d,UAAAtT,OAAA,EAAAsT,UAAA,QAAA9M,EACjF,OAAO2jD,EAAejjB,GAAOr9B,IAAI,SAAC4gD,GAAD,MAAmB,CAClDA,IAAiBvjB,EACb6H,EAAOhG,GACPgG,EAAO0b,GACXA,IAAiBvjB,EACbhW,EAAQs5B,IAAgB,EACxBt5B,EAAQu5B,OAIVC,EAAkB,SAAC5iD,EAAK6iD,GAC5B,IAAMnrD,EAAOmrD,EAAY7iD,GACzB,GAAoB,iBAATtI,GAAqBA,EAAK2yB,WAAW,MAC9C,MAAO,CAAC3yB,EAAKi0C,UAAU,IAEvB,GAAa,OAATj0C,EAAe,MAAO,GADrB,IAEGqnC,EAA4BrnC,EAA5BqnC,QAASK,EAAmB1nC,EAAnB0nC,MAAO6B,EAAYvpC,EAAZupC,QAClB6hB,EAAY1jB,EACdijB,EAAejjB,GAAOr9B,IAAI,SAAA4gD,GAC1B,OAAOA,IAAiBvjB,EACpB6B,GAAW7B,EACXujB,IAEJ,GACJ,OAAIzlB,MAAM4O,QAAQ/M,GAChB,GAAAl4B,OAAAk8C,IAAWhkB,GAAXgkB,IAAuBD,IAEvBC,IAAWD,IAiEXE,EAAkB,SAACtjD,GACvB,MAAqB,WAAjB+nB,IAAO/nB,GAA2BA,EAC/B,CACLq/B,QAASr/B,EAAM2qB,WAAW,MAAQ,CAAC3qB,EAAMisC,UAAU,IAAM,GACzDhX,QAASj1B,EAAM2qB,WAAW,KAAO3qB,OAAQhB,IAQhCgtC,EAAiB,SAC5Bl9B,GAGG,IAFHq0C,EAEGr3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAFWkyB,IACdulB,EACGz3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GADOo3C,EAEJljD,EAAQsjD,EAAgBH,EAAYr0C,IAC1C,GAAsB,OAAlB9O,EAAM0pB,QAAV,CACA,GAAI1pB,EAAM0pB,QAAS,OAAO1pB,EAAM0pB,QAchC,OAAI1pB,EAAMq/B,QAbmB,SAAvBmkB,EAAwBljD,GAAuB,IAAlBmjD,EAAkB33C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAR,CAACgD,GACtC40C,EAAUH,EAAQjjD,EAAK6iD,GAAa,GAC1C,QAAgBnkD,IAAZ0kD,EAAJ,CACA,IAAMC,EAAaR,EAAYO,GAC/B,QAAmB1kD,IAAf2kD,EACJ,OAAIA,EAAWj6B,SAA0B,OAAfi6B,EACjBA,EAAWj6B,QACTi6B,EAAWtkB,SAAWokB,EAAQ/+C,SAASg/C,GACzCF,EAAqBE,EAAD,GAAAv8C,OAAAk8C,IAAcI,GAAd,CAAuBC,KAE3C,MAIFF,CAAqB10C,QAD9B,IAYW80C,EAAe,SAC1B90C,GAGG,IAFHq0C,EAEGr3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAFWkyB,IACdulB,EACGz3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GADOo3C,EAEJljD,EAAQsjD,EAAgBH,EAAYr0C,IAC1C,GAAIgvB,IAAOhvB,GAAI,OAAOA,EACtB,GAAoB,OAAhB9O,EAAM0/B,MAAV,CACA,GAAI1/B,EAAM0/B,MAAO,OAAO1/B,EAAM0/B,MAc9B,OAAI1/B,EAAMq/B,QAbiB,SAArBwkB,EAAsBvjD,GAAuB,IAAlBmjD,EAAkB33C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAR,CAACgD,GACpC40C,EAAUH,EAAQjjD,EAAK6iD,GAAa,GAC1C,QAAgBnkD,IAAZ0kD,EAAJ,CACA,IAAMC,EAAaR,EAAYO,GAC/B,QAAmB1kD,IAAf2kD,EACJ,OAAIA,EAAWjkB,OAAwB,OAAfikB,EACfA,EAAWjkB,MACTikB,EAAWtkB,QACbwkB,EAAmBF,EAAD,GAAAx8C,OAAAk8C,IAAiBI,GAAjB,CAA0BC,KAE5C,MAIFG,CAAmB/0C,QAD5B,IAQWg1C,EA7HW,WAkCtB,IA/BG,IAFHX,EAEGr3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAFWkyB,IACdulB,EACGz3C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GADOo3C,EAIJa,EAAUprD,OAAO0kB,KAAK8lC,GACtBa,EAAS,IAAIzwC,IAAIwwC,GACjBE,EAAQ,IAAI1wC,IACZ2wC,EAAS,IAAI3wC,IACb4wC,EAAcd,IAAIU,GAClB7iD,EAAS,GAETkjD,EAAO,SAAPA,EAAQC,GACZ,GAAIL,EAAO5uC,IAAIivC,GAEbL,EAAM,OAAQK,GACdJ,EAAMtuB,IAAI0uB,GAEVd,EAAQc,EAAMlB,GAAarmC,QAAQsnC,GAEnCH,EAAK,OAAQI,GACbH,EAAOvuB,IAAI0uB,GAEXnjD,EAAOxI,KAAK2rD,QACP,GAAIJ,EAAM7uC,IAAIivC,GACnBzjD,QAAQkU,MAAM,0CACd5T,EAAOxI,KAAK2rD,QACP,IAAIH,EAAO9uC,IAAIivC,GAGpB,MAAM,IAAIzmD,MAAM,sCAGbumD,EAAY3rD,OAAS,GAC1B4rD,EAAKD,EAAY1E,OAKnB,OAAOv+C,EAAOmB,IAAI,SAACrK,EAAM4jD,GAAP,MAAkB,CAAE5jD,OAAM4jD,WAAUxsB,KAAK,SAAAzgB,EAAAC,GAAoD,IAA3C2F,EAA2C5F,EAAjD3W,KAAgBssD,EAAiC31C,EAAxCitC,MAAqB9zB,EAAmBlZ,EAAzB5W,KAAgBusD,EAAS31C,EAAhBgtC,MACvF4I,EAAQjB,EAAQhvC,EAAG4uC,GAAa3qD,OAChCisD,EAAQlB,EAAQz7B,EAAGq7B,GAAa3qD,OAEtC,OAAIgsD,IAAUC,GAAoB,IAAVA,GAAyB,IAAVD,EAAqBF,EAAKC,EACnD,IAAVC,GAAyB,IAAVC,GAAqB,EAC1B,IAAVA,GAAyB,IAAVD,EAAoB,OAAvC,IACCniD,IAAI,SAAAwP,GAAA,OAAAA,EAAG7Z,OA8EgB0sD,CAC1B/rD,OAAO8V,QAAQuvB,KACZ5O,KAAK,SAAA/J,EAAA7E,GAAA,IAAAO,EAAAsH,IAAAhD,EAAA,GAAMs/B,GAAN5jC,EAAA,GAAAA,EAAA,IAAAd,EAAAoI,IAAA7H,EAAA,GAAgBokC,GAAhB3kC,EAAA,GAAAA,EAAA,WAA0B0kC,GAAMA,EAAGrlB,UAAa,IAAOslB,GAAMA,EAAGtlB,UAAa,KAClFz4B,OAAO,SAACC,EAAD8S,GAAA,IAAAM,EAAAmO,IAAAzO,EAAA,GAAO9K,EAAPoL,EAAA,GAAU8hB,EAAV9hB,EAAA,UAAAzQ,EAAA,GAAuB3C,EAAvB+9C,IAAA,GAA6B/1C,EAAIktB,KAAM,KAOtC8oB,EAAYnsD,OAAO8V,QAAQuvB,KAAkBn3B,OAAO,SAACC,EAADuT,GAAiB,IAAAE,EAAA8N,IAAAhO,EAAA,GAAVvL,EAAUyL,EAAA,GAC1EmP,GAD0EnP,EAAA,GAChEyxB,EAAel9B,EAAGkvB,IAAkBklB,IACpD,OAAIx5B,EACFjgB,EAAA,GACK3C,EADL+9C,IAAA,GAEGn7B,EAAU,CACTq7B,aAAchnB,IAAgBrU,IAAY,EAC1Cs7B,cAAa,GAAA79C,OAAAk8C,IAAQv8C,EAAI4iB,IAAY5iB,EAAI4iB,GAASs7B,eAAkB,IAAvD,CAA4Dl2C,OAItEhI,GAER,IAKUwkC,EAAsB,SAAC2Z,EAAaC,EAAU1lB,GACzD,GAA2B,iBAAhBylB,IAA6BA,EAAYt6B,WAAW,MAAO,OAAOs6B,EAC7E,IAAIE,EAAc,KAF+CC,EAIpCH,EAAYj/C,MAAM,MAAM3D,IAAI,SAAAi2C,GAAG,OAAIA,EAAI+G,SAJHgG,EAAAh9B,IAAA+8B,EAAA,GAI1DE,EAJ0DD,EAAA,GAIhDE,EAJgDF,EAAA,GAUjE,OAJAF,EAAcD,EADOI,EAASrZ,UAAU,IAEpCsZ,IACFJ,EAAc1lB,qBAAWvR,OAAOyE,WAAW4yB,GAAY/lB,EAAK2lB,GAAa56B,KAEpE46B,GAOI3c,EAAY,SAACJ,EAAcod,GAAf,OAAiC1B,EAAaj9C,OAAO,SAAA4T,EAAsBna,GAAQ,IAA3BinC,EAA2B9sB,EAA3B8sB,OAAQ7d,EAAmBjP,EAAnBiP,QACjFu7B,EAAc7c,EAAa9nC,GAC3BN,EAAQsjD,EAAgBtlB,IAAiB19B,IACzCmlD,EAAOvC,EAAgB5iD,EAAK09B,KAC5B0nB,IAAgB1lD,EAAMqgC,UACtBkB,EAAUvhC,EAAMuhC,SAAWvhC,EAAM0/B,MAEnCimB,EAAkB,KAGpBA,EADED,EACgBt8B,YAAgB3f,EAAA,GAC1B89B,EAAOke,EAAK,KAAOxa,kBAAQ7C,EAAa9nC,IAAQ,WAAWiqB,KACjEw4B,EACEa,EAAatjD,IAAQ,KACrBihC,GAAW,KACXyK,EAAezK,GACfgG,EACA7d,IAGK6X,GAAWA,IAAYjhC,EACdinC,EAAOhG,IAAY0J,kBAAQ7C,EAAa7G,IAAUhX,IAElDgd,EAAO/d,IAAMyhB,kBAAQ7C,EAAa5e,IAGtD,IACMgW,EADgB5W,YAAkB+8B,GAAmB,GAC/B,GAAK,EAE7BC,EAAc,KAClB,GAAIX,EAAa,CAEf,IAAIE,EAAcF,EAClB,GAAoB,gBAAhBE,EAA+B,CAEjC,IAAMj8B,EAAS65B,EACba,EAAatjD,GACbA,EACA0rC,EAAe1rC,IAAQA,EACvBinC,EACA7d,GACA1oB,MAAM,GAAI,GACZmkD,EAAW17C,EAAA,GACN2f,YACD6hB,kBAAQ,WAAW1gB,IACnBrB,GAHO,CAKT3U,EAAG,QAE2B,iBAAhB0wC,GAA4BA,EAAYt6B,WAAW,MACnEw6B,EAAc7Z,EACZ2Z,EACA,SAAA1Z,GAAY,OAAIhE,EAAOgE,IAAiBnD,EAAamD,IACrD/L,GAE8B,iBAAhBylB,GAA4BA,EAAYt6B,WAAW,OACnEw6B,EAAcla,kBAAQka,GAAa56B,KAErCq7B,EAAWn8C,EAAA,GAAQ07C,QACd,GAAInlD,EAAK,QAEd4lD,EAAc3a,kBAAQjrC,EAAK,SAAUuqB,QAChC,CAEL,IACMs7B,EAAY7lD,EAAMypB,OADC,SAAC+V,EAAKsmB,GAAN,OAAAr8C,EAAA,GAAoBq8C,IAG7C,GAAI9lD,EAAMqgC,UACR,GAAwB,OAApBrgC,EAAMqgC,UACRulB,EAAcp7B,wBAAcm7B,GAAiBp7B,QACxC,CACL,IAAId,EAAKhgB,EAAA,GAAQ89B,EAAOke,EAAK,KACzBzlD,EAAMypB,QACRA,EAAQo8B,EAAS1sD,WAAT,GAAUqmC,GAAVr4B,OAAAk8C,IAAkBoC,EAAKpjD,IAAI,SAACyjD,GAAD,OAAAr8C,EAAA,GAAe89B,EAAOue,UAE3DF,EAAc17B,YACZy7B,EADwBl8C,EAAA,GAEnBggB,GACe,aAApBzpB,EAAMqgC,gBAKVulB,EAAcC,EAAS1sD,WAAT,GACZqmC,GADYr4B,OAAAk8C,IAEToC,EAAKpjD,IAAI,SAACyjD,GAAD,OAAAr8C,EAAA,GAAe89B,EAAOue,SAIxC,IAAKF,EACH,MAAM,IAAIhoD,MAAM,+BAAkC0C,GAGpD,IAAM0iD,EAAchjD,EAAM0pB,SAAWsiB,EAAe1rC,GAC9CylD,EAAiB/lD,EAAM0pB,QAE7B,GAAuB,OAAnBq8B,EACFH,EAAYrxC,EAAI,OACX,GAAoB,gBAAhB0wC,EACTW,EAAYrxC,EAAI,MACX,CACL,IAAMyxC,EAAmBD,QAAiD/mD,IAA/BwmD,EAAcxC,GAEnDiD,EAAiBR,EAAK,GACtBS,EAAkBD,GAAkB1e,EAAO0e,GAE5CF,IAAkBG,GAAoBlmD,EAAMqgC,WAAgC,OAAnB0lB,EAIlDG,GAAoBlD,EAK1BkD,GAAyC,IAAtBA,EAAgB3xC,EAErCqxC,EAAYrxC,EAAI,EAGhBqxC,EAAYrxC,EAAI2Z,OACd83B,EACIR,EAAcxC,IACb8B,EAAU9B,IAAgB,IAAI+B,qBAXhCa,EAAYrxC,EAHnBqxC,EAAYrxC,EAAI2xC,EAAgB3xC,EAwBpC,OAJI2Z,OAAOG,MAAMu3B,EAAYrxC,SAAwBvV,IAAlB4mD,EAAYrxC,KAC7CqxC,EAAYrxC,EAAI,GAGdyuC,EACK,CACLzb,OAAM99B,EAAA,GAAO89B,EAAPsd,IAAA,GAAgBvkD,EAAMslD,IAC5Bl8B,QAAOjgB,EAAA,GAAOigB,EAAPm7B,IAAA,GAAiB7B,EAAc4C,EAAYrxC,KAG7C,CACLgzB,OAAM99B,EAAA,GAAO89B,EAAPsd,IAAA,GAAgBvkD,EAAMslD,IAC5Bl8B,YAGH,CAAE6d,OAAQ,GAAI7d,QAAS,+LChZ1BgM,IAAQC,IACNwwB,KACA1U,KAGF,IAuEe2U,EAvEK,CAClBpuD,KADkB,WAEhB,MAAO,CACLquD,YAAa,EACbC,aAAa,IAGjB/vB,SAAU,CACRgwB,UADQ,WAEN,OAAOh5C,KAAK84C,YAAc,IAG9B16B,QAAS,CACP66B,WADO,SACKtlC,GACV,IAAMulC,EAAOl5C,KACP4f,EAAQ5f,KAAK8d,OACnB,GAAInK,EAAK6b,KAAO5P,EAAM7B,MAAMC,SAASm7B,YAArC,CACE,IAAMC,EAAWC,IAAsBC,eAAe3lC,EAAK6b,MACrD+pB,EAAcF,IAAsBC,eAAe15B,EAAM7B,MAAMC,SAASm7B,aAC9ED,EAAKlzB,MAAM,gBAAiB,eAAgB,CAAEozB,SAAUA,EAASzO,IAAK6O,aAAcJ,EAASK,KAAMF,YAAaA,EAAY5O,IAAK+O,gBAAiBH,EAAYE,WAHhK,CAMA,IAAMppC,EAAW,IAAIjB,SACrBiB,EAASf,OAAO,OAAQqE,GAExBulC,EAAKlzB,MAAM,aACXkzB,EAAKJ,cAELa,IAAoBxpC,YAAY,CAAEyP,QAAOvP,aACtC5f,KAAK,SAACmpD,GACLV,EAAKlzB,MAAM,WAAY4zB,GACvBV,EAAKW,uBACJ,SAAC1oD,GACF+nD,EAAKlzB,MAAM,gBAAiB,WAC5BkzB,EAAKW,0BAGXA,oBAzBO,WA0BL75C,KAAK84C,cACoB,IAArB94C,KAAK84C,aACP94C,KAAKgmB,MAAM,iBAGf8zB,UA/BO,WA+BM,IAAAv5C,EAAAP,KACXA,KAAK+4C,aAAc,EACnB/4C,KAAK+lB,UAAU,WACbxlB,EAAKw4C,aAAc,KAGvBgB,YArCO,SAqCMC,GAAO,IAAAlZ,GAAA,EAAAC,GAAA,EAAAC,OAAAvvC,EAAA,IAClB,QAAAwvC,EAAAC,EAAmB8Y,EAAnBznD,OAAA4uC,cAAAL,GAAAG,EAAAC,EAAAviC,QAAAyiC,MAAAN,GAAA,EAA0B,KAAfntB,EAAestB,EAAAxuC,MACxBuN,KAAKi5C,WAAWtlC,IAFA,MAAAvjB,GAAA2wC,GAAA,EAAAC,EAAA5wC,EAAA,YAAA0wC,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,KAKpBjR,OA1CO,SAAA3uB,GA0Ca,IAAVlR,EAAUkR,EAAVlR,OACR8P,KAAK+5C,YAAY7pD,EAAO8pD,SAG5Br8B,MAAO,CACL,YACA,YAEF4sB,MAAO,CACL0P,UAAa,SAAUC,GAChBl6C,KAAKg5C,WACRh5C,KAAK+5C,YAAYG,aCrEzB,IAEA37B,EAVA,SAAAC,GACEpyB,EAAQ,MAyBK+tD,EAVC/uD,OAAAszB,EAAA,EAAAtzB,CACdgvD,ECjBF,WAA0B,IAAAx7B,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAmBE,YAAA,eAAAC,MAAA,CAAkCiwB,SAAAvwB,EAAAuwB,UAAyB5vB,MAAA,CAAQnjB,MAAAwiB,EAAAgM,GAAA,2BAAyC,CAAAhM,EAAA,UAAAG,EAAA,UAA+BE,YAAA,gBAAAM,MAAA,CAAmC4C,KAAA,eAAAyd,KAAA,MAAiChhB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAo6B,UAAoGp6B,EAAAuI,KAApGpI,EAAA,UAAqDE,YAAA,WAAAM,MAAA,CAA8B4C,KAAA,YAAiBvD,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,SAAqDstB,YAAA,CAAa7N,SAAA,QAAApa,IAAA,UAAkC7E,MAAA,CAAQ4vB,SAAAvwB,EAAAuwB,SAAAt/C,KAAA,OAAAggB,SAAA,QAAwD+W,GAAA,CAAKmJ,OAAAnR,EAAAmR,UAAqBnR,EAAAuI,MAAA,IAC7lB,IDOA,EAaA5I,EATA,KAEA,MAYgC,mDEjBhC4J,IAAQC,IACNqe,KACApe,IACAgyB,KAGa,IAAAC,EAAA,CACbtoD,KAAM,WACN2rB,MAAO,CAAC,WACRlzB,KAAM,iBAAO,CACX8vD,SAAU,SACVt+C,QAAS,CAAC,GAAI,IACdu+C,aAAc,GACdC,WAAY,YAEdzxB,SAAU,CACR0xB,WADQ,WAEN,OAAO16C,KAAK8d,OAAOC,MAAMC,SAAS08B,YAEpCC,WAJQ,WAKN,OAAO36C,KAAK06C,WAAWE,aAEzBC,UAPQ,WAQN,OAAO76C,KAAK06C,WAAWI,kBAEzBC,YAVQ,WAUO,IAAAx6C,EAAAP,KAEPg7C,EAASh7C,KAAKi7C,sBACpB,MAFiB,CAAC,UAAW,QAAS,QAEtB71C,OACd,SAAAq0C,GAAI,OAAIl5C,EAAKm6C,WAAWQ,gBAAkBF,EAAOvB,EAAM,MAG3D0B,2BAjBQ,WAkBN,OAAOxgC,KAAKC,KACV5a,KAAKo7C,oBACHp7C,KAAKy6C,WACLz6C,KAAK06C,WAAWW,kBAItBC,2BAzBQ,WA0BN,OAAO3gC,KAAK+B,MACV1c,KAAKo7C,oBACHp7C,KAAKy6C,WACLz6C,KAAK06C,WAAWQ,mBAKxB98B,QAAS,CACPm9B,MADO,WAELv7C,KAAKu6C,SAAW,SAChBv6C,KAAK/D,QAAU,CAAC,GAAI,IACpB+D,KAAKw6C,aAAe,GACpBx6C,KAAKy6C,WAAa,WAEpBe,WAPO,SAOKnN,GACV,IAAMW,EAAUhvC,KAAKmjB,IAAImd,cAAT,SAAA1mC,OAAgCy0C,EAAQ,IACpDW,EACFA,EAAQzO,QAGYvgC,KAAKy7C,aAEvBz7C,KAAK+lB,UAAU,WACb/lB,KAAKw7C,WAAWnN,MAKxBoN,UArBO,WAsBL,OAAIz7C,KAAK/D,QAAQhR,OAAS+U,KAAK26C,aAC7B36C,KAAK/D,QAAQ9Q,KAAK,KACX,IAIXuwD,aA5BO,SA4BOrN,EAAOr+C,GACfgQ,KAAK/D,QAAQhR,OAAS,IACxB+U,KAAK/D,QAAQ9P,OAAOkiD,EAAO,GAC3BruC,KAAK27C,uBAGTP,oBAlCO,SAkCc3B,EAAMmC,GAEzB,OAAQnC,GACN,IAAK,UAAW,OAAQ,IAAOmC,EAAUC,IACzC,IAAK,QAAS,OAAQ,IAAOD,EAAUC,IACvC,IAAK,OAAQ,OAAQ,IAAOD,EAAUC,MAG1CZ,sBA1CO,SA0CgBxB,EAAMmC,GAE3B,OAAQnC,GACN,IAAK,UAAW,MAAO,KAAQmC,EAASC,IACxC,IAAK,QAAS,MAAO,KAAQD,EAASC,IACtC,IAAK,OAAQ,MAAO,KAAQD,EAASC,MAGzCC,mBAlDO,WAmDL97C,KAAKw6C,aACH7/B,KAAK+J,IAAI1kB,KAAKm7C,2BAA4Bn7C,KAAKw6C,cACjDx6C,KAAKw6C,aACH7/B,KAAK8J,IAAIzkB,KAAKs7C,2BAA4Bt7C,KAAKw6C,cACjDx6C,KAAK27C,sBAEPA,mBAzDO,WA0DL,IAAM/rC,EAAY5P,KAAKi7C,sBACrBj7C,KAAKy6C,WACLz6C,KAAKw6C,cAGDv+C,EAAU8/C,IAAK/7C,KAAK/D,QAAQmJ,OAAO,SAAAqK,GAAM,MAAe,KAAXA,KAC/CxT,EAAQhR,OAAS,EACnB+U,KAAKgmB,MAAM,cAAe,CAAE70B,MAAO6O,KAAK4qB,GAAG,8BAG7C5qB,KAAKgmB,MAAM,cAAe,CACxB/pB,UACA4T,SAA4B,aAAlB7P,KAAKu6C,SACf3qC,iBCzHR,IAEIosC,EAVJ,SAAoBx9B,GAClBpyB,EAAQ,MAyBK6vD,EAVC7wD,OAAAszB,EAAA,EAAAtzB,CACdkvD,ECjBQ,WAAgB,IAAA17B,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,QAAAG,EAAA,OAA+BE,YAAA,aAAwB,CAAAL,EAAAmjB,GAAAnjB,EAAA,iBAAAnP,EAAA4+B,GAA8C,OAAAtvB,EAAA,OAAiBhsB,IAAAs7C,EAAApvB,YAAA,eAAoC,CAAAF,EAAA,OAAYE,YAAA,mBAA8B,CAAAF,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA3iB,QAAAoyC,GAAAze,WAAA,mBAAsF3Q,YAAA,oBAAAM,MAAA,CAAyCzrB,GAAA,QAAAu6C,EAAA7e,KAAA,IAAA3/B,KAAA,OAAAiyC,YAAAljB,EAAAgM,GAAA,gBAAAsxB,UAAAt9B,EAAAi8B,WAA+GvrB,SAAA,CAAW78B,MAAAmsB,EAAA3iB,QAAAoyC,IAA6BznB,GAAA,CAAKmJ,OAAAnR,EAAA+8B,mBAAAQ,QAAA,SAAAn0B,GAA2D,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,MAAei1B,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAA48B,WAAAnN,KAA6BlxB,MAAA,SAAA6K,GAA0BA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA3iB,QAAAoyC,EAAArmB,EAAA93B,OAAAuC,aAAoDmsB,EAAAsI,GAAA,KAAAtI,EAAA3iB,QAAAhR,OAAA,EAAA8zB,EAAA,UAAsDE,YAAA,iDAAA2H,GAAA,CAAiEI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA88B,aAAArN,MAAiC,CAAAtvB,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,GAAAvD,EAAAuI,SAAiBvI,EAAAsI,GAAA,KAAAtI,EAAA3iB,QAAAhR,OAAA2zB,EAAA+7B,WAAA57B,EAAA,UAAiEE,YAAA,oDAAA2H,GAAA,CAAoEI,MAAApI,EAAA68B,YAAuB,CAAA18B,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,OAAAqN,KAAA,QAA2B5Q,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAkGE,YAAA,oBAA+B,CAAAF,EAAA,OAAYE,YAAA,YAAAM,MAAA,CAA+BnjB,MAAAwiB,EAAAgM,GAAA,gBAA8B,CAAA7L,EAAA,SAAcE,YAAA,SAAAM,MAAA,CAA4BuQ,IAAA,uBAA4B,CAAA/Q,EAAA,UAAe2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,SAAAgR,WAAA,aAA0E3Q,YAAA,SAAA2H,GAAA,CAA2BmJ,OAAA,UAAA/H,GAA2B,IAAAgI,EAAAC,MAAA5kC,UAAA+Z,OAAA7Z,KAAAy8B,EAAA93B,OAAA+L,QAAA,SAAA/J,GAAkF,OAAAA,EAAAg+B,WAAkBp7B,IAAA,SAAA5C,GAA+D,MAA7C,WAAAA,IAAAi+B,OAAAj+B,EAAAO,QAA0DmsB,EAAA27B,SAAAvyB,EAAA93B,OAAA2f,SAAAmgB,IAAA,IAAwEpR,EAAA+8B,sBAA0B,CAAA58B,EAAA,UAAeQ,MAAA,CAAO9sB,MAAA,WAAkB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA2EQ,MAAA,CAAO9sB,MAAA,aAAoB,CAAAmsB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAgFE,YAAA,mBAAAM,MAAA,CAAsC4C,KAAA,mBAAuB,KAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,OAA8BE,YAAA,cAAAM,MAAA,CAAiCnjB,MAAAwiB,EAAAgM,GAAA,kBAAgC,CAAA7L,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,aAAAgR,WAAA,iBAAkF3Q,YAAA,oCAAAM,MAAA,CAAyD1vB,KAAA,SAAA40B,IAAA7F,EAAAu8B,2BAAAz2B,IAAA9F,EAAA08B,4BAA0FhsB,SAAA,CAAW78B,MAAAmsB,EAAA,cAA2BgI,GAAA,CAAKmJ,OAAAnR,EAAAk9B,mBAAA3+B,MAAA,SAAA6K,GAAyDA,EAAA93B,OAAA2/B,YAAsCjR,EAAA47B,aAAAxyB,EAAA93B,OAAAuC,WAAuCmsB,EAAAsI,GAAA,KAAAnI,EAAA,SAA0BE,YAAA,sBAAiC,CAAAF,EAAA,UAAe2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,WAAAgR,WAAA,eAA8EhJ,GAAA,CAAMmJ,OAAA,UAAA/H,GAA2B,IAAAgI,EAAAC,MAAA5kC,UAAA+Z,OAAA7Z,KAAAy8B,EAAA93B,OAAA+L,QAAA,SAAA/J,GAAkF,OAAAA,EAAAg+B,WAAkBp7B,IAAA,SAAA5C,GAA+D,MAA7C,WAAAA,IAAAi+B,OAAAj+B,EAAAO,QAA0DmsB,EAAA67B,WAAAzyB,EAAA93B,OAAA2f,SAAAmgB,IAAA,IAA0EpR,EAAAk9B,sBAA0Bl9B,EAAAmjB,GAAAnjB,EAAA,qBAAA66B,GAAyC,OAAA16B,EAAA,UAAoBhsB,IAAA0mD,EAAAnqB,SAAA,CAAmB78B,MAAAgnD,IAAc,CAAA76B,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,QAAA6uB,EAAA,oCAA8F,GAAA76B,EAAAsI,GAAA,KAAAnI,EAAA,UAA8BE,YAAA,mBAAAM,MAAA,CAAsC4C,KAAA,mBAAuB,WAAAvD,EAAAuI,MACjjH,IDOY,EAa7B60B,EATiB,KAEU,MAYG,6REDhC7zB,IAAQC,IACNC,IACAyX,IACA8P,IACAgJ,KACA2D,IACA9V,KACAvC,KAGF,IAgBMsY,EAAmB,SAACzR,GACxB,OAAOpqB,OAAOoqB,EAAIrM,UAAU,EAAGqM,EAAI9/C,OAAS,KAuhB/B27C,EAphBQ,CACrBjpB,MAAO,CACL,UACA,cACA,aACA,mBACA,UACA,iBACA,uBACA,gBACA,qBACA,eACA,6BACA,gBACA,iBACA,cACA,YACA,cACA,gBACA,YACA,YACA,gBACA,uBACA,qBAEFO,WAAY,CACVu+B,cACAC,eACAC,WACAC,kBACAC,aACAvK,eACAtL,mBAEF8V,QAlCqB,WAsCnB,GAHA98C,KAAK+8C,uBACL/8C,KAAKg9C,OAAOh9C,KAAKyjB,MAAMw5B,UAEnBj9C,KAAKgvB,QAAS,CAChB,IAAMkuB,EAAal9C,KAAKyjB,MAAMw5B,SAASxqD,MAAMxH,OAC7C+U,KAAKyjB,MAAMw5B,SAASE,kBAAkBD,EAAYA,IAGhDl9C,KAAKgvB,SAAWhvB,KAAKo9C,YACvBp9C,KAAKyjB,MAAMw5B,SAAS1c,SAGxB91C,KA/CqB,WAgDnB,IACI4f,EADWrK,KAAKkqB,OAAOzR,MAAMjnB,SACN,GAEnB6rD,EAAcr9C,KAAK8d,OAAO2O,QAAQtL,aAAlCk8B,UAER,GAAIr9C,KAAKgvB,QAAS,CAChB,IAAM7B,EAAcntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAC5C9iB,EA3EsB,SAAAjJ,EAA4B+rB,GAAgB,IAAzCrwB,EAAyCsE,EAAzCtE,KAAyCwgD,EAAAl8C,EAAnCpE,kBAAmC,IAAAsgD,EAAtB,GAAsBA,EAClEC,EAAgB97C,IAAIzE,GAExBugD,EAAchI,QAAQz4C,GAEtBygD,EAAgB7T,IAAO6T,EAAe,MACtCA,EAAgBC,IAAOD,EAAe,CAAEzpD,GAAIq5B,EAAYr5B,KAExD,IAAImJ,EAAWkN,IAAIozC,EAAe,SAAC3K,GACjC,UAAAh5C,OAAWg5C,EAAU5+C,eAGvB,OAAOiJ,EAAShS,OAAS,EAAIgS,EAASpE,KAAK,KAAO,IAAM,GA+DvC4kD,CAAoB,CAAE3gD,KAAMkD,KAAKivB,YAAajyB,WAAYgD,KAAKhD,YAAcmwB,GAG5F,IAAMuwB,EAAU19C,KAAK29C,kBAAoBN,GAAwC,WAA1Br9C,KAAK29C,iBACxD39C,KAAK29C,iBACL39C,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYt2B,cAblC+mD,EAeuD59C,KAAK8d,OAAO2O,QAAQtL,aAAxDlS,EAfnB2uC,EAeEC,gBAA8BC,EAfhCF,EAegCE,mBAEtC,MAAO,CACL7D,UAAW,GACX8D,gBAAgB,EAChB5sD,MAAO,KACP6sD,SAAS,EACTvS,YAAa,EACbwS,UAAW,CACTpvC,YAAa7O,KAAKqtC,SAAW,GAC7BvzC,OAAQuQ,EACR5P,OAAQqjD,EACR9D,MAAO,GACPh+C,KAAM,GACNkiD,kBAAmB,GACnBthD,WAAY8gD,EACZzuC,eAEFkvC,MAAO,EACPC,iBAAiB,EACjBC,aAAc,OACdC,gBAAiB,KACjBpvC,QAAS,KACTqvC,gBAAgB,EAChBC,iBAAiB,EACjBrvC,eAAgB,KAGpB6Z,sWAAQ9sB,CAAA,CACNoP,MADM,WAEJ,OAAOtL,KAAK8d,OAAOC,MAAMzS,MAAMA,OAEjCmzC,iBAJM,WAKJ,OAAOz+C,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYt2B,eAE7C6nD,cAPM,WAQJ,OAAQ1+C,KAAKmhB,aAAaw9B,mBAE5BC,mBAVM,WAWJ,OAAOC,YAAU,CACfrlD,MAAK,GAAAI,OAAA6H,IACAzB,KAAK8d,OAAOC,MAAMC,SAASxkB,OAD3BiI,IAEAzB,KAAK8d,OAAOC,MAAMC,SAAS8gC,cAEhCl/B,MAAO5f,KAAK8d,UAGhBihC,eAnBM,WAoBJ,OAAOF,YAAU,CACfrlD,MAAK,GAAAI,OAAA6H,IACAzB,KAAK8d,OAAOC,MAAMC,SAASxkB,OAD3BiI,IAEAzB,KAAK8d,OAAOC,MAAMC,SAAS8gC,iBAIpCtlD,MA3BM,WA4BJ,OAAOwG,KAAK8d,OAAOC,MAAMC,SAASxkB,OAAS,IAE7CslD,YA9BM,WA+BJ,OAAO9+C,KAAK8d,OAAOC,MAAMC,SAAS8gC,aAAe,IAEnDE,aAjCM,WAkCJ,OAAOh/C,KAAKi+C,UAAUnkD,OAAO7O,QAE/Bg0D,kBApCM,WAqCJ,OAAOj/C,KAAKi+C,UAAUpvC,YAAY5jB,QAEpCi0D,kBAvCM,WAwCJ,OAAOl/C,KAAK8d,OAAOC,MAAMC,SAASmhC,WAEpCC,qBA1CM,WA2CJ,OAAOp/C,KAAKk/C,kBAAoB,GAElCG,eA7CM,WA8CJ,OAAOr/C,KAAKk/C,mBAAqBl/C,KAAKg/C,aAAeh/C,KAAKi/C,oBAE5DK,kBAhDM,WAiDJ,OAAOt/C,KAAKo/C,sBAAyBp/C,KAAKq/C,eAAiB,GAE7DV,kBAnDM,WAoDJ,OAAO3+C,KAAK8d,OAAOC,MAAMC,SAAS2gC,mBAEpCY,kBAtDM,WAuDJ,OAAOv/C,KAAKmhB,aAAaq+B,wBAE3BC,YAzDM,WA0DJ,OAAOz/C,KAAK8d,OAAOC,MAAMC,SAASyhC,aAAe,IAEnDC,cA5DM,WA6DJ,OAAO1/C,KAAK8d,OAAOC,MAAMC,SAAS2hC,QAEpCC,eA/DM,WAgEJ,OAAO5/C,KAAK8d,OAAOC,MAAMC,SAAS4hC,gBAChC5/C,KAAK8d,OAAOC,MAAMC,SAAS08B,WAAWE,aAAe,IAC/B,IAAtB56C,KAAK6/C,cAETC,gBApEM,WAqEJ,OAAO9/C,KAAK+/C,eAAiB//C,KAAK8d,OAAO2O,QAAQtL,aAAa2+B,iBAEhEE,iBAvEM,WAwEJ,OAAOhgD,KAAKo+C,iBACVp+C,KAAKi+C,UAAUjiD,MACfgE,KAAKi+C,UAAUjiD,KAAK7K,OAExB8uD,YA5EM,WA6EJ,OAAQjgD,KAAKkgD,mBAAqBlgD,KAAKkP,SAAWlP,KAAKu+C,iBAEzD4B,YA/EM,WAgFJ,MAAwC,KAAjCngD,KAAKi+C,UAAUnkD,OAAOg4C,QAAiD,IAAhC9xC,KAAKi+C,UAAUjE,MAAM/uD,QAErEm1D,uBAlFM,WAmFJ,OAAOpgD,KAAKi+C,UAAUjE,MAAM/uD,QAAU+U,KAAKqgD,YAE1CtyB,YAAW,CAAC,iBArFT,GAsFHvC,YAAS,CACV80B,aAAc,SAAAviC,GAAK,OAAIA,EAAK,UAAWuiC,iBAG3C/V,MAAO,CACL0T,UAAa,CACXsC,MAAM,EACNC,QAFW,WAGTxgD,KAAKygD,mBAIXriC,QAAS,CACPqiC,cADO,WAELzgD,KAAK0gD,cACL1gD,KAAK+8C,wBAEP4D,YALO,WAKQ,IAAApgD,EAAAP,KACPi+C,EAAYj+C,KAAKi+C,UACvBj+C,KAAKi+C,UAAY,CACfnkD,OAAQ,GACR+U,YAAa,GACbmrC,MAAO,GACPp9C,WAAYqhD,EAAUrhD,WACtBqS,YAAagvC,EAAUhvC,YACvBjT,KAAM,GACNkiD,kBAAmB,IAErBl+C,KAAKo+C,iBAAkB,EACvBp+C,KAAKyjB,MAAMo1B,aAAe74C,KAAKyjB,MAAMo1B,YAAYiB,YACjD95C,KAAK4gD,gBACD5gD,KAAK6gD,eACP7gD,KAAK+lB,UAAU,WACbxlB,EAAKkjB,MAAMw5B,SAAS1c,UAGxB,IAAIugB,EAAK9gD,KAAKmjB,IAAImd,cAAc,YAChCwgB,EAAG15B,MAAMnE,OAAS,OAClB69B,EAAG15B,MAAMnE,YAASxxB,EAClBuO,KAAK7O,MAAQ,KACT6O,KAAKkP,SAASlP,KAAK+gD,iBAEnBpyC,WA9BC,SA8BW3e,EAAOiuD,GA9BlB,IAAAjiD,EAAAglD,EAAAr3B,EAAA3pB,KAAAihD,EAAA1iD,UAAA,OAAAgN,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,UAAAsiD,EAAAh2D,OAAA,QAAAwG,IAAAwvD,EAAA,GAAAA,EAAA,GA8BoC,IACrCjhD,KAAKg+C,SAAYh+C,KAAKkhD,kBA/BrB,CAAAz1C,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,qBAgCDnhD,KAAKohD,cAhCJ,CAAA31C,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,qBAiCDnhD,KAAKw+C,gBAjCJ,CAAA/yC,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,oBAkCDnhD,KAAKqhD,gBACPrxD,EAAMk4B,kBACNl4B,EAAMsgC,mBAGJtwB,KAAKkhD,oBAAsBlhD,KAAKmgD,cAAengD,KAAKs/C,kBAvCnD,CAAA7zC,EAAA9M,KAAA,gBAAA8M,EAAA01C,OAAA,sBAyCDnhD,KAAKmgD,YAzCJ,CAAA10C,EAAA9M,KAAA,gBA0CHqB,KAAK7O,MAAQ6O,KAAK4qB,GAAG,kCA1ClBnf,EAAA01C,OAAA,qBA8CCnlD,EAAOgE,KAAKo+C,gBAAkBp+C,KAAKi+C,UAAUjiD,KAAO,IACtDgE,KAAKggD,iBA/CJ,CAAAv0C,EAAA9M,KAAA,gBAgDHqB,KAAK7O,MAAQ6O,KAAKggD,iBAhDfv0C,EAAA01C,OAAA,yBAoDLnhD,KAAKg+C,SAAU,EApDVvyC,EAAA3M,KAAA,GAAA2M,EAAA9M,KAAA,GAAA4M,EAAAvE,EAAA2E,MAuDG3L,KAAKshD,2BAvDR,QAAA71C,EAAA9M,KAAA,wBAAA8M,EAAA3M,KAAA,GAAA2M,EAAAK,GAAAL,EAAA,UAyDHzL,KAAK7O,MAAQ6O,KAAK4qB,GAAG,uCACrB5qB,KAAKg+C,SAAU,EA1DZvyC,EAAA01C,OAAA,kBA8DCH,EAAiB,CACrBlnD,OAAQmkD,EAAUnkD,OAClB+U,YAAaovC,EAAUpvC,aAAe,KACtCjS,WAAYqhD,EAAUrhD,WACtBlC,UAAWujD,EAAUxjD,KACrBsP,MAAOk0C,EAAUjE,MACjBp6B,MAAO5f,KAAK8d,OACZ9O,kBAAmBhP,KAAKgvB,QACxB/f,YAAagvC,EAAUhvC,YACvBjT,OACAmT,eAAgBnP,KAAKmP,iBAGHnP,KAAKuhD,YAAcvhD,KAAKuhD,YAAcC,IAAa7yC,YAE3DqyC,GAAgBvwD,KAAK,SAAChG,GAC3BA,EAAK0G,MAIRw4B,EAAKx4B,MAAQ1G,EAAK0G,OAHlBw4B,EAAKg3B,cACLh3B,EAAK3D,MAAM,SAAUv7B,IAIvBk/B,EAAKq0B,SAAU,IApFZ,yBAAAvyC,EAAAM,SAAA,KAAA/L,KAAA,YAuFP+gD,cAvFO,WAuFU,IAAA/2B,EAAAhqB,KACf,GAAIA,KAAKmgD,aAAqD,KAAtCngD,KAAKi+C,UAAUpvC,YAAYijC,OAGjD,OAFA9xC,KAAKkP,QAAU,CAAE/d,MAAO6O,KAAK4qB,GAAG,mCAChC5qB,KAAKu+C,gBAAiB,GAGxB,IAAMN,EAAYj+C,KAAKi+C,UACvBj+C,KAAKu+C,gBAAiB,EACtBiD,IAAa7yC,WAAW,CACtB7U,OAAQmkD,EAAUnkD,OAClB+U,YAAaovC,EAAUpvC,aAAe,KACtCjS,WAAYqhD,EAAUrhD,WACtBlC,UAAWujD,EAAUxjD,KACrBsP,MAAO,GACP6V,MAAO5f,KAAK8d,OACZ9O,kBAAmBhP,KAAKgvB,QACxB/f,YAAagvC,EAAUhvC,YACvBjT,KAAM,GACNkT,SAAS,IACRze,KAAK,SAAChG,GAGFu/B,EAAKu0B,iBACL9zD,EAAK0G,MAGR64B,EAAK9a,QAAU,CAAE/d,MAAO1G,EAAK0G,OAF7B64B,EAAK9a,QAAUzkB,KAhBnB,MAoBS,SAAC0G,GACR64B,EAAK9a,QAAU,CAAE/d,WArBnB,QAsBW,WACT64B,EAAKu0B,gBAAiB,KAG1BkD,sBAAuBC,IAAS,WAAc1hD,KAAK+gD,iBAAmB,KACtEL,YA1HO,WA2HA1gD,KAAKkP,UACVlP,KAAKu+C,gBAAiB,EACtBv+C,KAAKyhD,0BAEPE,aA/HO,WAgIL3hD,KAAKkP,QAAU,KACflP,KAAKu+C,gBAAiB,GAExBqD,cAnIO,WAoID5hD,KAAKigD,YACPjgD,KAAK2hD,eAEL3hD,KAAK+gD,iBAGTc,aA1IO,SA0IOC,GACZ9hD,KAAKi+C,UAAUjE,MAAM7uD,KAAK22D,GAC1B9hD,KAAKgmB,MAAM,SAAU,CAAE+7B,SAAS,KAElCC,gBA9IO,SA8IUF,GACf,IAAIzT,EAAQruC,KAAKi+C,UAAUjE,MAAM1Y,QAAQwgB,GACzC9hD,KAAKi+C,UAAUjE,MAAM7tD,OAAOkiD,EAAO,GACnCruC,KAAKgmB,MAAM,WAEbi8B,aAnJO,SAmJOC,EAAWC,GACvBA,EAAeA,GAAgB,GAC/BniD,KAAK7O,MAAQ6O,KAAK4qB,GAAG,qBAAuB,IAAM5qB,KAAK4qB,GAAG,gBAAkBs3B,EAAWC,IAEzFC,sBAvJO,WAwJLpiD,KAAK+9C,gBAAiB,GAExBsE,uBA1JO,WA2JLriD,KAAKgmB,MAAM,UACXhmB,KAAK+9C,gBAAiB,GAExBluD,KA9JO,SA8JDiyD,GACJ,OAAOx6B,IAAgBD,SAASy6B,EAAS/oD,WAE3CupD,MAjKO,SAiKA11D,GACLoT,KAAK0gD,cACL1gD,KAAKg9C,OAAOpwD,GACRA,EAAE21D,cAAcvI,MAAM/uD,OAAS,IAEjC2B,EAAE0jC,iBAIFtwB,KAAKi6C,UAAY,CAACrtD,EAAE21D,cAAcvI,MAAM,MAG5CwI,SA7KO,SA6KG51D,GACJA,EAAE61D,cAAgB71D,EAAE61D,aAAa9gC,MAAMxqB,SAAS,WAClDvK,EAAE0jC,iBACFtwB,KAAKi6C,UAAYrtD,EAAE61D,aAAazI,MAChC5oD,aAAa4O,KAAKs+C,iBAClBt+C,KAAKq+C,aAAe,SAGxBqE,aArLO,SAqLO91D,GAAG,IAAAo2C,EAAAhjC,KAIf5O,aAAa4O,KAAKs+C,iBAClBt+C,KAAKq+C,aAAe,OACpBr+C,KAAKs+C,gBAAkB5sD,WAAW,kBAAOsxC,EAAKqb,aAAe,QAAS,MAExEsE,SA7LO,SA6LG/1D,GACRA,EAAE61D,aAAaG,WAAa5iD,KAAKogD,uBAAyB,OAAS,OAC/DxzD,EAAE61D,cAAgB71D,EAAE61D,aAAa9gC,MAAMxqB,SAAS,WAClD/F,aAAa4O,KAAKs+C,iBAClBt+C,KAAKq+C,aAAe,SAGxBwE,kBApMO,SAoMYj2D,GAAG,IAAAs2C,EAAAljC,KACpBA,KAAK+lB,UAAU,WACbmd,EAAK8Z,OAAO9Z,EAAKzf,MAAL,aAGhBu5B,OAzMO,SAyMCpwD,GACN,IAAMsD,EAAStD,EAAEsD,QAAUtD,EAC3B,GAAMsD,aAAkBqD,OAAOuvD,QAA/B,CAGA,GAAqB,KAAjB5yD,EAAOuC,MAIT,OAHAvC,EAAOk3B,MAAMnE,OAAS,KACtBjjB,KAAKgmB,MAAM,eACXhmB,KAAKyjB,MAAM,eAAeu5B,SAI5B,IAAM+F,EAAU/iD,KAAKyjB,MAAL,KACVu/B,EAAYhjD,KAAKyjB,MAAL,OAKZw/B,EAAyB1vD,OAAO4xB,iBAAiB69B,GAAW,kBAC5DE,EAAsB1G,EAAiByG,GAEvCE,EAAcnjD,KAAKmjB,IAAIC,QAAQ,sBAC/BpjB,KAAKmjB,IAAIC,QAAQ,0BACjB7vB,OAGA6vD,EAAgB7vD,OAAO4xB,iBAAiBj1B,GAAQ,eAChDmzD,EAAmB9vD,OAAO4xB,iBAAiBj1B,GAAQ,kBAGnDozD,EAFa9G,EAAiB4G,GACd5G,EAAiB6G,GAGjCE,EAAY/G,EAAiBtsD,EAAOk3B,MAAMnE,QAoB1CugC,EAAgBL,IAAgB5vD,OAClC4vD,EAAYM,QACZN,EAAYO,UACVC,EAAiBR,IAAgB5vD,OACnC4vD,EAAYr+B,YACZq+B,EAAYp/B,aACV6/B,EAAuBJ,EAAgBG,EAG7CzzD,EAAOk3B,MAAMnE,OAAS,OACtB,IAAM4gC,EAAuBlpC,KAAK+B,MAAMxsB,EAAO4zD,aAAeR,GAC1DS,EAAY/jD,KAAKgkD,UAAYrpC,KAAK8J,IAAIo/B,EAAsB7jD,KAAKgkD,WAAaH,EAG9ElpC,KAAKq6B,IAAI+O,EAAYR,IAAc,IACrCQ,EAAYR,GAEdrzD,EAAOk3B,MAAMnE,OAAb,GAAArpB,OAAyBmqD,EAAzB,MACA/jD,KAAKgmB,MAAM,SAAU+9B,GAKrB,IAAME,EAAqBjB,EAAUj/B,aAAemgC,YAAWlB,EAAWG,GAAa/+B,IAAM8+B,EAEvFiB,EAAqBP,EAAuBK,EAC5CG,EAA2BT,EAAiBZ,EAAQh/B,aACpDsgC,EAAoBJ,EAAqBL,EAQzCU,EAHuBH,KACrBC,GACApkD,KAAKyjB,MAAMw5B,SAASsH,iBAAmBvkD,KAAKyjB,MAAMw5B,SAASxqD,MAAMxH,QAC/Bo5D,EAAoB,EACxDG,EAAe7pC,KAAKiL,MAAM49B,EAAgBc,GAE5CnB,IAAgB5vD,OAClB4vD,EAAYsB,OAAO,EAAGD,GAEtBrB,EAAYO,UAAYc,EAG1BxkD,KAAKyjB,MAAM,eAAeu5B,WAE5B0H,gBA3SO,WA4SL1kD,KAAKyjB,MAAL,SAAuB8c,QACvBvgC,KAAKyjB,MAAM,eAAekhC,qBAE5B5a,WA/SO,WAgTL/pC,KAAK7O,MAAQ,MAEfyzD,UAlTO,SAkTIhoD,GACToD,KAAKi+C,UAAUrhD,WAAaA,GAE9BioD,eArTO,WAsTL7kD,KAAKo+C,iBAAmBp+C,KAAKo+C,iBAE/B0G,QAxTO,SAwTE9oD,GACPgE,KAAKi+C,UAAUjiD,KAAOA,GAExB4kD,cA3TO,WA4TD5gD,KAAKyjB,MAAMshC,UACb/kD,KAAKyjB,MAAMshC,SAASxJ,SAGxByJ,mBAhUO,WAiULhlD,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,kBAAmBS,OAAO,KAEtE6d,oBAnUO,SAmUcxc,GACnB,IAAMW,EAAcuL,KAAKi+C,UAAUC,kBAAkBpqD,GACrD,GAAKW,GAAsC,KAAvBA,EAAYq9C,OAChC,OAAO0P,IAAalxC,oBAAoB,CAAEsP,MAAO5f,KAAK8d,OAAQhqB,KAAIW,iBAEpE6sD,wBAxUO,WAwUoB,IAAA/d,EAAAvjC,KACnBilD,EAAMjlD,KAAKi+C,UAAUjE,MAAMllD,IAAI,SAAA6e,GAAI,OAAIA,EAAK7f,KAClD,OAAO9G,QAAQ4E,IAAIqzD,EAAInwD,IAAI,SAAAhB,GAAE,OAAIyvC,EAAKjzB,oBAAoBxc,OAE5DoxD,qBA5UO,SA4UezyD,GACpBuN,KAAKw+C,gBAAkB/rD,GAEzBsqD,qBA/UO,WAgVL/8C,KAAKmP,eAAiBtX,KAAKk9C,MAAMh6B,YAEnCoqC,eAlVO,WAmVLnlD,KAAK8d,OAAO+L,SAAS,uBAAwB,cC9jBnD,IAEIu7B,EAVJ,SAAoB5mC,GAClBpyB,EAAQ,MAeNi5D,EAAYj6D,OAAAszB,EAAA,EAAAtzB,CACdk6D,ECjBQ,WAAgB,IAAA1mC,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBgI,IAAA,OAAA9H,YAAA,oBAA0C,CAAAF,EAAA,QAAaQ,MAAA,CAAOgmC,aAAA,OAAqB3+B,GAAA,CAAK4+B,OAAA,SAAAx9B,GAA0BA,EAAAsI,kBAAyBm1B,SAAA,SAAAz9B,GAAqD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+jC,SAAA36B,MAA8B,CAAAjJ,EAAA,OAAY2Q,WAAA,EAAa19B,KAAA,OAAA29B,QAAA,SAAAl9B,MAAA,SAAAmsB,EAAAy/B,aAAAzuB,WAAA,4BAAsG3Q,YAAA,iBAAAmI,MAAA,CAAuCs+B,UAAA,SAAA9mC,EAAAy/B,aAAA,iCAA6Ez3B,GAAA,CAAM++B,UAAA/mC,EAAA8jC,aAAAkD,KAAA,SAAA59B,GAA8E,OAAzBA,EAAAE,kBAAyBtJ,EAAA4jC,SAAAx6B,MAA8B,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO4C,KAAAvD,EAAAwhC,uBAAA,mBAAsD,GAAAxhC,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,cAAyB,CAAAL,EAAAd,OAAAC,MAAAzS,MAAA6hB,YAAAr1B,QAAA,WAAA8mB,EAAAq/B,UAAArhD,YAAAgiB,EAAAinC,mBAAmTjnC,EAAAuI,KAAnTpI,EAAA,QAA8HE,YAAA,oBAAAM,MAAA,CAAuC+vB,KAAA,yCAAA//C,IAAA,MAA2D,CAAAwvB,EAAA,UAAeE,YAAA,wBAAA2H,GAAA,CAAwCI,MAAApI,EAAAumC,iBAA4B,CAAAvmC,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kEAAAhM,EAAAsI,GAAA,KAAAtI,EAAAkhC,iBAAA,WAAAlhC,EAAAq/B,UAAArhD,WAAogBgiB,EAAAkhC,iBAAA,aAAAlhC,EAAAq/B,UAAArhD,YAAmZgiB,EAAAkhC,iBAAA,YAAAlhC,EAAAq/B,UAAArhD,YAAAgiB,EAAAd,OAAAC,MAAAzS,MAAA6hB,YAAAr1B,OAAAinB,EAAA,KAA8HE,YAAA,wCAAmD,CAAAF,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAA8FE,YAAA,sCAAA2H,GAAA,CAAsDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAomC,wBAAkC,CAAAjmC,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,gBAAAvD,EAAAq/B,UAAArhD,WAAAmiB,EAAA,KAAwDE,YAAA,qBAAgC,CAAAL,EAAA,cAAAG,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gDAAA7L,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAuI,KAAz6BpI,EAAA,KAAkFE,YAAA,wCAAmD,CAAAF,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAA+FE,YAAA,sCAAA2H,GAAA,CAAsDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAomC,wBAAkC,CAAAjmC,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,KAAv5BpD,EAAA,KAAqME,YAAA,wCAAmD,CAAAF,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAA6FE,YAAA,sCAAA2H,GAAA,CAAsDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAomC,wBAAkC,CAAAjmC,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,KAAy6BvD,EAAAsI,GAAA,KAAAtI,EAAAshC,eAAszBthC,EAAAuI,KAAtzBpI,EAAA,OAAsOE,YAAA,yBAAoC,CAAAF,EAAA,KAAUE,YAAA,uBAAA2H,GAAA,CAAuCI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAgjC,cAAA55B,MAAmC,CAAApJ,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAA7L,EAAA,UAA2FQ,MAAA,CAAO4C,KAAAvD,EAAAqhC,YAAA,mCAA2D,GAAArhC,EAAAsI,GAAA,KAAAnI,EAAA,OAA4B2Q,WAAA,EAAa19B,KAAA,OAAA29B,QAAA,SAAAl9B,MAAAmsB,EAAA,eAAAgR,WAAA,mBAAoF3Q,YAAA,mBAAgC,CAAAF,EAAA,UAAeE,YAAA,iBAAAM,MAAA,CAAoCqgB,KAAA,GAAAzd,KAAA,mBAAiC,KAAAvD,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,OAAyDE,YAAA,qBAAgC,CAAAL,EAAA1P,QAAwD0P,EAAA1P,QAAA,MAAA6P,EAAA,OAAwGE,YAAA,gCAA2C,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAA1P,QAAA/d,OAAA,gBAAA4tB,EAAA,iBAAsFE,YAAA,iBAAAM,MAAA,CAAoCzlB,OAAA8kB,EAAA1P,WAArU6P,EAAA,OAA2BE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAmS,GAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAknC,iBAAAlnC,EAAAq/B,UAAApvC,cAAA+P,EAAA2gC,kBAA6zB3gC,EAAAuI,KAA7zBpI,EAAA,cAA0HE,YAAA,eAAAM,MAAA,CAAkCwmC,sBAAA,GAAAC,QAAApnC,EAAAmgC,gBAAsDkH,MAAA,CAAQxzD,MAAAmsB,EAAAq/B,UAAA,YAAAiI,SAAA,SAAAC,GAA2DvnC,EAAA09B,KAAA19B,EAAAq/B,UAAA,cAAAkI,IAA4Cv2B,WAAA,0BAAqC,CAAA7Q,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAAq/B,UAAA,YAAAruB,WAAA,0BAAoG3Q,YAAA,oBAAAM,MAAA,CAAyC1vB,KAAA,OAAAiyC,YAAAljB,EAAAgM,GAAA,+BAAAukB,SAAAvwB,EAAAo/B,UAAAp/B,EAAAsiC,kBAAA1xB,KAAA,KAA8HF,SAAA,CAAW78B,MAAAmsB,EAAAq/B,UAAA,aAAoCr3B,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAAq/B,UAAA,cAAAj2B,EAAA93B,OAAAuC,aAA8DmsB,EAAAsI,GAAA,KAAAnI,EAAA,cAA0CgI,IAAA,cAAA9H,YAAA,0BAAAM,MAAA,CAA+DymC,QAAApnC,EAAAggC,mBAAAr8B,UAAA3D,EAAAwnC,qBAAAL,sBAAA,GAAAM,oBAAA,GAAAC,wBAAA1nC,EAAAyiC,cAAAkF,wBAAA,IAA2L3/B,GAAA,CAAKzJ,MAAAyB,EAAAikC,kBAAA2D,mBAAA5nC,EAAAijC,aAAA4E,wBAAA7nC,EAAAqjC,aAAAyE,MAAA9nC,EAAAsmC,sBAA4Ie,MAAA,CAAQxzD,MAAAmsB,EAAAq/B,UAAA,OAAAiI,SAAA,SAAAC,GAAsDvnC,EAAA09B,KAAA19B,EAAAq/B,UAAA,SAAAkI,IAAuCv2B,WAAA,qBAAgC,CAAA7Q,EAAA,YAAiB2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAAq/B,UAAA,OAAAruB,WAAA,qBAA0F7I,IAAA,WAAA9H,YAAA,iBAAAC,MAAA,CAAqDynC,oBAAA/nC,EAAAolC,WAAqCzkC,MAAA,CAAQuiB,YAAAljB,EAAAkjB,aAAAljB,EAAAgM,GAAA,uBAAAg8B,KAAA,IAAAC,KAAA,IAAA1X,SAAAvwB,EAAAo/B,UAAAp/B,EAAAsiC,mBAAsI5xB,SAAA,CAAW78B,MAAAmsB,EAAAq/B,UAAA,QAA+Br3B,GAAA,CAAKu1B,QAAA,UAAAn0B,GAA4B,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAei1B,EAAA8+B,SAAA9+B,EAAA++B,UAAA/+B,EAAAg/B,QAAAh/B,EAAAi/B,QAAmE,UAAeroC,EAAAyiC,eAAAziC,EAAAjQ,WAAAqZ,EAAApJ,EAAAq/B,aAA2D,SAAAj2B,GAAkB,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAei1B,EAAAi/B,QAAmCroC,EAAAjQ,WAAAqZ,EAAApJ,EAAAq/B,WAAf,MAA4D,SAAAj2B,GAAkB,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAei1B,EAAA8+B,cAAmCloC,EAAAyiC,eAAAziC,EAAAjQ,WAAAqZ,EAAApJ,EAAAq/B,YAAf,OAA2E9gC,MAAA,UAAA6K,GAA4BA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAAq/B,UAAA,SAAAj2B,EAAA93B,OAAAuC,QAAuDmsB,EAAAo+B,QAAAkK,kBAAAtoC,EAAAo+B,OAAAsF,MAAA1jC,EAAA0jC,SAA+D1jC,EAAAsI,GAAA,KAAAtI,EAAA,qBAAAG,EAAA,KAAiDE,YAAA,0BAAAC,MAAA,CAA6C/tB,MAAAytB,EAAA0gC,oBAAgC,CAAA1gC,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAygC,gBAAA,gBAAAzgC,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuoC,qBAAo+CvoC,EAAAuI,KAAp+CpI,EAAA,OAAgIE,YAAA,mBAA8B,CAAAF,EAAA,kBAAuBQ,MAAA,CAAO6nC,WAAAxoC,EAAA8/B,cAAA2I,eAAAzoC,EAAA6/B,iBAAA6I,iBAAA1oC,EAAA++B,iBAAA4J,gBAAA3oC,EAAAq/B,UAAArhD,WAAA4qD,kBAAA5oC,EAAAgmC,aAAiLhmC,EAAAsI,GAAA,KAAAtI,EAAA6gC,YAAAx0D,OAAA,EAAA8zB,EAAA,OAAqDE,YAAA,eAA0B,CAAAF,EAAA,SAAcE,YAAA,SAAAM,MAAA,CAA4BuQ,IAAA,sBAA2B,CAAA/Q,EAAA,UAAe2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAAq/B,UAAA,YAAAruB,WAAA,0BAAoG3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,qBAAyB8yB,GAAA,CAAKmJ,OAAA,SAAA/H,GAA0B,IAAAgI,EAAAC,MAAA5kC,UAAA+Z,OAAA7Z,KAAAy8B,EAAA93B,OAAA+L,QAAA,SAAA/J,GAAkF,OAAAA,EAAAg+B,WAAkBp7B,IAAA,SAAA5C,GAA+D,MAA7C,WAAAA,IAAAi+B,OAAAj+B,EAAAO,QAA0DmsB,EAAA09B,KAAA19B,EAAAq/B,UAAA,cAAAj2B,EAAA93B,OAAA2f,SAAAmgB,IAAA,OAAqGpR,EAAAmjB,GAAAnjB,EAAA,qBAAA6oC,GAA+C,OAAA1oC,EAAA,UAAoBhsB,IAAA00D,EAAAn4B,SAAA,CAAyB78B,MAAAg1D,IAAoB,CAAA7oC,EAAAsI,GAAA,qBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAA68B,EAAA,+BAAyH,GAAA7oC,EAAAsI,GAAA,KAAAnI,EAAA,UAA8BE,YAAA,mBAAAM,MAAA,CAAsC4C,KAAA,mBAAuB,KAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,SAAAtI,EAAA6gC,YAAAx0D,QAAA,eAAA2zB,EAAA6gC,YAAA,GAAA1gC,EAAA,OAA6GE,YAAA,eAA0B,CAAAF,EAAA,QAAaE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAAhM,EAAA6gC,YAAA,8BAAA7gC,EAAAuI,MAAA,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,eAAAG,EAAA,aAAwMgI,IAAA,WAAAxH,MAAA,CAAsBmoC,QAAA9oC,EAAAw/B,iBAA8Bx3B,GAAA,CAAK+gC,cAAA/oC,EAAAkmC,WAA2BlmC,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAiCgI,IAAA,SAAA9H,YAAA,eAAuC,CAAAF,EAAA,OAAYE,YAAA,oBAA+B,CAAAF,EAAA,gBAAqBgI,IAAA,cAAA9H,YAAA,oBAAAM,MAAA,CAAyDqoC,aAAAhpC,EAAAq7B,UAAA9K,SAAAvwB,EAAAwhC,wBAAiEx5B,GAAA,CAAKoyB,UAAAp6B,EAAAwjC,sBAAAyF,SAAAjpC,EAAAijC,aAAAiG,gBAAAlpC,EAAAqjC,aAAA8F,eAAAnpC,EAAAyjC,0BAA8IzjC,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BE,YAAA,6BAAAM,MAAA,CAAgDnjB,MAAAwiB,EAAAgM,GAAA,oBAAkChE,GAAA,CAAKI,MAAApI,EAAA8lC,kBAA6B,CAAA3lC,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,iBAAqB,GAAAvD,EAAAsI,GAAA,KAAAtI,EAAA,eAAAG,EAAA,UAAoDE,YAAA,4BAAAC,MAAA,CAA+CgR,SAAAtR,EAAAw/B,iBAAgC7+B,MAAA,CAAQnjB,MAAAwiB,EAAAgM,GAAA,mBAAiChE,GAAA,CAAKI,MAAApI,EAAAimC,iBAA4B,CAAA9lC,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,aAAiB,GAAAvD,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,QAAAG,EAAA,UAA0DE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAA,KAAe,CAAAvwB,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAA,kBAAAG,EAAA,UAA+GE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAA,KAAe,CAAAvwB,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAA7L,EAAA,UAAoFE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAAvwB,EAAAm/B,gBAAAn/B,EAAAwiC,eAAmDx6B,GAAA,CAAKohC,WAAA,SAAAhgC,GAA+E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAjQ,WAAAqZ,EAAApJ,EAAAq/B,YAA6Cj3B,MAAA,SAAAgB,GAA2E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAjQ,WAAAqZ,EAAApJ,EAAAq/B,cAA+C,CAAAr/B,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAA2GE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,kBAAAtI,EAAA+L,GAAA/L,EAAAztB,OAAA,YAAA4tB,EAAA,UAAsEE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,SAAeyE,GAAA,CAAKI,MAAApI,EAAAmrB,eAAwB,GAAAnrB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqCE,YAAA,eAA0BL,EAAAmjB,GAAAnjB,EAAAq/B,UAAA,eAAAtqC,GAA6C,OAAAoL,EAAA,OAAiBhsB,IAAA4gB,EAAAxf,IAAA8qB,YAAA,wBAAgD,CAAAF,EAAA,UAAeE,YAAA,wBAAA2H,GAAA,CAAwCI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAojC,gBAAAruC,MAAmC,CAAAoL,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,GAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,cAAmCQ,MAAA,CAAO9f,WAAAkU,EAAAugC,YAAA,WAA2C,OAAAt1B,EAAAd,OAAA+L,SAAA,WAAAjL,EAAAq/B,UAAAjE,QAA+DxqB,KAAA,QAAAykB,aAAA,WAAsCr1B,EAAAsI,GAAA,KAAAnI,EAAA,SAA0B2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAAq/B,UAAAC,kBAAAvqC,EAAA7f,IAAA87B,WAAA,yCAAkIrQ,MAAA,CAAS1vB,KAAA,OAAAiyC,YAAAljB,EAAAgM,GAAA,kCAAoE0E,SAAA,CAAW78B,MAAAmsB,EAAAq/B,UAAAC,kBAAAvqC,EAAA7f,KAAmD8yB,GAAA,CAAKu1B,QAAA,SAAAn0B,GAA2B,IAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,YAAei1B,EAAAsI,kBAAyBnT,MAAA,SAAA6K,GAA0BA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAAq/B,UAAAC,kBAAAvqC,EAAA7f,GAAAk0B,EAAA93B,OAAAuC,YAA0E,KAAM,GAAAmsB,EAAAsI,GAAA,KAAAtI,EAAAq/B,UAAAjE,MAAA/uD,OAAA,IAAA2zB,EAAAqpC,2BAAAlpC,EAAA,OAA+FE,YAAA,mBAA8B,CAAAF,EAAA,YAAiBknC,MAAA,CAAOxzD,MAAAmsB,EAAAq/B,UAAA,KAAAiI,SAAA,SAAAC,GAAoDvnC,EAAA09B,KAAA19B,EAAAq/B,UAAA,OAAAkI,IAAqCv2B,WAAA,mBAA8B,CAAAhR,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAuI,MAAA,MACt2W,IDOY,EAa7Bi+B,EATiB,KAEU,MAYd1lC,EAAA,EAAA2lC,EAAiB,sVEXhCl9B,IAAQC,IACNonB,IACAC,IACAC,IACAwY,KACAC,IACA1hB,MAGF,IAiHe6L,EAjHI,CACjB30B,MAAO,CACL,aACA,OACA,OACA,YACA,WACA,mBAEFlzB,KATiB,WAUf,MAAO,CACL29D,UAAWpoD,KAAK8d,OAAOC,MAAMC,SAASqqC,iBAAmBD,IACzDE,cAAetoD,KAAK8d,OAAO2O,QAAQtL,aAAaonC,SAChDC,aAAcxoD,KAAK8d,OAAO2O,QAAQtL,aAAaqnC,aAC/Cjb,SAAS,EACTkb,IAA4D,UAAvDnhC,IAAgBD,SAASrnB,KAAKP,WAAW1G,WAAyB3J,SAASQ,cAAc,OAC9F84D,WAAW,EACXC,YAAY,IAGhBzqC,WAAY,CACVC,eACAyqC,qBAEF5/B,sWAAQ9sB,CAAA,CACN2sD,eADM,WAEJ,MAAqB,SAAd7oD,KAAKwvB,MAAiC,YAAdxvB,KAAKnQ,MAEtCi5D,gBAJM,WAKJ,MAAoC,KAAhC9oD,KAAKP,WAAWhL,aAAuBuL,KAAKP,WAAWhL,YAGpDuL,KAAKP,WAAWhL,YAFduL,KAAKnQ,KAAKo7C,eAIrB8d,qBAVM,WAWJ,MAAkB,UAAd/oD,KAAKnQ,KAAyB,QAChB,UAAdmQ,KAAKnQ,KAAyB,QAChB,UAAdmQ,KAAKnQ,KAAyB,QAC3B,QAETm5D,eAhBM,WAiBJ,OAAOhpD,KAAK8d,OAAOC,MAAMC,SAASirC,oBAAsB,GAAK,eAE/Dp5D,KAnBM,WAoBJ,OAAOy3B,IAAgBD,SAASrnB,KAAKP,WAAW1G,WAElD8pB,OAtBM,WAuBJ,OAAO7iB,KAAKvF,MAAQuF,KAAKsoD,gBAAkBtoD,KAAK2oD,YAElDO,QAzBM,WA0BJ,MAAsB,SAAdlpD,KAAKnQ,OAAoBmQ,KAAKP,WAAW0pD,QAAyB,YAAdnpD,KAAKnQ,MAEnEu5D,QA5BM,WA6BJ,MAAqB,UAAdppD,KAAKwvB,MAEd65B,UA/BM,WAgCJ,MAAkB,SAAdrpD,KAAKwvB,OACY,SAAdxvB,KAAKnQ,MAAiC,UAAdmQ,KAAKnQ,MAAkC,YAAdmQ,KAAKnQ,OAE/Dy5D,SAnCM,WAwCJ,OAJiC,SAAdtpD,KAAKwvB,KAAkB,CAAC,QAAS,QAAS,SACzDxvB,KAAKmhB,aAAa6vB,kBAChB,CAAC,QAAS,SACV,CAAC,UACW75C,SAAS6I,KAAKnQ,QAE/Bk+B,YAAW,CAAC,kBAEjB3P,QAAS,CACPuQ,YADO,SAAAvtB,GACkB,IAAVlR,EAAUkR,EAAVlR,OACU,MAAnBA,EAAOm5B,SACT91B,OAAOq7B,KAAK1+B,EAAO/C,KAAM,WAG7Bo8D,UANO,SAMIv5D,GACLgQ,KAAKspD,WACPt5D,EAAMk4B,kBACNl4B,EAAMsgC,iBACNtwB,KAAKszC,WACLtzC,KAAK8d,OAAO+L,SAAS,aAAc7pB,KAAKP,cAG5C+pD,aAdO,SAcOx5D,GAAO,IAAAuQ,EAAAP,MAEhBA,KAAKmhB,aAAasoC,iBAAoBzpD,KAAK2oD,YAC7B,UAAd3oD,KAAKnQ,OAAoBmQ,KAAKmhB,aAAa6vB,kBAK1ChxC,KAAKyoD,MAAQzoD,KAAKwoD,aAChBxoD,KAAKyoD,IAAI34D,OACXkQ,KAAKyoD,IAAI34D,UAETkQ,KAAKutC,SAAU,EACfvtC,KAAKyoD,IAAIt4D,IAAM6P,KAAKP,WAAWtL,IAC/B6L,KAAKyoD,IAAI34D,OAAS,WAChByQ,EAAKgtC,SAAU,EACfhtC,EAAKooD,YAAcpoD,EAAKooD,aAI5B3oD,KAAK2oD,YAAc3oD,KAAK2oD,WAfxB3oD,KAAKupD,UAAUv5D,IAkBnB05D,YArCO,SAqCMtnC,GACX,IAAMY,EAAQZ,EAAMunC,aACd1mC,EAASb,EAAMwnC,cACrB5pD,KAAK6pD,iBAAmB7pD,KAAK6pD,gBAAgB,CAAE7mC,QAAOC,qBC5H5D,IAEA1E,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdqU,ECjBF,WACA,IAAAqqD,EACAlrC,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,eAAAG,EAAA,OAAsCG,MAAA,CAAOmqC,UAAAzqC,EAAAyqC,WAA6BziC,GAAA,CAAKI,MAAApI,EAAA2qC,YAAuB,UAAA3qC,EAAA/uB,KAAAkvB,EAAA,KAAgCE,YAAA,cAAAM,MAAA,CAAiCrvB,OAAA,SAAA/C,KAAAyxB,EAAAnf,WAAAtL,IAAAqrB,IAAAZ,EAAAnf,WAAAhL,YAAA2H,MAAAwiB,EAAAnf,WAAAhL,cAAiH,CAAAsqB,EAAA,UAAeQ,MAAA,CAAO4C,KAAAvD,EAAAmqC,wBAAiCnqC,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAnkB,KAAA,iBAAAmkB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAkqC,iBAAA,YAAAlqC,EAAAuI,OAAApI,EAAA,OAAsI2Q,WAAA,EAAa19B,KAAA,OAAA29B,QAAA,SAAAl9B,OAAAmsB,EAAAsqC,QAAAt5B,WAAA,aAAwE3Q,YAAA,aAAAC,OAAA4qC,EAAA,GAA4CA,EAAAlrC,EAAA/uB,OAAA,EAAAi6D,EAAAvc,QAAA3uB,EAAA2uB,QAAAuc,EAAA,UAAAlrC,EAAAyqC,UAAAS,EAAA,oBAAAlrC,EAAAiE,OAAAinC,IAAwI,CAAAlrC,EAAA,OAAAG,EAAA,KAAuBE,YAAA,mBAAAM,MAAA,CAAsCpyB,KAAAyxB,EAAAnf,WAAAtL,IAAAqrB,IAAAZ,EAAAnf,WAAAhL,YAAA2H,MAAAwiB,EAAAnf,WAAAhL,aAA8FmyB,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAsI,iBAAwBtI,EAAAE,kBAAyBtJ,EAAA4qC,aAAAxhC,MAAkC,CAAAjJ,EAAA,OAAYhsB,IAAA6rB,EAAAwpC,UAAAnpC,YAAA,OAAAC,MAAA,CAA4C6qC,MAAAnrC,EAAAwqC,SAAqB7pC,MAAA,CAAQpvB,IAAAyuB,EAAAwpC,aAAqBxpC,EAAAsI,GAAA,eAAAtI,EAAA/uB,KAAAkvB,EAAA,UAAkDE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,iBAAsBvD,EAAAuI,MAAA,GAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAnkB,MAAAmkB,EAAA0pC,gBAAA1pC,EAAAiE,OAAA9D,EAAA,UAAgGE,YAAA,wBAAA2H,GAAA,CAAwCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4qC,aAAAxhC,MAAkC,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,eAAAtI,EAAA/uB,MAAA+uB,EAAAiE,SAAAjE,EAAA4pC,aAAsf5pC,EAAAuI,KAAtfpI,EAAA,KAA+FE,YAAA,mBAAAC,MAAA,CAAsC2D,OAAAjE,EAAAiE,QAAAjE,EAAA4pC,cAA0CjpC,MAAA,CAAQpyB,KAAAyxB,EAAAnf,WAAAtL,IAAAjE,OAAA,UAA4C02B,GAAA,CAAKI,MAAApI,EAAA2qC,YAAuB,CAAAxqC,EAAA,cAAmBE,YAAA,QAAAM,MAAA,CAA2BypC,eAAApqC,EAAAoqC,eAAAjwD,SAAA6lB,EAAAnf,WAAA1G,SAAA5I,IAAAyuB,EAAAnf,WAAAvG,iBAAA0lB,EAAAnf,WAAAtL,IAAA61D,qBAAAprC,EAAA8qC,YAAAlqC,IAAAZ,EAAAnf,WAAAhL,gBAAyM,GAAAmqB,EAAAsI,GAAA,eAAAtI,EAAA/uB,MAAA+uB,EAAAiE,OAAkhBjE,EAAAuI,KAAlhBpI,EAAA,KAAyEE,YAAA,kBAAAC,MAAA,CAAqC6qC,MAAAnrC,EAAAwqC,SAAqB7pC,MAAA,CAAQpyB,KAAAyxB,EAAAqrC,eAAAx4D,EAAAmtB,EAAAnf,WAAAtL,KAAsDyyB,GAAA,CAAKI,MAAApI,EAAA2qC,YAAuB,CAAAxqC,EAAA,mBAAwBE,YAAA,QAAAM,MAAA,CAA2B9f,WAAAmf,EAAAnf,WAAAyqD,SAAAtrC,EAAAqrC,WAAqDrjC,GAAA,CAAKutB,KAAA,SAAAnsB,GAAwB,OAAApJ,EAAAoH,MAAA,SAAyBouB,MAAA,SAAApsB,GAA0B,OAAApJ,EAAAoH,MAAA,aAA4BpH,EAAAsI,GAAA,KAAAtI,EAAAqrC,UAAiGrrC,EAAAuI,KAAjGpI,EAAA,UAA4CE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,kBAAsB,GAAAvD,EAAAsI,GAAA,eAAAtI,EAAA/uB,KAAAkvB,EAAA,SAAuEQ,MAAA,CAAOpvB,IAAAyuB,EAAAnf,WAAAtL,IAAAqrB,IAAAZ,EAAAnf,WAAAhL,YAAA2H,MAAAwiB,EAAAnf,WAAAhL,YAAAy1D,SAAA,IAA2GtjC,GAAA,CAAKutB,KAAA,SAAAnsB,GAAwB,OAAApJ,EAAAoH,MAAA,SAAyBouB,MAAA,SAAApsB,GAA0B,OAAApJ,EAAAoH,MAAA,aAA4BpH,EAAAuI,KAAAvI,EAAAsI,GAAA,cAAAtI,EAAA/uB,MAAA+uB,EAAAnf,WAAA0pD,OAAApqC,EAAA,OAAgFE,YAAA,SAAA2H,GAAA,CAAyBI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,MAAiC,CAAApJ,EAAAnf,WAAA,UAAAsf,EAAA,OAAuCE,YAAA,SAAoB,CAAAF,EAAA,OAAYQ,MAAA,CAAOpvB,IAAAyuB,EAAAnf,WAAA0qD,eAAgCvrC,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAmCE,YAAA,QAAmB,CAAAF,EAAA,MAAAA,EAAA,KAAmBQ,MAAA,CAAOpyB,KAAAyxB,EAAAnf,WAAAtL,MAA2B,CAAAyqB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAnf,WAAA0pD,OAAA/sD,YAAAwiB,EAAAsI,GAAA,KAAAnI,EAAA,OAAwEuQ,SAAA,CAAUC,UAAA3Q,EAAA+L,GAAA/L,EAAAnf,WAAA0pD,OAAAiB,mBAAsDxrC,EAAAuI,QACp0G,IDKA,EAaA5I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,2DEbhC4rC,EAAA,CACAr4D,KAAA,UACA2rB,MAAA,kDACAlzB,KAHA,WAIA,OACA+pD,aAAA,CAAAzhD,IAAA,WAAA43C,IAAA,GACA2f,SAAA,OAGAthC,SAAA,CACAuhC,iBADA,WAEA,IAAAC,EAAAC,EAAA,EAAAC,wBAAA1qD,KAAA2qD,MAAA/3C,QACA,uBAAA5S,KAAAgsC,KACA,IAAAn0C,UAAAgJ,MAAAb,KAAAgsC,OAAA4e,eAAAJ,GACAxqD,KAAAgsC,KAAA4e,eAAAJ,KAGAhkC,QAjBA,WAkBAxmB,KAAA6qD,6BAEApkC,UApBA,WAqBAr1B,aAAA4O,KAAAsqD,WAEAlsC,QAAA,CACAysC,0BADA,WAEA,IAAA/V,EAAA,iBAAA90C,KAAA80C,aAAA90C,KAAA80C,aAAA,EACA90C,KAAAw0C,aAAAx0C,KAAA8qD,WACAC,EAAA,EAAA/qD,KAAAgsC,KAAA8I,GACAiW,EAAA,EAAA/qD,KAAAgsC,KAAA8I,GAEA90C,KAAAgrD,aACAhrD,KAAAsqD,SAAA54D,WACAsO,KAAA6qD,0BACA,IAAA7qD,KAAAgrD,uBChCAvsC,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdi/D,ECfF,WAA0B,IAAaxrC,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,QAAkBU,MAAA,CAAO0rC,SAAxFjrD,KAAwFgsC,KAAA5vC,MAAxF4D,KAAwFuqD,mBAAkD,CAA1IvqD,KAA0IknB,GAAA,OAA1IlnB,KAA0I2qB,GAA1I3qB,KAA0I4qB,GAA1I5qB,KAA0Iw0C,aAAAzhD,IAAA,CAA1IiN,KAA0Iw0C,aAAA7J,OAAA,SACpK,IDKA,EAEA,KAEA,KAEA,MAYejrB,EAAA,EAAAjB,EAAiB,uCExBhCryB,EAAA2F,EAAA2tB,EAAA,sBAAA8nB,IAAAp7C,EAAA2F,EAAA2tB,EAAA,sBAAAkoB,IAAA,IAAAsjB,EAAA9+D,EAAA,IACMw7C,EAAiB,SAACujB,GACtB,QAAc15D,IAAV05D,EAAJ,CADgC,IAExBjvC,EAAgBivC,EAAhBjvC,MAAOrsB,EAASs7D,EAATt7D,KACf,GAAqB,iBAAVqsB,EAAX,CACA,IAAMc,EAAMZ,YAAQF,GACpB,GAAW,MAAPc,EAAJ,CACA,IAAMouC,EAAU,OAAAxxD,OAAU+gB,KAAK+B,MAAMM,EAAI1qB,GAAzB,MAAAsH,OAAgC+gB,KAAK+B,MAAMM,EAAI1C,GAA/C,MAAA1gB,OAAsD+gB,KAAK+B,MAAMM,EAAIzC,GAArE,KACV8wC,EAAS,QAAAzxD,OAAW+gB,KAAK+B,MAAMM,EAAI1qB,GAA1B,MAAAsH,OAAiC+gB,KAAK+B,MAAMM,EAAI1C,GAAhD,MAAA1gB,OAAuD+gB,KAAK+B,MAAMM,EAAIzC,GAAtE,SACT+wC,EAAU,QAAA1xD,OAAW+gB,KAAK+B,MAAMM,EAAI1qB,GAA1B,MAAAsH,OAAiC+gB,KAAK+B,MAAMM,EAAI1C,GAAhD,MAAA1gB,OAAuD+gB,KAAK+B,MAAMM,EAAIzC,GAAtE,SAChB,MAAa,YAAT1qB,EACK,CACLo9B,gBAAiB,CACf,oCADe,GAAArzB,OAEZyxD,EAFY,SAAAzxD,OAGZyxD,EAHY,aAAAzxD,OAIZ0xD,EAJY,aAAA1xD,OAKZ0xD,EALY,UAMfzyD,KAAK,KACP0yD,mBAAoB,OAEJ,UAAT17D,EACF,CACLuoD,gBAAiBkT,GAED,SAATz7D,EACF,CACLo9B,gBAAiB,CACf,4BADe,GAAArzB,OAEZwxD,EAFY,SAAAxxD,OAGZwxD,EAHY,4BAKfvyD,KAAK,KACP0yD,mBAAoB,YARjB,MAaH/jB,EAAiB,SAAC1qC,GACtB,MAAO,WAAaA,EAAK9I,YACtBkB,QAAQ,MAAO,KACfA,QAAQ,KAAM,8CCnBnB,IAAAs2D,EAAA,CACA7tC,MAAA,CACA8tC,MAAA,CACA57D,KAAAogC,MACAvI,QAAA,sBAEAgkC,OAAA,CACA77D,KAAA+3B,SACAF,QAAA,SAAAikC,GAAA,OAAAA,EAAA73D,cCrBA,IAEAyqB,EAXA,SAAAC,GACEpyB,EAAQ,MAgBVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdogE,EClBF,WAA0B,IAAA5sC,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,QAAmB,CAAAL,EAAAmjB,GAAAnjB,EAAA,eAAA+sC,GAAoC,OAAA5sC,EAAA,OAAiBhsB,IAAA6rB,EAAA8sC,OAAAC,GAAA1sC,YAAA,aAA6C,CAAAL,EAAAqI,GAAA,aAAsB0kC,UAAY,KAAM/sC,EAAAsI,GAAA,SAAAtI,EAAA6sC,MAAAxgE,QAAA2zB,EAAAgtC,OAAAC,MAAA9sC,EAAA,OAAuEE,YAAA,4BAAuC,CAAAL,EAAAqI,GAAA,aAAArI,EAAAuI,MAAA,IACrX,IDQA,EAaA5I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,sCEJhC,WCdA,IAEAF,EAXA,SAAAC,GACEpyB,EAAQ,MAgBVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CDMhB,CACA66D,MAAA,CACA6F,KAAA,UACA97D,MAAA,UAEA2tB,MAAA,CACA,UACA,gBACA,aE/BA,WAA0B,IAAAiB,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAmBE,YAAA,WAAAC,MAAA,CAA8BiwB,SAAAvwB,EAAAuwB,SAAA4c,cAAAntC,EAAAmtC,gBAA4D,CAAAhtC,EAAA,SAAcQ,MAAA,CAAO1vB,KAAA,WAAAs/C,SAAAvwB,EAAAuwB,UAA0C7f,SAAA,CAAWwf,QAAAlwB,EAAAkwB,QAAAid,cAAAntC,EAAAmtC,eAAwDnlC,GAAA,CAAKmJ,OAAA,SAAA/H,GAA0B,OAAApJ,EAAAoH,MAAA,SAAAgC,EAAA93B,OAAA4+C,aAAoDlwB,EAAAsI,GAAA,KAAAnI,EAAA,KAAsBE,YAAA,uBAAiCL,EAAAsI,GAAA,KAAAtI,EAAAgtC,OAAAlkC,QAAA3I,EAAA,QAAgDE,YAAA,SAAoB,CAAAL,EAAAqI,GAAA,eAAArI,EAAAuI,QACthB,IDQA,EAaA5I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,wEEgC1Bk7B,EAAsB,CAC1BhrC,WAzDiB,SAAAvN,GAYb,IAXJwe,EAWIxe,EAXJwe,MACA9lB,EAUIsH,EAVJtH,OACA+U,EASIzN,EATJyN,YACAjS,EAQIwE,EARJxE,WACAlC,EAOI0G,EAPJ1G,UACAsB,EAMIoF,EANJpF,KAMIgwD,EAAA5qD,EALJ2I,aAKI,IAAAiiD,EALI,GAKJA,EAAAC,EAAA7qD,EAJJ4N,yBAII,IAAAi9C,OAJgBx6D,EAIhBw6D,EAAAC,EAAA9qD,EAHJ6N,mBAGI,IAAAi9C,EAHU,aAGVA,EAAAC,EAAA/qD,EAFJ8N,eAEI,IAAAi9C,KAAAC,EAAAhrD,EADJ+N,sBACI,IAAAi9C,EADa,GACbA,EACEr9C,EAAWs9C,IAAItiD,EAAO,MAE5B,OAAOtB,IAAWkG,WAAW,CAC3B9K,YAAa+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAC3C/J,SACA+U,cACAjS,aACAlC,YACAqU,WACAC,oBACAC,cACAjT,OACAkT,UACAC,mBAEC1e,KAAK,SAAChG,GASL,OARKA,EAAK0G,OAAU+d,GAClB0Q,EAAMiK,SAAS,iBAAkB,CAC/BvR,SAAU,CAAC7tB,GACXoe,SAAU,UACVyjD,iBAAiB,EACjBC,YAAY,IAGT9hE,IAtBJ,MAwBE,SAAC2F,GACN,MAAO,CACLe,MAAOf,EAAIoB,YAiBjB2e,YAZkB,SAAA9O,GAAyB,IAAtBue,EAAsBve,EAAtBue,MAAOvP,EAAehP,EAAfgP,SACtBxM,EAAc+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAClD,OAAO4E,IAAW0H,YAAY,CAAEtM,cAAawM,cAW7CC,oBAR0B,SAAAhM,GAAgC,IAA7Bsb,EAA6Btb,EAA7Bsb,MAAO9rB,EAAsBwQ,EAAtBxQ,GAAIW,EAAkB6P,EAAlB7P,YAClCoP,EAAc+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAClD,OAAO4E,IAAW6H,oBAAoB,CAAEzM,cAAa/P,KAAIW,kBAS5CklD,oCCjEf,IAsCex7B,EAtCI,CACjBR,MAAO,CACL,MACA,iBACA,WACA,iBACA,mBACA,OAEFlzB,KATiB,WAUf,MAAO,CACL+hE,SAAUxsD,KAAK8d,OAAO2O,QAAQtL,aAAaqrC,WAG/CxjC,SAAU,CACRwW,SADQ,WAEN,OAAOx/B,KAAKwsD,WAA+B,cAAlBxsD,KAAKjH,UAA4BiH,KAAK7P,IAAIurC,SAAS,WAGhFtd,QAAS,CACPquC,OADO,WAEL,IAAMrqC,EAAQpiB,KAAKyjB,MAAMtzB,IACzB,GAAKiyB,EAAL,CACApiB,KAAK0sD,kBAAoB1sD,KAAK0sD,iBAAiBtqC,GAC/C,IAAMuqC,EAAS3sD,KAAKyjB,MAAMkpC,OAC1B,GAAKA,EAAL,CACA,IAAM3pC,EAAQZ,EAAMunC,aACd1mC,EAASb,EAAMwnC,cACrB+C,EAAO3pC,MAAQA,EACf2pC,EAAO1pC,OAASA,EAChB0pC,EAAOC,WAAW,MAAMC,UAAUzqC,EAAO,EAAG,EAAGY,EAAOC,MAExD+pB,QAbO,WAcLhtC,KAAKse,gBAAkBte,KAAKse,2BCzBlC,IAEAC,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd0hE,ECjBF,WAA0B,IAAAluC,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,cAAAC,MAAA,CAAiCsgB,SAAA5gB,EAAA4gB,WAA0B,CAAA5gB,EAAA,SAAAG,EAAA,UAA8BgI,IAAA,WAAanI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAiChsB,IAAA6rB,EAAAzuB,IAAA42B,IAAA,MAAAxH,MAAA,CAA6BC,IAAAZ,EAAAY,IAAApjB,MAAAwiB,EAAAY,IAAArvB,IAAAyuB,EAAAzuB,IAAA64D,eAAApqC,EAAAoqC,gBAAgFpiC,GAAA,CAAKmmC,KAAAnuC,EAAA6tC,OAAAt7D,MAAAytB,EAAAouB,cACnW,IDOA,EAaAzuB,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,8EEjB1BuuC,EAAU,CACdC,GAAI,kBAAM7gE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVk6D,GAAI,kBAAM9gE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVm6D,GAAI,kBAAM/gE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVo6D,GAAI,kBAAMhhE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVq6D,GAAI,kBAAMjhE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVs6D,GAAI,kBAAMlhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVu6D,GAAI,kBAAMnhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVw6D,GAAI,kBAAMphE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVy6D,GAAI,kBAAMrhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV06D,GAAI,kBAAMthE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV26D,GAAI,kBAAMvhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV46D,GAAI,kBAAMxhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV66D,GAAI,kBAAMzhE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV86D,GAAI,kBAAM1hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV+6D,GAAI,kBAAM3hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVg7D,QAAS,kBAAM5hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACfi7D,GAAI,kBAAM7hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVk7D,GAAI,kBAAM9hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVm7D,GAAI,kBAAM/hE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVo7D,GAAI,kBAAMhiE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVq7D,GAAI,kBAAMjiE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVs7D,GAAI,kBAAMliE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVu7D,GAAI,kBAAMniE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVw7D,GAAI,kBAAMpiE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACVy7D,GAAI,kBAAMriE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV07D,GAAI,kBAAMtiE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV27D,GAAI,kBAAMviE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,cACV47D,QAAS,kBAAMxiE,EAAAQ,EAAA,IAAA6D,KAAArE,EAAAsG,EAAAM,KAAA,eAGX67D,EAAW,CACfC,UAAS,CAAG,MAAHl1D,aAAAkkC,GAAY1yC,OAAO0kB,KAAKk9C,KACjCtlC,QAAS,CACPqnC,GAAIC,EAAQ,MAEdC,YAAa,SAAOztC,EAAM0tC,GAAb,IAAAC,EAAA,OAAAC,EAAApoD,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,WACPquD,EAAQkC,GADD,CAAAzjD,EAAA9M,KAAA,eAAA8M,EAAA9M,KAAA,EAAAywD,EAAApoD,EAAA2E,MAEYqhD,EAAQkC,MAFpB,OAELL,EAFKpjD,EAAAG,KAGT4V,EAAK6tC,iBAAiBH,EAAUL,GAHvB,OAKXrtC,EAAK5O,OAASs8C,EALH,wBAAAzjD,EAAAM,YASA8iD,oCCtDf,IAaMxV,EAAwB,CAC5BC,eAdqB,SAAC3O,GACtB,IAAI2kB,EAEAC,EAAQ,CAAC,IAAK,MAAO,MAAO,MAAO,OACvC,OAAI5kB,EAAM,EACDA,EAAM,IAAM4kB,EAAM,IAG3BD,EAAW30C,KAAK8J,IAAI9J,KAAK+B,MAAM/B,KAAK60C,IAAI7kB,GAAOhwB,KAAK60C,IAAI,OAAQD,EAAMtkE,OAAS,GAGxE,CAAE0/C,IAFTA,EAAoD,GAA7CA,EAAMhwB,KAAKQ,IAAI,KAAMm0C,IAAWG,QAAQ,GAE5BhW,KADZ8V,EAAMD,OAMAjW,0CCDf,IAAAqW,EAAA,CACA/xC,MAAA,CACAwxB,SAAA,CACAt/C,KAAAoO,SAEA+oB,MAAA,CACAn3B,KAAA+3B,SACAF,QAAA,kBAAA16B,QAAAC,aAGAxC,KAVA,WAWA,OACAklE,UAAA,IAGAvxC,QAAA,CACAgI,QADA,WACA,IAAA7lB,EAAAP,KACAA,KAAA2vD,UAAA,EACA3vD,KAAAgnB,QAAAv2B,KAAA,WAAA8P,EAAAovD,UAAA,cCnBAlxC,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdskE,ECfF,WAA0B,IAAa7wC,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,UAAoBU,MAAA,CAAO4vB,SAA1FnvC,KAA0F2vD,UAA1F3vD,KAA0FmvC,UAAwCvoB,GAAA,CAAKI,MAAvIhnB,KAAuIomB,UAAqB,CAA5JpmB,KAA4J2vD,UAA5J3vD,KAA4J4rD,OAAA+D,SAAA,CAA5J3vD,KAA4JinB,GAAA,cAA5JjnB,KAA4JinB,GAAA,iBACtL,IDKA,EAEA,KAEA,KAEA,MAYevH,EAAA,EAAAjB,EAAiB,qDExBhC,IAAMmxC,EAAuB,CAC3B5B,QAAW,KACXY,QAAW,WAKPiB,EAAgB,CACpBnF,wBAH8B,SAAAljD,GAAI,OAAIooD,EAAqBpoD,IAASA,IAMvDqoD,0tBCPf,IAYaC,EAAe,CAC1B91B,OAAQ,GACRsB,WAAO7pC,EACPs+D,iBAAat+D,EACbu+D,uBAAmBv+D,EACnBw+D,SAAS,EACTC,uBAAuB,EAEvBC,oBAAgB1+D,EAChBw+C,gCAA4Bx+C,EAC5B2+D,UAAU,EACVjgB,iBAAiB,EACjBC,uBAAuB,EACvBU,cAAe,GACfyX,UAAU,EACVC,cAAc,EACd6H,WAAW,EACXC,qBAAqB,EACrBC,WAAW,EACXzjB,0BAA0B,EAC1B0jB,4BAA4B,EAC5BC,kBAAkB,EAClBjE,UAAU,EACVhjD,gBAAiB,MACjBwW,uBAAwB,CACtBG,SAAS,EACTljB,UAAU,EACVgjB,OAAO,EACPC,SAAS,EACTG,OAAO,EACPC,gBAAgB,EAChBF,eAAe,EACfswC,aAAa,GAEfC,sBAAsB,EACtBvvC,UAAW,GACXyM,UAAW,GACX+iC,mBAjDqBr9D,OAAO4vC,UAAU+rB,UAAY,MAAMz2D,MAAM,KAAK,GAkDnEqnD,iBAAiB,EACjB+Q,iBAAiB,EACjBxT,eAAW5rD,EACX63C,yBAAqB73C,EACrB+tD,4BAAwB/tD,EACxBosD,qBAAiBpsD,EACjBktD,uBAAmBltD,EAEnBo3C,0BAAsBp3C,EACtBu/C,mBAAmB,EACnByY,iBAAiB,EACjBqH,eAAe,EACfxf,eAAW7/C,EACXouC,mBAAepuC,EACfg+B,mBAAeh+B,EACfs/D,sBAAkBt/D,EAClBqsD,wBAAoBrsD,GAITu/D,EAA4B5lE,OAAO8V,QAAQ4uD,GACrD1qD,OAAO,SAAAhE,GAAA,IAAAC,EAAAyZ,IAAA1Z,EAAA,GAAAC,EAAA,eAA4B5P,IAA5B4P,EAAA,KACPvM,IAAI,SAAAwP,GAAA,IAAAwT,EAAAgD,IAAAxW,EAAA,GAAEvR,EAAF+kB,EAAA,GAAAA,EAAA,UAAkB/kB,IAEnBgtB,EAAS,CACbhC,MAAK7hB,EAAA,GAAO4zD,GACZrjC,QAAS,CACPwkC,cADO,SACQlzC,EAAO0O,EAAS3M,EAAWoB,GAAa,IAC7ClD,EAAa8B,EAAb9B,SACR,OAAA9hB,EAAA,GACK4zD,EADL,GAEK1kE,OAAO6xC,YACR+zB,EAA0Bl8D,IAAI,SAAA/B,GAAG,MAAI,CAACA,EAAKirB,EAASjrB,SAI1DouB,aAVO,SAUOpD,EAAO0O,EAAS3M,EAAWoB,GAEvC,OAAAhlB,EAAA,GAD0BglB,EAAlB+vC,cACR,GAEKlzC,KAITmzC,UAAW,CACTC,UADS,SACEpzC,EADF9K,GAC0B,IAAfjhB,EAAeihB,EAAfjhB,KAAMS,EAASwgB,EAATxgB,MACxBq7B,cAAI/P,EAAO/rB,EAAMS,IAEnB2+D,aAJS,SAIKrzC,EAJLvK,GAImC,IAArB1W,EAAqB0W,EAArB1W,KAAMof,EAAe1I,EAAf0I,MAAOrsB,EAAQ2jB,EAAR3jB,KAC5BpF,EAAOuV,KAAK+d,MAAMgC,OAAO8N,UAAU/wB,GACrCof,GAASrsB,EACXi+B,cAAI/P,EAAM8P,UAAW/wB,EAAM,CAAEof,MAAOA,GAASzxB,EAAKyxB,MAAOrsB,KAAMA,GAAQpF,EAAKoF,OAE5EwhE,iBAAItzC,EAAM8P,UAAW/wB,KAI3Bw0D,QAAS,CACPF,aADO,SAAA1+C,EAAArG,GACoD,IAA3Cod,EAA2C/W,EAA3C+W,OAA2C/W,EAAnCmX,SACtBJ,EAAO,eAAgB,CAAE3sB,KADgCuP,EAArBvP,KACLof,MAD0B7P,EAAf6P,MACJrsB,KADmBwc,EAARxc,QAGnDshE,UAJO,SAAAxkD,EAAAG,GAI2C,IAArC2c,EAAqC9c,EAArC8c,OAAsBz3B,GAAe2a,EAA7Bkd,SAA6B/c,EAAf9a,MAAMS,EAASqa,EAATra,MAEvC,OADAg3B,EAAO,YAAa,CAAEz3B,OAAMS,UACpBT,GACN,IAAK,QACH8sC,YAAUrsC,GACV,MACF,IAAK,cACL,IAAK,oBACH8mC,YAAW9mC,GACX,MACF,IAAK,oBACHo8D,IAASI,YAAYjvD,KAAKysB,QAAQjL,KAAM/uB,OAOnCstB,4FCnIFkB,EAAe,SAACnnB,EAAQsnB,GACnC,IAAM/W,EAAavQ,EAAOe,KAAK+lC,cACzB2wB,EAAgBz3D,EAAOgB,QAAQ8lC,cAKrC,OAJa4wB,IAAOpwC,EAAW,SAACqwC,GAC9B,OAAOpnD,EAAWlT,SAASs6D,EAAS7wB,gBAAkB2wB,EAAcp6D,SAASs6D,EAAS7wB,gDCN1Fx0C,EAAA2F,EAAA2tB,EAAA,sBAAA+B,IAAO,IAAMA,EAA0B,SAAC3B,EAAW4xC,GACjD,GAAM,iBAAkBn+D,QAA6C,YAAnCA,OAAOo+D,aAAaC,aAClD9xC,EAAUxH,SAASzO,cAAcgoD,2BAArC,CAEA,IAAMC,EAAsB,IAAIv+D,OAAOo+D,aAAaD,EAAwBt1D,MAAOs1D,GAGnFhgE,WAAWogE,EAAoBrqD,MAAMzU,KAAK8+D,GAAsB,0CCPlE1lE,EAAA2F,EAAA2tB,EAAA,sBAAAwkC,IAAO,IAAMA,EAAa,SAAbA,EAAc6N,EAAOzc,GAA6D,IAAAl0C,EAAA7C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAA7B,GAA6ByzD,EAAA5wD,EAAnDgjB,WAAmD,IAAA4tC,EAA7C,EAA6CA,EAAAC,EAAA7wD,EAA1C+iB,YAA0C,IAAA8tC,EAAnC,EAAmCA,EAAzBC,IAAyB3zD,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,KAAAA,UAAA,GACvFzS,EAAS,CACbs4B,IAAKA,EAAM2tC,EAAMI,UACjBhuC,KAAMA,EAAO4tC,EAAMK,YAErB,IAAKF,GAAiBH,IAAUx+D,OAAQ,KAAA8+D,EACFC,EAAYP,GAAxCQ,EAD8BF,EAC9BE,WAAYC,EADkBH,EAClBG,YACpB1mE,EAAOs4B,KAAO8tC,EAAgB,EAAIK,EAClCzmE,EAAOq4B,MAAQ+tC,EAAgB,EAAIM,EAGrC,GAAIT,EAAM1uC,eAAiBiyB,IAAW/hD,QAAU+hD,EAAOhvB,SAASyrC,EAAM1uC,eAAiBiyB,IAAWyc,EAAM1uC,cACtG,OAAO6gC,EAAW6N,EAAM1uC,aAAciyB,EAAQxpD,GAAQ,GAEtD,GAAIwpD,IAAW/hD,OAAQ,KAAAk/D,EACeH,EAAYhd,GAAxCid,EADaE,EACbF,WAAYC,EADCC,EACDD,YACpB1mE,EAAOs4B,KAAOmuC,EACdzmE,EAAOq4B,MAAQquC,EAEjB,OAAO1mE,GAILwmE,EAAc,SAACxR,GACnB,IAAMsC,EAAgB7vD,OAAO4xB,iBAAiB27B,GAAI,eAC5CyR,EAAa5xC,OAAOyiC,EAAc1kB,UAAU,EAAG0kB,EAAcn4D,OAAS,IACtEynE,EAAiBn/D,OAAO4xB,iBAAiB27B,GAAI,gBAGnD,MAAO,CAAEyR,aAAYC,YAFD7xC,OAAO+xC,EAAeh0B,UAAU,EAAGg0B,EAAeznE,OAAS,yDCTpE0nE,EAAgB,SAACxpD,EAAQyW,GAAT,OAAmB,IAAI5yB,QAAQ,SAACC,EAASC,GACpE0yB,EAAM7B,MAAMwL,IAAIC,kBAAkBpd,WAAW,CAAEtY,GAAIqV,IAChD1Y,KAAK,SAAC81B,GAGL,GAFA3G,EAAM6J,OAAO,yBAA0B,CAAClD,MAEpCA,EAAQ5uB,WAAc4uB,EAAQzuB,QAAUyuB,EAAQqsC,WAapD,OApCoB,SAApBC,EAAqBC,EAAS3pD,EAAQyW,GAAlB,OAA4B,IAAI5yB,QAAQ,SAACC,EAASC,GAC1EwE,WAAW,WACTkuB,EAAM7B,MAAMwL,IAAIC,kBAAkB3b,sBAAsB,CAAE/Z,GAAIqV,IAC3D1Y,KAAK,SAACmF,GAEL,OADAgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,IACjCA,IAERnF,KAAK,SAACmF,GAAD,OAAkB3I,EAAQ,CAAC2I,EAAa+B,UAAW/B,EAAag9D,UAAWh9D,EAAakC,OAAQg7D,MALxG,MAMS,SAAClmE,GAAD,OAAOM,EAAON,MACtB,OACF6D,KAAK,SAAA2Q,GAAwC,IAAAC,EAAAC,IAAAF,EAAA,GAAtCzJ,EAAsC0J,EAAA,GAA3BuK,EAA2BvK,EAAA,GAArBvJ,EAAqBuJ,EAAA,GAAbyxD,EAAazxD,EAAA,GACzC1J,GAAeG,GAAU8T,KAASknD,GAAW,IAGhDD,IAAoBC,EAAS3pD,EAAQyW,KAsB5BizC,CAAkB,EAAGtsC,EAAS3G,GAClCnvB,KAAK,WACJxD,MAbFA,SCxBO8lE,EAAA,CACbp1C,MAAO,CAAC,eAAgB,iBAAkB,eAC1ClzB,KAFa,WAGX,MAAO,CACLuoE,YAAY,IAGhBhqC,SAAU,CACRiqC,UADQ,WAEN,OAAOjzD,KAAKgzD,YAAchzD,KAAKpK,aAAa+B,WAE9CyE,MAJQ,WAKN,OAAI4D,KAAKgzD,YAAchzD,KAAKpK,aAAa+B,UAChCqI,KAAK4qB,GAAG,6BACN5qB,KAAKpK,aAAag9D,UACpB5yD,KAAK4qB,GAAG,0BAER5qB,KAAK4qB,GAAG,qBAGnBsoC,MAbQ,WAcN,OAAIlzD,KAAKgzD,WACAhzD,KAAK4qB,GAAG,6BACN5qB,KAAKpK,aAAa+B,UACpBqI,KAAKmzD,gBAAkBnzD,KAAK4qB,GAAG,uBAC7B5qB,KAAKpK,aAAag9D,UACpB5yD,KAAK4qB,GAAG,yBAER5qB,KAAK4qB,GAAG,sBAIrBxM,QAAS,CACPgI,QADO,WAELpmB,KAAKpK,aAAa+B,UAAYqI,KAAKozD,WAAapzD,KAAKqzD,UAEvDA,OAJO,WAIG,IAAA9yD,EAAAP,KACRA,KAAKgzD,YAAa,EAClBL,EAAc3yD,KAAKpK,aAAa9B,GAAIkM,KAAK8d,QAAQrtB,KAAK,WACpD8P,EAAKyyD,YAAa,KAGtBI,SAVO,WAUK,IAAAzpC,EAAA3pB,KACJ4f,EAAQ5f,KAAK8d,OACnB9d,KAAKgzD,YAAa,EDFO,SAAC7pD,EAAQyW,GAAT,OAAmB,IAAI5yB,QAAQ,SAACC,EAASC,GACtE0yB,EAAM7B,MAAMwL,IAAIC,kBAAkB9c,aAAa,CAAE5Y,GAAIqV,IAClD1Y,KAAK,SAAC81B,GACL3G,EAAM6J,OAAO,yBAA0B,CAAClD,IACxCt5B,EAAQ,CACNs5B,gBCFF+sC,CAAgBtzD,KAAKpK,aAAa9B,GAAI8rB,GAAOnvB,KAAK,WAChDk5B,EAAKqpC,YAAa,EAClBpzC,EAAM6J,OAAO,eAAgB,CAAE5gB,SAAU,UAAWM,OAAQwgB,EAAK/zB,aAAa9B,iBCnCtF2qB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd2nE,ECdF,WAA0B,IAAal0C,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,UAAoBI,YAAA,mCAAAC,MAAA,CAAsD6J,QAAzI/oB,KAAyIizD,WAAyB1zC,MAAA,CAAQ4vB,SAA1KnvC,KAA0KgzD,WAAA52D,MAA1K4D,KAA0K5D,OAA4CwqB,GAAA,CAAKI,MAA3NhnB,KAA2NomB,UAAqB,CAAhPpmB,KAAgPknB,GAAA,OAAhPlnB,KAAgP2qB,GAAhP3qB,KAAgPkzD,OAAA,SAC1Q,IDIA,EAEA,KAEA,KAEA,MAYexzC,EAAA,EAAAjB,EAAiB,sCEtBhC,IAkDemqC,EAlDS,CACtBjrC,MAAO,CAAC,aAAc,YACtBlzB,KAFsB,WAGpB,MAAO,CACL8oE,eAAe,EAEfC,UAAU,IAGdxqC,SAAU,CACRqnC,UADQ,WAEN,OAAIrwD,KAAK8d,OAAO2O,QAAQtL,aAAamvC,qBAC3BtwD,KAAKwzD,SAERxzD,KAAK8d,OAAO2O,QAAQtL,aAAakvC,YAG5CjyC,QAAS,CACPq1C,UADO,SACI7mE,GACToT,KAAK0zD,YAAY9mE,GACboT,KAAKqwD,UACPrwD,KAAKgmB,MAAM,OAAQ,CAAE2tC,SAAS,IAGhC3zD,KAAKgmB,MAAM,SAEb4tC,SATO,SASGhnE,GACRoT,KAAKgmB,MAAM,UAEb0tC,YAZO,SAYM9mE,GACX,IAAMsD,EAAStD,EAAEinE,YAAcjnE,EAAEsD,OAG5B8P,KAAKwzD,gBACwC,IAAvCtjE,EAAO4jE,6BAEZ5jE,EAAO4jE,4BAA8B,QAET,IAAvB5jE,EAAO6jE,aAEZ7jE,EAAO6jE,kBAEqB,IAAvB7jE,EAAO8jE,aACZ9jE,EAAO8jE,YAAY/oE,OAAS,IAElC+U,KAAKwzD,UAAW,cCjCtB/0C,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd6oE,ECdF,WAA0B,IAAap1C,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,SAAmBI,YAAA,QAAAM,MAAA,CAA2B20C,QAAA,WAAA/jE,IAA7G6P,KAA6GP,WAAAtL,IAAAggE,KAA7Gn0D,KAA6GqwD,UAAAnG,SAA7GlqD,KAA6GkqD,SAAA1qC,IAA7Gxf,KAA6GP,WAAAhL,YAAA2H,MAA7G4D,KAA6GP,WAAAhL,YAAA2/D,YAAA,IAAgLxtC,GAAA,CAAKytC,QAAlSr0D,KAAkSyzD,UAAArf,MAAlSp0C,KAAkS4zD,aAC5T,IDIA,EAEA,KAEA,KAEA,MAYel0C,EAAA,EAAAjB,EAAiB,iHE6BjB+zB,EAjDC,CACd70B,MAAO,CACL,cACA,OACA,YAEFlzB,KANc,WAOZ,MAAO,CACL6pE,MAAO,KAGXp2C,WAAY,CAAEo0B,oBACdtpB,SAAU,CACR49B,KADQ,WAEN,IAAK5mD,KAAK9C,YACR,MAAO,GAET,IAAM0pD,EAAO2N,IAAMv0D,KAAK9C,YAAa,GACrC,GAA0B,IAAtBwO,IAAKk7C,GAAM37D,QAAgB27D,EAAK37D,OAAS,EAAG,CAE9C,IAAMupE,EAAiB9oD,IAAKk7C,GAAM,GAC5B6N,EAAgBC,IAAU9N,GAEhC,OADAl7C,IAAK+oD,GAAetpE,KAAKqpE,GAClBC,EAET,OAAO7N,GAETkK,cAfQ,WAgBN,OAAO9wD,KAAK8d,OAAO2O,QAAQtL,aAAa2vC,gBAG5C1yC,QAAS,CACPu2C,kBADO,SACY7gE,EAAI07B,GACrBxvB,KAAKs8C,KAAKt8C,KAAKs0D,MAAOxgE,EAAI07B,IAE5BolC,SAJO,SAIGC,GACR,MAAO,CAAEC,iBAAA,GAAAl7D,OAAsB,KAAOi7D,EAAc,IAA3C,OAEXE,UAPO,SAOIjhE,EAAIkhE,GAAK,IAAAz0D,EAAAP,KACZi1D,EAAQC,IAAMF,EAAK,SAAArJ,GAAI,OAAIprD,EAAK40D,eAAexJ,EAAK73D,MAC1D,MAAO,CAAEshE,KAAI,GAAAx7D,OAAKoG,KAAKm1D,eAAerhE,GAAMmhE,EAA/B,WAEfE,eAXO,SAWSrhE,GACd,IAAM07B,EAAOxvB,KAAKs0D,MAAMxgE,GACxB,OAAO07B,EAAOA,EAAKxM,MAAQwM,EAAKvM,OAAS,YCvC/C,IAEA1E,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdiqE,ECjBF,WAA0B,IAAAz2C,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBgI,IAAA,mBAAAslB,YAAA,CAAoCrpB,MAAA,SAAgBpE,EAAAmjB,GAAAnjB,EAAA,cAAAo2C,EAAA3mB,GAAuC,OAAAtvB,EAAA,OAAiBhsB,IAAAs7C,EAAApvB,YAAA,cAAAC,MAAA,CAA2Co2C,cAAA12C,EAAAkyC,cAAAyE,aAAA32C,EAAAkyC,eAAoE1pC,MAAAxI,EAAAg2C,SAAAI,EAAA/pE,SAAkC,CAAA8zB,EAAA,OAAYE,YAAA,qBAAgCL,EAAAmjB,GAAA,WAAAtiC,GAAmC,OAAAsf,EAAA,cAAwBhsB,IAAA0M,EAAA3L,GAAAszB,MAAAxI,EAAAm2C,UAAAt1D,EAAA3L,GAAAkhE,GAAAz1C,MAAA,CAAmE20B,YAAAt1B,EAAA00B,SAAA74C,KAAAmkB,EAAAnkB,KAAAgF,aAAAw0C,cAAA,EAAAuhB,oBAAA52C,EAAA+1C,kBAAA3hE,KAAA,KAAAyM,EAAA3L,SAA2J,OAAO,IACnrB,IDOA,EAaAyqB,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,6RExBhC,IA2Ceg0B,EA3CK,CAClBzgD,KAAM,cACN2rB,MAAO,CACL,OACA,OACA,QAEFlzB,KAPkB,WAQhB,MAAO,CACLgrE,aAAa,IAGjBzsC,sWAAQ9sB,CAAA,CACNw5D,SADM,WAKJ,OAAO11D,KAAKnD,KAAKulB,QAAUpiB,KAAK21D,UAA0B,SAAd31D,KAAKwvB,MAEnDmmC,SAPM,WAQJ,OAAO31D,KAAKvF,MAAQuF,KAAK41D,gBAE3BC,eAVM,WAWJ,OAAO71D,KAAKnD,KAAKpI,aAAe,KAAKqhE,KAAK91D,KAAKnD,KAAKpI,cAEtDmhE,eAbM,WAcJ,OAAO51D,KAAKmhB,aAAaonC,WAExBx6B,YAAW,CACZ,kBAGJvH,QAhCkB,WAgCP,IAAAjmB,EAAAP,KACT,GAAIA,KAAK01D,SAAU,CACjB,IAAMK,EAAS,IAAIC,MACnBD,EAAOjmE,OAAS,WACdyQ,EAAKk1D,aAAc,GAErBM,EAAO5lE,IAAM6P,KAAKnD,KAAKulB,gBChC7B,IAEA7D,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd6qE,ECjBF,WAA0B,IAAAr3C,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,KAAyBE,YAAA,oBAAAM,MAAA,CAAuCpyB,KAAAyxB,EAAA/hB,KAAA1I,IAAAjE,OAAA,SAAAT,IAAA,aAAwD,CAAAmvB,EAAA82C,UAAA92C,EAAA62C,YAAA12C,EAAA,OAA8CE,YAAA,cAAyB,CAAAF,EAAA,OAAYQ,MAAA,CAAOpvB,IAAAyuB,EAAA/hB,KAAAulB,WAAsBxD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAmCE,YAAA,gBAA2B,CAAAF,EAAA,QAAaE,YAAA,mBAA8B,CAAAL,EAAA,SAAAG,EAAA,QAA4BE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mBAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAA/hB,KAAAq5D,eAAA,cAAAt3C,EAAAsI,GAAA,KAAAnI,EAAA,MAAyIE,YAAA,cAAyB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA/hB,KAAAT,UAAAwiB,EAAAsI,GAAA,KAAAtI,EAAA,eAAAG,EAAA,KAA4EE,YAAA,oBAA+B,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA/hB,KAAApI,gBAAAmqB,EAAAuI,YAC1vB,IDOA,EAaA5I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,sCE1BjB,IAAA03C,EAAA,CACbx4C,MAAO,CAAE,QACTqL,SAAU,CACRoE,aADQ,WAGN,IAAMC,EAAY,IAAIC,IAAIttB,KAAKlD,KAAK5I,uBACpC,SAAA0F,OAAUyzB,EAAUE,SAApB,MAAA3zB,OAAiCyzB,EAAUG,KAA3C,2BCEN,IAEAjP,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACd+qE,ECjBF,WAA0B,IAAat3C,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,iBAA4B,CAAAF,EAAA,QAAaQ,MAAA,CAAOxb,OAAA,OAAAnG,OAAhIoC,KAAgIotB,eAA2C,CAAArO,EAAA,SAAcQ,MAAA,CAAO1vB,KAAA,SAAAmC,KAAA,YAAkCs9B,SAAA,CAAW78B,MAA7OuN,KAA6OlD,KAAA9I,eAA7OgM,KAA2QknB,GAAA,KAAAnI,EAAA,SAA0BQ,MAAA,CAAO1vB,KAAA,SAAAmC,KAAA,UAAAS,MAAA,MAA5SuN,KAAyVknB,GAAA,KAAAnI,EAAA,UAA2BE,YAAA,+BAAAM,MAAA,CAAkDyH,MAAA,WAAkB,CAAxbhnB,KAAwbknB,GAAA,WAAxblnB,KAAwb2qB,GAAxb3qB,KAAwb4qB,GAAA,6CACld,IDOA,EAaArM,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,0DENjBqoB,EAjBI,CACjBnpB,MAAO,CAAC,SACRqL,SAAU,CACRotC,YADQ,WAEN,OAAOp2D,KAAKsL,MAAQtL,KAAKsL,MAAM7X,MAAM,EAAG,IAAM,KAGlDyqB,WAAY,CACVR,sBAEFU,QAAS,CACPyQ,gBADO,SACU/xB,GACf,OAAOwgB,YAAoBxgB,EAAKhJ,GAAIgJ,EAAK9I,YAAagM,KAAK8d,OAAOC,MAAMC,SAAST,+BCPvF,IAEAgB,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdirE,ECjBF,WAA0B,IAAAz3C,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,WAAsBL,EAAAmjB,GAAAnjB,EAAA,qBAAA9hB,GAAyC,OAAAiiB,EAAA,eAAyBhsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,eAAAM,MAAA,CAA8CuL,GAAAlM,EAAAiQ,gBAAA/xB,KAAgC,CAAAiiB,EAAA,cAAmBE,YAAA,eAAAM,MAAA,CAAkCziB,WAAa,KAAM,IACxV,IDOA,EAaAyhB,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,6EEdjBiB,EAAA,WAAAj1B,GACb,IAAM6rE,EAAaC,EAAa9rE,EAAK+O,OAC/Bg9D,EAAa/rE,EAAKm1B,OAAS62C,EAAahsE,EAAKm1B,OACnD,OAAO,SAAAzC,GACL,IAAMu5C,EAAYv5C,EAAM,GACxB,MAAkB,MAAdu5C,GAAqBjsE,EAAK+O,MACrB88D,EAAWn5C,GAEF,MAAdu5C,GAAqBF,EAChBA,EAAWr5C,GAEb,KAIJ,IAAMo5C,EAAe,SAAA/hE,GAAM,OAAI,SAAA2oB,GACpC,IAAMw5C,EAAWx5C,EAAMyjB,cAAcg2B,OAAO,GAC5C,OAAOpiE,EACJ4Q,OAAO,SAAAhE,GAAA,OAAAA,EAAGq/B,YAA8BG,cAAcpkC,MAAMm6D,KAC5D90C,KAAK,SAAC7a,EAAGuT,GACR,IAAIs8C,EAAS,EACTC,EAAS,EAqBb,OAlBAD,GAAU7vD,EAAEy5B,YAAYG,gBAAkB+1B,EAAW,IAAM,EAC3DG,GAAUv8C,EAAEkmB,YAAYG,gBAAkB+1B,EAAW,IAAM,EAG3DE,GAAU7vD,EAAE+vD,SAAW,IAAM,EAC7BD,GAAUv8C,EAAEw8C,SAAW,IAAM,EAG7BF,GAAU7vD,EAAEy5B,YAAYG,cAAcxjB,WAAWu5C,GAAY,GAAK,EAClEG,GAAUv8C,EAAEkmB,YAAYG,cAAcxjB,WAAWu5C,GAAY,GAAK,EAGlEE,GAAU7vD,EAAEy5B,YAAYx1C,QACxB6rE,GAAUv8C,EAAEkmB,YAAYx1C,QAKR4rE,GAFO7vD,EAAEy5B,YAAclmB,EAAEkmB,YAAc,IAAO,QAMvDg2B,EAAe,SAAAp1D,GAAyB,IAAtBwoB,EAAsBxoB,EAAtBwoB,SAAU9L,EAAY1c,EAAZ0c,MAGnCnI,EAAc,GACdohD,EAAgB,GAChBjmE,EAAU,KACVkmE,EAAmB,KAGjBC,EAAqB,SAACz+C,GAE1B,OADAw+C,GAAoBA,IACb,IAAIjqE,QAAQ,SAACC,EAASC,GAC3B6D,EAAUW,WAAW,YAJN,SAAC+mB,GAAD,OAAWoR,EAAS,cAAe,CAAEpR,WAKlD0+C,CAAW1+C,GAAOhoB,KAAKxD,GAAvB,MAAsCC,IACrC,KACH+pE,EAAmB,WACjB7lE,aAAaL,GACb9D,EAAQ,QAKd,OAAO,SAAMkwB,GAAN,IAAAw5C,EAAAS,EAAA,OAAAhI,EAAApoD,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,UACCg4D,EAAWx5C,EAAMyjB,cAAcg2B,OAAO,GACxCI,IAAkBL,EAFjB,CAAAlrD,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,SAEkCvrC,GAFlC,UAILA,EAAc,GACdohD,EAAgBL,EAKXA,EAASx/D,SAAS,KAVlB,CAAAsU,EAAA9M,KAAA,eAAA8M,EAAA9M,KAAA,EAAAywD,EAAApoD,EAAA2E,MAWGurD,EAAmBP,IAXtB,cAcCS,EAAiBr5C,EAAMzS,MAAMA,MAAMlG,OACvC,SAAAtI,GAAI,OACFA,EAAK9I,YAAY4sC,cAAcxjB,WAAWu5C,IAC1C75D,EAAK9K,KAAK4uC,cAAcxjB,WAAWu5C,KACrCljE,MAAM,EAAG,IAAIouB,KAAK,SAAC7a,EAAGuT,GACtB,IAAIs8C,EAAS,EACTC,EAAS,EAgBb,OAbAD,GAAU7vD,EAAEhT,YAAY4sC,cAAcxjB,WAAWu5C,GAAY,EAAI,EACjEG,GAAUv8C,EAAEvmB,YAAY4sC,cAAcxjB,WAAWu5C,GAAY,EAAI,EAGjEE,GAAU7vD,EAAEhV,KAAK4uC,cAAcxjB,WAAWu5C,GAAY,EAAI,EAGzB,KAFjCG,GAAUv8C,EAAEvoB,KAAK4uC,cAAcxjB,WAAWu5C,GAAY,EAAI,GAEnCE,IAGI7vD,EAAEhV,KAAOuoB,EAAEvoB,KAAO,GAAK,IACjBgV,EAAEhT,YAAcumB,EAAEvmB,YAAc,GAAK,KAIrEc,IAAI,SAAAwP,GAAA,IAAGtQ,EAAHsQ,EAAGtQ,YAAH,MAAwE,CAC7EysC,YADKn8B,EAAgB/L,eAErB8+D,WAFK/yD,EAAgCtS,KAGrC+kE,SAHKzyD,EAAsCjP,2BAI3CqrC,YAAa,IAAM1sC,EAAc,OAInC4hB,EAAcwhD,GAAkB,GA9C3B3rD,EAAA01C,OAAA,SA+CEvrC,GA/CF,yBAAAnK,EAAAM,qUC1EMurD,QAAIC,UAAU,eAAgB,CAC3CvlE,KAAM,cACN2rB,MAAO,CACL65C,kBAAmB,CACjBC,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,GAEXgwC,SAAU,CACRD,UAAU,EACV5nE,KAAM+3B,SACNF,aAASj2B,GAEXkmE,UAAW,CACTF,UAAU,EACV5nE,KAAMkE,OACN2zB,aAASj2B,GAEXmmE,eAAgB,CACdH,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,GAEXmwC,WAAY,CACVJ,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,IAGbj9B,KA7B2C,WA8BzC,MAAO,CACLqtE,OAAQ93D,KAAK4rD,OAAL,QAAoBmM,UAAU,SAAA1yD,GAAC,OAAIA,EAAE9V,QAGjDy5B,sWAAQ9sB,CAAA,CACN87D,YADM,WACS,IAAAz3D,EAAAP,KAEb,OAAIA,KAAK23D,UACA33D,KAAK4rD,OAAL,QAAoBmM,UAAU,SAAArtC,GAAI,OAAInqB,EAAKo3D,YAAcjtC,EAAK33B,MAE9DiN,KAAK83D,QAGhBG,qBATM,WAUJ,MAAmC,YAA5Bj4D,KAAKk4D,qBAEX1sC,YAAS,CACV0sC,mBAAoB,SAAAn6C,GAAK,OAAIA,EAAK,UAAWm6C,uBAGjDC,aAlD2C,WAmDrBn4D,KAAK4rD,OAAL,QAAoB5rD,KAAK83D,QAC5BvoE,MACfyQ,KAAK83D,OAAS93D,KAAK4rD,OAAL,QAAoBmM,UAAU,SAAA1yD,GAAC,OAAIA,EAAE9V,QAGvD6uB,QAAS,CACPg6C,SADO,SACG/pB,GAAO,IAAA1kB,EAAA3pB,KACf,OAAO,SAACpT,GACNA,EAAE0jC,iBACF3G,EAAK0uC,OAAOhqB,KAGhBgqB,OAPO,SAOChqB,GACuB,mBAAlBruC,KAAK03D,UACd13D,KAAK03D,SAASnsE,KAAK,KAAMyU,KAAK4rD,OAAL,QAAoBvd,GAAOt7C,KAEtDiN,KAAK83D,OAASzpB,EACVruC,KAAK43D,iBACP53D,KAAKyjB,MAAM60C,SAAS5U,UAAY,KAItC6U,OAzE2C,SAyEnCC,GAAG,IAAAxuC,EAAAhqB,KACHy4D,EAAOz4D,KAAK4rD,OAAL,QACV92D,IAAI,SAAC41B,EAAM2jB,GACV,GAAK3jB,EAAKn7B,IAAV,CACA,IAAMmpE,EAAa,CAAC,MAAO,kBACrBC,EAAiB,CAAC,eAKxB,OAJI3uC,EAAKguC,cAAgB3pB,IACvBqqB,EAAWvtE,KAAK,UAChBwtE,EAAextE,KAAK,WAElBu/B,EAAKjgC,KAAK80B,MAAM6C,MAClBo2C,EAAA,OAAAt5C,MACcy5C,EAAe9/D,KAAK,MADlC,CAAA2/D,EAAA,UAAAj5C,MAAA,CAAA4vB,SAGgBzkB,EAAKjgC,KAAK80B,MAAM4vB,SAHhCt/C,KAMW,UANX+2B,GAAA,CAAAI,MAIegD,EAAKouC,SAAS/pB,IAJ7BnvB,MAKaw5C,EAAW7/D,KAAK,MAL7B,CAAA2/D,EAAA,OAAAj5C,MAAA,CAAApvB,IAQgBu6B,EAAKjgC,KAAK80B,MAAM6C,MARhChmB,MAQ8CsuB,EAAKjgC,KAAK80B,MAAM,oBACvDmL,EAAKjgC,KAAK80B,MAAM2zC,MAAQ,GAAKxoC,EAAKjgC,KAAK80B,MAAM2zC,UAKtDsF,EAAA,OAAAt5C,MACcy5C,EAAe9/D,KAAK,MADlC,CAAA2/D,EAAA,UAAAj5C,MAAA,CAAA4vB,SAGgBzkB,EAAKjgC,KAAK80B,MAAM4vB,SAHhCt/C,KAMW,UANX+2B,GAAA,CAAAI,MAIegD,EAAKouC,SAAS/pB,IAJ7BnvB,MAKaw5C,EAAW7/D,KAAK,MAL7B,CAQQ6xB,EAAKjgC,KAAK80B,MAAM4C,KAAjBq2C,EAAAI,EAAA,GAAA15C,MAA4C,WAA5CK,MAAA,CAAAiQ,KAA4D,KAA5DyU,eAAA,EAAA9hB,KAAmFuI,EAAKjgC,KAAK80B,MAAM4C,QAA3E,GAR/Bq2C,EAAA,QAAAt5C,MASkB,QATlB,CAUSwL,EAAKjgC,KAAK80B,MAAM2zC,eAOvBoF,EAAWt4D,KAAK4rD,OAAL,QAAoB92D,IAAI,SAAC41B,EAAM2jB,GAC9C,GAAK3jB,EAAKn7B,IAAV,CACA,IAAMuoE,EAAS9tC,EAAKguC,cAAgB3pB,EAC9B1hB,EAAU,CAAEmrC,EAAS,SAAW,UAClCptC,EAAKjgC,KAAK80B,MAAMs5C,YAClBlsC,EAAQxhC,KAAK,eAEf,IAAM2tE,GAAe9uC,EAAKwtC,mBAAqBM,EAC3CptC,EACA,GAEJ,OAAA8tC,EAAA,OAAAt5C,MACcyN,GADd,CAGM3C,EAAK6tC,WAALW,EAAA,MAAAt5C,MACc,gBADd,CAC8BwL,EAAKjgC,KAAK80B,MAAM2zC,QAC1C,GAEL4F,OAKP,OAAAN,EAAA,OAAAt5C,MACc,iBAAmBlf,KAAK63D,WAAa,YAAc,aADjE,CAAAW,EAAA,OAAAt5C,MAEe,QAFf,CAGOu5C,IAHPD,EAAA,OAAAzxC,IAKa,WALb7H,MAK+B,YAAclf,KAAK43D,eAAiB,mBAAqB,IALxFloC,WAAA,EAAA19B,KAAA,mBAAAS,MAKiHuN,KAAKi4D,wBALtH,CAMOK,4FCtJXlsE,EAAA2F,EAAA2tB,EAAA,sBAAAq5C,IAAA,IAAAC,EAAA5sE,EAAA,IAAA6sE,EAAA7sE,EAAA6G,EAAA+lE,GAIMD,EAAoB,SAACt6C,GAAD,OAFE,SAACA,GAAD,OAAgBy6C,IAAWz6C,GAAcA,EAAUxiB,QAAUwiB,EAEhD06C,CAAoB16C,GAAWd,gJCS3Dy7C,EAAqB,SAACC,GACjC,OAAOC,IAAOD,EAAO,SAACvtE,EAAQytE,GAC5B,IAAM9uE,EAAO,CACX8uE,OACAC,MAAO,EACPC,IAAKF,EAAKtuE,QAGZ,GAAIa,EAAOb,OAAS,EAAG,CACrB,IAAMyuE,EAAW5tE,EAAOomD,MAExBznD,EAAK+uE,OAASE,EAASD,IACvBhvE,EAAKgvE,KAAOC,EAASD,IAErB3tE,EAAOX,KAAKuuE,GAKd,OAFA5tE,EAAOX,KAAKV,GAELqB,GACN,KAGQ6tE,EAA4B,SAAC5uB,GAGxC,IAFA,IAAIj/C,EAAS,GACT8tE,EAAc,GACT7uE,EAAI,EAAGA,EAAIggD,EAAI9/C,OAAQF,IAAK,CACnC,IAAM8uE,EAAc9uB,EAAIhgD,GAEnB6uE,IAMCC,EAAY/nB,UAAa8nB,EAAY9nB,OAK3C8nB,GAAeC,GAJb/tE,EAAOX,KAAKyuE,GACZA,EAAcC,GAPdD,EAAcC,EAgBlB,OAHID,GACF9tE,EAAOX,KAAKyuE,GAEP9tE,GAUMguE,EAPI,CACjBC,eAzD4B,SAAChvB,EAAKivB,GAClC,IAAMX,EAAQM,EAA0B5uB,GAClCkvB,EAAoBb,EAAmBC,GAE7C,OAAOj1B,IAAK61B,EAAmB,SAAA74D,GAAA,IAAGo4D,EAAHp4D,EAAGo4D,MAAOC,EAAVr4D,EAAUq4D,IAAV,OAAoBD,GAASQ,GAAOP,EAAMO,KAsDzEZ,qBACAO,4BACAO,YAhEyB,SAACnvB,EAAKovB,EAAWz5B,GAC1C,OAAOqK,EAAIt3C,MAAM,EAAG0mE,EAAUX,OAAS94B,EAAcqK,EAAIt3C,MAAM0mE,EAAUV,6BCK3EtxC,IAAQC,IACNgyC,IACAC,IACAv6B,KAKF,IAKMw6B,EAAkB,SAAC9O,GAAuB,IAAjB+O,EAAiBh8D,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAP,GACvC,GAAgB,KAAZg8D,EAAgB,OAAO/O,EAE3B,IAAMgP,EAAmBD,EAAQ35B,cAC7BC,EAAmB,GAJuBC,GAAA,EAAAC,GAAA,EAAAC,OAAAvvC,EAAA,IAK9C,QAAAwvC,EAAAC,EAAoBsqB,EAApBj5D,OAAA4uC,cAAAL,GAAAG,EAAAC,EAAAviC,QAAAyiC,MAAAN,GAAA,EAA0B,KAAftnC,EAAeynC,EAAAxuC,MAClBgoE,EAAiBjhE,EAAMinC,YAAYG,cAAcU,QAAQk5B,GAC3DC,GAAkB,IACfxqC,MAAM4O,QAAQgC,EAAiB45B,MAClC55B,EAAiB45B,GAAkB,IAErC55B,EAAiB45B,GAAgBtvE,KAAKqO,KAXI,MAAApJ,GAAA2wC,GAAA,EAAAC,EAAA5wC,EAAA,YAAA0wC,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAc9C,OAAOH,EAAiBU,QAgLXm5B,EA7KK,CAClB/8C,MAAO,CACLg9C,oBAAqB,CACnBlD,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,IAGbj9B,KARkB,WAShB,MAAO,CACL8vE,QAAS,GACTK,YAAa,SACbC,iBAAiB,EACjBC,oBAAqB,eACrBC,UAAU,EACVC,uBArCgB,GAsChBC,mBAAoB,KACpBC,6BAA6B,IAGjCh9C,WAAY,CACVi9C,cAAe,kBAAM/uE,EAAAQ,EAAA,GAAA6D,KAAArE,EAAA4G,KAAA,YACrB6pD,cAEFz+B,QAAS,CACPg9C,kBADO,SACYxuE,GACjBoT,KAAKgmB,MAAM,mBAAoBp5B,IAEjCyuE,sBAJO,SAIgBzuE,GACrBoT,KAAKgmB,MAAM,wBAAyBp5B,IAEtC0uE,QAPO,SAOE9hE,GACP,IAAM/G,EAAQ+G,EAAMu9D,SAAN,IAAAn9D,OAAqBJ,EAAMinC,YAA3B,KAA4CjnC,EAAMknC,YAChE1gC,KAAKgmB,MAAM,QAAS,CAAEu1C,UAAW9oE,EAAOsoE,SAAU/6D,KAAK+6D,YAEzDS,SAXO,SAWG5uE,GACR,IAAMsD,EAAUtD,GAAKA,EAAEsD,QAAW8P,KAAKyjB,MAAM,gBAC7CzjB,KAAKy7D,oBAAoBvrE,GACzB8P,KAAK07D,cAAcxrE,GACnB8P,KAAK27D,gBAAgBzrE,IAEvB29B,UAjBO,SAiBI96B,GAAK,IAAAwN,EAAAP,KAERokB,EADMpkB,KAAKyjB,MAAM,SAAW1wB,GAClB,GAAGo/D,UACnBnyD,KAAK47D,iBAAgB,GACrB57D,KAAK46D,YAAc7nE,EACnBiN,KAAK+lB,UAAU,WACbxlB,EAAKkjB,MAAM,gBAAgBigC,UAAYt/B,EAAM,KAGjDq3C,oBA1BO,SA0BcvrE,GACfA,EAAOwzD,WAAa,EACtB1jD,KAAK86D,oBAAsB,eAClB5qE,EAAOwzD,WAAaxzD,EAAO2rE,aAAe,EACnD77D,KAAK86D,oBAAsB,kBAE3B96D,KAAK86D,oBAAsB,mBAG/Ba,gBAnCO,SAmCUzrE,GACf,IAAM62B,EAAM/mB,KAAKyjB,MAAM,oBAAoB,GAC3C,GAAKsD,EAAL,CACA,IAAMlC,EAASkC,EAAIorC,UAAYprC,EAAIhD,aAE7B+3C,EAAiB5rE,EAAOwzD,UAAYxzD,EAAO8zB,aAC3C+3C,EAAc7rE,EAAOwzD,UACrBsY,EAAc9rE,EAAO4zD,aAOCj/B,EAASk3C,GAAeD,IAAmBE,KAJ7Cn3C,EAASi3C,EAxFf,OA0FNC,EAAc,IAI1B/7D,KAAKi8D,cAGTP,cAtDO,SAsDQxrE,GAAQ,IAAAy5B,EAAA3pB,KACfokB,EAAMl0B,EAAOwzD,UAAY,EAC/B1jD,KAAK+lB,UAAU,WACb4D,EAAKuyC,WAAW3sD,QAAQ,SAAA4sD,GACVxyC,EAAKlG,MAAM,SAAW04C,EAAMroE,IAChC,GAAGq+D,WAAa/tC,IACtBuF,EAAKixC,YAAcuB,EAAMroE,SAKjCmoE,UAjEO,WAkEaj8D,KAAKo8D,kBAAkBnxE,SAAW+U,KAAKq8D,cAAcpxE,SAMvE+U,KAAKg7D,wBAtHW,KAwHlBsB,eA1EO,WA0E8B,IAAAtyC,EAAAhqB,KAArBu8D,EAAqBh+D,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,IAAAA,UAAA,GAC9Bg+D,IACHv8D,KAAKu6D,QAAU,IAEjBv6D,KAAK+lB,UAAU,WACbiE,EAAKvG,MAAM,gBAAgBigC,UAAY,IAEtB1jD,KAAKo8D,kBAAkBnxE,SACA+U,KAAKq8D,cAAcpxE,SAClCsxE,IAG3Bv8D,KAAKg7D,uBApIW,KAsIlBwB,eAxFO,WAyFLx8D,KAAK66D,iBAAmB76D,KAAK66D,iBAE/Be,gBA3FO,SA2FUnpE,GACfuN,KAAK66D,gBAAkBpoE,IAG3B83C,MAAO,CACLgwB,QADK,WAEHv6D,KAAKk7D,6BAA8B,EACnCl7D,KAAKw7D,WACLx7D,KAAKs8D,gBAAe,KAGxBtzC,SAAU,CACRyzC,gBADQ,WAEN,OAAOz8D,KAAK66D,gBAAkB,GAAK76D,KAAK46D,aAE1C8B,kBAJQ,WAKN,OAAI18D,KAAK8d,OAAOC,MAAMC,SAAS2+C,SACtB38D,KAAK8d,OAAOC,MAAMC,SAAS2+C,SAAS1xE,OAAS,EAE/C,GAEToxE,cAVQ,WAWN,OAAO/B,EACLt6D,KAAK8d,OAAOC,MAAMC,SAAS8gC,aAAe,GAC1C9+C,KAAKu6D,UAGT6B,kBAhBQ,WAiBN,OAAOp8D,KAAKq8D,cAAc5oE,MAAM,EAAGuM,KAAKg7D,yBAE1CxmE,OAnBQ,WAoBN,IAAMooE,EAAiB58D,KAAK8d,OAAOC,MAAMC,SAASxkB,OAAS,GACrDqjE,EAAe78D,KAAKo8D,kBAE1B,MAAO,CACL,CACEtoE,GAAI,SACJ+G,KAAMmF,KAAK4qB,GAAG,gBACdzI,KAAM,aACN3tB,OAAQqoE,GAEV,CACE/oE,GAAI,WACJ+G,KAAMmF,KAAK4qB,GAAG,iBACdzI,KAAM,WACN3tB,OAAQ8lE,EAAgBsC,EAAgB58D,KAAKu6D,YAInD2B,WAtCQ,WAuCN,OAAOl8D,KAAKxL,OAAO4Q,OAAO,SAAA3S,GAAK,OAAIA,EAAM+B,OAAOvJ,OAAS,KAE3D6xE,qBAzCQ,WA0CN,OAA8D,KAAtD98D,KAAK8d,OAAOC,MAAMC,SAAS2+C,UAAY,IAAI1xE,iBCtMzD,IAEAszB,EAVA,SAAAC,GACEpyB,EAAQ,MAyBK2wE,EAVC3xE,OAAAszB,EAAA,EAAAtzB,CACd4xE,ECjBF,WAA0B,IAAAp+C,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,+CAA0D,CAAAF,EAAA,OAAYE,YAAA,WAAsB,CAAAF,EAAA,QAAaE,YAAA,cAAyBL,EAAAmjB,GAAAnjB,EAAA,gBAAAu9C,GAAqC,OAAAp9C,EAAA,QAAkBhsB,IAAAopE,EAAAroE,GAAAmrB,YAAA,kBAAAC,MAAA,CACnS44C,OAAAl5C,EAAA69C,kBAAAN,EAAAroE,GACAq7C,SAAA,IAAAgtB,EAAA3nE,OAAAvJ,QACSs0B,MAAA,CAAQnjB,MAAA+/D,EAAAthE,MAAmB+rB,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAiP,UAAAsuC,EAAAroE,OAAiC,CAAAirB,EAAA,UAAeQ,MAAA,CAAO4C,KAAAg6C,EAAAh6C,KAAA8hB,cAAA,OAAoC,KAAM,GAAArlB,EAAAsI,GAAA,KAAAtI,EAAA,qBAAAG,EAAA,QAAuDE,YAAA,mBAA8B,CAAAF,EAAA,QAAaE,YAAA,yCAAAC,MAAA,CAA4D44C,OAAAl5C,EAAAi8C,iBAA4Bt7C,MAAA,CAAQnjB,MAAAwiB,EAAAgM,GAAA,mBAAiChE,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA49C,eAAAx0C,MAAoC,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,cAAA8hB,cAAA,OAAuC,KAAArlB,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAyCE,YAAA,WAAsB,CAAAF,EAAA,OAAYE,YAAA,gBAAAC,MAAA,CAAmC2D,OAAAjE,EAAAi8C,kBAA6B,CAAA97C,EAAA,OAAYE,YAAA,gBAA2B,CAAAF,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,QAAAgR,WAAA,YAAwE3Q,YAAA,eAAAM,MAAA,CAAoC1vB,KAAA,OAAAiyC,YAAAljB,EAAAgM,GAAA,uBAAyD0E,SAAA,CAAW78B,MAAAmsB,EAAA,SAAsBgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAA27C,QAAAvyC,EAAA93B,OAAAuC,aAAkCmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BgI,IAAA,eAAA9H,YAAA,eAAAC,MAAAN,EAAAk8C,oBAAAl0C,GAAA,CAAgF69B,OAAA7lC,EAAA48C,WAAuB58C,EAAAmjB,GAAAnjB,EAAA,oBAAAu9C,GAAyC,OAAAp9C,EAAA,OAAiBhsB,IAAAopE,EAAAroE,GAAAmrB,YAAA,eAAuC,CAAAF,EAAA,MAAWgI,IAAA,SAAAo1C,EAAAroE,GAAAmpE,UAAA,EAAAh+C,YAAA,qBAAsE,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAAwxC,EAAAthE,MAAA,kBAAA+jB,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAo6B,EAAA,gBAAA3iE,GAAiH,OAAAulB,EAAA,QAAkBhsB,IAAAopE,EAAAroE,GAAA0F,EAAAinC,YAAAxhB,YAAA,aAAAM,MAAA,CAAiEnjB,MAAA5C,EAAAinC,aAA0B7Z,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAA08C,QAAA9hE,MAA4B,CAAAA,EAAAu9D,SAAAh4C,EAAA,OAA6EQ,MAAA,CAAOpvB,IAAAqJ,EAAAu9D,YAApFh4C,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAAnxB,EAAAknC,oBAA8G9hB,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBgI,IAAA,aAAAo1C,EAAAroE,GAAAmpE,UAAA,KAA0C,KAAM,GAAAr+C,EAAAsI,GAAA,KAAAnI,EAAA,OAA2BE,YAAA,aAAwB,CAAAF,EAAA,YAAiBknC,MAAA,CAAOxzD,MAAAmsB,EAAA,SAAAsnC,SAAA,SAAAC,GAA8CvnC,EAAAm8C,SAAA5U,GAAiBv2B,WAAA,aAAwB,CAAAhR,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,gBAAAG,EAAA,OAA4HE,YAAA,oBAA+B,CAAAF,EAAA,kBAAuB6H,GAAA,CAAIihC,SAAAjpC,EAAAw8C,kBAAAtT,gBAAAlpC,EAAAy8C,0BAA4E,GAAAz8C,EAAAuI,UACrwE,IDIA,EAaA5I,EATA,KAEA,MAYgC,olBEhBhC4J,IAAQC,IACN0X,KAqBF,IAyde4c,EAzdI,CACjB/+B,MAAO,CACLqoC,QAAS,CAsBPyR,UAAU,EACV5nE,KAAM+3B,UAERn1B,MAAO,CAILglE,UAAU,EACV5nE,KAAMkE,QAERmpE,kBAAmB,CAIjBzF,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,GAEXy1C,gBAAiB,CAKf1F,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,GAEXizC,oBAAqB,CAInBlD,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,GAEXnF,UAAW,CAKTk1C,UAAU,EACV5nE,KAAMkE,OACN2zB,QAAS,QAEX01C,mBAAoB,CAClB3F,UAAU,EACV5nE,KAAMoO,QACNypB,SAAS,IAGbj9B,KA1EiB,WA2Ef,MAAO,CACL0yB,WAAO1rB,EACPg6C,YAAa,EACb0S,MAAO,EACPlV,SAAS,EACTo0B,YAAa,KACbC,YAAY,EACZC,4BAA4B,EAC5BxC,UAAU,EACVyC,qBAAqB,EACrB5nD,YAAa,KAGjBsI,WAAY,CACVw8C,eAEF1xC,SAAU,CACRonC,SADQ,WAEN,OAAOpwD,KAAK8d,OAAO2O,QAAQtL,aAAaivC,UAE1CqN,gBAJQ,WAKN,OAAOz9D,KAAKipC,SACVjpC,KAAK4V,aACL5V,KAAK4V,YAAY3qB,OAAS,IACzB+U,KAAKs9D,aACLt9D,KAAKu9D,4BAEVG,YAXQ,WAYN,OAAQ19D,KAAK29D,aAAe,IAAIpE,MAAQ,IAE1CoE,YAdQ,WAeN,GAAI39D,KAAKvN,OAASuN,KAAKm+C,MAErB,OADayf,EAAW7D,eAAe/5D,KAAKvN,MAAOuN,KAAKm+C,MAAQ,IAAM,KAK5ErB,QAhHiB,WAiHf,IAAM+gB,EAAQ79D,KAAK4rD,OAAL,QACd,GAAKiS,GAA0B,IAAjBA,EAAM5yE,OAApB,CACA,IAAMkyB,EAAQ0gD,EAAM19B,KAAK,SAAAzV,GAAI,MAAI,CAAC,QAAS,YAAYvzB,SAASuzB,EAAKn7B,OAChE4tB,IACLnd,KAAKmd,MAAQA,EACbnd,KAAKg9C,SACL7/B,EAAM2gD,IAAI72D,iBAAiB,OAAQjH,KAAK+9D,QACxC5gD,EAAM2gD,IAAI72D,iBAAiB,QAASjH,KAAKg+D,SACzC7gD,EAAM2gD,IAAI72D,iBAAiB,QAASjH,KAAKi+D,SACzC9gD,EAAM2gD,IAAI72D,iBAAiB,QAASjH,KAAKk+D,SACzC/gD,EAAM2gD,IAAI72D,iBAAiB,UAAWjH,KAAKm+D,WAC3ChhD,EAAM2gD,IAAI72D,iBAAiB,QAASjH,KAAKo+D,cACzCjhD,EAAM2gD,IAAI72D,iBAAiB,gBAAiBjH,KAAKq+D,cACjDlhD,EAAM2gD,IAAI72D,iBAAiB,QAASjH,KAAKs+D,YAE3CC,UAhIiB,WAgIJ,IACHphD,EAAUnd,KAAVmd,MACJA,IACFA,EAAM2gD,IAAIp3C,oBAAoB,OAAQ1mB,KAAK+9D,QAC3C5gD,EAAM2gD,IAAIp3C,oBAAoB,QAAS1mB,KAAKg+D,SAC5C7gD,EAAM2gD,IAAIp3C,oBAAoB,QAAS1mB,KAAKi+D,SAC5C9gD,EAAM2gD,IAAIp3C,oBAAoB,QAAS1mB,KAAKk+D,SAC5C/gD,EAAM2gD,IAAIp3C,oBAAoB,UAAW1mB,KAAKm+D,WAC9ChhD,EAAM2gD,IAAIp3C,oBAAoB,QAAS1mB,KAAKo+D,cAC5CjhD,EAAM2gD,IAAIp3C,oBAAoB,gBAAiB1mB,KAAKq+D,cACpDlhD,EAAM2gD,IAAIp3C,oBAAoB,QAAS1mB,KAAKs+D,WAGhD/zB,MAAO,CACLkzB,gBAAiB,SAAUe,GACzBx+D,KAAKgmB,MAAM,QAASw4C,IAEtBd,YAAa,SAAgBe,GAAhB,IAAAC,EAAAC,EAAA,OAAApzD,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,UACL+/D,EAAYD,EAAQzzB,OAAO,GACjChrC,KAAK4V,YAAc,GACf6oD,IAAYC,EAHL,CAAAjzD,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,wBAAA11C,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIsB3L,KAAKgmD,QAAQyY,IAJnC,UAILE,EAJKlzD,EAAAG,KAMP5L,KAAK09D,cAAgBe,EANd,CAAAhzD,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,sBAOPwd,EAAmB1zE,QAAU,GAPtB,CAAAwgB,EAAA9M,KAAA,gBAAA8M,EAAA01C,OAAA,kBAQXnhD,KAAK4V,YAAcgpD,IAAKD,EAAoB,GACzC7pE,IAAI,SAAAsM,GAAA,IAAG21D,EAAH31D,EAAG21D,SAAH,OAAA76D,EAAA,GAAAoQ,IAAAlL,EAAA,eAEHqnD,IAAKsO,GAAY,OAXV,yBAAAtrD,EAAAM,SAAA,KAAA/L,OAcb4V,YAlBK,SAkBQ4oD,GACXx+D,KAAK+lB,UAAU/lB,KAAKg9C,UAGxB5+B,QAAS,CACPygD,iBADO,WAEL,IAAMC,EAAW9+D,KAAKyjB,MAAMs7C,OAAO57C,IACnC,GAAK27C,EAAL,CACA,IAAME,EAAcF,EAASx+B,cAAc,SACvC0+B,GAAaA,EAAYz+B,UAE/BokB,kBAPO,WAOc,IAAApkD,EAAAP,KACnBA,KAAKs9D,YAAa,EAClBt9D,KAAKyjB,MAAMs7C,OAAOzC,iBAClBt8D,KAAK+lB,UAAU,WACbxlB,EAAK0+D,iBACL1+D,EAAKs+D,qBAKP7+D,KAAKw9D,qBAAsB,EAC3B9rE,WAAW,WACT6O,EAAKi9D,qBAAsB,GAC1B,IAEL0B,aAtBO,WAuBLl/D,KAAKmd,MAAM2gD,IAAIv9B,QACfvgC,KAAKs9D,YAAct9D,KAAKs9D,WACpBt9D,KAAKs9D,aACPt9D,KAAKi/D,iBACLj/D,KAAKyjB,MAAMs7C,OAAOzC,iBAClBt8D,KAAK+lB,UAAU/lB,KAAK6+D,oBAGxB3pE,QA/BO,SA+BEwrC,GACP,IAAM89B,EAAWZ,EAAW1D,YAAYl6D,KAAKvN,MAAOuN,KAAK29D,YAAaj9B,GACtE1gC,KAAKgmB,MAAM,QAASw4C,GACpBx+D,KAAKm+C,MAAQ,GAEfghB,OApCO,SAAA99D,GAoCmD,IAAhDk6D,EAAgDl6D,EAAhDk6D,UAAWR,EAAqC15D,EAArC05D,SAAqCqE,EAAA/9D,EAA3Bg+D,wBAA2B,IAAAD,KAClDE,EAASt/D,KAAKvN,MAAMisC,UAAU,EAAG1+B,KAAKm+C,QAAU,GAChDohB,EAAQv/D,KAAKvN,MAAMisC,UAAU1+B,KAAKm+C,QAAU,GAgB5CqhB,EAAe,KACfC,EAAeJ,IAAqBG,EAAaljD,KAAKgjD,EAAO7rE,OAAO,KAAO6rE,EAAOr0E,QAAU+U,KAAKowD,SAAW,EAAK,IAAM,GACvHsP,EAAcL,IAAqBG,EAAaljD,KAAKijD,EAAM,KAAOv/D,KAAKowD,SAAY,IAAM,GAEzFoO,EAAW,CACfc,EACAG,EACAlE,EACAmE,EACAH,GACA1mE,KAAK,IACPmH,KAAK+6D,SAAWA,EAChB/6D,KAAKgmB,MAAM,QAASw4C,GACpB,IAAMhgC,EAAWx+B,KAAKm+C,OAASod,EAAYmE,EAAaD,GAAax0E,OAChE8vE,GACH/6D,KAAKmd,MAAM2gD,IAAIv9B,QAGjBvgC,KAAK+lB,UAAU,WAGb/lB,KAAKmd,MAAM2gD,IAAI3gB,kBAAkB3e,EAAUA,GAC3Cx+B,KAAKm+C,MAAQ3f,KAGjBmhC,YA/EO,SA+EM/yE,EAAGgzE,GACd,IAAMC,EAAM7/D,KAAK4V,YAAY3qB,QAAU,EACvC,GAAgC,IAA5B+U,KAAK09D,YAAYzyE,SACjB40E,EAAM,GAAKD,GAAY,CACzB,IACMl/B,GADmBk/B,GAAc5/D,KAAK4V,YAAY5V,KAAKyrC,cACxB/K,YAC/B89B,EAAWZ,EAAW1D,YAAYl6D,KAAKvN,MAAOuN,KAAK29D,YAAaj9B,GACtE1gC,KAAKgmB,MAAM,QAASw4C,GACpBx+D,KAAKyrC,YAAc,EACnB,IAAMjN,EAAWx+B,KAAK29D,YAAYnE,MAAQ94B,EAAYz1C,OAEtD+U,KAAK+lB,UAAU,WAEb/lB,KAAKmd,MAAM2gD,IAAIv9B,QAEfvgC,KAAKmd,MAAM2gD,IAAI3gB,kBAAkB3e,EAAUA,GAC3Cx+B,KAAKm+C,MAAQ3f,IAEf5xC,EAAE0jC,mBAGNwvC,cApGO,SAoGQlzE,IACDoT,KAAK4V,YAAY3qB,QAAU,GAC7B,GACR+U,KAAKyrC,aAAe,EAChBzrC,KAAKyrC,YAAc,IACrBzrC,KAAKyrC,YAAczrC,KAAK4V,YAAY3qB,OAAS,GAE/C2B,EAAE0jC,kBAEFtwB,KAAKyrC,YAAc,GAGvBs0B,aAhHO,SAgHOnzE,GACZ,IAAMizE,EAAM7/D,KAAK4V,YAAY3qB,QAAU,EACnC40E,EAAM,GACR7/D,KAAKyrC,aAAe,EAChBzrC,KAAKyrC,aAAeo0B,IACtB7/D,KAAKyrC,YAAc,GAErB7+C,EAAE0jC,kBAEFtwB,KAAKyrC,YAAc,GAGvBwzB,eA5HO,WA4HW,IAAAt1C,EAAA3pB,KACVggE,EAAUhgE,KAAKyjB,MAAL,OAAqBN,IAK/BggC,EAAcnjD,KAAKmjB,IAAIC,QAAQ,sBAC/BpjB,KAAKmjB,IAAIC,QAAQ,0BACjB7vB,OACAiwD,EAAgBL,IAAgB5vD,OAClC4vD,EAAYM,QACZN,EAAYO,UAKVE,EAAuBJ,GAJNL,IAAgB5vD,OACnC4vD,EAAYr+B,YACZq+B,EAAYp/B,cAKVk8C,EAAmBD,EAAQj8C,aAAemgC,YAAW8b,EAAS7c,GAAa/+B,IAI3EogC,EAAehB,EAFD7oC,KAAK+J,IAAI,EAAGu7C,EAAmBrc,GAI/CT,IAAgB5vD,OAClB4vD,EAAYsB,OAAO,EAAGD,GAEtBrB,EAAYO,UAAYc,EAG1BxkD,KAAK+lB,UAAU,WAAM,IACXhC,EAAiB4F,EAAKxM,MAAM2gD,IAA5B/5C,aACAg7C,EAAWp1C,EAAKlG,MAAhBs7C,OACaA,EAAO57C,IAAIG,wBAAwBuB,OACrCtxB,OAAOuxB,cACxBi6C,EAAO57C,IAAIiE,MAAMhD,IAAM,OACvB26C,EAAO57C,IAAIiE,MAAMvC,OAASd,EAAe,SAI/Cs6C,aArKO,SAqKOzxE,GACZoT,KAAKg9C,UAEP+gB,OAxKO,SAwKCnxE,GAAG,IAAAo9B,EAAAhqB,KAGTA,KAAKq9D,YAAc3rE,WAAW,WAC5Bs4B,EAAKif,SAAU,EACfjf,EAAKk2C,SAAStzE,GACdo9B,EAAKgzB,UACJ,MAEL52B,QAjLO,SAiLEx5B,EAAGgzE,GACV5/D,KAAK2/D,YAAY/yE,EAAGgzE,IAEtB5B,QApLO,SAoLEpxE,GACHoT,KAAKq9D,cACPjsE,aAAa4O,KAAKq9D,aAClBr9D,KAAKq9D,YAAc,MAGhBr9D,KAAK+6D,WACR/6D,KAAKs9D,YAAa,GAEpBt9D,KAAKipC,SAAU,EACfjpC,KAAKkgE,SAAStzE,GACdoT,KAAKg9C,SACLh9C,KAAKu9D,4BAA6B,GAEpCW,QAlMO,SAkMEtxE,GAAG,IACFmG,EAAQnG,EAARmG,IACRiN,KAAKkgE,SAAStzE,GACdoT,KAAKg9C,SAKHh9C,KAAKu9D,2BADK,WAARxqE,GAMNkrE,QA/MO,SA+MErxE,GACPoT,KAAKkgE,SAAStzE,GACdoT,KAAKg9C,UAEPmhB,UAnNO,SAmNIvxE,GAAG,IAAAo2C,EAAAhjC,KACJ8mD,EAA2Bl6D,EAA3Bk6D,QAASC,EAAkBn6D,EAAlBm6D,SAAUh0D,EAAQnG,EAARmG,IACvBiN,KAAKo9D,oBAAsBtW,GAAmB,UAAR/zD,IACxCiN,KAAKm/D,OAAO,CAAE5D,UAAW,KAAM8D,kBAAkB,IAEjDzyE,EAAEs7B,kBACFt7B,EAAE0jC,iBAGFtwB,KAAK+lB,UAAU,WACbid,EAAK7lB,MAAM2gD,IAAItjC,OACfwI,EAAK7lB,MAAM2gD,IAAIv9B,WAIdvgC,KAAKu9D,6BACI,QAARxqE,IACEg0D,EACF/mD,KAAK8/D,cAAclzE,GAEnBoT,KAAK+/D,aAAanzE,IAGV,YAARmG,EACFiN,KAAK8/D,cAAclzE,GACF,cAARmG,GACTiN,KAAK+/D,aAAanzE,GAER,UAARmG,IACG+zD,GACH9mD,KAAK2/D,YAAY/yE,KAQX,WAARmG,IACGiN,KAAKu9D,4BACRv9D,KAAKmd,MAAM2gD,IAAIv9B,SAInBvgC,KAAKs9D,YAAa,EAClBt9D,KAAKg9C,UAEPshB,QAlQO,SAkQE1xE,GACPoT,KAAKs9D,YAAa,EAClBt9D,KAAKkgE,SAAStzE,GACdoT,KAAKg9C,SACLh9C,KAAKgmB,MAAM,QAASp5B,EAAEsD,OAAOuC,QAE/B2rE,aAxQO,SAwQOxxE,GACZoT,KAAKs9D,YAAa,GAEpBj3C,eA3QO,SA2QSz5B,GACVoT,KAAKw9D,sBACTx9D,KAAKs9D,YAAa,IAEpBlC,kBA/QO,SA+QYxuE,GACjBoT,KAAKs9D,YAAa,EAClBt9D,KAAKgmB,MAAM,mBAAoBp5B,IAEjCyuE,sBAnRO,SAmRgBzuE,GACrBoT,KAAKs9D,YAAa,EAClBt9D,KAAKgmB,MAAM,wBAAyBp5B,IAEtCszE,SAvRO,SAAA57D,GAuRmC,IAApBigD,EAAoBjgD,EAA9BpU,OAAUq0D,eACpBvkD,KAAKm+C,MAAQoG,GAEfvH,OA1RO,WA2RL,IAAMhsB,EAAQhxB,KAAKyjB,MAAMuN,MACzB,GAAKA,EAAL,CACA,IAAM+tC,EAAS/+D,KAAKyjB,MAAMs7C,OAAO57C,IAC3Bg9C,EAAYngE,KAAKyjB,MAAM,cAJrB28C,EAK4BpgE,KAAKmd,MAAM2gD,IAAvC/5C,EALAq8C,EAKAr8C,aACFs8C,EANED,EAKcjO,UACWpuC,EAEjC/jB,KAAKsgE,aAAaH,EAAWnvC,EAAOqvC,GACpCrgE,KAAKsgE,aAAavB,EAAQA,EAAQsB,KAEpCC,aArSO,SAqSOC,EAAWrwE,EAAQmwE,GAC1BE,GAAcrwE,IAEnBA,EAAOk3B,MAAMhD,IAAMi8C,EAAe,KAClCnwE,EAAOk3B,MAAMvC,OAAS,QAEC,QAAnB7kB,KAAKuiB,WAA2C,SAAnBviB,KAAKuiB,WAAwBviB,KAAKwgE,gBAAgBD,MACjFrwE,EAAOk3B,MAAMhD,IAAM,OACnBl0B,EAAOk3B,MAAMvC,OAAS7kB,KAAKmd,MAAM2gD,IAAI/5C,aAAe,QAGxDy8C,gBAhTO,SAgTU1f,GACf,OAAOA,EAAGx9B,wBAAwBuB,OAAStxB,OAAOuxB,eC5exD,IAEI27C,EAVJ,SAAoBjiD,GAClBpyB,EAAQ,MAeNs0E,EAAYt1E,OAAAszB,EAAA,EAAAtzB,CACdu1E,ECjBQ,WAAgB,IAAA/hD,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiB2Q,WAAA,EAAa19B,KAAA,gBAAA29B,QAAA,kBAAAl9B,MAAAmsB,EAAA,eAAAgR,WAAA,mBAAsG3Q,YAAA,cAAAC,MAAA,CAAmC0hD,eAAAhiD,EAAAu+C,kBAAuC,CAAAv+C,EAAAqI,GAAA,WAAArI,EAAAsI,GAAA,KAAAtI,EAAA,mBAAAA,EAAAu+C,gBAAgTv+C,EAAAuI,KAAhTpI,EAAA,UAA6FE,YAAA,oCAAAM,MAAA,CAAuD1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAsgD,aAAAl3C,MAAkC,CAAAjJ,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,yBAA8B,GAAAvD,EAAAsI,GAAA,KAAAtI,EAAA,kBAAAG,EAAA,eAAqEgI,IAAA,SAAA9H,YAAA,qBAAAC,MAAA,CAAqD2hD,MAAAjiD,EAAA0+C,YAAwB/9C,MAAA,CAAQgnC,wBAAA3nC,EAAA+7C,qBAAgD/zC,GAAA,CAAKptB,MAAAolB,EAAAugD,OAAA3Y,mBAAA5nC,EAAAw8C,kBAAA3U,wBAAA7nC,EAAAy8C,yBAA+Gz8C,EAAAuI,MAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA2CgI,IAAA,QAAA9H,YAAA,qBAAAC,MAAA,CAAoD2hD,MAAAjiD,EAAA6+C,kBAA8B,CAAA1+C,EAAA,OAAYgI,IAAA,aAAA9H,YAAA,2BAAuDL,EAAAmjB,GAAAnjB,EAAA,qBAAAghD,EAAAvxB,GAAqD,OAAAtvB,EAAA,OAAiBhsB,IAAAs7C,EAAApvB,YAAA,oBAAAC,MAAA,CAAiDusB,YAAA4C,IAAAzvB,EAAA6sB,aAAyC7kB,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAwH,QAAA4B,EAAA43C,MAAyC,CAAA7gD,EAAA,QAAaE,YAAA,SAAoB,CAAA2gD,EAAA,IAAA7gD,EAAA,OAA6BQ,MAAA,CAAOpvB,IAAAyvE,EAAAnX,OAAsB1pC,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAAi1C,EAAAl/B,kBAAA9hB,EAAAsI,GAAA,KAAAnI,EAAA,OAA8EE,YAAA,SAAoB,CAAAF,EAAA,QAAaE,YAAA,eAA0B,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAAi1C,EAAAn/B,gBAAA7hB,EAAAsI,GAAA,KAAAnI,EAAA,QAAkEE,YAAA,cAAyB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAAi1C,EAAAvI,qBAA8C,UACvsD,IDOY,EAa7BoJ,EATiB,KAEU,MAYd/gD,EAAA,EAAAghD,EAAiB,wDElBhCv4C,IAAQC,IACNie,IACAC,IACAC,IACAC,KAGF,IAqDeoW,EArDO,CACpBj/B,MAAO,CACL,UACA,cACA,gBACA,eACA,iBAEFlzB,KARoB,WASlB,MAAO,CACLq2E,aAAc9gE,KAAK+gE,eAGvB/3C,SAAU,CACRg4C,YADQ,WAEN,QAAQhhE,KAAKihE,YAAejhE,KAAKkhE,cAAiBlhE,KAAKmhE,aAAgBnhE,KAAKohE,aAE9EH,WAJQ,WAKN,MAA8B,WAAvBjhE,KAAKqhE,eAA8BrhE,KAAKshE,WAAW,WAE5DJ,aAPQ,WAQN,MAA8B,WAAvBlhE,KAAKqhE,eAA8BrhE,KAAKshE,WAAW,aAE5DH,YAVQ,WAWN,MAA8B,WAAvBnhE,KAAKqhE,eAA8BrhE,KAAKshE,WAAW,YAE5DF,WAbQ,WAcN,OAAOphE,KAAKshE,WAAW,WAEzBC,IAhBQ,WAiBN,MAAO,CACL73D,OAAQ,CAAEwmB,SAAgC,WAAtBlwB,KAAK8gE,cACzBU,SAAU,CAAEtxC,SAAgC,aAAtBlwB,KAAK8gE,cAC3BW,QAAS,CAAEvxC,SAAgC,YAAtBlwB,KAAK8gE,cAC1BY,OAAQ,CAAExxC,SAAgC,WAAtBlwB,KAAK8gE,iBAI/B1iD,QAAS,CACPkjD,WADO,SACK5jB,GACV,OAAO19C,KAAKqlC,SACVrlC,KAAK8gE,eAAiBpjB,GACtB19C,KAAKqhE,gBAAkB3jB,GACvB19C,KAAK2hE,cAAgBjkB,GACX,WAAVA,GAEJkH,UARO,SAQIlH,GACT19C,KAAK8gE,aAAepjB,EACpB19C,KAAK4hE,eAAiB5hE,KAAK4hE,cAAclkB,aCvD/C,IAEAn/B,EAVA,SAAAC,GACEpyB,EAAQ,MAeVqyB,EAAgBrzB,OAAAszB,EAAA,EAAAtzB,CACdy2E,ECjBF,WAA0B,IAAAjjD,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAoiD,YAAq0CpiD,EAAAuI,KAAr0CpI,EAAA,OAAoCE,YAAA,iBAA4B,CAAAL,EAAA,WAAAG,EAAA,UAAgCE,YAAA,wBAAAC,MAAAN,EAAA2iD,IAAAG,OAAAniD,MAAA,CAAgEnjB,MAAAwiB,EAAAgM,GAAA,4BAAA/6B,KAAA,UAA2D+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAgmC,UAAA,aAAiC,CAAA7lC,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,eAAmB,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAA0DE,YAAA,wBAAAC,MAAAN,EAAA2iD,IAAAE,QAAAliD,MAAA,CAAiEnjB,MAAAwiB,EAAAgM,GAAA,6BAAA/6B,KAAA,UAA4D+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAgmC,UAAA,cAAkC,CAAA7lC,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,WAAe,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,aAAAG,EAAA,UAA2DE,YAAA,wBAAAC,MAAAN,EAAA2iD,IAAAC,SAAAjiD,MAAA,CAAkEnjB,MAAAwiB,EAAAgM,GAAA,8BAAA/6B,KAAA,UAA6D+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAgmC,UAAA,eAAmC,CAAA7lC,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,gBAAoB,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,WAAAG,EAAA,UAAyDE,YAAA,wBAAAC,MAAAN,EAAA2iD,IAAA73D,OAAA6V,MAAA,CAAgEnjB,MAAAwiB,EAAAgM,GAAA,4BAAA/6B,KAAA,UAA2D+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAgmC,UAAA,aAAiC,CAAA7lC,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,YAAgB,GAAAvD,EAAAuI,QAC95C,IDOA,EAaA5I,EATA,KAEA,MAYemB,EAAA,EAAAjB,EAAiB,0CE1BhC/xB,EAAAD,QAAiBL,EAAA8C,EAAuB,251BCGxC,IAAA0L,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,kWAAkW,yBCFzX,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,g8MAAw8M,uBCF/9M,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,uYAAuY,sBCF9Z,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,6dAA6d,sBCFpf,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,shDAAshD,sBCF7iD,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,88EAAk9E,sBCFz+E,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,udAAud,sBCF9e,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,0NAA0N,sBCFjP,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,owLAAowL,sBCF3xL,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,gCAAgC,sBCFvD,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,gMAAgM,sBCFvN,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,m5EAAm5E,sBCF16E,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,m7HAAm7H,sBCF18H,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,yiCAA6iC,sBCFpkC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2hCAA2hC,sBCFljC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,i0FAAi0F,sBCFx1F,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,w8BAA08B,sBCFj+B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,8sFAA8sF,sBCFruF,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,4jCAA4jC,sBCFnlC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,k5BAAk5B,sBCFz6B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,g7BAAg7B,sBCFv8B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,02LAA02L,sBCFj4L,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,4pBAA4pB,sBCFnrB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2FAA2F,sBCFlH,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,oNAAoN,sBCF3O,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,ymCAA2mC,sBCFloC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,kQAAkQ,sBCFzR,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,qUAAqU,sBCF5V,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,icAAic,sBCFxd,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,odAAod,sBCF3e,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,i8BAAi8B,sBCFx9B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,wTAAwT,oCCF/U,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,osEAAosE,sBCF3tE,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,mQAAmQ,sBCF1R,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,s1FAAs1F,sBCF72F,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,ovCAAsvC,sBCF7wC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,6PAA6P,sBCFpR,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,uNAAuN,sBCF9O,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,68CAA68C,sBCFp+C,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,4hBAA4hB,sBCFnjB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,qZAAqZ,sBCF5a,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,yiBAAyiB,sBCFhkB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,0KAA0K,sBCFjM,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,60FAA60F,sBCFp2F,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,kqGAAoqG,sBCF3rG,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,m0DAAm0D,sBCF11D,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,8TAA8T,0DCFrV,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,+wCAA+wC,sBCFtyC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,s9CAAw9C,8CCF/+C,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,q4BAAq4B,sBCF55B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,kWAAkW,sBCFzX,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,w3BAAw3B,sBCF/4B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,+8BAA+8B,sBCFt+B,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,yBCFvB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,yBCFvB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,uCAAuC,sBCF9D,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2BAA2B,sBCFlD,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,8FAA8F,sBCFrH,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2BAA2B,sBCFlD,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,yBCFvB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAA0Ds7B,SAC5E,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAAoD,IAK/EjB,KAAA,CAAcuB,EAAA3B,EAAS,ulfAA+lf,sBCFtnf,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2CAA2C,sBCFlE,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,o0DAAo0D,sBCF31D,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,6RAA6R,yBCFpT,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,4rBAA4rB,sBCFntB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,8hBAA8hB,sBCFrjB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,uTAAuT,sBCF9U,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,qNAAqN,sBCF5O,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,8rCAA8rC,sBCFrtC,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,gkFAAgkF,sBCFvlF,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,2mBAA2mB,sBCFloB,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,+qEAA+qE,sBCFtsE,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,6/DAAigE,sBCFxhE,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,4bAA4b,sBCFnd,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,kpDAAkpD,sBCFzqD,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,0QAA0Q,sBCFjS,IAAA6P,EAAcxO,EAAQ,KACtB,iBAAAwO,MAAA,EAA4ClO,EAAA3B,EAAS6P,EAAA,MACrDA,EAAAknE,SAAAp1E,EAAAD,QAAAmO,EAAAknE,SAGA15C,EADUh8B,EAAQ,GAAgEs7B,SAClF,WAAA9sB,GAAA,wBCRAlO,EAAAD,QAA2BL,EAAQ,EAARA,EAA0D,IAKrFjB,KAAA,CAAcuB,EAAA3B,EAAS,q/CAAq/C,gHCH5gD,IAEE,IAAI0b,YAEJ,MAAO7Z,GACP2G,OAAOkT,YAAcs7D,ICLvB,IA2IeC,EAtHM,CACnBjkD,MAtBmB,CACnBm6C,mBAAoB,SACpB+J,qBAAqB,EACrBC,uBAAwB,KACxBnqD,SAAU,CACRoqD,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1B/1C,eAAgB,CACdC,UAAWh5B,OAAO+uE,KAAO/uE,OAAO+uE,IAAIC,WAClChvE,OAAO+uE,IAAIC,SAAS,SAAU,qBAC9BhvE,OAAO+uE,IAAIC,SAAS,iBAAkB,sBAG1CjiB,cAAc,EACdkiB,cAAe,GACfC,aAAc,EACdC,aAAc,MAKdxR,UAAW,CACTyR,cADS,SACM5kD,EADN3c,GACiC,IAAlBwhE,EAAkBxhE,EAAlBwhE,QAASzxE,EAASiQ,EAATjQ,MAC3ByxE,GACE7kD,EAAMqkD,oBACRhxE,aAAa2sB,EAAMqkD,oBAErBt0C,cAAI/P,EAAMhG,SAAU,yBAA0B,CAAE5mB,OAAO,EAAO1G,KAAMm4E,IACpE90C,cAAI/P,EAAMhG,SAAU,qBAClBrmB,WAAW,kBAAM2/D,iBAAItzC,EAAMhG,SAAU,2BAA2B,OAElE+V,cAAI/P,EAAMhG,SAAU,yBAA0B,CAAE5mB,OAAO,EAAM0xE,UAAW1xE,KAG5E2xE,0BAbS,SAakB/kD,EAAO6zC,GAChC7zC,EAAMskD,uBAAyBzQ,GAEjCmR,gBAhBS,SAgBQhlD,EAAOtrB,GACtBsrB,EAAMuiC,aAAe7tD,GAEvBuwE,mBAnBS,SAmBWjlD,GAClBA,EAAMm6C,mBAAqB,UAE7B+K,wBAtBS,SAsBgBllD,GACvB,OAAQA,EAAMm6C,oBACZ,IAAK,YAEH,YADAn6C,EAAMm6C,mBAAqB,WAE7B,IAAK,UAEH,YADAn6C,EAAMm6C,mBAAqB,aAE7B,QACE,MAAM,IAAI7nE,MAAM,kDAGtB6yE,kBAlCS,SAkCUnlD,GACjBA,EAAMm6C,mBAAqB,UACtBn6C,EAAMkkD,sBACTlkD,EAAMkkD,qBAAsB,IAGhCkB,0BAxCS,SAwCkBplD,EAAOtrB,GAChCsrB,EAAMmkD,uBAAyBzvE,GAEjC2wE,iBA3CS,SA2CSrlD,EAAOhgB,GACvBggB,EAAMykD,cAAcr3E,KAAK4S,IAE3BslE,mBA9CS,SA8CWtlD,EAAOhgB,GACzBggB,EAAMykD,cAAgBzkD,EAAMykD,cAAcp9D,OAAO,SAAAnS,GAAC,OAAIA,IAAM8K,KAE9DulE,gBAjDS,SAiDQvlD,EAAOtrB,GACtBsrB,EAAM0kD,aAAehwE,GAEvB8wE,gBApDS,SAoDQxlD,EAAOtrB,GACtBsrB,EAAM2kD,aAAejwE,IAGzB6+D,QAAS,CACPkS,aADO,SAAAniE,GACmC,IAA1Bye,EAA0Bze,EAA1Bye,UAAarQ,EAAalR,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GACpCnP,SAASgN,MAAT,GAAAxC,OAAoB6V,EAApB,KAAA7V,OAA8BkmB,EAAU9B,SAAShsB,OAEnD2wE,cAJO,SAAAr+D,EAAAwT,GAIkD,IAAxC2R,EAAwCnlB,EAAxCmlB,OAAwCnlB,EAAhCulB,SACvBJ,EAAO,gBAAiB,CAAEm5C,QAD6B9qD,EAAlB8qD,QACFzxE,MADoB2mB,EAAT3mB,SAGhD2xE,0BAPO,SAAA7vD,EAOgC2+C,IACrCnoC,EADiDxW,EAAtBwW,QACpB,4BAA6BmoC,IAEtCmR,gBAVO,SAAAvvD,EAUsB/gB,IAC3Bg3B,EADkCjW,EAAjBiW,QACV,kBAAmBh3B,IAE5BuwE,mBAbO,SAAAtwD,IAcL+W,EAD8B/W,EAAV+W,QACb,uBAETy5C,kBAhBO,SAAA72D,IAiBLod,EAD6Bpd,EAAVod,QACZ,sBAETw5C,wBAnBO,SAAAt2D,IAoBL8c,EADmC9c,EAAV8c,QAClB,4BAETg6C,4BAtBO,SAAA32D,IAuBL2c,EADuC3c,EAAV2c,QACtB,4BAA6B,OAEtCi6C,qBAzBO,SAAA12D,EAyB2Bva,GAAO,IAAjBg3B,EAAiBzc,EAAjByc,OACtBA,EAAO,4BAA6Bh3B,GACpCg3B,EAAO,sBAET25C,iBA7BO,SAAAl2D,EAAAE,GAoCF,IANDqc,EAMCvc,EANDuc,OAAQI,EAMP3c,EANO2c,SAER85C,EAICv2D,EAJDu2D,WAICC,EAAAx2D,EAHDy2D,mBAGC,IAAAD,EAHa,GAGbA,EAAAE,EAAA12D,EAFDskC,aAEC,IAAAoyB,EAFO,QAEPA,EAAAC,EAAA32D,EADDrc,eACC,IAAAgzE,EADS,EACTA,EACGhmE,EAAS,CACb4lE,aACAE,cACAnyB,SAMF,OAJI3gD,GACFW,WAAW,kBAAMm4B,EAAS,qBAAsB9rB,IAAShN,GAE3D04B,EAAO,mBAAoB1rB,GACpBA,GAETslE,mBAhDO,SAAA/1D,EAgDyBvP,IAC9B0rB,EADsCnc,EAAlBmc,QACb,qBAAsB1rB,IAE/BulE,gBAnDO,SAAA71D,EAmDsBhb,IAC3Bg3B,EADkChc,EAAjBgc,QACV,kBAAmBh3B,IAE5B8wE,gBAtDO,SAAAhuD,EAsDsB9iB,IAC3Bg3B,EADkClU,EAAjBkU,QACV,kBAAmBh3B,oTClIhC,IA6MeurB,EAhIE,CACfD,MA9EmB,CAEnB/rB,KAAM,aACNgyE,kBAAkB,EAClB/lD,OAAQ,yBACRkhC,UAAW,IACXvkB,eAAWnpC,EACXwyE,oBAAgBxyE,EAGhB+tD,wBAAwB,EACxB3hC,cAAe,kBACfqmD,cAAe,qBACf5wD,WAAY,8BACZ28B,4BAA4B,EAC5Bk0B,aAAa,EACb7yB,WAAW,EACXzI,sBAAsB,EACtBsnB,gBAAgB,EAChBtwB,eAAe,EACfukC,cAAc,EACd30C,eAAe,EACf40C,YAAa,WACbC,KAAM,mBACNC,WAAY,OACZC,UAAU,EACVC,UAAU,EACV9lB,mBAAmB,EACnB0J,qBAAiB52D,EACjBosD,gBAAiB,aACjB6mB,kBAAmB,gBACnBC,oBAAqB,YACrBtnB,WAAW,EACXunB,mBAAmB,EACnBC,2BAA2B,EAC3BC,cAAc,EACdx7B,oBAAqB,QACrBhO,MAAO,eACPy1B,kBAAkB,EAClBjT,oBAAoB,EAGpBgB,YAAa,GACbimB,oBAAoB,EACpBvrE,MAAO,GACPwrE,cAAc,EACdC,gBAAgB,EAChBxlB,YAAa,GACbliC,oBAAqB,GACrBoiC,QAAQ,EACRulB,aAAc,GAGdC,eAAe,EACf15C,8BAA8B,EAC9B25C,iBAAiB,EACjBnc,qBAAqB,EACrBoc,oBAAoB,EACpBC,eAAgB,GAGhBC,6BAA8B,GAC9BC,IAAK,GAGLC,eAAgB,GAChBC,gBAAiB,GAEjB9lB,gBAAgB,EAChBlF,WAAY,CACVE,YAAa,EACbE,iBAAkB,IAClBO,eAAgB,GAChBH,eAAgB,QAMlBgW,UAAW,CACTyU,kBADS,SACU5nD,EADV3c,GACkC,IAAfpP,EAAeoP,EAAfpP,KAAMS,EAAS2O,EAAT3O,WACX,IAAVA,GACTq7B,cAAI/P,EAAO/rB,EAAMS,IAGrBmzE,gBANS,SAMQ7nD,EAAO8nD,GACtB9nD,EAAMmnD,aAAeW,IAGzBp5C,QAAS,CACPq5C,sBADO,SACgB/nD,GACrB,OAAOizC,IACJl8D,IAAI,SAAA/B,GAAG,MAAI,CAACA,EAAKgrB,EAAMhrB,MACvBuG,OAAO,SAACC,EAAD8H,GAAA,IAAAiD,EAAAhD,IAAAD,EAAA,GAAOtO,EAAPuR,EAAA,GAAY7R,EAAZ6R,EAAA,uWAAApI,CAAA,GAA6B3C,EAA7BwsE,IAAA,GAAmChzE,EAAMN,KAAU,MAGjE6+D,QAAS,CACPqU,kBADO,SAAA7tD,EAAA7E,GACmD,IAArCwW,EAAqC3R,EAArC2R,OAAQI,EAA6B/R,EAA7B+R,SAAc73B,EAAeihB,EAAfjhB,KAAMS,EAASwgB,EAATxgB,MAE/C,OADAg3B,EAAO,oBAAqB,CAAEz3B,OAAMS,UAC5BT,GACN,IAAK,OACH63B,EAAS,gBACT,MACF,IAAK,gBACCp3B,GACFo3B,EAAS,oBAEX,MACF,IAAK,QACHA,EAAS,WAAYp3B,KAIrBuzE,eAjBC,SAAAxyD,GAAA,IAAAiW,EAAAw8C,EAAAC,EAAA1sE,EAAA,OAAA+R,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,cAiBiB8qB,EAjBjBjW,EAiBiBiW,OAjBjBhe,EAAA3M,KAAA,EAAA2M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAmBepY,OAAOoQ,MAAM,uBAnB5B,YAmBGsiE,EAnBHx6D,EAAAG,MAoBKlH,GApBL,CAAA+G,EAAA9M,KAAA,gBAAA8M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAqBoBs6D,EAAIxhE,QArBxB,OAqBKyhE,EArBLz6D,EAAAG,KAsBKpS,EAAQpO,OAAO0kB,KAAKo2D,GAAQpxE,IAAI,SAAC/B,GACrC,MAAO,CACL0tC,YAAa1tC,EACbgkE,UAAU,EACVr2B,YAAawlC,EAAOnzE,MAErB8uB,KAAK,SAAC7a,EAAGuT,GAAJ,OAAUvT,EAAEhV,KAAOuoB,EAAEvoB,KAAO,GAAK,IACzCy3B,EAAO,oBAAqB,CAAEz3B,KAAM,QAASS,MAAO+G,IA7BnDiS,EAAA9M,KAAA,uBA+BMsnE,EA/BN,QAAAx6D,EAAA9M,KAAA,iBAAA8M,EAAA3M,KAAA,GAAA2M,EAAAK,GAAAL,EAAA,SAkCHpY,QAAQyU,KAAK,2BACbzU,QAAQyU,KAAR2D,EAAAK,IAnCG,yBAAAL,EAAAM,SAAA,qBAuCDo6D,eAvCC,SAAAzzD,GAAA,IAAA+W,EAAA1L,EAAAkoD,EAAAn6E,EAAAo6E,EAAA1sE,EAAA,OAAA+R,EAAAvE,EAAAwE,MAAA,SAAA46D,GAAA,cAAAA,EAAAtnE,KAAAsnE,EAAAznE,MAAA,cAuCiB8qB,EAvCjB/W,EAuCiB+W,OAAQ1L,EAvCzBrL,EAuCyBqL,MAvCzBqoD,EAAAtnE,KAAA,EAAAsnE,EAAAznE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAyCepY,OAAOoQ,MAAM,4BAzC5B,YAyCGsiE,EAzCHG,EAAAx6D,MA0CKlH,GA1CL,CAAA0hE,EAAAznE,KAAA,gBAAAynE,EAAAznE,KAAA,EAAA4M,EAAAvE,EAAA2E,MA2CoBs6D,EAAIxhE,QA3CxB,OA2CK3Y,EA3CLs6E,EAAAx6D,KA4CKs6D,EAASj2C,MAAM4O,QAAQ/yC,GAAUV,OAAO0xB,OAAPlxB,MAAAR,OAAM,CAAQ,IAARwO,OAAA6H,IAAe3V,KAAUA,EAChE0N,EAAQpO,OAAO8V,QAAQglE,GAAQpxE,IAAI,SAAAuX,GAAkB,IAAAM,EAAArL,IAAA+K,EAAA,GAAhBtZ,EAAgB4Z,EAAA,GAAXla,EAAWka,EAAA,GACnDoqD,EAAWtkE,EAAM4zE,UACvB,MAAO,CACL5lC,YAAa1tC,EACbgkE,SAAUA,EAAWh5C,EAAME,OAAS84C,EAAWtkE,EAC/CyF,KAAM6+D,EAAWtkE,EAAMyF,KAAK2pB,KAAK,SAAC7a,EAAGuT,GAAJ,OAAUvT,EAAIuT,EAAI,EAAI,IAAK,CAAC,OAC7DmmB,YAAW,IAAA9mC,OAAM7G,EAAN,SAIZ8uB,KAAK,SAAC7a,EAAGuT,GAAJ,OAAUvT,EAAEy5B,YAAYG,cAAgBrmB,EAAEkmB,YAAYG,cAAgB,GAAK,IACnFnX,EAAO,oBAAqB,CAAEz3B,KAAM,cAAeS,MAAO+G,IAxDzD4sE,EAAAznE,KAAA,uBA0DMsnE,EA1DN,QAAAG,EAAAznE,KAAA,iBAAAynE,EAAAtnE,KAAA,GAAAsnE,EAAAt6D,GAAAs6D,EAAA,SA6DH/yE,QAAQyU,KAAK,4BACbzU,QAAQyU,KAARs+D,EAAAt6D,IA9DG,yBAAAs6D,EAAAr6D,SAAA,qBAkEPu6D,SAlEO,SAAAx5D,EAkE0By5D,GAAW,IAAhC98C,EAAgC3c,EAAhC2c,OAAQ3J,EAAwBhT,EAAxBgT,UAClB2J,EAAO,oBAAqB,CAAEz3B,KAAM,QAASS,MAAO8zE,IACpD5nC,YAAU4nC,GACP91E,KAAK,SAAAmqC,GAIJ,GAHAnR,EAAO,oBAAqB,CAAEz3B,KAAM,YAAaS,MAAOmoC,KAEhC9a,EAAUC,OAA1BgwC,YACR,CAGA,IAAMyW,EAAc5rC,EAAUhkC,QACzBgkC,EAAUU,OAAUkrC,GAAeA,EAAY1rC,qBAAuBqa,IACzE5b,YAAWitC,GAEXjtC,YAAWqB,EAAUU,WAI7BmrC,WApFO,SAAAz5D,GAoF0B,IAAnB6c,EAAmB7c,EAAnB6c,SAAU9L,EAAS/Q,EAAT+Q,MACjBA,EAAMgnD,qBACThnD,EAAMgnD,oBAAqB,EAC3Bl7C,EAAS,mBAEN9L,EAAMinD,eACTjnD,EAAMinD,cAAe,EACrBn7C,EAAS,oBAIP68C,gBA/FC,SAAAx5D,GAAA,IAAAuc,EAAA3J,EAAAh0B,EAAA,OAAAyf,EAAAvE,EAAAwE,MAAA,SAAAm7D,GAAA,cAAAA,EAAA7nE,KAAA6nE,EAAAhoE,MAAA,cA+FkB8qB,EA/FlBvc,EA+FkBuc,OAAQ3J,EA/F1B5S,EA+F0B4S,UA/F1B6mD,EAAA7nE,KAAA,EAAA6nE,EAAAhoE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAiGkBlD,IAAWiQ,kBAAkB,CAChD7U,YAAaic,EAAUxU,MAAM6hB,YAAYtpB,eAlGxC,OAiGG/X,EAjGH66E,EAAA/6D,KAoGH6d,EAAO,kBAAmB39B,GApGvB66E,EAAAhoE,KAAA,gBAAAgoE,EAAA7nE,KAAA,EAAA6nE,EAAA76D,GAAA66D,EAAA,SAsGHtzE,QAAQyU,KAAK,4BACbzU,QAAQyU,KAAR6+D,EAAA76D,IAvGG,yBAAA66D,EAAA56D,SAAA,2yBChFX,IAAM66D,EAAU,iBAAiB,CAC/BtuD,SAAU,GACVuuD,eAAgB,GAChBC,MAAO,GACPC,gBAAiB,GACjBC,sBAAuB,GACvBC,eAAgB,EAChBvoE,MAAO,EACPG,MAAO,EACPqoE,aAAc,EACd35B,SAAS,EACT45B,UAAW,GACXx9D,QAAS,GACTR,OAbc5K,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAU,EAcxB6oE,YAAa,IAGTC,EAAqB,iBAAO,CAChCxV,4BAA4B,EAC5BnzD,MAAO,EACPG,MAAO8hB,OAAO2mD,kBACd78E,KAAM,GACN88E,QAAS,GACTh6B,SAAS,IAGEuiB,EAAe,iBAAO,CACjCzrB,YAAa,GACbkE,kBAAmB,GACnBi/B,oBAAqB,GACrB9oE,MAAO,EACPmL,cAAew9D,IACfr9D,UAAW,IAAIhE,IACfyhE,UAAW,CACTxqE,SAAU2pE,IACVl9D,OAAQk9D,IACR9pE,KAAM8pE,IACN58D,UAAW48D,IACX78D,MAAO68D,IACP98D,kBAAmB88D,IACnBj9D,QAASi9D,IACTr3E,IAAKq3E,IACLh9D,IAAKg9D,IACL38D,UAAW28D,OAcTc,EAAa,SAACC,EAAKC,EAAKjc,GAC5B,IAX4B7xD,EAWtB+tE,EAAUD,EAAIjc,EAAK73D,IAEzB,OAAI+zE,GAIFC,IAAMD,EAASE,IAAOpc,EAAM,SAACl9B,EAAGltB,GAAJ,OAAgB,OAANktB,GAAoB,SAANltB,KAEpDsmE,EAAQ3qE,YAAY/Q,OAAO07E,EAAQ3qE,YAAYjS,QACxC,CAAE0gE,KAAMkc,EAASG,KAAK,MApBHluE,EAuBZ6xD,GArBTjkB,SAAU,EAGjB5tC,EAAOoD,YAAcpD,EAAOoD,aAAe,GAmBzCyqE,EAAIx8E,KAAKwgE,GACT79B,cAAI85C,EAAKjc,EAAK73D,GAAI63D,GACX,CAAEA,OAAMqc,KAAK,KAIlBvnD,GAAW,SAACzZ,EAAGuT,GACnB,IAAMmG,EAAOC,OAAO3Z,EAAElT,IAChB8sB,EAAOD,OAAOpG,EAAEzmB,IAChB+sB,GAAUF,OAAOG,MAAMJ,GACvBK,GAAUJ,OAAOG,MAAMF,GAC7B,OAAIC,GAAUE,EACLL,EAAOE,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GACZ,EAED/Z,EAAElT,GAAKymB,EAAEzmB,IAAM,EAAI,GAIxBm0E,GAAe,SAACp/D,GAIpB,OAHAA,EAASk+D,gBAAkBl+D,EAASk+D,gBAAgBllD,KAAKpB,IACzD5X,EAASyP,SAAWzP,EAASyP,SAASuJ,KAAKpB,IAC3C5X,EAASq+D,cAAgBx7D,IAAK7C,EAASk+D,kBAAoB,IAAIjzE,GACxD+U,GAIHq/D,GAA2B,SAACnqD,EAAOtzB,GACvC,IAAMqB,EAAS47E,EAAW3pD,EAAMsmB,YAAatmB,EAAMwqB,kBAAmB99C,GACtE,GAAIqB,EAAM,IAAM,CAEd,IAAMgO,EAAShO,EAAO6/D,KAChB6b,EAAsBzpD,EAAMypD,oBAC5BW,EAAiBruE,EAAOkB,0BAC1BwsE,EAAoBW,GACtBX,EAAoBW,GAAgBh9E,KAAK2O,GAEzCg0B,cAAI05C,EAAqBW,EAAgB,CAACruE,IAG9C,OAAOhO,GAoLHs8E,GAA8B,SAACrqD,EAAOhW,GAC1CgW,EAAMlU,cAAcnL,MAAQqJ,EAAajU,GAAKiqB,EAAMlU,cAAcnL,MAC9DqJ,EAAajU,GACbiqB,EAAMlU,cAAcnL,MACxBqf,EAAMlU,cAAchL,MAAQkJ,EAAajU,GAAKiqB,EAAMlU,cAAchL,MAC9DkJ,EAAajU,GACbiqB,EAAMlU,cAAchL,OA6CbqyD,GAAY,CACvBmX,eArNqB,SAACtqD,EAAD1c,GAAoH,IAA1GiX,EAA0GjX,EAA1GiX,SAA0GgwD,EAAAjnE,EAAhGirD,uBAAgG,IAAAgc,KAAvEz/D,EAAuExH,EAAvEwH,SAAuE0/D,EAAAlnE,EAA7DvE,YAA6D,IAAAyrE,EAAtD,GAAsDA,EAAAC,EAAAnnE,EAAlDkrD,kBAAkD,IAAAic,KAA9Br/D,EAA8B9H,EAA9B8H,OAA8Bs/D,EAAApnE,EAAtBiJ,kBAAsB,IAAAm+D,EAAT,GAASA,EAEzI,IAAKC,IAAQpwD,GACX,OAAO,EAGT,IAAM+rB,EAActmB,EAAMsmB,YACpBskC,EAAiB5qD,EAAM0pD,UAAU5+D,GAMjC+/D,EAASt+D,EAAW5L,QAAU4Z,EAASrtB,OAAS,EAAI49E,IAAMvwD,EAAU,MAAMxkB,GAAK,GAC/Eg1E,EAASx+D,EAAWzL,QAAUyZ,EAASrtB,OAAS,EAAI89E,IAAMzwD,EAAU,MAAMxkB,GAAK,GAE/Ek1E,EAAQngE,IAAaigE,EAASH,EAAejqE,OAAkC,IAAzBiqE,EAAejqE,QAAgB4Z,EAASrtB,OAAS,EACvGg+E,EAAQpgE,IAAa+/D,EAASD,EAAe9pE,OAAkC,IAAzB8pE,EAAe9pE,QAAgByZ,EAASrtB,OAAS,EAY7G,IAVKshE,GAAcyc,IACjBL,EAAejqE,MAAQoqE,IAEpBvc,GAAc0c,IACjBN,EAAe9pE,MAAQ+pE,GAMP,SAAb//D,GAAoC,UAAbA,GAAyB8/D,EAAex/D,SAAWA,EAA/E,CAIA,IAAM+/D,EAAY,SAACz+E,EAAM6hE,GAA0C,IA4B7D6c,EA5BoCC,IAAyB7qE,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,KAAAA,UAAA,GAC3DzS,EAASo8E,GAAyBnqD,EAAOtzB,GACzCqP,EAAShO,EAAO6/D,KAEtB,GAAI7/D,EAAM,IAAM,CAEd,GAAoB,WAAhBgO,EAAOjK,MAAqBu0C,IAAKtqC,EAAOkD,WAAY,CAAElJ,GAAIgJ,EAAKhJ,KAAO,CACxE,IAAMmJ,EAAW8gB,EAAM0pD,UAAUxqE,SAG7B0rE,IAAmB1rE,IACrByqE,EAAWzqE,EAASqb,SAAUrb,EAAS4pE,eAAgB/sE,GACvDmD,EAASgqE,gBAAkB,EAE3BgB,GAAahrE,IAGjB,GAA0B,WAAtBnD,EAAO8C,WAAyB,CAClC,IAAMgN,EAAMmU,EAAM0pD,UAAU79D,IAE5B89D,EAAW99D,EAAI0O,SAAU1O,EAAIi9D,eAAgB/sE,GAC7C8P,EAAIq9D,gBAAkB,EAEtBgB,GAAar+D,IAoBjB,OAbIf,GAAYugE,IACdD,EAA2BzB,EAAWiB,EAAerwD,SAAUqwD,EAAe9B,eAAgB/sE,IAG5F+O,GAAYyjD,EAGdob,EAAWiB,EAAe5B,gBAAiB4B,EAAe3B,sBAAuBltE,GACxE+O,GAAYugE,GAAiBD,EAAwB,MAE9DR,EAAe1B,gBAAkB,GAG5BntE,GAgBHuvE,EAAa,CACjBvvE,OAAU,SAACA,GACTovE,EAAUpvE,EAAQwyD,IAEpBn+C,QAAW,SAACrU,GAEV,IAEIqU,EAFE/Q,EAAkB8rE,EAAUpvE,EAAO+B,kBAAkB,GAAO,GAahEsS,EAREtF,GAAYu7B,IAAKukC,EAAerwD,SAAU,SAACjsB,GAC7C,OAAIA,EAAEwP,iBACGxP,EAAEyH,KAAOsJ,EAAgBtJ,IAAMzH,EAAEwP,iBAAiB/H,KAAOsJ,EAAgBtJ,GAEzEzH,EAAEyH,KAAOsJ,EAAgBtJ,KAIxBo1E,EAAUpvE,GAAQ,GAAO,GAEzBovE,EAAUpvE,EAAQwyD,GAG9Bn+C,EAAQtS,iBAAmBuB,GAE7B2Q,SAAY,SAACA,GAGNgQ,EAAM/T,UAAUnC,IAAIkG,EAASja,MAChCiqB,EAAM/T,UAAUoe,IAAIra,EAASja,IA3CZ,SAACia,EAAUu7D,GAChC,IAAMxvE,EAASsqC,IAAKC,EAAa,CAAEvwC,GAAIia,EAASvS,wBAC5C1B,IAEEiU,EAASjR,KAAKhJ,KAAOgJ,EAAKhJ,GAC5BgG,EAAOC,WAAY,EAEnBD,EAAOG,UAAY,GAqCnBsvE,CAAex7D,KAGnBy7D,SAAY,SAACA,GACX,IAAMjtE,EAAMitE,EAASjtE,IACfzC,EAASsqC,IAAKC,EAAa,CAAE9nC,QAC9BzC,IAhJ2B,SAACikB,EAAOjkB,GAC5C2vE,IAAO1rD,EAAMsmB,YAAa,CAAEvwC,GAAIgG,EAAOhG,KAKvC21E,IAAO1rD,EAAMlU,cAAcpf,KAAM,SAAA2W,GAAA,OAAAA,EAAGxD,OAAU9J,KAAkBgG,EAAOhG,KAGvE,IAAMq0E,EAAiBruE,EAAOkB,0BAC1B+iB,EAAMypD,oBAAoBW,IAC5BsB,IAAO1rD,EAAMypD,oBAAoBW,GAAiB,CAAEr0E,GAAIgG,EAAOhG,KAyI7D41E,CAA8B3rD,EAAOjkB,GAEjC+O,IACF4gE,IAAOd,EAAerwD,SAAU,CAAE/b,QAClCktE,IAAOd,EAAe5B,gBAAiB,CAAExqE,WAG7C82D,OAAU,SAACA,KAGX3rC,QAAW,SAACiiD,GACVt2E,QAAQm8D,IAAI,uBACZn8D,QAAQm8D,IAAIma,KAIhB3xD,IAAKM,EAAU,SAACxe,GACd,IAAMjK,EAAOiK,EAAOjK,MACFw5E,EAAWx5E,IAASw5E,EAAU,SACtCvvE,KAIR+O,GAA2B,cAAbA,GAChBo/D,GAAaU,KAyDfiB,oBA5C0B,SAAC7rD,EAADzZ,GAAkH,IAAxGulB,EAAwGvlB,EAAxGulB,SAAUhgB,EAA8FvF,EAA9FuF,cAA6DggE,GAAiCvlE,EAA/E2kE,MAA+E3kE,EAAxEwlE,yBAAwExlE,EAA9C4c,YAA8C5c,EAAjCulE,4BAC3G7xD,IAAKnO,EAAe,SAAC9B,GAEnB,IAAKyY,YAAoBzY,GAGvB,OAFA1U,QAAQlC,MAAM,wBAAyB4W,QACvCqgE,GAA4BrqD,EAAOhW,GAIjCpK,YAAqBoK,EAAalY,QACpCkY,EAAanK,OAASsqE,GAAyBnqD,EAAOhW,EAAanK,QAAQ+tD,KAC3E5jD,EAAajO,OAASiO,EAAajO,QAAUouE,GAAyBnqD,EAAOhW,EAAajO,QAAQ6xD,MAG1E,2BAAtB5jD,EAAalY,MACfg6B,EAAS,wBAAyB9hB,EAAajO,OAAOhG,IAInDiqB,EAAMlU,cAAc09D,QAAQj8E,eAAeyc,EAAajU,IAOlDiU,EAAatK,OACtBsgB,EAAMlU,cAAc09D,QAAQx/D,EAAajU,IAAI2J,MAAO,IAPpD2qE,GAA4BrqD,EAAOhW,GAEnCgW,EAAMlU,cAAcpf,KAAKU,KAAK4c,GAC9BgW,EAAMlU,cAAc09D,QAAQx/D,EAAajU,IAAMiU,EAE/C8hE,EAA2B9hE,OAoB/BgiE,aAbmB,SAAChsD,EAADjG,GAAiC,IAAvBjP,EAAuBiP,EAAvBjP,SAAUM,EAAa2O,EAAb3O,OACjCw/D,EAAiB5qD,EAAM0pD,UAAU5+D,GACnCM,IACFsgE,IAAOd,EAAerwD,SAAU,CAAExb,KAAM,CAAEhJ,GAAIqV,KAC9CsgE,IAAOd,EAAe5B,gBAAiB,CAAEjqE,KAAM,CAAEhJ,GAAIqV,KACrDw/D,EAAezB,aAAeyB,EAAe5B,gBAAgB97E,OAAS,EAAIygB,IAAKi9D,EAAe5B,iBAAiBjzE,GAAK,EACpH60E,EAAejqE,MAAQiqE,EAAerwD,SAASrtB,OAAS,EAAI++E,IAAMrB,EAAerwD,UAAUxkB,GAAK,IAQlGm2E,gBAJuB,SAINlsD,EAJM9K,GAIe,IAAZpK,EAAYoK,EAAZpK,SAClBqhE,EAAensD,EAAM0pD,UAAU5+D,GAErCqhE,EAAYjD,eAAiB,EAC7BiD,EAAYnD,gBAAkBoD,IAAMD,EAAY5xD,SAAU,EAAG,IAC7D4xD,EAAYhD,aAAex7D,IAAKw+D,EAAYnD,iBAAiBjzE,GAC7Do2E,EAAYrrE,MAAQqrE,EAAYhD,aAChCgD,EAAYlD,sBAAwB,GACpChvD,IAAKkyD,EAAYnD,gBAAiB,SAACjtE,GAAaowE,EAAYlD,sBAAsBltE,EAAOhG,IAAMgG,KAEjGswE,cAduB,SAcRrsD,GACb,IAAMssD,EAAava,IACnB1kE,OAAO8V,QAAQmpE,GAAY96D,QAAQ,SAAAiE,GAAkB,IAAAd,EAAApR,IAAAkS,EAAA,GAAhBzgB,EAAgB2f,EAAA,GAAXjgB,EAAWigB,EAAA,GACnDqL,EAAMhrB,GAAON,KAGjB63E,cApBuB,SAoBRvsD,EApBQ1R,GAoBoC,IAAnCxD,EAAmCwD,EAAnCxD,SAAmC0hE,EAAAl+D,EAAzBm+D,cAC1BrhE,OADmD,IAAAohE,KAC1BxsD,EAAM0pD,UAAU5+D,GAAUM,YAAS1X,EAClEssB,EAAM0pD,UAAU5+D,GAAY+9D,EAAQz9D,IAEtCshE,mBAxBuB,SAwBH1sD,GAClBA,EAAMlU,cAAgBw9D,KAExBqD,aA3BuB,SA2BT3sD,EA3BSpR,GA2BiB,IAAjB7S,EAAiB6S,EAAjB7S,OAAQrH,EAASka,EAATla,MACvBwrD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IAE7CmqD,EAAUlkD,YAActH,IACtBA,EACFwrD,EAAUhkD,WAEVgkD,EAAUhkD,YAIdgkD,EAAUlkD,UAAYtH,GAExBk4E,oBAxCuB,SAwCF5sD,EAxCEjR,GAwCuB,IAAhBhT,EAAgBgT,EAAhBhT,OAAQgD,EAAQgQ,EAARhQ,KAC9BmhD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IACjDmqD,EAAUlkD,UAAYD,EAAOC,UAC7BkkD,EAAUhkD,SAAWH,EAAOG,SAC5B,IAAMo0C,EAAQu8B,IAAU3sB,EAAU5gD,YAAa,CAAEvJ,GAAIgJ,EAAKhJ,MAC3C,IAAXu6C,GAAiB4P,EAAUlkD,WAET,IAAXs0C,GAAgB4P,EAAUlkD,WACnCkkD,EAAU5gD,YAAYlS,KAAK2R,GAF3BmhD,EAAU5gD,YAAYlR,OAAOkiD,EAAO,IAKxCw8B,eAnDuB,SAmDP9sD,EAAOjkB,GACrB,IAAMmkD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IACjDmqD,EAAU5iD,aAAevB,EAAOuB,kBAED5J,IAA3BwsD,EAAU5iD,cACZ0iB,EAAMypD,oBAAoBvpB,EAAUjjD,2BAA2BuU,QAAQ,SAAAzV,GAAYA,EAAOuB,aAAe4iD,EAAU5iD,gBAGvHyvE,aA3DuB,SA2DT/sD,EA3DS/Q,GA2DiB,IAAjBlT,EAAiBkT,EAAjBlT,OAAQrH,EAASua,EAATva,MACvBwrD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IAE7CmqD,EAAU9jD,WAAa1H,IACrBA,EACFwrD,EAAU5jD,aAEV4jD,EAAU5jD,cAId4jD,EAAU9jD,SAAW1H,GAEvBs4E,oBAxEuB,SAwEFhtD,EAxEE7Q,GAwEuB,IAAhBpT,EAAgBoT,EAAhBpT,OAAQgD,EAAQoQ,EAARpQ,KAC9BmhD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IACjDmqD,EAAU9jD,SAAWL,EAAOK,SAC5B8jD,EAAU5jD,WAAaP,EAAOO,WAC9B,IAAMg0C,EAAQu8B,IAAU3sB,EAAU3gD,YAAa,CAAExJ,GAAIgJ,EAAKhJ,MAC3C,IAAXu6C,GAAiB4P,EAAU9jD,UAET,IAAXk0C,GAAgB4P,EAAU9jD,UACnC8jD,EAAU3gD,YAAYnS,KAAK2R,GAF3BmhD,EAAU3gD,YAAYnR,OAAOkiD,EAAO,IAKxC28B,cAnFuB,SAmFRjtD,EAnFQ3Q,GAmFkB,IAAjBtT,EAAiBsT,EAAjBtT,OAAQrH,EAAS2a,EAAT3a,MACZsrB,EAAMwqB,kBAAkBzuC,EAAOhG,IACvCyG,WAAa9H,GAEzBw4E,qBAvFuB,SAuFDltD,EAvFCzQ,GAuFkB,IAAVxT,EAAUwT,EAAVxT,OACXikB,EAAMwqB,kBAAkBzuC,EAAOhG,IACvCyG,WAAaT,EAAOS,YAEhC2wE,WA3FuB,SA2FXntD,EA3FWtQ,GA2FQ,IAAV3T,EAAU2T,EAAV3T,OACbmkD,EAAYlgC,EAAMwqB,kBAAkBzuC,EAAOhG,IAC7CmqD,IAAWA,EAAUvW,SAAU,IAErCyjC,eA/FuB,SA+FPptD,EAAOqtD,GACrBhgF,OAAO86E,OAAOnoD,EAAMwqB,mBAAmBh5B,QAAQ,SAAAzV,GACzCsxE,EAAUtxE,KACZA,EAAO4tC,SAAU,MAIvB2jC,WAtGuB,SAsGXttD,EAtGWxI,GAsGiB,IAAnB1M,EAAmB0M,EAAnB1M,SAAUpW,EAAS8iB,EAAT9iB,MAC7BsrB,EAAM0pD,UAAU5+D,GAAU0kC,QAAU96C,GAEtC64E,QAzGuB,SAyGdvtD,EAzGcrI,GAyGO,IAAZ5hB,EAAY4hB,EAAZ5hB,GAAI2G,EAAQib,EAARjb,KACFsjB,EAAMwqB,kBAAkBz0C,GAChC2G,KAAOA,GAEnB8wE,wBA7GuB,SA6GExtD,EA7GFnQ,GA6GoB,IAATnb,EAASmb,EAATnb,MAChCsrB,EAAMlU,cAAc0jC,QAAU96C,GAEhC+4E,wBAhHuB,SAgHEztD,EAhHFjQ,GAgHoB,IAATrb,EAASqb,EAATrb,MAChCsrB,EAAMlU,cAAcgoD,2BAA6Bp/D,GAEnDqjB,wBAnHuB,SAmHEiI,GACvB/F,IAAK+F,EAAMlU,cAAcpf,KAAM,SAACsd,GAC9BA,EAAatK,MAAO,KAGxBguE,6BAxHuB,SAwHO1tD,EAxHPjZ,GAwHsB,IAANhR,EAAMgR,EAANhR,GAC/BiU,EAAeq8B,IAAKrmB,EAAMlU,cAAcpf,KAAM,SAAAwI,GAAC,OAAIA,EAAEa,KAAOA,IAC9DiU,IAAcA,EAAatK,MAAO,IAExCyY,oBA5HuB,SA4HF6H,EA5HE3S,GA4Ha,IAANtX,EAAMsX,EAANtX,GAC5BiqB,EAAMlU,cAAcpf,KAAOszB,EAAMlU,cAAcpf,KAAK2a,OAAO,SAAAnS,GAAC,OAAIA,EAAEa,KAAOA,KAE3E43E,qBA/HuB,SA+HD3tD,EA/HC9R,GA+HkB,IAAV0/D,EAAU1/D,EAAV0/D,OAC7B5tD,EAAMlU,cAAcpf,KAAOszB,EAAMlU,cAAcpf,KAAK2a,OAAO,SAAAnS,GAAC,OAAI04E,KAElEC,mBAlIuB,SAkIH7tD,EAlIG1I,GAkIqB,IAAfvhB,EAAeuhB,EAAfvhB,GAAI+3E,EAAWx2D,EAAXw2D,QACzB9jE,EAAeq8B,IAAKrmB,EAAMlU,cAAcpf,KAAM,SAAAwI,GAAC,OAAIA,EAAEa,KAAOA,IAClEiU,GAAgB8jE,EAAQ9jE,IAE1B+jE,WAtIuB,SAsIX/tD,EAtIWrT,GAsIc,IAAhB7B,EAAgB6B,EAAhB7B,SAAU/U,EAAM4W,EAAN5W,GAC7BiqB,EAAM0pD,UAAU5+D,GAAUu+D,YAActzE,GAE1Ci4E,cAzIuB,SAyIRhuD,GACb3yB,OAAO0kB,KAAKiO,EAAM0pD,WAAWl4D,QAAQ,SAAC1G,GACpCkV,EAAM0pD,UAAU5+D,GAAUu+D,YAAcrpD,EAAM0pD,UAAU5+D,GAAUnK,SAGtEstE,WA9IuB,SA8IXjuD,EA9IWlT,GA8ImC,IAArC/W,EAAqC+W,EAArC/W,GAAIm4E,EAAiCphE,EAAjCohE,iBAAkB9+C,EAAetiB,EAAfsiB,YACnC8wB,EAAYlgC,EAAMwqB,kBAAkBz0C,GAC1CmqD,EAAU3gD,YAAc2uE,EAAiB7mE,OAAO,SAAAC,GAAC,OAAIA,IAErD44C,EAAU5jD,WAAa4jD,EAAU3gD,YAAYrS,OAC7CgzD,EAAU9jD,WAAa8jD,EAAU3gD,YAAY6iC,KAAK,SAAAl1B,GAAA,IAAGnX,EAAHmX,EAAGnX,GAAH,OAAYq5B,EAAYr5B,KAAOA,KAEnFo4E,QArJuB,SAqJdnuD,EArJctM,GAqJgC,IAArC3d,EAAqC2d,EAArC3d,GAAIq4E,EAAiC16D,EAAjC06D,iBAAkBh/C,EAAe1b,EAAf0b,YAChC8wB,EAAYlgC,EAAMwqB,kBAAkBz0C,GAC1CmqD,EAAU5gD,YAAc8uE,EAAiB/mE,OAAO,SAAAC,GAAC,OAAIA,IAErD44C,EAAUhkD,SAAWgkD,EAAU5gD,YAAYpS,OAC3CgzD,EAAUlkD,YAAckkD,EAAU5gD,YAAY8iC,KAAK,SAAAvuB,GAAA,IAAG9d,EAAH8d,EAAG9d,GAAH,OAAYq5B,EAAYr5B,KAAOA,KAEpFs4E,oBA5JuB,SA4JFruD,EA5JE/L,GA4J0C,IAAnCle,EAAmCke,EAAnCle,GAAIwsB,EAA+BtO,EAA/BsO,eAC1BxmB,GADyDkY,EAAfmb,YACjCpP,EAAMwqB,kBAAkBz0C,IACvCg6B,cAAIh0B,EAAQ,kBAAmBwmB,IAEjC+rD,eAhKuB,SAgKPtuD,EAhKO7L,GAgK4B,IAA1Bpe,EAA0Boe,EAA1Bpe,GAAI0F,EAAsB0Y,EAAtB1Y,MAAO2zB,EAAejb,EAAfib,YAC5BrzB,EAASikB,EAAMwqB,kBAAkBz0C,GACjCw4E,EAAgB1B,IAAU9wE,EAAOwB,gBAAiB,CAAEtJ,KAAMwH,IAC1DisC,EAAW3rC,EAAOwB,gBAAgBgxE,IAAkB,CAAEt6E,KAAMwH,EAAO4sC,MAAO,EAAGnvB,SAAU,IAEvFs1D,EAAcC,EAAA,GACf/mC,EADY,CAEfW,MAAOX,EAASW,MAAQ,EACxBhG,IAAI,EACJnpB,SAAQ,GAAArd,OAAA6H,IACHgkC,EAASxuB,UADN,CAENkW,MAKAm/C,GAAiB,EACnBx+C,cAAIh0B,EAAOwB,gBAAiBgxE,EAAeC,GAE3Cz+C,cAAIh0B,EAAQ,kBAAT,GAAAF,OAAA6H,IAAgC3H,EAAOwB,iBAAvC,CAAwDixE,MAG/DE,kBAtLuB,SAsLJ1uD,EAtLI3L,GAsL+B,IAA1Bte,EAA0Bse,EAA1Bte,GAAI0F,EAAsB4Y,EAAtB5Y,MAAO2zB,EAAe/a,EAAf+a,YAC/BrzB,EAASikB,EAAMwqB,kBAAkBz0C,GACjCw4E,EAAgB1B,IAAU9wE,EAAOwB,gBAAiB,CAAEtJ,KAAMwH,IAChE,KAAI8yE,EAAgB,GAApB,CAEA,IAAM7mC,EAAW3rC,EAAOwB,gBAAgBgxE,GAClCr1D,EAAWwuB,EAASxuB,UAAY,GAEhCs1D,EAAcC,EAAA,GACf/mC,EADY,CAEfW,MAAOX,EAASW,MAAQ,EACxBhG,IAAI,EACJnpB,SAAUA,EAAS7R,OAAO,SAAA7L,GAAG,OAAIA,EAAIzF,KAAOq5B,EAAYr5B,OAGtDy4E,EAAYnmC,MAAQ,EACtBtY,cAAIh0B,EAAOwB,gBAAiBgxE,EAAeC,GAE3Cz+C,cAAIh0B,EAAQ,kBAAmBA,EAAOwB,gBAAgB8J,OAAO,SAAA9S,GAAC,OAAIA,EAAEN,OAASwH,OAGjFkzE,qBA3MuB,SA2MD3uD,EA3MCvL,GA2MoB,IAAZ1e,EAAY0e,EAAZ1e,GAAIkI,EAAQwW,EAARxW,KAClB+hB,EAAMwqB,kBAAkBz0C,GAChCkI,KAAOA,GAEhB2wE,iBA/MuB,SA+ML5uD,EA/MKjM,GA+MwB,IAApBwyB,EAAoBxyB,EAApBwyB,SAAUrhB,EAAUnR,EAAVmR,OACnClF,EAAMwqB,kBAAkBjE,GAAUsoC,cAAgB3pD,IA6LvC3K,GAzLE,CACfyF,MAAO+xC,IACPwB,QAAS,CACP+W,eADO,SAAAz/D,EAAA4B,GACiI,IAAtHsV,EAAsHlX,EAAtHkX,UAAW2J,EAA2G7gB,EAA3G6gB,OAAYnR,EAA+F9N,EAA/F8N,SAA+Fu0D,EAAAriE,EAArF8hD,uBAAqF,IAAAugB,KAAAC,EAAAtiE,EAA5D3B,gBAA4D,IAAAikE,KAAAC,EAAAviE,EAA1C+hD,kBAA0C,IAAAwgB,KAAtB5jE,EAAsBqB,EAAtBrB,OAAQmB,EAAcE,EAAdF,WACxHmf,EAAO,iBAAkB,CAAEnR,WAAUg0C,kBAAiBzjD,WAAU0jD,aAAYzvD,KAAMgjB,EAAUxU,MAAM6hB,YAAahkB,SAAQmB,gBAEzHs/D,oBAJO,SAIchqD,EAJd5R,GAI+C,IAAxBnE,EAAwBmE,EAAxBnE,cAAeo/D,EAASj7D,EAATi7D,OAM3Cx/C,EAL0C7J,EAAlC6J,QAKD,sBAAuB,CAAEI,SALUjK,EAA1BiK,SAK0BhgB,gBAAeo/D,QAAO/nD,YALtBtB,EAAhBsB,YAKmD2oD,2BAH1C,SAAC9hE,GAClCiZ,YAAsBpB,EAAO7X,OAIjCwjE,wBAZO,SAAAr9D,EAAAE,GAYoDF,EAAhC4R,WACzB2J,EADyDvb,EAArBub,QAC7B,0BAA2B,CAAEh3B,MADqB2b,EAAT3b,SAGlD+4E,wBAfO,SAAAl9D,EAAAE,GAeoDF,EAAhCwR,WACzB2J,EADyDnb,EAArBmb,QAC7B,0BAA2B,CAAEh3B,MADqB+b,EAAT/b,SAGlDuY,YAlBO,SAAA0D,EAkB+B5a,GAAI,IAA3BgsB,EAA2BpR,EAA3BoR,UAAW+J,EAAgBnb,EAAhBmb,SACxB,OAAO/J,EAAUyJ,IAAIC,kBAAkBxe,YAAY,CAAElX,OAClDrD,KAAK,SAACqJ,GAAD,OAAY+vB,EAAS,iBAAkB,CAAEvR,SAAU,CAACxe,QAE9DkW,aAtBO,SAAApB,EAsB8B9U,GAAQ,IAA7BgmB,EAA6BlR,EAA7BkR,WACd2J,EAD2C7a,EAAlB6a,QAClB,aAAc,CAAE3vB,WACvB2O,IAAWuH,aAAa,CAAElc,GAAIgG,EAAOhG,GAAI+P,YAAaic,EAAUxU,MAAM6hB,YAAYtpB,eAEpFmpE,iBA1BO,SAAA/8D,EA0BkCnc,GAAI,IAAzBgsB,EAAyB7P,EAAzB6P,WAElB2J,EAF2CxZ,EAAdwZ,QAEtB,aAAc,CAAE3vB,OADRgmB,EAAUxH,SAASiwB,kBAAkBz0C,MAGtDm5E,sBA9BO,SAAA78D,EA8B4Bg7D,IACjC3hD,EAD4CrZ,EAArBqZ,QAChB,iBAAkB2hD,IAE3Br9D,SAjCO,SAAAwC,EAiC0BzW,GAAQ,IAA7BgmB,EAA6BvP,EAA7BuP,UAAW2J,EAAkBlZ,EAAlBkZ,OAErBA,EAAO,eAAgB,CAAE3vB,SAAQrH,OAAO,IACxCqtB,EAAUyJ,IAAIC,kBAAkBzb,SAAS,CAAEja,GAAIgG,EAAOhG,KACnDrD,KAAK,SAAAqJ,GAAM,OAAI2vB,EAAO,sBAAuB,CAAE3vB,SAAQgD,KAAMgjB,EAAUxU,MAAM6hB,iBAElFlf,WAvCO,SAAAyF,EAuC4B5Z,GAAQ,IAA7BgmB,EAA6BpM,EAA7BoM,UAAW2J,EAAkB/V,EAAlB+V,OAEvBA,EAAO,eAAgB,CAAE3vB,SAAQrH,OAAO,IACxCqtB,EAAUyJ,IAAIC,kBAAkBvb,WAAW,CAAEna,GAAIgG,EAAOhG,KACrDrD,KAAK,SAAAqJ,GAAM,OAAI2vB,EAAO,sBAAuB,CAAE3vB,SAAQgD,KAAMgjB,EAAUxU,MAAM6hB,iBAElF5iB,oBA7CO,SAAAsJ,EA6CuC1K,GAAQ,IAA/B2W,EAA+BjM,EAA/BiM,UAAW+J,EAAoBhW,EAApBgW,SAChC/J,EAAUyJ,IAAIC,kBAAkBjf,oBAAoB,CAAEzW,GAAIqV,IACvD1Y,KAAK,SAAA6nB,GAAQ,OAAIuR,EAAS,iBAAkB,CAAEvR,WAAUzP,SAAU,OAAQM,SAAQmjD,iBAAiB,EAAMC,YAAY,OAE1HzpB,UAjDO,SAAA/uB,EAiD6BuwB,GAAU,IAAjCxkB,EAAiC/L,EAAjC+L,UAAW+J,EAAsB9V,EAAtB8V,SACtB,OAAO/J,EAAUyJ,IAAIC,kBAAkB3c,aAAa,CAAE/Y,GAAIwwC,IACvD7zC,KAAK,SAACqJ,GAAD,OAAY+vB,EAAS,iBAAkB,CAAEvR,SAAU,CAACxe,QAE9DipC,YArDO,SAAA9uB,EAqD+BqwB,GAAU,IAAjCxkB,EAAiC7L,EAAjC6L,UAAW+J,EAAsB5V,EAAtB4V,SACxB/J,EAAUyJ,IAAIC,kBAAkBzc,eAAe,CAAEjZ,GAAIwwC,IAClD7zC,KAAK,SAACqJ,GAAD,OAAY+vB,EAAS,iBAAkB,CAAEvR,SAAU,CAACxe,QAE9DmT,iBAzDO,SAAAmH,EAyDkCkwB,GAAU,IAA/BxkB,EAA+B1L,EAA/B0L,UAAW2J,EAAoBrV,EAApBqV,OAC7B,OAAO3J,EAAUyJ,IAAIC,kBAAkBvc,iBAAiB,CAAEnZ,GAAIwwC,IAC3D7zC,KAAK,SAACqJ,GAAD,OAAY2vB,EAAO,iBAAkB3vB,MAE/CqT,mBA7DO,SAAAoH,EA6DoC+vB,GAAU,IAA/BxkB,EAA+BvL,EAA/BuL,UAAW2J,EAAoBlV,EAApBkV,OAC/B,OAAO3J,EAAUyJ,IAAIC,kBAAkBrc,mBAAmB,CAAErZ,GAAIwwC,IAC7D7zC,KAAK,SAACqJ,GAAD,OAAY2vB,EAAO,iBAAkB3vB,MAE/CqU,QAjEO,SAAAwG,EAiEyB7a,GAAQ,IAA7BgmB,EAA6BnL,EAA7BmL,UAAW2J,EAAkB9U,EAAlB8U,OAEpBA,EAAO,eAAgB,CAAE3vB,SAAQrH,OAAO,IACxCqtB,EAAUyJ,IAAIC,kBAAkBrb,QAAQ,CAAEra,GAAIgG,EAAOhG,KAClDrD,KAAK,SAAAqJ,GAAM,OAAI2vB,EAAO,sBAAuB,CAAE3vB,OAAQA,EAAO+B,iBAAkBiB,KAAMgjB,EAAUxU,MAAM6hB,iBAE3G9e,UAvEO,SAAAwG,EAuE2B/a,GAAQ,IAA7BgmB,EAA6BjL,EAA7BiL,UAAW2J,EAAkB5U,EAAlB4U,OAEtBA,EAAO,eAAgB,CAAE3vB,SAAQrH,OAAO,IACxCqtB,EAAUyJ,IAAIC,kBAAkBnb,UAAU,CAAEva,GAAIgG,EAAOhG,KACpDrD,KAAK,SAAAqJ,GAAM,OAAI2vB,EAAO,sBAAuB,CAAE3vB,SAAQgD,KAAMgjB,EAAUxU,MAAM6hB,iBAElF+/C,SA7EO,SAAA/3D,EA6E0Brb,GAAQ,IAA7BgmB,EAA6B3K,EAA7B2K,UAAW2J,EAAkBtU,EAAlBsU,OACrBA,EAAO,gBAAiB,CAAE3vB,SAAQrH,OAAO,IACzCqtB,EAAUyJ,IAAIC,kBAAkBjb,eAAe,CAAEza,GAAIgG,EAAOhG,KACzDrD,KAAK,SAAAqJ,GACJ2vB,EAAO,uBAAwB,CAAE3vB,cAGvCqzE,WApFO,SAAAl4D,EAoF4Bnb,GAAQ,IAA7BgmB,EAA6B7K,EAA7B6K,UAAW2J,EAAkBxU,EAAlBwU,OACvBA,EAAO,gBAAiB,CAAE3vB,SAAQrH,OAAO,IACzCqtB,EAAUyJ,IAAIC,kBAAkB/a,iBAAiB,CAAE3a,GAAIgG,EAAOhG,KAC3DrD,KAAK,SAAAqJ,GACJ2vB,EAAO,uBAAwB,CAAE3vB,cAGvCgyE,WA3FO,SAAA/2D,EAAAtE,GA2F8CsE,EAAvC+K,WACZ2J,EADmD1U,EAA5B0U,QAChB,aAAc,CAAE5gB,SAD4B4H,EAAhB5H,SACF/U,GADkB2c,EAAN3c,MAG/Ci4E,cA9FO,SAAAp7D,GA8F+BA,EAArBmP,WACf2J,EADoC9Y,EAAV8Y,QACnB,kBAET3T,wBAjGO,SAAAjF,GAiGyC,IAArBiP,EAAqBjP,EAArBiP,WACzB2J,EAD8C5Y,EAAV4Y,QAC7B,2BACPhhB,IAAWqN,wBAAwB,CACjChiB,GAAIgsB,EAAUxH,SAASzO,cAAcnL,MACrCmF,YAAaic,EAAUxU,MAAM6hB,YAAYtpB,eAG7C4nE,6BAxGO,SAAA16D,EAAAE,GAwGsD,IAA7B6O,EAA6B/O,EAA7B+O,UAAW2J,EAAkB1Y,EAAlB0Y,OAAY31B,EAAMmd,EAANnd,GACrD21B,EAAO,+BAAgC,CAAE31B,OACzC2U,IAAWqN,wBAAwB,CACjCG,QAAQ,EACRniB,KACA+P,YAAaic,EAAUxU,MAAM6hB,YAAYtpB,eAG7CupE,yBAhHO,SAAAj8D,EAAAE,GAgHkDF,EAA7B2O,WAC1B2J,EADuDtY,EAAlBsY,QAC9B,sBAAuB,CAAE31B,GADuBud,EAANvd,MAGnDoiB,oBAnHO,SAAA3E,EAAAsE,GAmH6C,IAA7BiK,EAA6BvO,EAA7BuO,UAAW2J,EAAkBlY,EAAlBkY,OAAY31B,EAAM+hB,EAAN/hB,GAC5C21B,EAAO,sBAAuB,CAAE31B,OAChCgsB,EAAUyJ,IAAIC,kBAAkBtT,oBAAoB,CAAEpiB,QAExD83E,mBAvHO,SAAA71D,EAAAM,GAuHqDN,EAAtC+J,WACpB2J,EAD0D1T,EAA3B0T,QACxB,qBAAsB,CAAE31B,GAD2BuiB,EAAfviB,GACR+3E,QADuBx1D,EAAXw1D,WAGjDwB,oBA1HO,SAAA52D,EA0HqC3iB,GAAI,IAAzBgsB,EAAyBrJ,EAAzBqJ,UAAW2J,EAAchT,EAAdgT,OAChCz8B,QAAQ4E,IAAI,CACVkuB,EAAUyJ,IAAIC,kBAAkB9S,sBAAsB,CAAE5iB,OACxDgsB,EAAUyJ,IAAIC,kBAAkB5S,sBAAsB,CAAE9iB,SACvDrD,KAAK,SAAAkmB,GAA0C,IAAAE,EAAAvV,IAAAqV,EAAA,GAAxCw1D,EAAwCt1D,EAAA,GAAtBo1D,EAAsBp1D,EAAA,GAChD4S,EAAO,UAAW,CAAE31B,KAAIq4E,mBAAkBh/C,YAAarN,EAAUxU,MAAM6hB,cACvE1D,EAAO,aAAc,CAAE31B,KAAIm4E,mBAAkB9+C,YAAarN,EAAUxU,MAAM6hB,iBAG9EjW,eAnIO,SAAAH,EAAAI,GAmIyD,IAA9C2I,EAA8C/I,EAA9C+I,UAAW+J,EAAmC9S,EAAnC8S,SAAUJ,EAAyB1S,EAAzB0S,OAAY31B,EAAaqjB,EAAbrjB,GAAI0F,EAAS2d,EAAT3d,MAC/C2zB,EAAcrN,EAAUxU,MAAM6hB,YAC/BA,IAEL1D,EAAO,iBAAkB,CAAE31B,KAAI0F,QAAO2zB,gBACtCrN,EAAUyJ,IAAIC,kBAAkBtS,eAAe,CAAEpjB,KAAI0F,UAAS/I,KAC5D,SAAAiU,GACEmlB,EAAS,wBAAyB/1B,OAIxCsjB,iBA9IO,SAAAC,EAAAE,GA8I2D,IAA9CuI,EAA8CzI,EAA9CyI,UAAW+J,EAAmCxS,EAAnCwS,SAAUJ,EAAyBpS,EAAzBoS,OAAY31B,EAAayjB,EAAbzjB,GAAI0F,EAAS+d,EAAT/d,MACjD2zB,EAAcrN,EAAUxU,MAAM6hB,YAC/BA,IAEL1D,EAAO,oBAAqB,CAAE31B,KAAI0F,QAAO2zB,gBACzCrN,EAAUyJ,IAAIC,kBAAkBpS,iBAAiB,CAAEtjB,KAAI0F,UAAS/I,KAC9D,SAAAiU,GACEmlB,EAAS,wBAAyB/1B,OAIxCw5E,sBAzJO,SAAA90D,EAyJuC1kB,GAAI,IAAzBgsB,EAAyBtH,EAAzBsH,UAAW2J,EAAcjR,EAAdiR,OAClC3J,EAAUyJ,IAAIC,kBAAkB1S,oBAAoB,CAAEhjB,OAAMrD,KAC1D,SAAA6vB,GACEmJ,EAAO,sBAAuB,CAAE31B,KAAIwsB,iBAAgB6M,YAAarN,EAAUxU,MAAM6hB,iBAIvFogD,UAhKO,SAAAr1D,EAgK2BpkB,GAAI,IAAzBgsB,EAAyB5H,EAAzB4H,UAAW2J,EAAcvR,EAAduR,OACtB3J,EAAUyJ,IAAIC,kBAAkB9S,sBAAsB,CAAE5iB,OACrDrD,KAAK,SAAA07E,GAAgB,OAAI1iD,EAAO,UAAW,CAAE31B,KAAIq4E,mBAAkBh/C,YAAarN,EAAUxU,MAAM6hB,iBAErGqgD,aApKO,SAAA70D,EAoK8B7kB,GAAI,IAAzBgsB,EAAyBnH,EAAzBmH,UAAW2J,EAAc9Q,EAAd8Q,OACzB3J,EAAUyJ,IAAIC,kBAAkB5S,sBAAsB,CAAE9iB,OACrDrD,KAAK,SAAAw7E,GAAgB,OAAIxiD,EAAO,aAAc,CAAE31B,KAAIm4E,mBAAkB9+C,YAAarN,EAAUxU,MAAM6hB,iBAExGsgD,OAxKO,SAwKC7tD,EAxKD/G,GAwKkD,IAAxCV,EAAwCU,EAAxCV,EAAGlrB,EAAqC4rB,EAArC5rB,QAASgY,EAA4B4T,EAA5B5T,MAAOmT,EAAqBS,EAArBT,OAAQzgB,EAAakhB,EAAblhB,UAC1C,OAAOioB,EAAME,UAAUyJ,IAAIC,kBAAkBvR,QAAQ,CAAEE,IAAGlrB,UAASgY,QAAOmT,SAAQzgB,cAC/ElH,KAAK,SAAChG,GAGL,OAFAm1B,EAAM6J,OAAO,cAAeh/B,EAAKwsB,UACjC2I,EAAM6J,OAAO,iBAAkB,CAAEnR,SAAU7tB,EAAK6tB,WACzC7tB,KAGbkiF,iBAhLO,SAAA5zD,EAAAG,IAiLLuQ,EADkD1Q,EAAhC0Q,QACX,mBAAoB,CAAE6a,SADqBprB,EAApBorB,SACSrhB,OADW/J,EAAV+J,WAI5CiuC,yIClvBWwc,GAAkB,SAACC,EAAarjB,GAC3C,IAAIsjB,GAAU,EACV78E,EAAU,KAuBd,OAFAA,EAAUwC,OAAO7B,WAnBJ,SAAPm8E,IACJ,IAAMl9E,EAAUg9E,IAGVh9E,GAAWA,EAAO,QAIxBA,EAAO,QAAS,WACVi9E,IACJ78E,EAAUwC,OAAO7B,WAAWm8E,EAAMvjB,MALlCj3D,QAAQyU,KAAK,+EAciBwiD,GAE3B,CAAEv+C,KAPW,WAClB6hE,GAAU,EACVr6E,OAAOnC,aAAaL,MCVlB+8E,GAAiB,SAAAzsE,GAUjB,IATJue,EASIve,EATJue,MACA/b,EAQIxC,EARJwC,YAQIkqE,EAAA1sE,EAPJwH,gBAOI,IAAAklE,EAPO,UAOPA,EAAAC,EAAA3sE,EANJ4nE,aAMI,IAAA+E,KAAA1F,EAAAjnE,EALJirD,uBAKI,IAAAgc,KAAA2F,EAAA5sE,EAJJ8H,cAII,IAAA8kE,KAAAC,EAAA7sE,EAHJ9R,WAGI,IAAA2+E,KAFJjlE,EAEI5H,EAFJ4H,MACAF,EACI1H,EADJ0H,MAEM5D,EAAO,CAAE0D,WAAUhF,eACnBic,EAAYF,EAAME,WAAaF,EAAM7B,MACnC0O,EAAY7M,EAAZ6M,QACF0hD,EAAeruD,EAAUxH,SAASmvD,UAAU2G,KAAUvlE,IAJxDwlE,EAKwC5hD,EAAQtL,aAA5CgvC,EALJke,EAKIle,eAAgB3mD,EALpB6kE,EAKoB7kE,gBAClBikB,IAAa3N,EAAUxU,MAAM6hB,YAE/B87C,EACF9jE,EAAI,MAAY8D,GAASklE,EAAatvE,WAExBpN,IAAVsX,EACF5D,EAAI,MAAYgpE,EAAazvE,MACV,OAAVqK,IACT5D,EAAI,MAAY4D,GAIpB5D,EAAI,OAAagE,EACjBhE,EAAI,IAAU5V,EACd4V,EAAI,WAAiBgrD,EACjB1iC,GAAY,CAAC,UAAW,SAAU,qBAAqBt2B,SAAS0R,KAClE1D,EAAI,gBAAsBqE,GAG5B,IAAM8kE,EAAyBH,EAAa71D,SAASrtB,OAErD,OAAOwd,IAAWE,cAAcxD,GAC7B1U,KAAK,SAAAsP,GACJ,GAAIA,EAASS,OACX,MAAM,IAAInQ,MAAJ,GAAAuJ,OAAamG,EAASjG,OAAtB,KAAAF,OAAgCmG,EAASsK,aAFjC,IAKFiO,EAAyBvY,EAA/BtV,KAAgB6f,EAAevK,EAAfuK,WAKxB,OAJK2+D,GAAS3wD,EAASrtB,QAAU,KAAOkjF,EAAa5gC,SAAW+gC,EAAyB,GACvF1uD,EAAMiK,SAAS,aAAc,CAAEhhB,SAAUA,EAAU/U,GAAIq6E,EAAazvE,QAzD7D,SAAA0C,GAAwE,IAArEwe,EAAqExe,EAArEwe,MAAOtH,EAA8DlX,EAA9DkX,SAAUzP,EAAoDzH,EAApDyH,SAAUyjD,EAA0ClrD,EAA1CkrD,gBAAiBnjD,EAAyB/H,EAAzB+H,OAAQmB,EAAiBlJ,EAAjBkJ,WAC9DikE,EAAaH,KAAUvlE,GAE7B+W,EAAMiK,SAAS,iBAAkB,CAC/BhhB,SAAU0lE,EACVplE,SACAmP,WACAg0C,kBACAhiD,eAmDEkkE,CAAO,CAAE5uD,QAAOtH,WAAUzP,WAAUyjD,kBAAiBnjD,SAAQmB,eACtD,CAAEgO,WAAUhO,gBAXhB,MAaE,SAACnZ,GACNyuB,EAAMiK,SAAS,mBAAoB,CACjC6nB,MAAO,QACPiyB,WAAY,iBACZE,YAAa,CAAC1yE,EAAMK,SACpBT,QAAS,SAoBF09E,GALS,CACtBX,kBACAY,cAZoB,SAAApqE,GAA+E,IAAAqqE,EAAArqE,EAA5EuE,gBAA4E,IAAA8lE,EAAjE,UAAiEA,EAAtD9qE,EAAsDS,EAAtDT,YAAa+b,EAAyCtb,EAAzCsb,MAAyCgvD,EAAAtqE,EAAlC6E,cAAkC,IAAAylE,KAAAC,EAAAvqE,EAAlB/U,WAAkB,IAAAs/E,KAE7FV,GADYvuD,EAAME,WAAaF,EAAM7B,OACZzF,SAASmvD,UAAU2G,KAAUvlE,IACtDyjD,EAA0D,IAAxC6hB,EAAapH,gBAAgB97E,OACrDkjF,EAAahlE,OAASA,EACtB2kE,GAAe,CAAEjlE,WAAUhF,cAAa+b,QAAO0sC,kBAAiBnjD,SAAQ5Z,QAGxE,OAAOm+E,GAFqB,kBAC1BI,GAAe,CAAEjlE,WAAUhF,cAAa+b,QAAOzW,SAAQ5Z,SACb,OC9ExCu+E,GAAiB,SAAAzsE,GAAkD,IAA/Cue,EAA+Cve,EAA/Cue,MAAO/b,EAAwCxC,EAAxCwC,YAAwCmqE,EAAA3sE,EAA3B4nE,aAA2B,IAAA+E,KAAZjlE,EAAY1H,EAAZ0H,MACrD5D,EAAO,CAAEtB,eACP4oB,EAAY7M,EAAZ6M,QAEF0hD,GADYvuD,EAAME,WAAaF,EAAM7B,OACZzF,SAASzO,cAClCsmD,EAAiB1jC,EAAQtL,aAAagvC,eAK5C,GAHAhrD,EAAI,WAAiBgrD,EAErBhrD,EAAI,SAAe,gBACf8jE,EAIF,OAHIkF,EAAatvE,QAAU8hB,OAAO2mD,oBAChCniE,EAAI,MAAYgpE,EAAatvE,OAExBiwE,GAAmB,CAAElvD,QAAOza,OAAM8jE,eAG3Bx3E,IAAVsX,GAAuBolE,EAAazvE,QAAUiiB,OAAO2mD,kBACvDniE,EAAI,MAAYgpE,EAAazvE,MACV,OAAVqK,IACT5D,EAAI,MAAY4D,GAElB,IAAMjd,EAASgjF,GAAmB,CAAElvD,QAAOza,OAAM8jE,UAO3Cp/D,EAAgBskE,EAAa1jF,KAC7BskF,EAAgBllE,EAAczE,OAAO,SAAAnS,GAAC,OAAIA,EAAEwK,OAAM3I,IAAI,SAAA7B,GAAC,OAAIA,EAAEa,KAOnE,OANwB+V,EAAc5e,OAAS8jF,EAAc9jF,OACvC,GAAK8jF,EAAc9jF,OAAS,IAChDka,EAAI,MAAYwV,KAAK+J,IAAL94B,MAAA+uB,KAAIlZ,IAAQstE,IAC5BD,GAAmB,CAAElvD,QAAOza,OAAM8jE,WAG7Bn9E,GAILgjF,GAAqB,SAAAxqE,GAA4B,IAAzBsb,EAAyBtb,EAAzBsb,MAAOza,EAAkBb,EAAlBa,KAAM8jE,EAAY3kE,EAAZ2kE,MACzC,OAAOxgE,IAAWE,cAAcxD,GAC7B1U,KAAK,SAACsP,GACL,GAAIA,EAASS,OACX,MAAM,IAAInQ,MAAJ,GAAAuJ,OAAamG,EAASjG,OAAtB,KAAAF,OAAgCmG,EAASsK,aAEjD,IAAMR,EAAgB9J,EAAStV,KAE/B,OArDS,SAAA2W,GAAqC,IAAlCwe,EAAkCxe,EAAlCwe,MAAO/V,EAA2BzI,EAA3ByI,cAAeo/D,EAAY7nE,EAAZ6nE,MACtCrpD,EAAMiK,SAAS,sBAAuB,CAAEhgB,gBAAeo/D,UAmDnDuF,CAAO,CAAE5uD,QAAO/V,gBAAeo/D,UACxBp/D,IAPJ,MASE,SAAC1Y,GACNyuB,EAAMiK,SAAS,mBAAoB,CACjC6nB,MAAO,QACPiyB,WAAY,sBACZE,YAAa,CAAC1yE,EAAMK,SACpBT,QAAS,SAoBFi+E,GALc,CAC3BlB,kBACAY,cAZoB,SAAA52D,GAA4B,IAAzBjU,EAAyBiU,EAAzBjU,YAAa+b,EAAY9H,EAAZ8H,MAIpCluB,WAAW,kBAAMkuB,EAAMiK,SAAS,2BAA2B,IAAQ,KACnE,IAAMolD,EAAsB,kBAAMnB,GAAe,CAAEjqE,cAAa+b,WAEhE,OADAqvD,IACOvB,GAAgBuB,EAAqB,OCrD/BC,GAJc,CAC3BR,cAPoB,SAAArtE,GAA4B,IAAzBwC,EAAyBxC,EAAzBwC,YAAa+b,EAAYve,EAAZue,MAC9BqvD,EAAsB,kBAVP,SAAA7tE,GAA4B,IAAzBwe,EAAyBxe,EAAzBwe,MAAO/b,EAAkBzC,EAAlByC,YAC/B,OAAO4E,IAAW2M,oBAAoB,CAAEvR,gBACrCpT,KAAK,SAAC0+E,GACLvvD,EAAM6J,OAAO,oBAAqB0lD,GAClCvvD,EAAM6J,OAAO,cAAe0lD,IAC3B,cAJE,MAKE,cAIyBrB,CAAe,CAAEjqE,cAAa+b,WAEhE,OADAqvD,IACOvB,GAAgBuB,EAAqB,skBCV9C,IAqCeG,GArCkB,SAAAvrE,GAAW,OAAAwrE,GAAA,CAC1CC,sBAD0C,SAAAluE,GACuB,IAAxCyH,EAAwCzH,EAAxCyH,SAAU+W,EAA8Bxe,EAA9Bwe,MAA8B2vD,EAAAnuE,EAAvB+H,cAAuB,IAAAomE,KAAPhgF,EAAO6R,EAAP7R,IACxD,OAAOk/E,GAAgBC,cAAc,CAAE7lE,WAAU+W,QAAO/b,cAAasF,SAAQ5Z,SAG/EoZ,cAL0C,SAK3BxD,GACb,OAAOspE,GAAgBX,eAAhBuB,GAAA,GAAoClqE,EAApC,CAA0CtB,kBAGnD2rE,2BAT0C,SAAAnuE,GASH,IAATue,EAASve,EAATue,MAC5B,OAAOovD,GAAqBN,cAAc,CAAE9uD,QAAO/b,iBAGrDirE,mBAb0C,SAatB3pE,GAClB,OAAO6pE,GAAqBlB,eAArBuB,GAAA,GAAyClqE,EAAzC,CAA+CtB,kBAGxD4rE,4BAjB0C,SAAAnrE,GAiBF,IAATsb,EAAStb,EAATsb,MAC7B,OAAOsvD,GAAqBR,cAAc,CAAE9uD,QAAO/b,iBAGrD6rE,gBArB0C,SAAA53D,GAqBd,IAEpB3jB,EAFoB2jB,EAAT8H,MACEE,UAAU9B,SAASC,OAAO/oB,QAAQ,OAAQ,MAC1CoQ,YAAqB,CAAEzB,cAAa2B,OAAQ,SAC/D,OAAOU,YAAY,CAAE/R,MAAKL,GAAI,WAG7B1I,OAAO8V,QAAQuH,KAAYnP,OAAO,SAACC,EAAD0Z,GAAsB,IAAAO,EAAAlS,IAAA2R,EAAA,GAAflgB,EAAeygB,EAAA,GAAVq6D,EAAUr6D,EAAA,GACzD,OAAA67D,GAAA,GACK91E,EADLwsE,IAAA,GAEGhzE,EAAM,SAACoS,GAAD,OAAU0oE,EAAKwB,GAAA,CAAExrE,eAAgBsB,QAEzC,IAhCuC,CAkC1CuD,kBAAmBD,IAAWC,yCCrC1BinE,GAAY,GAAA/1E,OAAMrG,OAAOq8E,SAAS1rD,OAAtB,mBAEL2rD,GAAiB,SAAAzuE,GAAkD,IAA/C0uE,EAA+C1uE,EAA/C0uE,SAAUC,EAAqC3uE,EAArC2uE,aAAc/xD,EAAuB5c,EAAvB4c,SAAUyL,EAAaroB,EAAbqoB,OACjE,GAAIqmD,GAAYC,EACd,OAAO/iF,QAAQC,QAAQ,CAAE6iF,WAAUC,iBAGrC,IAAM57E,EAAG,GAAAyF,OAAMokB,EAAN,gBACHxR,EAAO,IAAIjZ,OAAO6b,SAMxB,OAJA5C,EAAK8C,OAAO,cAAZ,aAAA1V,OAAwCrG,OAAOy8E,yBAA/C,KAAAp2E,QAA4E,IAAI/B,MAAQo4E,gBACxFzjE,EAAK8C,OAAO,gBAAiBqgE,IAC7BnjE,EAAK8C,OAAO,SAAU,gCAEf/b,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IAEL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,SACpBhU,KAAK,SAACy/E,GAAD,MAAU,CAAEJ,SAAUI,EAAIC,UAAWJ,aAAcG,EAAIE,iBAC5D3/E,KAAK,SAACy/E,GAAD,OAASzmD,EAAO,gBAAiBymD,IAAQA,KA2DtCG,GAAiB,SAAAp9D,GAA0C,IAAvC68D,EAAuC78D,EAAvC68D,SAAUC,EAA6B98D,EAA7B88D,aAAc/xD,EAAe/K,EAAf+K,SACjD7pB,EAAG,GAAAyF,OAAMokB,EAAN,gBACHxR,EAAO,IAAIjZ,OAAO6b,SAOxB,OALA5C,EAAK8C,OAAO,YAAawgE,GACzBtjE,EAAK8C,OAAO,gBAAiBygE,GAC7BvjE,EAAK8C,OAAO,aAAc,sBAC1B9C,EAAK8C,OAAO,eAAZ,GAAA1V,OAA+BrG,OAAOq8E,SAAS1rD,OAA/C,oBAEO3wB,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UA0DV6rE,GAVD,CACZC,MArHY,SAAAlvE,GAA4B,IAAzB2c,EAAyB3c,EAAzB2c,SACTvzB,EAAO,CACX+lF,cAAe,OACfL,UAHsC9uE,EAAfyuE,SAIvBW,aAAcd,GACdjyB,MAAO,gCAGHgzB,EAAapX,KAAO7uE,EAAM,SAAC8O,EAAKk1B,EAAGltB,GACvC,IAAMovE,EAAO,GAAA/2E,OAAM2H,EAAN,KAAA3H,OAAW2K,mBAAmBkqB,IAC3C,OAAKl1B,EAGH,GAAAK,OAAUL,EAAV,KAAAK,OAAiB+2E,GAFVA,IAIR,GAGGx8E,EAAG,GAAAyF,OAAMokB,EAAN,qBAAApkB,OAAkC82E,GAE3Cn9E,OAAOq8E,SAASziF,KAAOgH,GAkGvBy8E,SA/Ee,SAAA94D,GAAgD,IAA7Cg4D,EAA6Ch4D,EAA7Cg4D,SAAUC,EAAmCj4D,EAAnCi4D,aAAc/xD,EAAqBlG,EAArBkG,SAAUxW,EAAWsQ,EAAXtQ,KAC9CrT,EAAG,GAAAyF,OAAMokB,EAAN,gBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAawgE,GACzBtjE,EAAK8C,OAAO,gBAAiBygE,GAC7BvjE,EAAK8C,OAAO,aAAc,sBAC1B9C,EAAK8C,OAAO,OAAQ9H,GACpBgF,EAAK8C,OAAO,eAAZ,GAAA1V,OAA+BrG,OAAOq8E,SAAS1rD,OAA/C,oBAEO3wB,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IAEL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAkEvBosE,wBAhG8B,SAAAvsE,GAA8D,IAA3DwrE,EAA2DxrE,EAA3DwrE,SAAUC,EAAiDzrE,EAAjDyrE,aAAc/xD,EAAmC1Z,EAAnC0Z,SAAU/c,EAAyBqD,EAAzBrD,SAAUiT,EAAe5P,EAAf4P,SACvE/f,EAAG,GAAAyF,OAAMokB,EAAN,gBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAawgE,GACzBtjE,EAAK8C,OAAO,gBAAiBygE,GAC7BvjE,EAAK8C,OAAO,aAAc,YAC1B9C,EAAK8C,OAAO,WAAYrO,GACxBuL,EAAK8C,OAAO,WAAY4E,GAEjB3gB,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAoFvBorE,kBACAiB,cAnDoB,SAAAt9D,GAAuC,IAApC08D,EAAoC18D,EAApC08D,IAAKlyD,EAA+BxK,EAA/BwK,SAAU+yD,EAAqBv9D,EAArBu9D,SAAUvpE,EAAWgM,EAAXhM,KAC1CrT,EAAG,GAAAyF,OAAMokB,EAAN,wBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAa4gE,EAAIC,WAC7B3jE,EAAK8C,OAAO,gBAAiB4gE,EAAIE,eACjC5jE,EAAK8C,OAAO,YAAayhE,GACzBvkE,EAAK8C,OAAO,OAAQ9H,GACpBgF,EAAK8C,OAAO,iBAAkB,QAEvB/b,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAuCvBusE,mBApCyB,SAAAt+D,GAAuC,IAApCw9D,EAAoCx9D,EAApCw9D,IAAKlyD,EAA+BtL,EAA/BsL,SAAU+yD,EAAqBr+D,EAArBq+D,SAAUvpE,EAAWkL,EAAXlL,KAC/CrT,EAAG,GAAAyF,OAAMokB,EAAN,wBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAa4gE,EAAIC,WAC7B3jE,EAAK8C,OAAO,gBAAiB4gE,EAAIE,eACjC5jE,EAAK8C,OAAO,YAAayhE,GACzBvkE,EAAK8C,OAAO,OAAQ9H,GACpBgF,EAAK8C,OAAO,iBAAkB,YAEvB/b,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAwBvBwsE,YArBkB,SAAA5kE,GAA8B,IAA3B6jE,EAA2B7jE,EAA3B6jE,IAAKlyD,EAAsB3R,EAAtB2R,SAAUjoB,EAAYsW,EAAZtW,MAC9B5B,EAAG,GAAAyF,OAAMokB,EAAN,iBACHxR,EAAO,IAAIjZ,OAAO6b,SAMxB,OAJA5C,EAAK8C,OAAO,YAAa4gE,EAAIJ,UAC7BtjE,EAAK8C,OAAO,gBAAiB4gE,EAAIH,cACjCvjE,EAAK8C,OAAO,QAASvZ,GAEdxC,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,gCC9HzB,SAASysE,KACP,MAAO,kBAAmB/tC,WAAa,gBAAiB5vC,OAG1D,SAAS49E,KACP,OAAOC,KAAQ3+D,WAAR,MACE,SAACriB,GAAD,OAASiD,QAAQlC,MAAM,4CAA6Cf,KAsB/E,SAASihF,GAA+Bt7E,GACtC,OAAOxC,OAAOoQ,MAAM,6BAA8B,CAChDI,OAAQ,SACRI,QAAS,CACPE,eAAgB,mBAChBO,cAAA,UAAAhL,OAA2B7D,MAE5BtF,KAAK,SAACsP,GACP,IAAKA,EAAS2E,GAAI,MAAM,IAAIrU,MAAM,gCAClC,OAAO0P,IAgCJ,SAASuxE,GAA2BC,EAAWtN,EAAgBluE,EAAOiqB,GACvEkxD,MACFC,KACG1gF,KAAK,SAAC+gF,GAAD,OA/DZ,SAAwBA,EAAcD,EAAWtN,GAC/C,IAAKsN,EAAW,OAAOvkF,QAAQE,OAAO,IAAImD,MAAM,mCAChD,IAAK4zE,EAAgB,OAAOj3E,QAAQE,OAAO,IAAImD,MAAM,kCAErD,IAvB8BohF,EAExBC,EAIAC,EAiBAC,EAAmB,CACvBC,iBAAiB,EACjBC,sBAzB4BL,EAyBgBxN,EAvBxCyN,GAAUD,EADA,IAAIM,QAAQ,EAAIN,EAAaxmF,OAAS,GAAK,IAExDiK,QAAQ,KAAM,KACdA,QAAQ,KAAM,KAEXy8E,EAAUp+E,OAAOy+E,KAAKN,GACrBO,WAAWC,KAAKzwE,IAAIkwE,GAAS78E,IAAI,SAACq9C,GAAD,OAAUA,EAAKggC,WAAW,QAoBlE,OAAOX,EAAaY,YAAYC,UAAUT,GAuDdU,CAAcd,EAAcD,EAAWtN,KAC9DxzE,KAAK,SAAC8hF,GAAD,OAhCZ,SAAoCA,EAAcx8E,EAAOiqB,GACvD,OAAOzsB,OAAOoQ,MAAM,6BAA8B,CAChDI,OAAQ,OACRI,QAAS,CACPE,eAAgB,mBAChBO,cAAA,UAAAhL,OAA2B7D,IAE7B+J,KAAMG,KAAKC,UAAU,CACnBqyE,eACA9nF,KAAM,CACJ+nF,OAAQ,CACNnf,OAAQrzC,EAAuBG,QAC/B3iB,UAAWwiB,EAAuBC,MAClCwyD,QAASzyD,EAAuB/iB,SAChCzC,OAAQwlB,EAAuBE,QAC/BwyD,KAAM1yD,EAAuBK,YAIlC5vB,KAAK,SAACsP,GACP,IAAKA,EAAS2E,GAAI,MAAM,IAAIrU,MAAM,gCAClC,OAAO0P,EAAS0E,SACfhU,KAAK,SAACkiF,GACP,IAAKA,EAAa7+E,GAAI,MAAM,IAAIzD,MAAM,6BACtC,OAAOsiF,IAQmBC,CAA0BL,EAAcx8E,EAAOiqB,KAFzE,MAGS,SAACpzB,GAAD,OAAOyG,QAAQyU,KAAR,2CAAAlO,OAAwDhN,EAAE4E,2kBC/EvE,IAkBDqhF,GAAmB,SAAnBA,EAAoBC,EAAUtU,GAClC,GAAIkK,IAAQoK,IAAapK,IAAQlK,GAE/B,OADAsU,EAAS7nF,OAASuzE,EAASvzE,OACpB8nF,KAAUD,EAAUtU,EAAUqU,IAYnCxlE,GAAY,SAACuS,EAAO9rB,GACxB,OAAO8rB,EAAME,UAAUyJ,IAAIC,kBAAkBnc,UAAU,CAAEvZ,OACtDrD,KAAK,SAACmF,GACLgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,IACxCgqB,EAAM6J,OAAO,aAAc31B,GAC3B8rB,EAAM6J,OAAO,eAAgB,CAAE5gB,SAAU,UAAWM,OAAQrV,IAC5D8rB,EAAM6J,OAAO,eAAgB,CAAE5gB,SAAU,SAAUM,OAAQrV,IAC3D8rB,EAAM6J,OAAO,eAAgB,CAAE5gB,SAAU,oBAAqBM,OAAQrV,OAItE0Z,GAAc,SAACoS,EAAO9rB,GAC1B,OAAO8rB,EAAME,UAAUyJ,IAAIC,kBAAkBhc,YAAY,CAAE1Z,OACxDrD,KAAK,SAACmF,GAAD,OAAkBgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,OAG9D8a,GAAW,SAACkP,EAAO9rB,GACvB,IAAMk/E,EAAwBpzD,EAAM7B,MAAMk1D,cAAcn/E,IAAO,CAAEA,MAKjE,OAJAk/E,EAAsB37E,QAAS,EAC/BuoB,EAAM6J,OAAO,yBAA0B,CAACupD,IACxCpzD,EAAM6J,OAAO,YAAa31B,GAEnB8rB,EAAME,UAAUyJ,IAAIC,kBAAkB9Y,SAAS,CAAE5c,OACrDrD,KAAK,SAACmF,GACLgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,IACxCgqB,EAAM6J,OAAO,YAAa31B,MAI1B8c,GAAa,SAACgP,EAAO9rB,GACzB,IAAMk/E,EAAwBpzD,EAAM7B,MAAMk1D,cAAcn/E,IAAO,CAAEA,MAIjE,OAHAk/E,EAAsB37E,QAAS,EAC/BuoB,EAAM6J,OAAO,yBAA0B,CAACupD,IAEjCpzD,EAAME,UAAUyJ,IAAIC,kBAAkB5Y,WAAW,CAAE9c,OACvDrD,KAAK,SAACmF,GAAD,OAAkBgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,OAe9DkjB,GAAa,SAAC8G,EAAO5G,GACzB,OAAO4G,EAAME,UAAUyJ,IAAIC,kBAAkB1Q,WAAW,CAAEE,WACvDvoB,KAAK,kBAAMmvB,EAAM6J,OAAO,gBAAiBzQ,MAGxCC,GAAe,SAAC2G,EAAO5G,GAC3B,OAAO4G,EAAME,UAAUyJ,IAAIC,kBAAkBvQ,aAAa,CAAED,WACzDvoB,KAAK,kBAAMmvB,EAAM6J,OAAO,mBAAoBzQ,MA6elC1N,GArUD,CACZyS,MAZ0B,CAC1Bm1D,WAAW,EACXC,eAAe,EACfhmD,aAAa,EACb7hB,MAAO,GACP8nE,YAAa,GACbC,eAAe,EACfC,aAAc,GACdL,cAAe,IAKf/hB,UAvKuB,CACvB1/C,QADuB,SACduM,EADc3c,GACgB,IAAbtN,EAAasN,EAArBtE,KAAQhJ,GAAMvE,EAAO6R,EAAP7R,IACxBuN,EAAOihB,EAAMq1D,YAAYt/E,GAEzBy/E,GADOz2E,EAAK5E,MAAQ,IACL0B,OAAO,CAACrK,IAC7Bu+B,cAAIhxB,EAAM,OAAQy2E,IAEpB5hE,UAPuB,SAOZoM,EAPY1c,GAOkB,IAAbvN,EAAauN,EAArBvE,KAAQhJ,GAAMvE,EAAO8R,EAAP9R,IAC1BuN,EAAOihB,EAAMq1D,YAAYt/E,GAEzBy/E,GADOz2E,EAAK5E,MAAQ,IACLkN,OAAO,SAAA1S,GAAC,OAAIA,IAAMnD,IACvCu+B,cAAIhxB,EAAM,OAAQy2E,IAEpBC,YAbuB,SAaVz1D,EAbUzZ,GAa6B,IAAtBxQ,EAAsBwQ,EAA9BxH,KAAQhJ,GAAMgO,EAAgBwC,EAAhBxC,MAAOrP,EAAS6R,EAAT7R,MACnCqK,EAAOihB,EAAMq1D,YAAYt/E,GAC3B2/E,EAAY32E,EAAKxG,OACrBm9E,EAAU3xE,GAASrP,EACnBq7B,cAAIhxB,EAAM,SAAU22E,IAEtBC,uBAnBuB,SAmBC31D,EAnBDjG,GAmBuC,IAArBhkB,EAAqBgkB,EAA7Bhb,KAAQhJ,GAAMqE,EAAe2f,EAAf3f,YACvC2E,EAAOihB,EAAMq1D,YAAYt/E,GAC/Bg6B,cAAIhxB,EAAM,cAAe3E,IAE3Bw7E,eAvBuB,SAuBP51D,EAAOjhB,GACrBihB,EAAMo1D,cAAgBr2E,EAAK9I,YAC3B+pB,EAAMoP,YAAc4lD,KAAUh1D,EAAMoP,aAAe,GAAIrwB,EAAM+1E,KAE/De,iBA3BuB,SA2BL71D,GAChBA,EAAMoP,aAAc,EACpBpP,EAAMo1D,eAAgB,GAExBU,WA/BuB,SA+BX91D,GACVA,EAAMm1D,WAAY,GAEpBY,SAlCuB,SAkCb/1D,GACRA,EAAMm1D,WAAY,GAEpBa,cArCuB,SAqCRh2D,EArCQ9K,GAqCkB,IAAjBnf,EAAiBmf,EAAjBnf,GAAIkgF,EAAa/gE,EAAb+gE,UACpBl3E,EAAOihB,EAAMq1D,YAAYt/E,GAC/BgJ,EAAKk3E,UAAYj4B,KAAKlwC,KAAO/O,EAAKk3E,WAAa,GAAIA,KAErDC,gBAzCuB,SAyCNl2D,EAzCMvK,GAyCsB,IAAnB1f,EAAmB0f,EAAnB1f,GAAIogF,EAAe1gE,EAAf0gE,YACtBp3E,EAAOihB,EAAMq1D,YAAYt/E,GAC/BgJ,EAAKo3E,YAAcn4B,KAAKlwC,KAAO/O,EAAKo3E,aAAe,GAAIA,KAIzDC,aA/CuB,SA+CTp2D,EAAO5U,GACnB,IAAMrM,EAAOihB,EAAMq1D,YAAYjqE,GAC3BrM,GACFgxB,cAAIhxB,EAAM,YAAa,KAG3Bs3E,eArDuB,SAqDPr2D,EAAO5U,GACrB,IAAMrM,EAAOihB,EAAMq1D,YAAYjqE,GAC3BrM,GACFgxB,cAAIhxB,EAAM,cAAe,KAG7Bu3E,YA3DuB,SA2DVt2D,EAAOzS,GAClB0M,IAAK1M,EAAO,SAACxO,GACPA,EAAKlH,cACPk4B,cAAI/P,EAAMk1D,cAAen2E,EAAKlH,aAAa9B,GAAIgJ,EAAKlH,cA3JlC,SAAC+xE,EAAKC,EAAKjc,GACnC,IAAKA,EAAQ,OAAO,EACpB,IAAMkc,EAAUD,EAAIjc,EAAK73D,IACrB+zE,EAEFkL,KAAUlL,EAASlc,EAAMknB,KAIzBlL,EAAIx8E,KAAKwgE,GACT79B,cAAI85C,EAAKjc,EAAK73D,GAAI63D,GACdA,EAAK33D,cAAgB23D,EAAK33D,YAAYmD,SAAS,MACjD22B,cAAI85C,EAAKjc,EAAK33D,YAAY4sC,cAAe+qB,IAiJzC+b,CAAW3pD,EAAMzS,MAAOyS,EAAMq1D,YAAat2E,MAG/Cw3E,uBAnEuB,SAmECv2D,EAAOk1D,GAC7BA,EAAc1jE,QAAQ,SAAC3Z,GACrBk4B,cAAI/P,EAAMk1D,cAAer9E,EAAa9B,GAAI8B,MAG9C2+E,aAxEuB,SAwETx2D,EAAOy2D,GACnBz2D,EAAMoP,YAAYqnD,SAAWA,GAE/BC,WA3EuB,SA2EX12D,EAAO22D,IACoC,IAAjD32D,EAAMoP,YAAYqnD,SAASlzC,QAAQozC,IACrC32D,EAAMoP,YAAYqnD,SAASrpF,KAAKupF,IAGpCC,YAhFuB,SAgFV52D,EAAO62D,GAClB72D,EAAMoP,YAAYynD,QAAUA,GAE9BC,UAnFuB,SAmFZ92D,EAAO+2D,IACmC,IAA/C/2D,EAAMoP,YAAYynD,QAAQtzC,QAAQwzC,IACpC/2D,EAAMoP,YAAYynD,QAAQzpF,KAAK2pF,IAGnCC,gBAxFuB,SAwFNh3D,EAAOi3D,GACtBj3D,EAAMoP,YAAY6nD,YAAcA,GAElCC,cA3FuB,SA2FRl3D,EAAO/E,IACmC,IAAnD+E,EAAMoP,YAAY6nD,YAAY1zC,QAAQtoB,IACxC+E,EAAMoP,YAAY6nD,YAAY7pF,KAAK6tB,IAGvCk8D,iBAhGuB,SAgGLn3D,EAAO/E,GACvB,IAAMq1B,EAAQtwB,EAAMoP,YAAY6nD,YAAY1zC,QAAQtoB,IACrC,IAAXq1B,GACFtwB,EAAMoP,YAAY6nD,YAAY7oF,OAAOkiD,EAAO,IAGhD8mC,gBAtGuB,SAsGNp3D,EAAOjkB,GACtB,IAAMgD,EAAOihB,EAAMq1D,YAAYt5E,EAAOgD,KAAKhJ,IAC3CgJ,EAAKs4E,gBAAkBt4E,EAAKs4E,iBAAmB,GAC/C,IAAM/mC,EAAQvxC,EAAKs4E,gBAAgB9zC,QAAQxnC,EAAOhG,IAE9CgG,EAAOuC,SAAqB,IAAXgyC,EACnBvxC,EAAKs4E,gBAAgBjqF,KAAK2O,EAAOhG,IACvBgG,EAAOuC,SAAqB,IAAXgyC,GAC3BvxC,EAAKs4E,gBAAgBjpF,OAAOkiD,EAAO,IAGvCgnC,iBAjHuB,SAiHLt3D,EAAOjkB,GACvBA,EAAOgD,KAAOihB,EAAMq1D,YAAYt5E,EAAOgD,KAAKhJ,KAE9CwhF,uBApHuB,SAoHCv3D,EAAOhW,GACH,WAAtBA,EAAalY,OACfkY,EAAanK,OAAOd,KAAOihB,EAAMq1D,YAAYrrE,EAAanK,OAAOd,KAAKhJ,KAExEiU,EAAalK,aAAekgB,EAAMq1D,YAAYrrE,EAAalK,aAAa/J,KAE1EyhF,SA1HuB,SA0Hbx3D,EA1HarL,GA0HyB,IAArB5e,EAAqB4e,EAA7B5V,KAAQhJ,GAAM23C,EAAe/4B,EAAf+4B,YACzB3uC,EAAOihB,EAAMq1D,YAAYt/E,GAC/Bg6B,cAAIhxB,EAAM,YAAa2uC,IAEzB4nC,cA9HuB,SA8HRt1D,GACbA,EAAMs1D,eAAgB,EACtBt1D,EAAMu1D,aAAe,IAEvBkC,cAlIuB,SAkIRz3D,GACbA,EAAMs1D,eAAgB,GAExBoC,cArIuB,SAqIR13D,EAAOvd,GACpBud,EAAMs1D,eAAgB,EACtBt1D,EAAMu1D,aAAe9yE,IAiCvBisB,QA7BqB,CACrBC,SAAU,SAAA3O,GAAK,OAAI,SAAAtF,GACjB,IAAM3sB,EAASiyB,EAAMq1D,YAAY36D,GAEjC,OAAK3sB,GAA2B,iBAAV2sB,EAGf3sB,EAFEiyB,EAAMq1D,YAAY36D,EAAMmoB,iBAInChrC,aAAc,SAAAmoB,GAAK,OAAI,SAAAjqB,GAErB,OADYA,GAAMiqB,EAAMk1D,cAAcn/E,IACxB,CAAEA,KAAIy5C,SAAS,MAmB/B+jB,QAAS,CACPokB,mBADO,SACa91D,EAAO9rB,GACpB8rB,EAAM6M,QAAQC,SAAS54B,IAC1B8rB,EAAMiK,SAAS,YAAa/1B,IAGhC6Z,UANO,SAMIiS,EAAO9rB,GAChB,OAAO8rB,EAAME,UAAUyJ,IAAIC,kBAAkB7b,UAAU,CAAE7Z,OACtDrD,KAAK,SAACqM,GAEL,OADA8iB,EAAM6J,OAAO,cAAe,CAAC3sB,IACtBA,KAGb+Q,sBAbO,SAagB+R,EAAO9rB,GACxB8rB,EAAM7B,MAAMoP,aACdvN,EAAME,UAAUyJ,IAAIC,kBAAkB3b,sBAAsB,CAAE/Z,OAC3DrD,KAAK,SAACwiF,GAAD,OAAmBrzD,EAAM6J,OAAO,yBAA0BwpD,MAGtE/hE,YAnBO,SAmBM0O,GACX,OAAOA,EAAME,UAAUyJ,IAAIC,kBAAkBtY,cAC1CzgB,KAAK,SAACklF,GAGL,OAFA/1D,EAAM6J,OAAO,eAAgBtf,KAAIwrE,EAAQ,OACzC/1D,EAAM6J,OAAO,cAAeksD,GACrBA,KAGbtoE,UA3BO,SA2BIuS,EAAO9rB,GAChB,OAAOuZ,GAAUuS,EAAO9rB,IAE1B0Z,YA9BO,SA8BMoS,EAAO9rB,GAClB,OAAO0Z,GAAYoS,EAAO9rB,IAE5B8hF,WAjCO,SAiCKh2D,GAAiB,IAAVqlC,EAAU1mD,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GACvB,OAAOvR,QAAQ4E,IAAIqzD,EAAInwD,IAAI,SAAAhB,GAAE,OAAIuZ,GAAUuS,EAAO9rB,OAEpD+hF,aApCO,SAoCOj2D,GAAiB,IAAVqlC,EAAU1mD,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GACzB,OAAOvR,QAAQ4E,IAAIqzD,EAAInwD,IAAI,SAAAhB,GAAE,OAAI0Z,GAAYoS,EAAO9rB,OAEtD0c,WAvCO,SAuCKoP,GACV,OAAOA,EAAME,UAAUyJ,IAAIC,kBAAkBhZ,aAC1C/f,KAAK,SAACqlF,GAGL,OAFAl2D,EAAM6J,OAAO,cAAetf,KAAI2rE,EAAO,OACvCl2D,EAAM6J,OAAO,cAAeqsD,GACrBA,KAGbplE,SA/CO,SA+CGkP,EAAO9rB,GACf,OAAO4c,GAASkP,EAAO9rB,IAEzB8c,WAlDO,SAkDKgP,EAAO9rB,GACjB,OAAO8c,GAAWgP,EAAO9rB,IAE3BiiF,YArDO,SAqDMn2D,EAAO9rB,GAClB,OArPc,SAAC8rB,EAAOzW,GAC1B,OAAOyW,EAAME,UAAUyJ,IAAIC,kBAAkBpd,WAAW,CAAEtY,GAAIqV,EAAQsD,SAAS,IAC5Ehc,KAAK,SAACmF,GACLgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,MAkPjCmgF,CAAYn2D,EAAO9rB,IAE5BkiF,YAxDO,SAwDMp2D,EAAO9rB,GAClB,OAjPc,SAAC8rB,EAAOzW,GAC1B,OAAOyW,EAAME,UAAUyJ,IAAIC,kBAAkBpd,WAAW,CAAEtY,GAAIqV,EAAQsD,SAAS,IAC5Ehc,KAAK,SAACmF,GAAD,OAAkBgqB,EAAM6J,OAAO,yBAA0B,CAAC7zB,MA+OvDogF,CAAYp2D,EAAO9rB,IAE5BmiF,UA3DO,SA2DIr2D,GAAiB,IAAVqlC,EAAU1mD,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GACtB,OAAOvR,QAAQ4E,IAAIqzD,EAAInwD,IAAI,SAAAhB,GAAE,OAAI4c,GAASkP,EAAO9rB,OAEnDoiF,YA9DO,SA8DMt2D,GAAiB,IAAVqlC,EAAU1mD,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GACxB,OAAOvR,QAAQ4E,IAAIqzD,EAAInwD,IAAI,SAAAhB,GAAE,OAAI8c,GAAWgP,EAAO9rB,OAErD8kB,iBAjEO,SAiEWgH,GAChB,OAAOA,EAAME,UAAUyJ,IAAIC,kBAAkB5Q,mBAC1CnoB,KAAK,SAACukF,GAEL,OADAp1D,EAAM6J,OAAO,kBAAmBurD,GACzBA,KAGbl8D,WAxEO,SAwEK8G,EAAO5G,GACjB,OAAOF,GAAW8G,EAAO5G,IAE3BC,aA3EO,SA2EO2G,EAAO5G,GACnB,OAAOC,GAAa2G,EAAO5G,IAE7Bm9D,YA9EO,SA8EMv2D,GAAqB,IAAdimD,EAActnE,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GAC5B,OAAOvR,QAAQ4E,IAAIi0E,EAAQ/wE,IAAI,SAAAkkB,GAAM,OAAIF,GAAW8G,EAAO5G,OAE7Do9D,cAjFO,SAiFQx2D,GAAoB,IAAb5G,EAAaza,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GAC7B,OAAOvR,QAAQ4E,IAAIonB,EAAOlkB,IAAI,SAAAkkB,GAAM,OAAIC,GAAa2G,EAAO5G,OAE9DnU,aApFO,SAAAwH,EAoF8BvY,GAAI,IAAzBgsB,EAAyBzT,EAAzByT,UAAW2J,EAAcpd,EAAdod,OACnB3sB,EAAOgjB,EAAUxU,MAAM8nE,YAAYt/E,GACnC4K,EAAQgN,IAAK5O,EAAKk3E,WACxB,OAAOl0D,EAAUyJ,IAAIC,kBAAkB3kB,aAAa,CAAE/Q,KAAI4K,UACvDjO,KAAK,SAACkZ,GAGL,OAFA8f,EAAO,cAAe9f,GACtB8f,EAAO,gBAAiB,CAAE31B,KAAIkgF,UAAW7pE,KAAIR,EAAS,QAC/CA,KAGbqC,eA9FO,SAAAW,EA8FgC7Y,GAAI,IAAzBgsB,EAAyBnT,EAAzBmT,UAAW2J,EAAc9c,EAAd8c,OACrB3sB,EAAOgjB,EAAUxU,MAAM8nE,YAAYt/E,GACnC4K,EAAQgN,IAAK5O,EAAKo3E,aACxB,OAAOp0D,EAAUyJ,IAAIC,kBAAkBxd,eAAe,CAAElY,KAAI4K,UACzDjO,KAAK,SAAC02E,GAGL,OAFA19C,EAAO,cAAe09C,GACtB19C,EAAO,kBAAmB,CAAE31B,KAAIogF,YAAa/pE,KAAIg9D,EAAW,QACrDA,KAGbgN,aAxGO,SAAArnE,EAwGmB3D,IACxBsgB,EADgC3c,EAAlB2c,QACP,eAAgBtgB,IAEzBirE,eA3GO,SAAApnE,EA2GqB7D,IAC1BsgB,EADkCzc,EAAlByc,QACT,iBAAkBtgB,IAE3B2H,cA9GO,SAAA5D,EA8G+BpZ,GAAI,IAAzBgsB,EAAyB5S,EAAzB4S,UAAW2J,EAAcvc,EAAduc,OAC1B,OAAO3J,EAAUyJ,IAAIC,kBAAkB1Y,cAAc,CAAEhd,OACpDrD,KAAK,SAACmF,GAAD,OAAkB6zB,EAAO,yBAA0B,CAAC7zB,OAE9Dob,gBAlHO,SAAA5D,EAkHiCtZ,GAAI,IAAzBgsB,EAAyB1S,EAAzB0S,UAAW2J,EAAcrc,EAAdqc,OAC5B,OAAO3J,EAAUyJ,IAAIC,kBAAkBxY,gBAAgB,CAAEld,OACtDrD,KAAK,SAACmF,GAAD,OAAkB6zB,EAAO,yBAA0B,CAAC7zB,OAE9Dg0B,uBAtHO,SAAAtc,EAAAG,GAsHkD,IAA/BqS,EAA+BxS,EAA/BwS,UAAW2J,EAAoBnc,EAApBmc,OAAY3sB,EAAQ2Q,EAAR3Q,MACnCA,EAAK3E,YAAc2nB,EAAUyJ,IAAIC,kBAAkBrX,aAAe2N,EAAUyJ,IAAIC,kBAAkBjX,gBAC1G,CAAEzV,SACHrM,KAAK,SAAA8kB,GAAA,IAAGpd,EAAHod,EAAGpd,YAAH,OAAqBsxB,EAAO,yBAA0B,CAAE3sB,OAAM3E,mBAExEm5E,0BA3HO,SA2HoB1xD,GACzB,IAAM7pB,EAAQ6pB,EAAM7B,MAAMoP,YAAYtpB,YAChCogE,EAAiBrkD,EAAME,UAAU9B,SAASimD,eAIhDqN,GAHkB1xD,EAAME,UAAUC,OAAO4wC,qBAGJsT,EAAgBluE,EAFtB6pB,EAAME,UAAUC,OAAOC,yBAIxDq2D,4BAnIO,SAmIsBz2D,IDtT1B,SAAsC7pB,GACvCm7E,MACFlkF,QAAQ4E,IAAI,CACVy/E,GAA8Bt7E,GAC9Bo7E,KACG1gF,KAAK,SAAC+gF,GACL,OAhEV,SAA0BA,GACxB,OAAOA,EAAaY,YAAYkE,kBAC7B7lF,KAAK,SAAC8lF,GACL,GAAqB,OAAjBA,EACJ,OAAOA,EAAaC,gBA4DTC,CAAgBjF,GAAc/gF,KAAK,SAAC3E,GAAD,MAAY,CAAC0lF,EAAc1lF,OAEtE2E,KAAK,SAAA2Q,GAAiC,IAAAC,EAAAC,IAAAF,EAAA,GAA/BowE,EAA+BnwE,EAAA,GAIrC,OAJqCA,EAAA,IAEnChO,QAAQyU,KAAK,0EAER0pE,EAAakF,aAAajmF,KAAK,SAAC3E,GAChCA,GACHuH,QAAQyU,KAAK,2BAZvB,MAgBS,SAAClb,GAAD,OAAOyG,QAAQyU,KAAR,6CAAAlO,OAA0DhN,EAAE4E,YCuS1E6kF,CAFcz2D,EAAM7B,MAAMoP,YAAYtpB,cAIxCwwE,YAxIO,SAAA3+D,EAwIkBpK,IACvBme,EAD8B/T,EAAjB+T,QACN,cAAene,IAExB+8D,eA3IO,SA2ISzoD,EA3IThS,GA2I8B,IAAZ0K,EAAY1K,EAAZ0K,SACjBhN,EAAQnB,KAAImO,EAAU,QACtBq+D,EAAiBC,KAAQzsE,KAAImO,EAAU,0BAC7CsH,EAAM6J,OAAO,cAAene,GAC5BsU,EAAM6J,OAAO,cAAektD,GAE5B3+D,IAAKM,EAAU,SAACxe,GAEd8lB,EAAM6J,OAAO,mBAAoB3vB,GAEjC8lB,EAAM6J,OAAO,kBAAmB3vB,KAElCke,IAAK4+D,KAAQzsE,KAAImO,EAAU,qBAAsB,SAACxe,GAEhD8lB,EAAM6J,OAAO,mBAAoB3vB,GAEjC8lB,EAAM6J,OAAO,kBAAmB3vB,MAGpC8vE,oBA9JO,SA8JchqD,EA9Jd9R,GA8JwC,IAAjBjE,EAAiBiE,EAAjBjE,cACtByB,EAAQnB,KAAIN,EAAe,gBAC3BgtE,EAAc1sE,KAAIN,EAAe,UAAUzE,OAAO,SAAAC,GAAC,OAAIA,IACvDyxE,EAAkBjtE,EAAc/U,IAAI,SAAAuQ,GAAC,OAAIA,EAAEvR,KACjD8rB,EAAM6J,OAAO,cAAene,GAC5BsU,EAAM6J,OAAO,cAAeotD,GAE5B,IAAME,EAAsBn3D,EAAME,UAAUxH,SAASzO,cAAc09D,QAC7DyP,EAAwB5rF,OAAO8V,QAAQ61E,GAC1C3xE,OAAO,SAAAN,GAAA,IAAAsG,EAAA9J,IAAAwD,EAAA,GAAEvD,EAAF6J,EAAA,GAAAA,EAAA,UAAc0rE,EAAgB3/E,SAASoK,KAC9CzM,IAAI,SAAAmX,GAAA,IAAAoJ,EAAA/T,IAAA2K,EAAA,GAAAoJ,EAAA,UAAAA,EAAA,KAGP2C,IAAKg/D,EAAuB,SAACjvE,GAC3B6X,EAAM6J,OAAO,yBAA0B1hB,MAG3CwQ,YA/KO,SAAA7N,EAAAG,GA+KwC,IAAhCiV,EAAgCpV,EAAhCoV,UAAW2J,EAAqB/e,EAArB+e,OAAYhR,EAAS5N,EAAT4N,MACpC,OAAOqH,EAAUyJ,IAAIC,kBAAkBjR,YAAY,CAAEE,UAClDhoB,KAAK,SAAC6a,GAEL,OADAme,EAAO,cAAene,GACfA,KAGP2rE,OAtLC,SAsLOr3D,EAAOs3D,GAtLd,IAAAp3D,EAAAr1B,EAAA+V,EAAA,OAAA+K,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,cAuLLihB,EAAM6J,OAAO,iBAET3J,EAAYF,EAAME,UAzLjBrU,EAAA3M,KAAA,EAAA2M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MA4LcmU,EAAUyJ,IAAIC,kBAAkB/W,SAC/C,CAAEzO,OAAQmzE,GAAA,GAAKD,MA7Ld,OA4LCzsF,EA5LDghB,EAAAG,KA+LHgU,EAAM6J,OAAO,iBACb7J,EAAM6J,OAAO,WAAYh/B,EAAKib,cAC9Bka,EAAMiK,SAAS,YAAap/B,EAAKib,cAjM9B+F,EAAA9M,KAAA,uBAAA8M,EAAA3M,KAAA,GAAA2M,EAAAK,GAAAL,EAAA,SAmMCjL,EAASiL,EAAAK,GAAEta,QACfouB,EAAM6J,OAAO,gBAAiBjpB,GApM3BiL,EAAAK,GAAA,yBAAAL,EAAAM,SAAA,qBAwMD+G,WAxMC,SAwMW8M,GAxMX,OAAArU,EAAAvE,EAAAwE,MAAA,SAAA46D,GAAA,cAAAA,EAAAtnE,KAAAsnE,EAAAznE,MAAA,cAAAynE,EAAAjlB,OAAA,SAyMEvhC,EAAME,UAAUyJ,IAAIC,kBAAkB1W,cAzMxC,wBAAAszD,EAAAr6D,WA4MPqrE,OA5MO,SA4MCx3D,GAAO,IAAAy3D,EACez3D,EAAME,UAA1BwwD,EADK+G,EACL/G,MAAOtyD,EADFq5D,EACEr5D,SAETvzB,EAAO0sF,GAAA,GACR7G,EADK,CAER7mD,OAAQ7J,EAAM6J,OACdzL,SAAUA,EAASC,SAGrB,OAAOq5D,GAASzH,eAAeplF,GAC5BgG,KAAK,SAACy/E,GACL,IAAMlsE,EAAS,CACbksE,MACAlyD,SAAUvzB,EAAKuzB,SACfjoB,MAAOu6E,EAAMiH,WAGf,OAAOD,GAASrG,YAAYjtE,KAE7BvT,KAAK,WACJmvB,EAAM6J,OAAO,oBACb7J,EAAMiK,SAAS,wBACfjK,EAAM6J,OAAO,cACb7J,EAAMiK,SAAS,uBAAwB,WACvCjK,EAAM6J,OAAO,uBAAwB2lD,GAAyBxvD,EAAM6M,QAAQmkD,aAC5EhxD,EAAMiK,SAAS,6BACfjK,EAAMiK,SAAS,8BACfjK,EAAM6J,OAAO,sBACb7J,EAAM6J,OAAO,iBACb7J,EAAMiK,SAAS,cACfjK,EAAMiK,SAAS,kBAAmB,sBAGxC2tD,UA7OO,SA6OI53D,EAAOjb,GAChB,OAAO,IAAI3X,QAAQ,SAACC,EAASC,GAC3B,IAAMu8B,EAAS7J,EAAM6J,OACrBA,EAAO,cACP7J,EAAME,UAAUyJ,IAAIC,kBAAkB9gB,kBAAkB/D,GACrDlU,KAAK,SAAChG,GACL,GAAKA,EAAK0G,MAuDH,CACL,IAAM4O,EAAWtV,EAAK0G,MAEtBs4B,EAAO,YACiB,MAApB1pB,EAASjG,OACX5M,EAAO,IAAImD,MAAM,+BAEjBnD,EAAO,IAAImD,MAAM,4CA9DJ,CACf,IAAMyM,EAAOrS,EAEbqS,EAAK+G,YAAcc,EACnB7H,EAAK03E,SAAW,GAChB13E,EAAK83E,QAAU,GACf93E,EAAKk4E,YAAc,GACnBvrD,EAAO,iBAAkB3sB,GACzB2sB,EAAO,cAAe,CAAC3sB,IAEvB8iB,EAAMiK,SAAS,eAzerB8nC,EAAep+D,OAAOo+D,aAEvBA,EAC2B,YAA5BA,EAAaC,WAAiCD,EAAa8lB,oBACxDzqF,QAAQC,QAAQ0kE,EAAaC,YAFV5kE,QAAQC,QAAQ,OA0e3BwD,KAAK,SAAAmhE,GAAU,OAAInoC,EAAO,4BAA6BmoC,KAG1DnoC,EAAO,uBAAwB2lD,GAAyBzqE,IAEpD7H,EAAK/G,QACP6pB,EAAMiK,SAAS,aAAc/sB,EAAK/G,OAGlC6pB,EAAMiK,SAAS,qBAcbjK,EAAM6M,QAAQtL,aAAa0vC,iBAC7BjxC,EAAMiK,SAAS,gBAAiB,UAAW,CAAE9gB,MAAO,OACpD6W,EAAMiK,SAAS,qBAAsB,CAAE9gB,MAAO,OAC9C6W,EAAMiK,SAAS,sBAAsB,GAArC,MAAiD,SAAC14B,GAChDkC,QAAQlC,MAAM,gDAAiDA,KAC9DV,KAAK,WACNmvB,EAAMiK,SAAS,aAAc,CAAE6tD,QAAQ,IACvChmF,WAAW,kBAAMkuB,EAAMiK,SAAS,2BAA2B,IAAQ,SAhBrEjK,EAAMiK,SAAS,wBAAyB,CAAEhhB,SAAU,YAGpD+W,EAAMiK,SAAS,8BAGfjK,EAAMiK,SAAS,uBAiBjBjK,EAAMiK,SAAS,cAGfjK,EAAME,UAAUyJ,IAAIC,kBAAkB3kB,aAAa,CAAE/Q,GAAIgJ,EAAKhJ,KAC3DrD,KAAK,SAACkZ,GAAD,OAAa8f,EAAO,cAAe9f,KAthBvB,IAC1BgoD,EAgiBIloC,EAAO,YACPx8B,MApEJ,MAsES,SAACkE,GACNkC,QAAQm8D,IAAIr+D,GACZs4B,EAAO,YACPv8B,EAAO,IAAImD,MAAM,iFCrkBhBsnF,GAA4B,SAAC/3D,EAAO3gB,GAC/C,GAAKA,EAAKE,cACNygB,EAAME,UAAU3G,MAAMy+D,gBAAkB34E,EAAKnL,IAAO1E,SAASyzB,SAC7DjD,EAAME,UAAUxU,MAAM6hB,YAAYr5B,KAAOmL,EAAKE,YAAYwY,WAA9D,CAEA,IAAMkgE,EAAO,CACXtoF,IAAK0P,EAAKE,YAAYrL,GACtBsI,MAAO6C,EAAKlC,QAAQ/K,KACpBmwB,KAAMljB,EAAKlC,QAAQ5H,kBACnB2K,KAAMb,EAAKE,YAAYvE,SAGrBqE,EAAKE,YAAYM,YAAmD,UAArCR,EAAKE,YAAYM,WAAW5P,OAC7DgoF,EAAKz1D,MAAQnjB,EAAKE,YAAYM,WAAWtG,aAG3CsoB,aAAwB7B,EAAME,UAAW+3D,8kBCb3C,IA2QetuD,GAzQH,CACVxL,MAAO,CACL+5D,gBAAiB,EACjBtuD,kBAAmB4lD,KACnB2I,SAAU,GACVrxE,OAAQ,KACRsxE,gBAAiB,KACjBC,sBAAuB,KACvBC,eAAgB,IAElBhnB,UAAW,CACTinB,qBADS,SACap6D,EAAOyL,GAC3BzL,EAAMyL,kBAAoBA,GAE5B4uD,WAJS,SAIGr6D,EAJH3c,GAIoC,IAAxBi3E,EAAwBj3E,EAAxBi3E,YAAaC,EAAWl3E,EAAXk3E,QAChCv6D,EAAMg6D,SAASM,GAAeC,GAEhCC,cAPS,SAOMx6D,EAPN1c,GAOuC,IAAxBg3E,EAAwBh3E,EAAxBg3E,YAAwBh3E,EAAXi3E,QACnCv6D,EAAMg6D,SAASM,GAAatsE,cACrBgS,EAAMg6D,SAASM,IAExBG,WAXS,SAWGz6D,EAAOhoB,GACjBgoB,EAAM06D,QAAU1iF,GAElB2iF,UAdS,SAcE36D,EAAOrX,GAChBqX,EAAMrX,OAASA,GAEjBiyE,kBAjBS,SAiBU56D,EAAOtrB,GACxBsrB,EAAMm6D,eAAiBzlF,GAEzBmmF,yBApBS,SAoBiB76D,EAAOtrB,GAC/BsrB,EAAMk6D,sBAAwBxlF,GAEhComF,yBAvBS,SAuBiB96D,GACxBA,EAAM+5D,gBAAkBn9D,KAAK+J,MAAM3G,EAAM+5D,gBAAiB,IAE5DgB,qBA1BS,SA0Ba/6D,GACpBA,EAAM+5D,gBAAkB,IAG5BxmB,QAAS,CAMPynB,mBANO,SAMan5D,EAAOo5D,GAAS,IAC1Bj7D,EAA4B6B,EAA5B7B,MAAO8L,EAAqBjK,EAArBiK,SAAUJ,EAAW7J,EAAX6J,OAEzB,IACE1L,EAAMi6D,iBACH,CACCrxE,UAAUyB,OACVzB,UAAUsyE,SACV9hF,SAAS4mB,EAAMi6D,gBAAgBtwE,YASrC,OAJE+hB,EAAO,2BADLuvD,EACiC/wE,IAAmBO,iBAEnBP,IAAmBM,UAEjDshB,EAAS,yBAElBqvD,oBAzBO,SAyBct5D,GAAO,IAClB7B,EAA4B6B,EAA5B7B,MAAO8L,EAAqBjK,EAArBiK,SAAUJ,EAAW7J,EAAX6J,OACzB,GAAK1L,EAAMi6D,gBAEX,OADAvuD,EAAO,2BAA4BxhB,IAAmBK,UAC/CuhB,EAAS,wBAIlBsvD,qBAjCO,SAiCev5D,GACpB,OAAO,IAAI5yB,QAAQ,SAACC,EAASC,GAC3B,IAAI,IACM6wB,EAAuC6B,EAAvC7B,MAAO0L,EAAgC7J,EAAhC6J,OAAQI,EAAwBjK,EAAxBiK,SACjBskD,EADyCvuD,EAAdE,UACFxH,SAASmvD,UAAU99D,QAClDoU,EAAMi6D,gBAAkBj6D,EAAMyL,kBAAkBkmD,gBAAgB,CAAE9vD,UAClE7B,EAAMi6D,gBAAgB/wE,iBACpB,UACA,SAAA3C,GAAyB,IAAd9S,EAAc8S,EAAtB+C,OACI7V,IACiB,iBAAlBA,EAAQxB,MACV65B,EAAS,sBAAuB,CAC9BhgB,cAAe,CAACrY,EAAQuW,cACxBkhE,OAAO,IAEkB,WAAlBz3E,EAAQxB,MACjB65B,EAAS,iBAAkB,CACzBvR,SAAU,CAAC9mB,EAAQsI,QACnBqP,QAAQ,EACRmjD,gBAAyD,IAAxC6hB,EAAapH,gBAAgB97E,OAC9C4d,SAAU,YAEe,WAAlBrX,EAAQxB,MACjB65B,EAAS,mBAAoBr4B,EAAQsC,IACV,wBAAlBtC,EAAQxB,OAKjB0B,WAAW,WACTm4B,EAAS,kBAAmB,CAC1BrmB,OAAQhS,EAAQwW,WAAWlU,GAC3B+6D,SAAU,CAACr9D,EAAQwW,WAAW7I,eAEhC0qB,EAAS,aAAc,CAAE5qB,KAAMzN,EAAQwW,aACvC2vE,GAA0B/3D,EAAOpuB,EAAQwW,aACxC,QAIT+V,EAAMi6D,gBAAgB/wE,iBAAiB,OAAQ,WAEzC8W,EAAMk6D,wBAA0BhwE,IAAmBO,kBACrDqhB,EAAS,mBAAoB,CAC3B6nB,MAAO,UACPiyB,WAAY,8BACZ5yE,QAAS,MAIT,IAAIiV,IAAI,CACViC,IAAmBI,MACnBJ,IAAmBK,WAClBT,IAAIkW,EAAMk6D,yBACXpuD,EAAS,uBAAwB,CAAEhhB,SAAU,YAC7CghB,EAAS,6BACTA,EAAS,sBAEXJ,EAAO,wBACPA,EAAO,2BAA4BxhB,IAAmBE,UAExD4V,EAAMi6D,gBAAgB/wE,iBAAiB,QAAS,SAAA6Q,GAAuB,IAAZ3mB,EAAY2mB,EAApBzQ,OACjDhU,QAAQlC,MAAM,+BAAgCA,GAE9C04B,EAAS,sBAEX9L,EAAMi6D,gBAAgB/wE,iBAAiB,QAAS,SAAAgM,GAA4B,IAAjBmmE,EAAiBnmE,EAAzB5L,OAC3CgyE,EAAc,IAAIrzE,IAAI,CAC1B,IACA,OAEMwB,EAAS4xE,EAAT5xE,KACJ6xE,EAAYxxE,IAAIL,IAClBnU,QAAQkU,MAAR,iDAAA3N,OAA+D4N,EAA/D,uBACAiiB,EAAO,2BAA4BxhB,IAAmBG,UAEtD/U,QAAQyU,KAAR,iEAAAlO,OAA8E4N,IAC9E9V,WAAW,WACTm4B,EAAS,yBAzJY,IA0JP9L,EAAM+5D,iBACtBruD,EAAO,4BACH1L,EAAMk6D,wBAA0BhwE,IAAmBI,QACrDwhB,EAAS,wBAAyB,CAAEhhB,SAAU,YAC9CghB,EAAS,8BACTA,EAAS,sBACTA,EAAS,mBAAoB,CAC3B6nB,MAAO,QACPiyB,WAAY,wBACZE,YAAa,CAACr8D,GACdzW,QAAS,OAGb04B,EAAO,2BAA4BxhB,IAAmBI,QAExDwhB,EAAS,sBAEX58B,IACA,MAAOL,GACPM,EAAON,OAIb0sF,oBAvIO,SAAA9lE,GAuImC,IAAnBuK,EAAmBvK,EAAnBuK,MAAO8L,EAAYrW,EAAZqW,SAC5BA,EAAS,wBAAyB,CAAEhhB,SAAU,YAC9CghB,EAAS,8BACTA,EAAS,sBACT9L,EAAMi6D,gBAAgBvwE,SAIxB6nE,sBA/IO,SA+IgB1vD,EA/IhBlN,GAmJJ,IAAA6mE,EAAA7mE,EAHD7J,gBAGC,IAAA0wE,EAHU,UAGVA,EAAAC,EAAA9mE,EAFDnjB,WAEC,IAAAiqF,KAAAC,EAAA/mE,EADDvJ,cACC,IAAAswE,KACD,IAAI75D,EAAM7B,MAAMg6D,SAASlvE,GAAzB,CAEA,IAAMyvE,EAAU14D,EAAM7B,MAAMyL,kBAAkB8lD,sBAAsB,CAClEzmE,WAAU+W,QAAOzW,SAAQ5Z,QAE3BqwB,EAAM6J,OAAO,aAAc,CAAE4uD,YAAaxvE,EAAUyvE,cAEtDoB,qBA3JO,SA2Je95D,EAAO/W,GAC3B,IAAMyvE,EAAU14D,EAAM7B,MAAMg6D,SAASlvE,GAChCyvE,GACL14D,EAAM6J,OAAO,gBAAiB,CAAE4uD,YAAaxvE,EAAUyvE,aAEzD3vE,cAhKO,SAgKQiX,EAAO/W,EAhKfwD,GAgKsC,IAARsG,EAAQgnE,KAAA,GAAAttE,GAC3CuT,EAAM7B,MAAMyL,kBAAkB7gB,cAA9BixE,GAAA,CACEh6D,QACA/W,YACG8J,KAKP68D,2BAzKO,SAyKqB5vD,GAC1B,IAAIA,EAAM7B,MAAMg6D,SAASluE,cAAzB,CACA,IAAMyuE,EAAU14D,EAAM7B,MAAMyL,kBAAkBgmD,2BAA2B,CAAE5vD,UAC3EA,EAAM6J,OAAO,aAAc,CAAE4uD,YAAa,gBAAiBC,cAE7DuB,0BA9KO,SA8KoBj6D,GACzB,IAAM04D,EAAU14D,EAAM7B,MAAMg6D,SAASluE,cAChCyuE,GACL14D,EAAM6J,OAAO,gBAAiB,CAAE4uD,YAAa,gBAAiBC,aAEhExJ,mBAnLO,SAmLalvD,EAnLbjT,GAmLiC,IAARgG,EAAQgnE,KAAA,GAAAhtE,GACtCiT,EAAM7B,MAAMyL,kBAAkBslD,mBAA9B8K,GAAA,CACEh6D,SACGjN,KAKP88D,4BA3LO,SA2LsB7vD,GAC3B,IAAIA,EAAM7B,MAAMg6D,SAAZ,eAAJ,CACA,IAAMO,EAAU14D,EAAM7B,MAAMyL,kBAAkBimD,4BAA4B,CAAE7vD,UAE5EA,EAAM6J,OAAO,aAAc,CAAE4uD,YAAa,iBAAkBC,cAE9DwB,2BAjMO,SAiMqBl6D,GAC1B,IAAM04D,EAAU14D,EAAM7B,MAAMg6D,SAASG,eAChCI,GACL14D,EAAM6J,OAAO,gBAAiB,CAAE4uD,YAAa,iBAAkBC,aAEjEyB,oBAtMO,SAsMcn6D,EAAO3vB,GAC1B,IAAIk/E,EAAWvvD,EAAM7B,MAAMm6D,eAAe9yE,OAAO,SAAC0oD,GAAD,OAAQA,IAAO79D,IAChE2vB,EAAM6J,OAAO,oBAAqB0lD,IAIpCqJ,WA5MO,SA4MK54D,EAAO7pB,GACjB6pB,EAAM6J,OAAO,aAAc1zB,IAE7BikF,iBA/MO,SAAAltE,GA+MmD,IAAtC+c,EAAsC/c,EAAtC+c,SAAUJ,EAA4B3c,EAA5B2c,OAAQ1L,EAAoBjR,EAApBiR,MAAO+B,EAAahT,EAAbgT,UAErC/pB,EAAQgoB,EAAM06D,QACpB,GAAI34D,EAAU9B,SAASmnD,oBAAkC,IAAVpvE,GAA0C,OAAjBgoB,EAAMrX,OAAiB,CAC7F,IAAMA,EAAS,IAAIuzE,UAAO,UAAW,CAAEj2E,OAAQ,CAAEjO,WACjD2Q,EAAOwzE,UAEPzwD,EAAO,YAAa/iB,GACpBmjB,EAAS,iBAAkBnjB,KAG/ByzE,qBA1NO,SAAAntE,GA0NkC,IAAjByc,EAAiBzc,EAAjByc,OAAQ1L,EAAS/Q,EAAT+Q,MAC9BA,EAAMrX,QAAUqX,EAAMrX,OAAO0zE,aAC7B3wD,EAAO,YAAa,SC1OXxqB,GAjCF,CACX8e,MAAO,CACL8wC,SAAU,GACVwrB,QAAS,CAAEt8D,MAAO,KAEpBmzC,UAAW,CACTopB,WADS,SACGv8D,EAAOs8D,GACjBt8D,EAAMs8D,QAAUA,GAElBE,WAJS,SAIGx8D,EAAOvsB,GACjBusB,EAAM8wC,SAAS1jE,KAAKqG,GACpBusB,EAAM8wC,SAAW9wC,EAAM8wC,SAASp7D,OAAO,GAAI,KAE7C+mF,YARS,SAQIz8D,EAAO8wC,GAClB9wC,EAAM8wC,SAAWA,EAASp7D,OAAO,GAAI,MAGzC69D,QAAS,CACPmpB,eADO,SACS76D,EAAOlZ,GACrB,IAAM2zE,EAAU3zE,EAAO2zE,QAAQ,eAE/BA,EAAQzzD,GAAG,UAAW,SAAC8zD,GACrB96D,EAAM6J,OAAO,aAAcixD,KAE7BL,EAAQzzD,GAAG,WAAY,SAAAxlB,GAAkB,IAAfytD,EAAeztD,EAAfytD,SACxBjvC,EAAM6J,OAAO,cAAeolC,KAE9BwrB,EAAQxhF,OACR+mB,EAAM6J,OAAO,aAAc4wD,MCoBlB/J,GA9CD,CACZvyD,MAAO,CACL+xD,UAAU,EACVC,cAAc,EAKd4K,UAAU,EAIVpD,WAAW,GAEbrmB,UAAW,CACT0pB,cADS,SACM78D,EADN3c,GACyC,IAA1B0uE,EAA0B1uE,EAA1B0uE,SAAUC,EAAgB3uE,EAAhB2uE,aAChChyD,EAAM+xD,SAAWA,EACjB/xD,EAAMgyD,aAAeA,GAEvB8K,YALS,SAKI98D,EAAOhoB,GAClBgoB,EAAM48D,SAAW5kF,GAEnB+kF,SARS,SAQC/8D,EAAOhoB,GACfgoB,EAAMw5D,UAAYxhF,GAEpBglF,WAXS,SAWGh9D,GACVA,EAAMw5D,WAAY,EAGlBlmB,iBAAItzC,EAAO,WAGf0O,QAAS,CACPmkD,SAAU,SAAA7yD,GAAK,OAAI,WAGjB,OAAOA,EAAMw5D,WAAax5D,EAAMhoB,OAASgoB,EAAM48D,WAEjDK,aAAc,SAAAj9D,GAAK,OAAI,WAGrB,OAAOA,EAAMw5D,WAAax5D,EAAMhoB,UC7BhCklF,GAAa,SAACl9D,GAClBA,EAAMm9D,SAAWn9D,EAAMo9D,aACvBp9D,EAAMhG,SAAW,IA6DJqjE,GAAA,CACbC,YAAY,EACZt9D,MAvEY,CACZhG,SAAU,GACVmjE,SAVwB,WAWxBC,aAXwB,YAgFxB1uD,QA5Dc,CACd1U,SAAU,SAACgG,EAAO0O,GAChB,OAAO1O,EAAMhG,UAEfujE,iBAAkB,SAACv9D,EAAO0O,EAAS3M,GACjC,MAzBsB,aAyBf/B,EAAMm9D,UAEfK,cAAe,SAACx9D,EAAO0O,EAAS3M,GAC9B,MA3BmB,UA2BZ/B,EAAMm9D,UAEfM,aAAc,SAACz9D,EAAO0O,EAAS3M,GAC7B,MA3BkB,SA2BX/B,EAAMm9D,UAEfO,iBAAkB,SAAC19D,EAAO0O,EAAS3M,GACjC,MA7BsB,aA6Bf/B,EAAMm9D,WA+CfhqB,UA1CgB,CAChBwqB,mBADgB,SACI39D,EAAOm9D,GACrBA,IACFn9D,EAAMo9D,aAAeD,EACrBn9D,EAAMm9D,SAAWA,IAGrBS,gBAPgB,SAOC59D,GACfA,EAAMm9D,SA/CgB,YAiDxBU,aAVgB,SAUF79D,GACZA,EAAMm9D,SAjDa,SAmDrBW,WAbgB,SAaJ99D,EAbI3c,GAaiB,IAAZ2W,EAAY3W,EAAZ2W,SACnBgG,EAAMhG,SAAWA,EACjBgG,EAAMm9D,SAlDY,QAoDpBY,gBAjBgB,SAiBC/9D,GACfA,EAAMm9D,SApDgB,YAsDxBa,YApBgB,SAoBHh+D,GACXA,EAAMm9D,SAxDY,QA0DpBc,SAvBgB,SAuBNj+D,GACRk9D,GAAWl9D,KAmBbuzC,QAdc,CAERif,MAFQ,SAAAlvE,EAAAiD,GAAA,IAAAyZ,EAAA8L,EAAAJ,EAAA/jB,EAAA,OAAA6F,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,cAECof,EAFD1c,EAEC0c,MAAO8L,EAFRxoB,EAEQwoB,SAAUJ,EAFlBpoB,EAEkBooB,OAAY/jB,EAF9BpB,EAE8BoB,aAC1C+jB,EAAO,WAAY/jB,EAAc,CAAEu2E,MAAM,IAH7BxwE,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAINke,EAAS,YAAankB,EAAc,CAAEu2E,MAAM,KAJtC,OAKZhB,GAAWl9D,GALC,wBAAAtS,EAAAM,sBC9BDmwE,GApCK,CAClBn+D,MAAO,CACLhU,MAAO,GACPoyE,aAAc,EACdC,WAAW,GAEblrB,UAAW,CACT5d,SADS,SACCv1B,EAAOhU,GACfgU,EAAMhU,MAAQA,GAEhBsyE,WAJS,SAIGt+D,EAAOswB,GACjBtwB,EAAMq+D,WAAY,EAClBr+D,EAAMo+D,aAAe9tC,GAEvB5mC,MARS,SAQFsW,GACLA,EAAMq+D,WAAY,IAGtB9qB,QAAS,CACPhe,SADO,SAAAlyC,EACelE,IAKpBusB,EALiCroB,EAAvBqoB,QAKH,WAJOvsB,EAAYkI,OAAO,SAAA3F,GAC/B,IAAM5P,EAAOy3B,KAAgBD,SAAS5nB,EAAW1G,UACjD,MAAgB,UAATlJ,GAA6B,UAATA,GAA6B,UAATA,MAInDwsF,WARO,SAAAh7E,EAQwBi7E,IAE7B7yD,EAFsCpoB,EAA1BooB,QAEL,aAF+BpoB,EAAlB0c,MACAhU,MAAMu3B,QAAQg7C,IACJ,IAEhCC,iBAZO,SAAAj4E,IAaLmlB,EAD4BnlB,EAAVmlB,QACX,YCRE+yD,GAzBK,CAClBz+D,MAAO,CACL0+D,OAAQ,IAEVnrB,QAAS,CACPorB,YADO,SAAAt7E,GAC6B,IAArB0e,EAAqB1e,EAArB0e,UAAW2J,EAAUroB,EAAVqoB,OACxB3J,EAAUyJ,IAAIC,kBAAkBpY,mBAAmB3gB,KAAK,SAACgsF,GACvDhzD,EAAO,aAAcgzD,MAGzBxL,YANO,SAAA5vE,EAMoCvN,GAAI,IAAhCgsB,EAAgCze,EAAhCye,UAAW2J,EAAqBpoB,EAArBooB,OAAQ1L,EAAa1c,EAAb0c,MAChC+B,EAAUyJ,IAAIC,kBAAkBlY,iBAAiB,CAAExd,OAAMrD,KAAK,SAACsP,GACrC,MAApBA,EAASjG,QACX2vB,EAAO,aAAc1L,EAAM0+D,OAAOr3E,OAAO,SAAArP,GAAK,OAAIA,EAAMjC,KAAOA,SAKvEo9D,UAAW,CACTyrB,WADS,SACG5+D,EAAO0+D,GACjB1+D,EAAM0+D,OAASA,yBCiBNG,GAnCC,CACd7+D,MAAO,CACL5U,OAAQ,KACRmP,SAAU,GACVukE,aAAc,GACdC,gBAAgB,GAElB5rB,UAAW,CACT6rB,uBADS,SACeh/D,EADf3c,GAC0D,IAAlC+H,EAAkC/H,EAAlC+H,OAAQmP,EAA0BlX,EAA1BkX,SAAUukE,EAAgBz7E,EAAhBy7E,aACjD9+D,EAAM5U,OAASA,EACf4U,EAAMzF,SAAWA,EACjByF,EAAM8+D,aAAeA,EACrB9+D,EAAM++D,gBAAiB,GAEzBE,wBAPS,SAOgBj/D,GACvBA,EAAM++D,gBAAiB,IAG3BxrB,QAAS,CACPyrB,uBADO,SAAA17E,EAAAiD,GACoE,IAAjDwb,EAAiDze,EAAjDye,UAAW2J,EAAsCpoB,EAAtCooB,OAAYtgB,EAA0B7E,EAA1B6E,OAA0B8zE,EAAA34E,EAAlBkT,iBAAkB,IAAAylE,EAAN,GAAMA,EACnEC,EAAoB1lE,EAAU1iB,IAAI,SAAAhB,GAAE,OAAIgsB,EAAUxH,SAASiwB,kBAAkBz0C,KAC7E+oF,EAAerlE,EACfc,EAAW4kE,EAAkBtjF,OACjCwL,KAAO0a,EAAUxH,SAAS+rB,YACxB,SAAAvqC,GAAM,OAAIA,EAAOgD,KAAKhJ,KAAOqV,IAAW0zE,EAAa1lF,SAAS2C,EAAOhG,OAGzE21B,EAAO,yBAA0B,CAAEtgB,SAAQmP,WAAUukE,kBAEvDG,wBAXO,SAAAllE,IAYL2R,EADmC3R,EAAV2R,QAClB,8BCqCE+jB,GAlED,CACZzvB,MAAO,CAELo/D,aAAc,GACd1vC,YAAa,IAEfyjB,UAAW,CACTksB,eADS,SACOr/D,EAAO/hB,GACrB,IAAMqhF,EAAet/D,EAAM0vB,YAAYzxC,EAAKlI,IAE5CkI,EAAK6xC,QAAUh2C,KAAKk9C,MAAQl9C,KAAKgJ,MAAM7E,EAAK4xC,YACxCyvC,EACFvvD,cAAI/P,EAAM0vB,YAAazxC,EAAKlI,GAAIg0E,IAAMuV,EAAcrhF,IAEpD8xB,cAAI/P,EAAM0vB,YAAazxC,EAAKlI,GAAIkI,IAGpCshF,UAXS,SAWEv/D,EAAOzH,GAChB,IAAMinE,EAAex/D,EAAMo/D,aAAa7mE,GACpCinE,EACFzvD,cAAI/P,EAAMo/D,aAAc7mE,EAAQinE,EAAe,GAE/CzvD,cAAI/P,EAAMo/D,aAAc7mE,EAAQ,IAGpCknE,YAnBS,SAmBIz/D,EAAOzH,GAClB,IAAMinE,EAAex/D,EAAMo/D,aAAa7mE,GACpCinE,EACFzvD,cAAI/P,EAAMo/D,aAAc7mE,EAAQinE,EAAe,GAE/CzvD,cAAI/P,EAAMo/D,aAAc7mE,EAAQ,KAItCg7C,QAAS,CACP8rB,eADO,SAAAh8E,EACqBpF,IAC1BytB,EADgCroB,EAAhBqoB,QACT,iBAAkBztB,IAE3ByhF,kBAJO,SAAAp8E,EAI6CiV,GAAQ,IAAvCwJ,EAAuCze,EAAvCye,UAAW+J,EAA4BxoB,EAA5BwoB,SAAUJ,EAAkBpoB,EAAlBooB,OACxC3J,EAAUyJ,IAAIC,kBAAkBhT,UAAU,CAAEF,WAAU7lB,KAAK,SAAAuL,GACzDtK,WAAW,WACLouB,EAAU0tB,MAAM2vC,aAAa7mE,IAC/BuT,EAAS,oBAAqBvT,IAE/B,KACHmT,EAAO,iBAAkBztB,MAG7BshF,UAdO,SAAAh5E,EAcqCgS,GAAQ,IAAvCwJ,EAAuCxb,EAAvCwb,UAAW2J,EAA4BnlB,EAA5BmlB,OAAQI,EAAoBvlB,EAApBulB,SACzB/J,EAAU0tB,MAAM2vC,aAAa7mE,IAChC5kB,WAAW,kBAAMm4B,EAAS,oBAAqBvT,IAAS,KAE1DmT,EAAO,YAAanT,IAEtBknE,YApBO,SAAA1lE,EAoBkBxB,IACvBmT,EAD+B3R,EAAlB2R,QACN,cAAenT,IAExBonE,SAvBO,SAAAzqE,EAAAO,GAuBmD,IAA9CsM,EAA8C7M,EAA9C6M,UAAW2J,EAAmCxW,EAAnCwW,OAAgBnT,GAAmB9C,EAAvB1f,GAAuB0f,EAAnB8C,QAAQC,EAAW/C,EAAX+C,QAC7C,OAAOuJ,EAAUyJ,IAAIC,kBAAkBpT,KAAK,CAAEE,SAAQC,YAAW9lB,KAAK,SAAAuL,GAEpE,OADAytB,EAAO,iBAAkBztB,GAClBA,OCvCA2S,GAxBI,CACjBoP,MAAO,CACL/Z,OAAQ,KACR84E,gBAAgB,GAElB5rB,UAAW,CACTysB,oBADS,SACY5/D,EAAO/Z,GAC1B+Z,EAAM/Z,OAASA,EACf+Z,EAAM++D,gBAAiB,GAEzBc,qBALS,SAKa7/D,GACpBA,EAAM++D,gBAAiB,IAG3BxrB,QAAS,CACPqsB,oBADO,SAAAv8E,EAC0B4C,IAC/BylB,EADuCroB,EAAlBqoB,QACd,sBAAuBzlB,IAEhC45E,qBAJO,SAAAv8E,IAKLooB,EADgCpoB,EAAVooB,QACf,kICiHPo0D,GAAiB,SAACC,EAAStsF,GAC/B,GAAKA,EAAQmO,gBACb,OAAOm+E,EAAQC,oBAAoBvsF,EAAQmO,kBA2F9Bq+E,GAXK,CAClB51D,IAlIU,SAAC01D,EAAD18E,GAA4D,IAAtC68E,EAAsC78E,EAAhDytD,SAAgDqvB,EAAA98E,EAAzB+8E,mBAAyB,IAAAD,KACtE,GAAKJ,EACL,IAFsE,IAAAM,EAAA,SAE7DrzF,GACP,IAAMyG,EAAUysF,EAAYlzF,GAG5B,GAAIyG,EAAQgO,UAAYs+E,EAAQt6E,OAAU,OAAAirB,OAAA,GAE1C,GAAIj9B,EAAQ6sF,OAAQ,CAClB,IAAMC,EAAcR,EAAQS,QAAQ/sF,EAAQ6sF,QAC5C,GAAIC,EAYF,OATIR,EAAQS,QAAQ/sF,EAAQsC,aACnBgqF,EAAQS,QAAQ/sF,EAAQsC,IAC/BgqF,EAAQjvB,SAAWivB,EAAQjvB,SAASzpD,OAAO,SAAAs1E,GAAG,OAAIA,EAAI5mF,KAAOtC,EAAQsC,MAEvE1I,OAAO0xB,OAAOwhE,EAAa9sF,EAAS,CAAEL,OAAO,WACtCmtF,EAAW,OAClBR,EAAQS,QAAQD,EAAYxqF,IAAMwqF,SAC3BR,EAAQS,QAAQ/sF,EAAQ6sF,QAE/B,CAAA5vD,OAAA,KAICqvD,EAAQj/E,QAAWrN,EAAQkO,SAAWlO,EAAQsC,GAAKgqF,EAAQj/E,SAC9Di/E,EAAQj/E,MAAQrN,EAAQsC,MAGrBgqF,EAAQp/E,OAASlN,EAAQsC,GAAKgqF,EAAQp/E,QACrCy/E,IACFL,EAAQp/E,MAAQlN,EAAQsC,IAIvBgqF,EAAQS,QAAQ/sF,EAAQsC,KAAQ+pF,GAAeC,EAAStsF,KACvDssF,EAAQU,kBAAoBhtF,EAAQsC,IACtCgqF,EAAQW,kBAEVX,EAAQS,QAAQ/sF,EAAQsC,IAAMtC,EAC9BssF,EAAQjvB,SAAS1jE,KAAK2yF,EAAQS,QAAQ/sF,EAAQsC,KAC9CgqF,EAAQC,oBAAoBvsF,EAAQmO,kBAAmB,IAxClD5U,EAAI,EAAGA,EAAIkzF,EAAYhzF,OAAQF,IAAK,KAAA2zF,EAAAN,EAApCrzF,GAAoC,cAAA+V,KAAA49E,GAAA,OAAAA,EAAAjwD,IAiI7Co9B,MAtNY,SAACroD,GACb,MAAO,CACL+6E,QAAS,GACTR,oBAAqB,GACrBlvB,SAAU,GACV4vB,gBAAiB,EACjBD,kBAAmB,IACnBh7E,OAAQA,EACR3E,WAAOpN,EACPiN,WAAOjN,IA8MTktF,QAzEc,SAACb,GACf,IAAKA,EAAW,MAAO,GAEvB,IAIIc,EAJE9yF,EAAS,GACT+iE,EAAWgwB,KAAUf,EAAQjvB,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,QAClEiwB,EAAejwB,EAAS,GAC1BkwB,EAAkBlwB,EAASA,EAAS5jE,OAAS,GAGjD,GAAI6zF,EAAc,CAChB,IAAMjqC,EAAO,IAAIh9C,KAAKinF,EAAalnF,YACnCi9C,EAAKmqC,SAAS,EAAG,EAAG,EAAG,GACvBlzF,EAAOX,KAAK,CACV0E,KAAM,OACNglD,OACA/gD,GAAI+gD,EAAKoqC,UAAUlkE,aAMvB,IAFA,IAAImkE,GAAY,EAEPn0F,EAAI,EAAGA,EAAI8jE,EAAS5jE,OAAQF,IAAK,CACxC,IAAMyG,EAAUq9D,EAAS9jE,GACnBo0F,EAActwB,EAAS9jE,EAAI,GAE3B8pD,EAAO,IAAIh9C,KAAKrG,EAAQoG,YAC9Bi9C,EAAKmqC,SAAS,EAAG,EAAG,EAAG,GAGnBD,GAAmBA,EAAgBlqC,KAAOA,IAC5C/oD,EAAOX,KAAK,CACV0E,KAAM,OACNglD,OACA/gD,GAAI+gD,EAAKoqC,UAAUlkE,aAGrBgkE,EAAe,QAAa,EAC5BH,OAAwBntF,EACxBytF,GAAY,GAGd,IAAMhsF,EAAS,CACbrD,KAAM,UACNpF,KAAM+G,EACNqjD,OACA/gD,GAAItC,EAAQsC,GACZsrF,eAAgBR,IAIbO,GAAeA,EAAYxnE,cAAgBnmB,EAAQmmB,aACtDzkB,EAAM,QAAa,EACnB0rF,OAAwBntF,KAIrBstF,GAAmBA,EAAgBt0F,MAAQs0F,EAAgBt0F,KAAKktB,cAAgBnmB,EAAQmmB,YAAcunE,KACzGN,EAAwBS,OACxBnsF,EAAM,QAAa,EACnBA,EAAM,eAAqB0rF,GAG7B9yF,EAAOX,KAAK+H,GACZ6rF,EAAkB7rF,EAClBgsF,GAAY,EAGd,OAAOpzF,GAOPwzF,cAxLoB,SAACxB,EAASr6E,GAC9B,GAAKq6E,EAAL,CAIA,GAHAA,EAAQjvB,SAAWivB,EAAQjvB,SAASzpD,OAAO,SAAAvT,GAAC,OAAIA,EAAEiC,KAAO2P,WAClDq6E,EAAQS,QAAQ96E,GAEnBq6E,EAAQp/E,QAAU+E,EAAW,CAC/B,IAAMtE,EAAc4pE,IAAQ+U,EAAQjvB,SAAU,MAC9CivB,EAAQp/E,MAAQS,EAAYrL,GAG9B,GAAIgqF,EAAQj/E,QAAU4E,EAAW,CAC/B,IAAMq7E,EAAejW,IAAQiV,EAAQjvB,SAAU,MAC/CivB,EAAQj/E,MAAQigF,EAAahrF,MA6K/ByrF,kBAzKwB,SAACzB,GACzB,IAAM0B,EAAW1B,EAAQjvB,SAAS5jE,OAC5Bw0F,EAAWD,EAAW,GAC5B,KAAIA,GAAY,IAAhB,CAEA1B,EAAQjvB,SAAW6wB,KAAS5B,EAAQjvB,SAAU,CAAC,OAC/CivB,EAAQj/E,MAAQi/E,EAAQjvB,SAAS4wB,GAAU3rF,GANN,IAAA6rF,GAAA,EAAAC,GAAA,EAAAC,OAAApuF,EAAA,IAOrC,QAAAquF,EAAAC,EAAsBjC,EAAQjvB,SAA9Bt8D,OAAA4uC,cAAAw+C,GAAAG,EAAAC,EAAAphF,QAAAyiC,MAAAu+C,GAAA,EAAwC,KAA7BnuF,EAA6BsuF,EAAArtF,MAClCjB,EAAQsC,GAAKgqF,EAAQj/E,eAChBi/E,EAAQS,QAAQ/sF,EAAQsC,WACxBgqF,EAAQC,oBAAoBvsF,EAAQmO,mBAVV,MAAAvP,GAAAwvF,GAAA,EAAAC,EAAAzvF,EAAA,YAAAuvF,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAarC/B,EAAQjvB,SAAWivB,EAAQjvB,SAASp7D,MAAMgsF,EAAUD,KA6JpDQ,qBAnF2B,SAAClC,GACvBA,IACLA,EAAQW,gBAAkB,EAC1BX,EAAQU,kBAAoBV,EAAQp/E,QAiFpC68C,MA9MY,SAACuiC,GACb,IAAMmC,EAAmB,GADAn/C,GAAA,EAAAC,GAAA,EAAAC,OAAAvvC,EAAA,IAGzB,QAAAwvC,EAAAC,EAAsB48C,EAAQjvB,SAA9Bt8D,OAAA4uC,cAAAL,GAAAG,EAAAC,EAAAviC,QAAAyiC,MAAAN,GAAA,EAAwC,KAA7BtvC,EAA6ByvC,EAAAxuC,MAClCjB,EAAQL,MACV8uF,EAAiB90F,KAAKqG,EAAQsC,YAEvBgqF,EAAQS,QAAQ/sF,EAAQsC,WACxBgqF,EAAQC,oBAAoBvsF,EAAQmO,mBARtB,MAAAvP,GAAA2wC,GAAA,EAAAC,EAAA5wC,EAAA,YAAA0wC,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,GAYzB88C,EAAQjvB,SAAWivB,EAAQjvB,SAASzpD,OAAO,SAAAvT,GAAC,OAAIouF,EAAiB9oF,SAAStF,EAAEiC,MAC5EgqF,EAAQW,gBAAkB,EAC1BX,EAAQU,kBAAoB,IAC5BV,EAAQj/E,WAAQpN,EAChBqsF,EAAQp/E,WAAQjN,GA+LhByuF,mBA5JyB,SAACpC,EAASO,EAAQ8B,GAC3C,GAAKrC,EAAL,CACA,IAAMQ,EAAcR,EAAQS,QAAQF,GACpC,GAAIC,IACFA,EAAYntF,OAAQ,EACpBmtF,EAAY5+E,SAAU,GACjBygF,GAAS,CAEZ,IAAMC,EAAuBvB,KAAUf,EAAQjvB,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,SAAS,GAC7F,GAAIuxB,EAAsB,CACxB,IAAMC,EAAQ/B,EAAYxqF,GAC1BwqF,EAAYxqF,GAAZ,GAAA8F,OAAoBwmF,EAAqBtsF,GAAzC,KAAA8F,QAA+C,IAAI/B,MAAOonF,WAC1DnB,EAAQS,QAAQD,EAAYxqF,IAAMwqF,SAC3BR,EAAQS,QAAQ8B,glBCxE/B,IAeMC,GAAc,SAACviE,EAAOjqB,GAC1B,OAAOswC,IAAKrmB,EAAMwiE,SAAS91F,KAAM,CAAEqJ,QAwNtBqlB,GA7MD,CACZ4E,MAAOyiE,GAAA,GAvBY,CACnBD,SAN2B,CAC3B91F,KAAM,GACN88E,QAAS,IAKTkZ,gBAAiB,KACjBC,YAAa,GACbC,0BAA2B,GAC3BrI,aAAS7mF,EACTmmF,cAAe,KACfgJ,kBAAmB,OAiBnBn0D,QAAS,CACPo0D,YAAa,SAAA9iE,GAAK,OAAIA,EAAM2iE,YAAY3iE,EAAM65D,gBAC9CkJ,0BAA2B,SAAA/iE,GAAK,OAAIA,EAAM4iE,0BAA0B5iE,EAAM65D,gBAC1EmJ,4BAA6B,SAAAhjE,GAAK,OAAI,SAAAijE,GAAW,OAAI58C,IAAKrmB,EAAM2iE,YAAa,SAAA5uF,GAAC,OAAIA,EAAEiL,QAAQjJ,KAAOktF,MACnGC,eAdmB,SAACljE,GACtB,OAAO8gE,KAAQ9gE,EAAMwiE,SAAS91F,KAAM,CAAC,cAAe,CAAC,UAcnDy2F,gBAXoB,SAACnjE,GACvB,OAAOm3C,KAAMn3C,EAAMwiE,SAAS91F,KAAM,YAYlC6mE,QAAS,CAEP6vB,mBAFO,SAAA//E,GAEmC,IAApByoB,EAAoBzoB,EAApByoB,SAAUJ,EAAUroB,EAAVqoB,OACxB6uD,EAAU,kBAAMzuD,EAAS,aAAc,CAAE6tD,QAAQ,KACvDY,IACA7uD,EAAO,qBAAsB,CAC3B6uD,QAAS,kBAAM5K,GAAgB4K,EAAS,SAG5C8I,kBATO,SAAA//E,IAULooB,EAD6BpoB,EAAVooB,QACZ,qBAAsB,CAAE6uD,aAAS7mF,KAE1C4vF,WAZO,SAAA/8E,GAYmD,IAA5CulB,EAA4CvlB,EAA5CulB,SAAU/J,EAAkCxb,EAAlCwb,UAAkCxb,EAAvBmlB,OAAuBlrB,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,IAAAA,UAAA,GACxD,OAAOuhB,EAAUyJ,IAAIC,kBAAkBrQ,QACpC1oB,KAAK,SAAAqnB,GAAe,IAAZqB,EAAYrB,EAAZqB,MAEP,OADA0Q,EAAS,cAAe,CAAE1Q,UACnBA,KAGbmoE,YAnBO,SAmBM1hE,EAnBN3M,GAmBwB,IAATkG,EAASlG,EAATkG,OAKpBsQ,EAJ0C7J,EAAlC6J,QAID,cAAe,CAAEI,SAJkBjK,EAA1BiK,SAIkB1Q,QAAO+H,YAJCtB,EAAhBsB,YAI4BqgE,0BAHpB,SAACtiF,GACjC04E,GAA0B/3D,EAAO3gB,OAIrCuiF,WA1BO,SAAAhuE,EAAAd,IA2BL+W,EADgCjW,EAApBiW,QACL,aAAc,CAAExqB,KADSyT,EAARzT,QAK1BwiF,yBA/BO,SAAAp1E,EAAAM,GA+BsDN,EAAjCod,QAC1BI,EAD2Dxd,EAAzBwd,UACzB,wBAAyB,CAAEyuD,QADuB3rE,EAAX2rE,WAGlDoJ,sBAlCO,SAAA50E,EAAAE,GAkCoDF,EAAlCgT,WACvB2J,EADyD3c,EAAvB2c,QAC3B,wBAAyB,CAAE6uD,QADuBtrE,EAAXsrE,WAGhDqJ,cArCO,SAAAz0E,EAAAE,GAqCmDF,EAAzC4S,UAAyC,IAA9B2J,EAA8Bvc,EAA9Buc,OAAQI,EAAsB3c,EAAtB2c,SAAc5qB,EAAQmO,EAARnO,KAChDwqB,EAAO,gBAAiB,CAAEI,WAAU5qB,KAAMD,aAAUC,KACpD4qB,EAAS,cAAe,CAAC5qB,EAAKlC,WAEhC6kF,gBAzCO,SAAAt0E,EAyCsB7a,GAAO,IAAjBg3B,EAAiBnc,EAAjBmc,OACjBA,EAAO,kBAAD+2D,GAAA,CAAsB/2D,UAAWh3B,KAEzCovF,yBA5CO,SAAAp0E,EA4C+Bhb,IACpCg3B,EAD2Chc,EAAjBgc,QACnB,2BAA4Bh3B,IAErCqvF,iBA/CO,SAAAvsE,EA+C4C9iB,GAAO8iB,EAAtCuK,UAAsC,IAA3B2J,EAA2BlU,EAA3BkU,OAA2BlU,EAAnBsU,SACrCJ,EAAO,mBAAoB,CAAEjmB,YAAQ/R,IACrCg4B,EAAO,wBAAyB,CAAE6uD,aAAS7mF,KAE7CsoB,SAnDO,SAAArE,EAAA9H,GAmDwD,IAAnDkS,EAAmDpK,EAAnDoK,UAAW2J,EAAwC/T,EAAxC+T,OAAQI,EAAgCnU,EAAhCmU,SAAc/1B,EAAkB8Z,EAAlB9Z,GAAImmB,EAAcrM,EAAdqM,WACzC8nE,EAAejiE,EAAU3G,MAAMynE,oBAAsB3mE,EAE3D4P,EAAS,4BACTJ,EAAO,WAAY,CAAE31B,KAAImmB,eAErB8nE,GACFjiE,EAAUyJ,IAAIC,kBAAkBzP,SAAS,CAAEjmB,KAAImmB,gBAGnDE,kBA7DO,SAAArM,EA6DmCrb,GAAO,IAA5BqtB,EAA4BhS,EAA5BgS,UAAW2J,EAAiB3b,EAAjB2b,OAC9B3J,EAAUyJ,IAAIC,kBAAkBrP,kBAAkB1nB,GAClDg3B,EAAO,oBAAD+2D,GAAA,CAAwB/2D,UAAWh3B,KAE3CuvF,WAjEO,SAAAl9E,GAiE2B,IAApB2kB,EAAoB3kB,EAApB2kB,QACZI,EADgC/kB,EAAZ+kB,UACX,oBACTJ,EAAO,aAAc,CAAEA,YAEzBw4D,iBArEO,SAAA72E,GAqEyDA,EAA5C0U,UAA4C,IAAjC2J,EAAiCre,EAAjCqe,OAAiCre,EAAzBye,SAAyBze,EAAf8V,YAC/CuI,EAAO,mBAAoB,CAAEA,YAE/By2D,mBAxEO,SAAAj0E,EAwEyBxZ,GAAO,IAAjBg3B,EAAiBxd,EAAjBwd,OACpBA,EAAO,qBAAD+2D,GAAA,CAAyB/2D,UAAWh3B,KAE5C8sF,kBA3EO,SAAAlqE,EA2EwB7R,IAC7BimB,EADqCpU,EAAlBoU,QACZ,oBAAqBjmB,KAGhC0tD,UAAW,CACTgxB,mBADS,SACWnkE,EADXrT,GACuCA,EAAnB+e,OAAmB,IAAX6uD,EAAW5tE,EAAX4tE,QAC7B6J,EAAcpkE,EAAM0iE,gBACtB0B,GACFA,EAAYp2E,OAEdgS,EAAM0iE,gBAAkBnI,GAAWA,KAErCoJ,sBARS,SAQc3jE,EARdlT,GAQkC,IAAXytE,EAAWztE,EAAXytE,QACxB6J,EAAcpkE,EAAMu6D,QACtB6J,GACFA,EAAYp2E,OAEdgS,EAAMu6D,QAAUA,GAAWA,KAE7BqJ,cAfS,SAeM5jE,EAfN9S,GAekCA,EAAnBm3E,UAAmB,IAARnjF,EAAQgM,EAARhM,KACjC8e,EAAM65D,cAAgB34E,EAAKnL,GAC3BwjE,IAAIxpC,IAAI/P,EAAM2iE,YAAazhF,EAAKnL,GAAImL,GAE/B8e,EAAM4iE,0BAA0B1hF,EAAKnL,KACxCwjE,IAAIxpC,IAAI/P,EAAM4iE,0BAA2B1hF,EAAKnL,GAAIuuF,GAAYx2B,MAAM5sD,EAAKnL,MAG7EwuF,iBAvBS,SAuBSvkE,EAvBTtM,GAuB4B,IAAVjO,EAAUiO,EAAVjO,OACzBua,EAAM65D,cAAgBp0E,GAExB89E,YA1BS,SA0BIvjE,EA1BJnM,GA0BiD,IAApCuH,EAAoCvH,EAApCuH,MAAOooE,EAA6B3vE,EAA7B2vE,0BAC3BpoE,EAAM5J,QAAQ,SAACgzE,GACb,IAAMtjF,EAAOqhF,GAAYviE,EAAOwkE,EAAYzuF,IAE5C,GAAImL,EAAM,CACR,IAAM8iF,GAAgB9iF,EAAKE,aAAeF,EAAKE,YAAYrL,OAASyuF,EAAYpjF,aAAeojF,EAAYpjF,YAAYrL,IACvHmL,EAAKE,YAAcojF,EAAYpjF,YAC/BF,EAAKC,OAASqjF,EAAYrjF,OAC1BD,EAAKK,WAAaijF,EAAYjjF,WAC1ByiF,GAAgB9iF,EAAKC,QACvBqiF,EAA0BgB,QAG5BxkE,EAAMwiE,SAAS91F,KAAKU,KAAKo3F,GACzBjrB,IAAIxpC,IAAI/P,EAAMwiE,SAAShZ,QAASgb,EAAYzuF,GAAIyuF,MAItDf,WA5CS,SA4CGzjE,EA5CH/L,GA4C0DA,EAA9CowE,UAA8C,IAA7BG,EAA6BvwE,EAAnC/S,KACxBA,GAD2D+S,EAAhBwwE,aACpClC,GAAYviE,EAAOwkE,EAAYzuF,KACxCmL,IACFA,EAAKE,YAAcojF,EAAYpjF,YAC/BF,EAAKC,OAASqjF,EAAYrjF,OAC1BD,EAAKK,WAAaijF,EAAYjjF,YAE3BL,GAAQ8e,EAAMwiE,SAAS91F,KAAK8qD,QAAQgtC,GACzCjrB,IAAIxpC,IAAI/P,EAAMwiE,SAAShZ,QAASgb,EAAYzuF,GAAIyuF,IAElDE,WAtDS,SAsDG1kE,EAtDH7L,GAsD2CA,EAA/BkwE,UAA+B,IAApBtuF,EAAoBoe,EAApBpe,GAAoBoe,EAAhBswE,aAClCzkE,EAAM5E,MAAM1uB,KAAOszB,EAAM5E,MAAM1uB,KAAK2a,OAAO,SAAAs9E,GAAY,OACrDA,EAAaC,YAAY7uF,KAAOA,IAElCiqB,EAAM5E,MAAMouD,QAAUQ,IAAOhqD,EAAM5E,MAAMouD,QAAS,SAAAmb,GAAY,OAAIA,EAAaC,YAAY7uF,KAAOA,KAEpGkuF,WA5DS,SA4DGjkE,EA5DH3L,GA4DsB,IAAVqX,EAAUrX,EAAVqX,OAInB,IAAK,IAAMjmB,KAHXua,EAAMwiE,SAhLiB,CAC3B91F,KAAM,GACN88E,QAAS,IA+KLxpD,EAAM65D,cAAgB,KACtBnuD,EAAO,qBAAsB,CAAE6uD,aAAS7mF,IACnBssB,EAAM2iE,YACzB2B,GAAY9mC,MAAMx9B,EAAM4iE,0BAA0Bn9E,IAClD8zD,IAAG,OAAQv5C,EAAM2iE,YAAal9E,GAC9B8zD,IAAG,OAAQv5C,EAAM4iE,0BAA2Bn9E,IAGhDo/E,gBAtES,SAsEQ7kE,EAtERvL,GAsE0B,IAAT/f,EAAS+f,EAAT/f,MACxBsrB,EAAM5E,MAAMo0B,QAAU96C,GAExBmvF,gBAzES,SAyEQ7jE,EAzERjM,GAyEkD,IAAjCtO,EAAiCsO,EAAjCtO,OAAQqrD,EAAyB/8C,EAAzB+8C,SAAUsvB,EAAersE,EAAfqsE,YACpC0E,EAAqB9kE,EAAM4iE,0BAA0Bn9E,GACvDq/E,GACFR,GAAYj6D,IAAIy6D,EAAoB,CAAEh0B,SAAUA,EAAS/5D,IAAIsK,MAAmB++E,iBAGpFhkE,kBA/ES,SA+EU4D,EA/EVnV,GA+EwC,IAArBpF,EAAqBoF,EAArBpF,OAAQC,EAAamF,EAAbnF,UAC5Bo/E,EAAqB9kE,EAAM4iE,0BAA0Bn9E,GACvDq/E,GACFR,GAAY/C,cAAcuD,EAAoBp/E,IAGlDo+E,yBArFS,SAqFiB9jE,EAAOoS,GAC/B,IAAM0yD,EAAqB9kE,EAAM4iE,0BAA0B5iE,EAAM65D,eACjEyK,GAAYrC,qBAAqB6C,IAGnCZ,iBA1FS,SA0FSlkE,GAChB,IAAM65D,EAAgB75D,EAAM65D,cAC5B,IAAK,IAAMp0E,KAAUua,EAAM2iE,YACrB9I,IAAkBp0E,IACpB6+E,GAAY9mC,MAAMx9B,EAAM4iE,0BAA0Bn9E,IAClD8zD,IAAG,OAAQv5C,EAAM2iE,YAAal9E,GAC9B8zD,IAAG,OAAQv5C,EAAM4iE,0BAA2Bn9E,KAIlDuW,SApGS,SAoGCgE,EApGDvT,GAoG4B,IAAlB1W,EAAkB0W,EAAlB1W,GAAImmB,EAAczP,EAAdyP,WACrB8D,EAAM6iE,kBAAoB3mE,EAC1B,IAAMhb,EAAOqhF,GAAYviE,EAAOjqB,GAC5BmL,IACFA,EAAKC,OAAS,IAGlBghF,mBA3GS,SA2GWniE,EA3GX/P,GA2G+C,IAA3BxK,EAA2BwK,EAA3BxK,OAAQ66E,EAAmBrwE,EAAnBqwE,OAAQ8B,EAAWnyE,EAAXmyE,QACrC0C,EAAqB9kE,EAAM4iE,0BAA0Bn9E,GAC3D6+E,GAAYnC,mBAAmB2C,EAAoBxE,EAAQ8B,IAE7DZ,kBA/GS,SA+GUxhE,EAAOva,GACxB6+E,GAAY9C,kBAAkBxhE,EAAM4iE,0BAA0Bn9E,yFCtOhEs/E,IAAS,EAEPC,GAAiB,SAAChlE,EAAOilE,GAAR,OACJ,IAAjBA,EAAM/3F,OAAe8yB,EAAQilE,EAAM1pF,OAAO,SAAC2pF,EAAU3zC,GAEnD,OADA4zC,KAAID,EAAU3zC,EAAMh9B,KAAIyL,EAAOuxB,IACxB2zC,GACN,KAGCE,GAAyB,CAC7B,0BACA,mBACA,iBACA,eACA,YACA,gBACA,WACA,cAGIC,WACGC,EAGM,SAASC,KAkBhB,IAAAliF,EAAA7C,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GAAIglF,EAAAniF,EAjBNrO,WAiBM,IAAAwwF,EAjBA,UAiBAA,EAAAC,EAAApiF,EAhBN4hF,aAgBM,IAAAQ,EAhBE,GAgBFA,EAAAC,EAAAriF,EAfNsG,gBAeM,IAAA+7E,EAfK,SAAC1wF,EAAK+qF,GAEf,OADYA,EAAQ4F,QAAQ3wF,IAcxB0wF,EAAAE,EAAAviF,EAXNwiF,gBAWM,IAAAD,EAXK,SAAC5wF,EAAKgrB,EAAO+/D,GACtB,OAAKgF,GAIIhF,EAAQ+F,QAAQ9wF,EAAKgrB,IAH5B1qB,QAAQm8D,IAAI,yCACLxiE,QAAQC,YAQb02F,EAAAG,EAAA1iF,EAHN2iF,eAGM,IAAAD,EAHIf,GAGJe,EAAAE,EAAA5iF,EAFN08E,eAEM,IAAAkG,EAFIZ,GAEJY,EAAAC,EAAA7iF,EADN8iF,kBACM,IAAAD,EADO,SAAArkE,GAAK,OAAI,SAAA4gC,GAAO,OAAI5gC,EAAMyyD,UAAU7xB,KAC3CyjC,EACN,OAAOv8E,EAAS3U,EAAK+qF,GAASrtF,KAAK,SAAC0zF,GAClC,OAAO,SAAAvkE,GACL,IACE,GAAmB,OAAfukE,GAA6C,WAAtBrjF,KAAOqjF,GAAyB,CAEzD,IAAMC,EAAaD,EAAW74E,OAAS,GACvC84E,EAAWhR,YAAc,GACzB,IAAM9nE,EAAQ84E,EAAW94E,OAAS,GAClC0M,IAAK1M,EAAO,SAACxO,GAAWsnF,EAAWhR,YAAYt2E,EAAKhJ,IAAMgJ,IAC1DqnF,EAAW74E,MAAQ84E,EAEnBxkE,EAAMykE,aACJC,KAAM,GAAI1kE,EAAM7B,MAAOomE,IAG3BrB,IAAS,EACT,MAAOl2F,GACPyG,QAAQm8D,IAAI,uBACZn8D,QAAQlC,MAAMvE,GACdk2F,IAAS,EAEXoB,EAAWtkE,EAAXskE,CAAkB,SAACK,EAAUxmE,GAC3B,IACMolE,GAAuBhsF,SAASotF,EAAS10F,OAC3C+zF,EAAS7wF,EAAKgxF,EAAQhmE,EAAOilE,GAAQlF,GAClCrtF,KAAK,SAAAmyE,QACmB,IAAZA,IACa,cAAlB2hB,EAAS10F,MAA0C,mBAAlB00F,EAAS10F,MAC5C+vB,EAAMiK,SAAS,gBAAiB,CAAE+4C,cAGrC,SAAAzxE,GACqB,cAAlBozF,EAAS10F,MAA0C,mBAAlB00F,EAAS10F,MAC5C+vB,EAAMiK,SAAS,gBAAiB,CAAE14B,YAI1C,MAAOvE,GACPyG,QAAQm8D,IAAI,2BACZn8D,QAAQm8D,IAAI5iE,SCtFP,ICEX43F,GACAC,GDHWC,GAAA,SAAC9kE,GACdA,EAAMyyD,UAAU,SAACkS,EAAUxmE,GACzB,IAAMkmD,EAAiBlmD,EAAMC,SAASimD,eAChC0gB,EAAsB5mE,EAAMgC,OAAO4wC,qBACnCiB,EAAwD,YAA3C7zC,EAAK,UAAWskD,uBAC7BvlE,EAAOihB,EAAMzS,MAAM6hB,YAEnBy3D,EAAmC,mBAAlBL,EAAS10F,KAC1Bg1F,EAAoC,sBAAlBN,EAAS10F,MAA0D,mBAA1B00F,EAAStgF,QAAQjS,KAC5E8yF,EAAmC,8BAAlBP,EAAS10F,MAA6D,YAArB00F,EAAStgF,QAC3E8gF,EAAyC,cAAlBR,EAAS10F,MAAkD,yBAA1B00F,EAAStgF,QAAQjS,KACzEgzF,EAAyC,cAAlBT,EAAS10F,MAAkD,2BAA1B00F,EAAStgF,QAAQjS,KAE/E,GAAI4yF,GAAkBC,GAAmBC,GAAkBC,GAAwBC,EAAsB,CACvG,GAAIloF,GAAQmnE,GAAkBrS,GAAc+yB,EAC1C,OAAO/kE,EAAMiK,SAAS,6BACjB,GAAIk7D,IAAyBJ,EAClC,OAAO/kE,EAAMiK,SAAS,gGCbxBo7D,GAAY,IAAIj/E,IAAI,IAEpBk/E,GAAoB,SAACpkC,GACzB,IAAMqkC,EAAe5xF,OAAOoxB,WAAav1B,SAASg2F,gBAAgBvhE,YAClEwhE,qBAAiCvkC,EAAI,CACnCwkC,qBAAqB,IAEvBL,GAAU78D,IAAI04B,GACdpvD,WAAW,WACT,GAAIuzF,GAAUz1D,MAAQ,EAAG,CAEvB,QAAgC/9B,IAA5B+yF,GAAuC,CACzC,IAAMe,EAAQn2F,SAASo2F,eAAe,OACtChB,GAA0BjxF,OAAO4xB,iBAAiBogE,GAAOE,iBAAiB,iBAC1EF,EAAMn+D,MAAMs+D,aAAelB,GAAuB,QAAA5qF,OAAW4qF,GAAX,OAAA5qF,OAAwCurF,EAAxC,UAAAvrF,OAA+DurF,EAA/D,MAGpD,QAAkC1zF,IAA9BgzF,GAAyC,CAC3C,IAAMkB,EAAiBv2F,SAASo2F,eAAe,kBAC/Cf,GAA4BlxF,OAAO4xB,iBAAiBwgE,GAAgBF,iBAAiB,SACrFE,EAAev+D,MAAMtlB,MAAQ2iF,GAAyB,QAAA7qF,OAAW6qF,GAAX,OAAA7qF,OAA0CurF,EAA1C,UAAAvrF,OAAiEurF,EAAjE,MAExD/1F,SAAS0Q,KAAK45B,UAAUtR,IAAI,qBAK5Bw9D,GAAmB,SAAC9kC,GACxBmkC,GAAS,OAAQnkC,GACjBpvD,WAAW,WACc,IAAnBuzF,GAAUz1D,YACoB/9B,IAA5B+yF,KACFp1F,SAASo2F,eAAe,OAAOp+D,MAAMs+D,aAAelB,GAEpDA,QAA0B/yF,QAEMA,IAA9BgzF,KACFr1F,SAASo2F,eAAe,kBAAkBp+D,MAAMtlB,MAAQ2iF,GAExDA,QAA4BhzF,GAE9BrC,SAAS0Q,KAAK45B,UAAUS,OAAO,oBAGnCkrD,oBAAgCvkC,IAG5B+kC,GAAY,CAChBC,SAAU,SAAChlC,EAAIilC,GACTA,EAAQtzF,OACVyyF,GAAkBpkC,IAGtBklC,iBAAkB,SAACllC,EAAIilC,GACjBA,EAAQjT,WAAaiT,EAAQtzF,QAI7BszF,EAAQtzF,MACVyyF,GAAkBpkC,GAElB8kC,GAAiB9kC,KAGrBmlC,OAAQ,SAACnlC,GACP8kC,GAAiB9kC,yGClEfrgC,GAAW,SAACzZ,EAAGuT,GACnB,IAAM2rE,EAAiB,YAAXl/E,EAAEnX,KAAqBmX,EAAEnL,iBAAiB/H,GAAKkT,EAAElT,GACvDqyF,EAAiB,YAAX5rE,EAAE1qB,KAAqB0qB,EAAE1e,iBAAiB/H,GAAKymB,EAAEzmB,GACvD4sB,EAAOC,OAAOulE,GACdtlE,EAAOD,OAAOwlE,GACdtlE,GAAUF,OAAOG,MAAMJ,GACvBK,GAAUJ,OAAOG,MAAMF,GAC7B,OAAIC,GAAUE,EACLL,EAAOE,GAAQ,EAAI,EACjBC,IAAWE,GACZ,GACEF,GAAUE,EACb,EAEAmlE,EAAMC,GAAO,EAAI,GAwKbzD,GAxJM,CACnBj4F,KADmB,WAEjB,MAAO,CACLojC,UAAW,KACXu4D,UAAU,IAGdzoE,MAAO,CACL,WACA,cACA,SACA,wBACA,YACA,gBACA,iBAEF6I,QAhBmB,WAiBbxmB,KAAKqmF,QACPrmF,KAAKyK,qBAGTue,SAAU,CACR8f,WADQ,WAEN,OAAI9oC,KAAKyjB,MAAM6iE,iBAAmBtmF,KAAKyjB,MAAM6iE,gBAAgB,GACpDtmF,KAAK+oC,eAAiB/oC,KAAKyjB,MAAM6iE,gBAAgB,GAAGl/C,YAEpDpnC,KAAK+oC,eAGhBjvC,OARQ,WASN,OAAOkG,KAAK8d,OAAOC,MAAMzF,SAASiwB,kBAAkBvoC,KAAKskC,WAE3DiiD,iBAXQ,WAYN,OAAIvmF,KAAKlG,OAAO+B,iBACPmE,KAAKlG,OAAO+B,iBAAiB/H,GAE7BkM,KAAKskC,UAGhB6jC,eAlBQ,WAmBN,OAAOnoE,KAAKwmF,kBAAkBxmF,KAAKskC,WAErCo+C,aArBQ,WAsBN,IAAK1iF,KAAKlG,OACR,MAAO,GAGT,IAAKkG,KAAKymF,WACR,MAAO,CAACzmF,KAAKlG,QAGf,IAAM4oF,EAAegE,KAAM1mF,KAAK8d,OAAOC,MAAMzF,SAASkvD,oBAAoBxnE,KAAKmoE,iBACzEwe,EAAc/b,IAAU8X,EAAc,CAAE5uF,GAAIkM,KAAKumF,mBAKvD,OAJqB,IAAjBI,IACFjE,EAAaiE,GAAe3mF,KAAKlG,QAlEP,SAAC4oF,EAAc59C,GAS/C,OAPE49C,EADqB,YAAnB59C,EAAUj1C,KACG+2F,KACblE,EACA,SAAC5oF,GAAD,MAA6B,YAAhBA,EAAOjK,MAAsBiK,EAAOhG,KAAOgxC,EAAUjpC,iBAAiB/H,KAGtE8yF,KAAOlE,EAAc,SAAC5oF,GAAD,MAA4B,YAAhBA,EAAOjK,QAErCuV,OAAO,SAAAC,GAAC,OAAIA,IAAGwc,KAAKpB,IA4D7BomE,CAA0BnE,EAAc1iF,KAAKlG,SAEtD2yC,QAtCQ,WAuCN,IAAI1hD,EAAI,EAER,OAAOuuE,KAAOt5D,KAAK0iF,aAAc,SAAC52F,EAADsV,GAA2C,IAAhCtN,EAAgCsN,EAAhCtN,GAEpCgzF,EAFoE1lF,EAA5B5F,sBAY9C,OARIsrF,IACFh7F,EAAOg7F,GAAQh7F,EAAOg7F,IAAS,GAC/Bh7F,EAAOg7F,GAAM37F,KAAK,CAChB6G,KAAI,IAAA4H,OAAM7O,GACV+I,GAAIA,KAGR/I,IACOe,GACN,KAEL26F,WAxDQ,WAyDN,OAAOzmF,KAAKomF,UAAYpmF,KAAKqmF,QAE/BU,YA3DQ,WA4DN,IAAM9jE,EAAUjjB,KAAKlG,QAAUkG,KAAKlG,OAAO8yE,eAAkB,QAC7D,OAAO5sE,KAAK+oC,cAAgB,CAAE9lB,UAAW,KAG7C/E,WAAY,CACVqmB,mBAEFgG,MAAO,CACLjG,SADK,SACK0iD,EAAQC,GAChB,IAAMC,EAAoBlnF,KAAKwmF,kBAAkBQ,GAC3CG,EAAoBnnF,KAAKwmF,kBAAkBS,GAC7CC,GAAqBC,GAAqBD,IAAsBC,EAClEnnF,KAAKoxD,aAAapxD,KAAKumF,kBAEvBvmF,KAAKyK,qBAGT27E,SAVK,SAUK3zF,GACJA,GACFuN,KAAKyK,qBAGTs+B,cAfK,SAeUt2C,GACbuN,KAAK8d,OAAO+L,SACV,mBACA,CAAEya,SAAUtkC,KAAKskC,SAAUrhB,OAAM,GAAArpB,OAAKoG,KAAKmjB,IAAIa,aAAd,UAIvC5F,QAAS,CACP3T,kBADO,WACc,IAAAlK,EAAAP,KACfA,KAAKlG,OACPkG,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkB/e,kBAAkB,CAAE3W,GAAIkM,KAAKskC,WAClE7zC,KAAK,SAAA4Q,GAAgC,IAA7ByJ,EAA6BzJ,EAA7ByJ,UAAWC,EAAkB1J,EAAlB0J,YAClBxK,EAAKud,OAAO+L,SAAS,iBAAkB,CAAEvR,SAAUxN,IACnDvK,EAAKud,OAAO+L,SAAS,iBAAkB,CAAEvR,SAAUvN,IACnDxK,EAAK6wD,aAAa7wD,EAAKgmF,oBAG3BvmF,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkBxe,YAAY,CAAElX,GAAIkM,KAAKskC,WAC5D7zC,KAAK,SAACqJ,GACLyG,EAAKud,OAAO+L,SAAS,iBAAkB,CAAEvR,SAAU,CAACxe,KACpDyG,EAAKkK,uBAIb28E,WAjBO,SAiBKtzF,GACV,OAAOkM,KAAKysC,QAAQ34C,IAAO,IAE7Bm1C,QApBO,SAoBEn1C,GACP,OAAQkM,KAAKymF,YAAe3yF,IAAOkM,KAAKskC,UAE1C8sB,aAvBO,SAuBOt9D,GACPA,IACLkM,KAAK6tB,UAAY/5B,EACjBkM,KAAK8d,OAAO+L,SAAS,sBAAuB/1B,GAC5CkM,KAAK8d,OAAO+L,SAAS,wBAAyB/1B,KAEhDuzF,aA7BO,WA8BL,OAAOrnF,KAAKymF,WAAazmF,KAAK6tB,UAAY,MAE5Cqc,eAhCO,WAiCLlqC,KAAKomF,UAAYpmF,KAAKomF,UAExBI,kBAnCO,SAmCYliD,GACjB,IAAMxqC,EAASkG,KAAK8d,OAAOC,MAAMzF,SAASiwB,kBAAkBjE,GAC5D,OAAOhyB,KAAIxY,EAAQ,6CAA8CwY,KAAIxY,EAAQ,yCC5KnF,IAEAykB,GAVA,SAAAC,GACEpyB,EAAQ,MAyBKk7F,GAVCl8F,OAAAszB,GAAA,EAAAtzB,CACdm8F,GCjBQ,WAAgB,IAAA3oE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAkqB,WAA6rC/pB,EAAA,OAAgBqI,MAAAxI,EAAA,cAA7sCG,EAAA,OAAmCE,YAAA,eAAAC,MAAA,CAAkCsoE,YAAA5oE,EAAA6nE,WAAAz1D,MAAApS,EAAA6nE,YAAyDr/D,MAAAxI,EAAA,aAAyB,CAAAA,EAAA,WAAAG,EAAA,OAA6BE,YAAA,sCAAiD,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAAuGE,YAAA,wBAAA2H,GAAA,CAAwCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAsrB,eAAAliB,MAAoC,CAAApJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAAhM,EAAAuI,OAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,sBAAA9kB,GAA+I,OAAAilB,EAAA,UAAoBhsB,IAAA+G,EAAAhG,GAAAizB,IAAA,kBAAAk2C,UAAA,EAAAh+C,YAAA,+CAAAM,MAAA,CAAoHkoE,kBAAA7oE,EAAA8oE,aAAA9oE,EAAA6nE,WAAA3hD,UAAAhrC,EAAAqyC,YAAAvtB,EAAA6nE,WAAAkB,cAAA/oE,EAAAgpE,uBAAAhpE,EAAAgpE,sBAAA9tF,EAAAhG,IAAAm1C,QAAArqB,EAAAqqB,QAAAnvC,EAAAhG,IAAA+zF,kBAAAjpE,EAAA6nE,WAAA54D,UAAAjP,EAAAyoE,eAAA56C,QAAA7tB,EAAAwoE,WAAAttF,EAAAhG,IAAAg0F,aAAAlpE,EAAA+pB,UAAAo/C,kBAAAnpE,EAAAgqB,eAAwXhiB,GAAA,CAAKohE,KAAAppE,EAAAwyC,aAAAlnB,eAAAtrB,EAAAsrB,qBAA+D,IACtxC,IDOA,EAaA3rB,GATA,KAEA,MAYgC,8PEhBhC4J,KAAQC,IACN6/D,MACA3hD,KACAhE,KACA+D,KACA6hD,MAGF,IAUeC,GAVa,CAC1Bn/D,wWAAUo/D,CAAA,GACL58D,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,aAClCk7D,YAAa,SAAAtqE,GAAK,OAAIA,EAAMC,SAAN,SACtBsqE,WAAY,SAAAvqE,GAAK,OAAIA,EAAMC,SAASsqE,gBCA3BC,GAVCn9F,OAAAszB,GAAA,EAAAtzB,CACdo9F,GCdQ,WAAgB,IAAA5pE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,MAAAH,EAAA,YAAAG,EAAA,MAAAA,EAAA,eAA6DE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,aAAoB,CAAA+sB,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD0kB,cAAA,GAAA9hB,KAAA,UAAgCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,cAAAvO,EAAAypE,YAAAtpE,EAAA,MAAAA,EAAA,eAAqJE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,qBAA4B,CAAA+sB,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD0kB,cAAA,GAAA9hB,KAAA,WAAiCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAA0pE,aAAA1pE,EAAAuO,aAAAvO,EAAAypE,YAAiVzpE,EAAAuI,KAAjVpI,EAAA,MAAAA,EAAA,eAAqKE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,8BAAqC,CAAA+sB,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD0kB,cAAA,GAAA9hB,KAAA,WAAiCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+BAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAAA,EAAA,eAAwHE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,eAAqB,CAAA+sB,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD0kB,cAAA,GAAA9hB,KAAA,cAAoCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAAA,EAAA,eAA6HE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,MAAAgS,OAAA,CAAuB/C,SAAA2d,EAAAuO,YAAAn5B,gBAA4C,CAAA+qB,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD0kB,cAAA,GAAA9hB,KAAA,cAAoCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8BAAAhM,EAAAuI,QACvgD,IDIY,EAEb,KAEC,KAEU,MAYG,QEhBhCgB,KAAQC,IAAIC,MAIL,IAuDQogE,GA7CM,CACnBvqE,WAAY,CACVmE,mBACA8lE,wBAEF19F,KALmB,WAMjB,MAAO,CACLi+F,QAAQ,IAGZliE,QAVmB,YATZ,CACL7c,QAAW,oBACXM,UAAa,gBACbL,IAAO,UACP++E,kBAAmB,gBACnBC,2BAA4B,aAeR5oF,KAAKkqB,OAAOl4B,OAC9BgO,KAAK8d,OAAO+L,SAAS,kBAAmB7pB,KAAKkqB,OAAOl4B,OAGxDosB,QAAS,CACPyqE,SADO,WACK,IAAAtoF,EAAAP,KAMVtO,WAAW,WACT6O,EAAKmoF,QAAS,GACb,KAELI,UAXO,SAWI94F,GAIJgQ,KAAK0oF,QACR14F,EAAMk4B,mBAGV6gE,aAnBO,WAoBL,IAAMC,EAAQhpF,KAAKkqB,OAAOl4B,KAC1B,GAAc,iBAAVg3F,EACF,MAAO,IAAMhpF,KAAKkqB,OAAOlmB,OAAOzU,IAElC,IAAM05F,EAhDH,CACLt/E,QAAW,oBACXM,UAAa,gBACbL,IAAO,UACP++E,kBAAmB,gBACnBC,2BAA4B,YA2CM5oF,KAAKkqB,OAAOl4B,MAC5C,OAAOi3F,EAAUjpF,KAAK4qB,GAAGq+D,GAAWD,KCrD1C,IAEIE,GAVJ,SAAoB1qE,GAClBpyB,EAAQ,MAyBK+8F,GAVC/9F,OAAAszB,GAAA,EAAAtzB,CACdg+F,GCjBQ,WAAgB,IAAAxqE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,YAAA,eAAAC,MAAA,CAAkC0P,KAAAhQ,EAAA8pE,QAAqBnpE,MAAA,CAAQ+C,QAAA,QAAAI,OAAA,CAA4ByB,MAAA,GAAAriB,OAAA,KAAyB+pB,WAAA,CAAavH,EAAA,aAAiBsgB,gBAAA,8BAA8Che,GAAA,CAAKmD,KAAAnL,EAAAiqE,SAAAphF,MAAA,WAAyC,OAAAmX,EAAA8pE,QAAA,KAA+B,CAAA3pE,EAAA,OAAYE,YAAA,4CAAAM,MAAA,CAA+DmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,2BAAAH,EAAAsI,GAAA,KAAAnI,EAAA,OAAsDE,YAAA,4BAAAM,MAAA,CAA+CmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,QAAaE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAmqE,mBAAAnqE,EAAAsI,GAAA,KAAAnI,EAAA,QAAAA,EAAA,UAA2EQ,MAAA,CAAOiQ,KAAA,KAAArN,KAAA,mBAAmC,GAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,QAA6BE,YAAA,gBAAA2H,GAAA,CAAgCI,MAAApI,EAAAkqE,kBACtzB,IDOY,EAa7BI,GATiB,KAEU,MAYG,qOErBhC/gE,KAAQC,IACNihE,KACAC,KACAC,OAGF,IAiDeC,GAjDe,CAC5BtrE,WAAY,CACVmE,oBAEFjE,QAAS,CACPqrE,mBADO,SACa7sF,GAClBoD,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,kBAAmBS,MAAOmK,IACpEoD,KAAK8d,OAAO+L,SAAS,kBAEvB6/D,QALO,SAKExzD,GACPl2B,KAAK8d,OAAO+L,SAAS,uBAAwBqM,KAGjDlN,wWAAU2gE,CAAA,GACL57D,YAAW,CAAC,iBADT,CAENN,SAFM,WAGJ,QAASztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEnCy8D,oBAAqB,CACnBv3F,IADmB,WACV,MAA6C,SAAtC2N,KAAKmhB,aAAa3X,iBAClCskB,IAFmB,WAEV9tB,KAAKypF,mBAAmB,UAEnCI,yBAA0B,CACxBx3F,IADwB,WACf,MAA6C,cAAtC2N,KAAKmhB,aAAa3X,iBAClCskB,IAFwB,WAEf9tB,KAAKypF,mBAAmB,eAEnCK,mBAAoB,CAClBz3F,IADkB,WACT,MAA6C,QAAtC2N,KAAKmhB,aAAa3X,iBAClCskB,IAFkB,WAET9tB,KAAKypF,mBAAmB,SAEnCM,UAAW,CACT13F,IADS,WACA,OAAO2N,KAAKmhB,aAAagvB,iBAAmBnwC,KAAKmhB,aAAaivB,uBACvEtiB,IAFS,WAGP,IAAMr7B,GAASuN,KAAK+pF,UACpB/pF,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,kBAAmBS,UAC7DuN,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,wBAAyBS,YAGvE09D,eAAgB,CACd99D,IADc,WACL,OAAO2N,KAAKmhB,aAAagvC,gBAAkBnwD,KAAKmhB,aAAa0nB,sBACtE/a,IAFc,WAGZ,IAAMr7B,GAASuN,KAAKmwD,eACpBnwD,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,iBAAkBS,UAC5DuN,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,uBAAwBS,eC9C1E,IAEIu3F,GAVJ,SAAoBxrE,GAClBpyB,EAAQ,MAyBK69F,GAVC7+F,OAAAszB,GAAA,EAAAtzB,CACd8+F,GCjBQ,WAAgB,IAAAtrE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,YAAA,wBAAAM,MAAA,CAA2C+C,QAAA,QAAAuJ,WAAA,CAA8BvH,EAAA,eAAmB,CAAAvF,EAAA,OAAYE,YAAA,gBAAAM,MAAA,CAAmCmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA9L,EAAA,SAAAG,EAAA,OAAAA,EAAA,UAAwCE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyBpJ,EAAAkrE,oBAAA,KAAgC,CAAA/qE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmCirE,sBAAAvrE,EAAAkrE,sBAAiDlrE,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAgGE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyBpJ,EAAAirE,0BAAA,KAAsC,CAAA9qE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmCirE,sBAAAvrE,EAAAirE,4BAAuDjrE,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4DAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4GE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyBpJ,EAAAgrE,qBAAA,KAAiC,CAAA7qE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmCirE,sBAAAvrE,EAAAgrE,uBAAkDhrE,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAoGE,YAAA,mBAAAM,MAAA,CAAsC5oB,KAAA,iBAAoBioB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAAsCE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyBpJ,EAAAmrE,WAAAnrE,EAAAmrE,aAAiC,CAAAhrE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAmrE,aAA0CnrE,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA6FE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyBpJ,EAAAuxC,gBAAAvxC,EAAAuxC,kBAA2C,CAAApxC,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAuxC,kBAA+CvxC,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA8FE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA8qE,QAAA,gBAAkC,CAAA3qE,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,UAAevD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAuFE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA8qE,QAAA,cAAgC,CAAA3qE,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAiBvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAwFQ,MAAA,CAAOmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,aAAiB,MAC17E,IDOY,EAa7B6nE,GATiB,KAEU,MAYG,QEjBhC7hE,KAAQC,IACN8b,KACAkmD,MAGK,IAmPQC,GAtOE,CACf1sE,MAAO,CACL,WACA,eACA,QACA,SACA,MACA,WACA,QACA,kBACA,aAEFlzB,KAZe,WAab,MAAO,CACL6/F,QAAQ,EACRC,WAAW,EACXC,aAAa,EACbC,mBAAoB,EACpBC,gBAAgB,IAGpBxsE,WAAY,CACVqmB,kBACAomD,gBACAlC,gBACAe,0BAEFxgE,SAAU,CACRi+C,eADQ,WAEN,OAAOjnE,KAAK6I,SAASo+D,gBAEvB2jB,eAJQ,WAKN,OAAO5qF,KAAK6I,SAASo+D,eAAiB,GAAmC,IAA9BjnE,KAAK6I,SAASu+D,aAE3DyjB,iBAPQ,WAQN,OAAkC,IAA9B7qF,KAAK6I,SAASu+D,YACTpnE,KAAK4qB,GAAG,mBAEf,GAAAhxB,OAAUoG,KAAK4qB,GAAG,qBAAlB,MAAAhxB,OAA2CoG,KAAKinE,eAAhD,MAGJt6C,QAdQ,WAeN,IAAIm+D,EAAe9qF,KAAK+qF,SAAwC,GAA7B,CAAC,QAAS,iBAE7C,OADI/qF,KAAK0qF,iBAAgBI,EAAcA,EAAYlxF,OAAO,CAAC,WAAY,0BAChE,CACLqiF,KAAM6O,EACNv1F,OAAQ,CAAC,oBAAoBqE,OAAQoG,KAAK+qF,SAA+B,GAApB,CAAC,kBACtDjrF,KAAM,CAAC,iBAAiBlG,OAAQoG,KAAK+qF,SAA4B,GAAjB,CAAC,eACjDC,OAAQ,CAAC,mBAAmBpxF,OAAQoG,KAAK+qF,SAA8B,GAAnB,CAAC,mBAIzDE,wBAzBQ,WA0BN,IAAMhmC,EAlEiC,SAAC3sC,EAAU88D,GACtD,IAAMnwB,EAAM,GACZ,GAAImwB,GAAmBA,EAAgBnqF,OAAS,EAAG,KAAA61C,GAAA,EAAAC,GAAA,EAAAC,OAAAvvC,EAAA,IACjD,QAAAwvC,EAAAC,EAAmB5oB,EAAnB/lB,OAAA4uC,cAAAL,GAAAG,EAAAC,EAAAviC,QAAAyiC,MAAAN,GAAA,EAA6B,KAApBhnC,EAAoBmnC,EAAAxuC,MAC3B,IAAK2iF,EAAgBj+E,SAAS2C,EAAOhG,IACnC,MAEFmxD,EAAI95D,KAAK2O,EAAOhG,KAL+B,MAAA1D,GAAA2wC,GAAA,EAAAC,EAAA5wC,EAAA,YAAA0wC,GAAA,MAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,MAAAC,IAQnD,OAAOikB,EAwDSimC,CAA8BlrF,KAAK6I,SAASk+D,gBAAiB/mE,KAAKo1E,iBAE9E,OAAO+V,KAAMlmC,IAEf2iC,sBA9BQ,WA+BN,OAAOuD,KAAMnrF,KAAKo1E,kBAEpBgW,kBAjCQ,WAkCN,IAAMxvC,EAAS57C,KAAK6I,SAASk+D,gBAAgB97E,OACvCogG,EAAkB1wE,KAAKC,KAAKD,KAAK+J,IAAI,EAAGnxB,OAAOuxB,YAAc,KAC7DL,EAAM9J,KAAK+J,IAAI,EAAG1kB,KAAKyqF,mBAAqBY,GAC5C3mE,EAAM/J,KAAK8J,IAAIm3B,EAAQ57C,KAAKyqF,mBAAqBY,GACvD,OAAOrrF,KAAK6I,SAASk+D,gBAAgBtzE,MAAMgxB,EAAKC,GAAK5vB,IAAI,SAAAuQ,GAAC,OAAIA,EAAEvR,MAElEw3F,wBAxCQ,WAyCN,OAAOtrF,KAAK8d,OAAO2O,QAAQtL,aAAa4vC,mBAG5CvqC,QAvEe,WAwEb,IAAM5G,EAAQ5f,KAAK8d,OACbja,EAAc+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAC5CyoD,EAA2D,IAAzCtsD,KAAK6I,SAASk+D,gBAAgB97E,OAItD,GAFAsI,OAAO0T,iBAAiB,SAAUjH,KAAKurF,cAEnC3rE,EAAM7B,MAAMwL,IAAIwuD,SAAS/3E,KAAK+oF,cAAiB,OAAO,EAE1Dta,GAAgBX,eAAe,CAC7BluD,QACA/b,cACAgF,SAAU7I,KAAK+oF,aACfz8B,kBACAnjD,OAAQnJ,KAAKmJ,OACb5Z,IAAKyQ,KAAKzQ,OAGdutD,QAzFe,gBA0FkB,IAApB1tD,SAASyzB,SAClBzzB,SAAS6X,iBAAiB,mBAAoBjH,KAAKwrF,wBAAwB,GAC3ExrF,KAAKuqF,UAAYn7F,SAASyzB,QAE5BtvB,OAAO0T,iBAAiB,UAAWjH,KAAKyrF,gBACxC/5F,WAAWsO,KAAK0rF,yBAA0B,MAE5CjlE,UAjGe,WAkGblzB,OAAOmzB,oBAAoB,SAAU1mB,KAAKurF,cAC1Ch4F,OAAOmzB,oBAAoB,UAAW1mB,KAAKyrF,qBACZ,IAApBr8F,SAASyzB,QAAwBzzB,SAASs3B,oBAAoB,mBAAoB1mB,KAAKwrF,wBAAwB,GAC1HxrF,KAAK8d,OAAO2L,OAAO,aAAc,CAAE5gB,SAAU7I,KAAK+oF,aAAct2F,OAAO,KAEzE2rB,QAAS,CACPutE,mBAAoBjqC,KAAS,WAC3B1hD,KAAK0qF,gBAAiB,GACrB,KACHkB,uBAJO,WAKA5rF,KAAK0qF,iBACR1qF,KAAK0qF,gBAAiB,GAExB1qF,KAAK2rF,sBAEPF,eAVO,SAUS7+F,GAEV,CAAC,WAAY,SAASuK,SAASvK,EAAEsD,OAAOm5B,QAAQuX,gBACtC,MAAVh0C,EAAEmG,KAAaiN,KAAKiqE,mBAE1BA,gBAfO,WAgB6B,IAA9BjqE,KAAK6I,SAASu+D,aAChBpnE,KAAK8d,OAAO2L,OAAO,gBAAiB,CAAE5gB,SAAU7I,KAAK+oF,aAAcve,eAAe,IAClFxqE,KAAK8d,OAAO2L,OAAO,aAAc,CAAE5gB,SAAU7I,KAAK+oF,aAAcj1F,GAAI,IACpEkM,KAAK6rF,uBAEL7rF,KAAK4rF,yBACL5rF,KAAK8d,OAAO2L,OAAO,kBAAmB,CAAE5gB,SAAU7I,KAAK+oF,eACvD/oF,KAAKsqF,QAAS,IAGlBuB,mBAAoBC,KAAS,WAAY,IAAAvrF,EAAAP,KACjC4f,EAAQ5f,KAAK8d,OACbja,EAAc+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAClD+b,EAAM6J,OAAO,aAAc,CAAE5gB,SAAU7I,KAAK+oF,aAAct2F,OAAO,IACjEg8E,GAAgBX,eAAe,CAC7BluD,QACA/b,cACAgF,SAAU7I,KAAK+oF,aACf9f,OAAO,EACP3c,iBAAiB,EACjBnjD,OAAQnJ,KAAKmJ,OACb5Z,IAAKyQ,KAAKzQ,MACTkB,KAAK,SAAA2Q,GAAkB,IAAfkX,EAAelX,EAAfkX,SACLA,GAAgC,IAApBA,EAASrtB,SACvBsV,EAAKiqF,aAAc,KAVvB,QAYW,kBACT5qE,EAAM6J,OAAO,aAAc,CAAE5gB,SAAUtI,EAAKwoF,aAAct2F,OAAO,OAElE,SAAMhB,GACTi6F,yBA9CO,WA+CL,GAAK1rF,KAAKyjB,MAAM5a,UACX7I,KAAKsrF,wBAAV,CAEA,IAAMhzE,EAAWtY,KAAKyjB,MAAM5a,SAAS6a,SAC/BqoE,EAAoBpxE,KAAK+J,IAAI,EAAG/J,KAAK8J,IAAIzkB,KAAKyqF,mBAAoBnyE,EAASrtB,OAAS,IAE1F,GAAwB,IAApBqtB,EAASrtB,OAAb,CAEA,IAAMg4B,EAAStI,KAAK+J,IAAIt1B,SAAS0Q,KAAKikB,aAAcxwB,OAAOy4F,aAErDC,EAAiB14F,OAAOy4F,YAAoC,GAArBz4F,OAAOuxB,YAIhDonE,EAAcvxE,KAAK+B,MAAMpE,EAASrtB,QAAUghG,EAAiBhpE,IAC7D7yB,EAAMkoB,EAAS4zE,GAAa5oE,wBAAwBiB,EAKlD4nE,EAAsB7zE,EAASyzE,GAAmBzoE,wBAAwBiB,EAQhF,IAPI5J,KAAKq6B,IAAI5kD,GAAO+7F,IAClBD,EAAcH,EACd37F,EAAM+7F,GAKD/7F,GAAO,IAAM87F,EAAc5zE,EAASrtB,OAAS,GAClDmF,GAAOkoB,EAAS4zE,GAAanoE,aAC7BmoE,IAEF,KAAO97F,EAAMmD,OAAOuxB,YAAc,KAAOonE,EAAc,GAErD97F,GAAOkoB,IADP4zE,GAC6BnoE,aAK/B/jB,KAAKyqF,mBAAqByB,KAE5BE,WAxFO,SAwFKx/F,GACV,IAAMy/F,EAAYj9F,SAAS0Q,KAAKwjB,wBAC1BL,EAAStI,KAAK+J,IAAI2nE,EAAUppE,QAAUopE,EAAU9nE,IACxB,IAA1BvkB,KAAK6I,SAAS0kC,SACdvtC,KAAKmjB,IAAIY,aAAe,GACvBxwB,OAAOuxB,YAAcvxB,OAAOy4F,aAAiB/oE,EAAS,KACzDjjB,KAAK6rF,sBAGTN,aAAcO,KAAS,SAAUl/F,GAC/BoT,KAAK0rF,2BACL1rF,KAAKosF,WAAWx/F,IACf,KACH4+F,uBArGO,WAsGLxrF,KAAKuqF,UAAYn7F,SAASyzB,SAG9B0nB,MAAO,CACL08B,eADK,SACW7gC,GACd,GAAKpmC,KAAK8d,OAAO2O,QAAQtL,aAAaovC,WAGlCnqB,EAAQ,EAAG,CAEb,IAAMkmD,EAAMl9F,SAASg2F,mBACR7xF,OAAOy4F,aAAeM,EAAI5oC,YAAc4oC,EAAIC,WAAa,GAC5D,KACLvsF,KAAKsqF,QACJtqF,KAAKuqF,WAAavqF,KAAK8d,OAAO2O,QAAQtL,aAAasvC,iBAIvDzwD,KAAKsqF,QAAS,EAFdtqF,KAAKiqE,sBChPf,IAEIuiB,GAVJ,SAAoBhuE,GAClBpyB,EAAQ,MAyBKqgG,GAVCrhG,OAAAszB,GAAA,EAAAtzB,CACdshG,GCjBQ,WAAgB,IAAA9tE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBG,MAAA,CAAAN,EAAA+N,QAAAsvD,KAAA,aAAqC,CAAAl9D,EAAA,OAAYG,MAAAN,EAAA+N,QAAAp3B,QAAyB,CAAAqpB,EAAAmsE,SAAAnsE,EAAAuI,KAAApI,EAAA,gBAAAH,EAAAsI,GAAA,KAAAtI,EAAA,eAAAG,EAAA,UAA4FE,YAAA,iCAAA2H,GAAA,CAAiDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAqrD,gBAAAjiD,MAAqC,CAAApJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAisE,kBAAA,YAAA9rE,EAAA,OAAuEE,YAAA,sBAAA2H,GAAA,CAAsCI,MAAA,SAAAgB,GAAyBA,EAAAsI,oBAA2B,CAAA1R,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAtI,EAAAmsE,SAAAnsE,EAAAuI,KAAApI,EAAA,6BAAAH,EAAAsI,GAAA,KAAAnI,EAAA,OAAiKG,MAAAN,EAAA+N,QAAA7sB,MAAuB,CAAAif,EAAA,OAAYgI,IAAA,WAAA9H,YAAA,YAAsC,CAAAL,EAAAmjB,GAAAnjB,EAAA,yBAAA0lB,GAAkD,OAAA1lB,EAAA/V,SAAAg+D,eAAAviC,GAAAvlB,EAAA,gBAAmEhsB,IAAAuxC,EAAA,UAAArlB,YAAA,gBAAAM,MAAA,CAA4DgtB,YAAAjI,EAAAojD,aAAA,EAAAiF,2BAAA/tE,EAAAgpE,sBAAAE,aAAAlpE,EAAA+pB,UAAAo/C,kBAAAnpE,EAAAzV,UAAsJyV,EAAAuI,QAAYvI,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA/V,SAAA,yBAAA/O,GAAqE,OAAA8kB,EAAAqsE,wBAAAnxF,EAAAhG,IAAmT8qB,EAAAuI,KAAnTpI,EAAA,gBAAqEhsB,IAAA+G,EAAAhG,GAAAmrB,YAAA,gBAAAM,MAAA,CAAiDgtB,YAAAzyC,EAAAhG,GAAA4zF,aAAA,EAAAI,aAAAlpE,EAAA+pB,UAAAo/C,kBAAAnpE,EAAAzV,OAAAyjF,iBAAAhuE,EAAA0sE,0BAAA1sE,EAAAwsE,kBAAAj0F,SAAA2C,EAAAhG,WAAyM,KAAA8qB,EAAAsI,GAAA,KAAAnI,EAAA,OAA8BG,MAAAN,EAAA+N,QAAAq+D,QAAyB,KAAApsE,EAAAwnB,MAAArnB,EAAA,OAA4BE,YAAA,0DAAqE,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAA,YAAAG,EAAA,OAAmGE,YAAA,0DAAqE,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAA/V,SAAA0kC,QAAkUxuB,EAAA,OAAsFE,YAAA,oDAA+D,CAAAF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,SAA6C,GAA1hBzQ,EAAA,UAAiHE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAitE,wBAAkC,CAAA9sE,EAAA,OAAYE,YAAA,oDAA+D,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CACxmE,IDOY,EAa7B4hE,GATiB,KAEU,MAYG,QETjBK,GAhBQ,CACrB3uE,WAAY,CACVmsE,aAEFrhE,SAAU,CACRngB,SADQ,WACM,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAA3B,SAEvBjhD,QAPqB,WAQnBxmB,KAAK8d,OAAO+L,SAAS,wBAAyB,CAAEhhB,SAAU,YAE5D4d,UAVqB,WAWnBzmB,KAAK8d,OAAO+L,SAAS,uBAAwB,YCWlCijE,GAVC1hG,OAAAszB,GAAA,EAAAtzB,CACd2hG,GCdQ,WAAgB,IAAaluE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4F4qB,GAAA,iBAAA/hB,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,aACnG,IDIY,EAEb,KAEC,KAEU,MAYG,QEPjBC,GAfmB,CAChC/uE,WAAY,CACVmsE,aAEFrhE,SAAU,CACRngB,SADQ,WACM,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAU39D,oBAE5D0c,QAPgC,WAQ9BxmB,KAAK8d,OAAO+L,SAAS,wBAAyB,CAAEhhB,SAAU,uBAE5D4d,UAVgC,WAW9BzmB,KAAK8d,OAAO+L,SAAS,uBAAwB,uBCWlCqjE,GAVC9hG,OAAAszB,GAAA,EAAAtzB,CACd+hG,GCdQ,WAAgB,IAAatuE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4F4qB,GAAA,YAAA/hB,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,wBACnG,IDIY,EAEb,KAEC,KAEU,MAYG,QEbjBI,GATS,CACtBlvE,WAAY,CACVmsE,aAEFrhE,SAAU,CACRngB,SADQ,WACM,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAU99D,WCiB/C0jF,GAVCjiG,OAAAszB,GAAA,EAAAtzB,CACdkiG,GCdQ,WAAgB,IAAazuE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4F4qB,GAAA,gBAAA/hB,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,cACnG,IDIY,EAEb,KAEC,KAEU,MAYG,QEEjBO,GAvBK,CAClB/mE,QADkB,WAEhBxmB,KAAK8d,OAAO2L,OAAO,gBAAiB,CAAE5gB,SAAU,QAChD7I,KAAK8d,OAAO+L,SAAS,wBAAyB,CAAEhhB,SAAU,MAAOtZ,IAAKyQ,KAAKzQ,OAE7E2uB,WAAY,CACVmsE,aAEFrhE,SAAU,CACRz5B,IADQ,WACC,OAAOyQ,KAAKkqB,OAAOlmB,OAAOzU,KACnCsZ,SAFQ,WAEM,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAUl4E,MAE5Dg7C,MAAO,CACLh7C,IADK,WAEHyQ,KAAK8d,OAAO2L,OAAO,gBAAiB,CAAE5gB,SAAU,QAChD7I,KAAK8d,OAAO+L,SAAS,wBAAyB,CAAEhhB,SAAU,MAAOtZ,IAAKyQ,KAAKzQ,QAG/Ek3B,UAlBkB,WAmBhBzmB,KAAK8d,OAAO+L,SAAS,uBAAwB,SCElC2jE,GAVCpiG,OAAAszB,GAAA,EAAAtzB,CACdqiG,GCdQ,WAAgB,IAAa5uE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4FzQ,IAAAsZ,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,MAAAz9F,IAA5FyQ,KAA4FzQ,QACnG,IDIY,EAEb,KAEC,KAEU,MAYG,QEPjBm+F,GAdG,CAChB1kE,SAAU,CACRngB,SADQ,WAEN,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAUx9D,YAGhDiU,WAAY,CACVmsE,aAEF5jE,UATgB,WAUdzmB,KAAK8d,OAAO2L,OAAO,gBAAiB,CAAE5gB,SAAU,gBCWrC8kF,GAVCviG,OAAAszB,GAAA,EAAAtzB,CACdwiG,GCdQ,WAAgB,IAAa/uE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4F4qB,GAAA,iBAAA/hB,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,gBACnG,IDIY,EAEb,KAEC,KAEU,MAYG,QEVjBa,GAXU,CACvB3vE,WAAY,CACVysE,iBAEF3hE,SAAU,CACRsb,SADQ,WAEN,OAAOtkC,KAAKkqB,OAAOlmB,OAAOlQ,MCejBg6F,GAVC1iG,OAAAszB,GAAA,EAAAtzB,CACd2iG,GCdQ,WAAgB,IAAalvE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,gBAA0BU,MAAA,CAAOmoE,aAAA,EAAAsG,UAAA,OAAAzhD,YAAhGvsC,KAAgGskC,aACvG,IDIY,EAEb,KAEC,KAEU,MAYG,2REFhCnc,KAAQC,IACN6lE,KACAxnD,MACApH,KACA2C,KACAksD,MACAC,MACA3rD,KACA4rD,OAGF,IAiFez8B,GAjFM,CACnBlnE,KADmB,WAEjB,MAAO,CACLy8C,cAAc,EACd5nB,aAActf,KAAK8d,OAAOC,MAAZ,UAA4BuO,eAAeC,UACzD0a,SAAS,IAGbtpB,MAAO,CAAE,gBACTO,WAAY,CACV8oB,mBACAtpB,sBACAmpB,cACAE,aACAxC,mBAEFnmB,QAAS,CACPgsB,mBADO,WAELpqC,KAAKknC,cAAgBlnC,KAAKknC,cAE5Ba,wBAJO,SAIkBjrC,GACvB,OAAOwgB,aAAoBxgB,EAAKhJ,GAAIgJ,EAAK9I,YAAagM,KAAK8d,OAAOC,MAAMC,SAAST,sBAEnF8wE,QAPO,SAOEtmF,GACP,OAAO/H,KAAK8d,OAAOC,MAAMzS,MAAM8nE,YAAYrrE,EAAalK,aAAa/J,KAEvEq2C,WAVO,WAWLnqC,KAAKinC,SAAWjnC,KAAKinC,SAEvB3xB,YAbO,WAcLtV,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkBlU,YAAY,CAAExhB,GAAIkM,KAAKlD,KAAKhJ,KACpEkM,KAAK8d,OAAO+L,SAAS,sBAAuB7pB,KAAKlD,MACjDkD,KAAK8d,OAAO+L,SAAS,+BAAgC,CAAE/1B,GAAIkM,KAAK+H,aAAajU,KAC7EkM,KAAK8d,OAAO+L,SAAS,qBAAsB,CACzC/1B,GAAIkM,KAAK+H,aAAajU,GACtB+3E,QAAS,SAAA9jE,GACPA,EAAalY,KAAO,aAI1B4lB,SAxBO,WAwBK,IAAAlV,EAAAP,KACVA,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkB/T,SAAS,CAAE3hB,GAAIkM,KAAKlD,KAAKhJ,KAC9DrD,KAAK,WACJ8P,EAAKud,OAAO+L,SAAS,2BAA4B,CAAE/1B,GAAIyM,EAAKwH,aAAajU,KACzEyM,EAAKud,OAAO+L,SAAS,sBAAuBtpB,EAAKzD,UAIzDksB,wWAAUslE,CAAA,CACR7mD,UADM,WAEJ,OAAOD,aAAexnC,KAAK+H,aAAalK,eAE1CgqC,UAJM,WAKJ,IAAMha,EAAY7tB,KAAK8d,OAAO2O,QAAQtL,aAAa0M,UAC7C/wB,EAAOkD,KAAK+H,aAAalK,aAC/B,OAAO+pC,aAAe/Z,EAAU/wB,EAAK9I,eAEvC8I,KATM,WAUJ,OAAOkD,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAK+H,aAAalK,aAAa/J,KAErE+6B,gBAZM,WAaJ,OAAO7uB,KAAK+nC,wBAAwB/nC,KAAKlD,OAE3CyxF,WAfM,WAgBJ,OAAOvuF,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAK+H,aAAa7X,OAAO4D,KAE/D06F,sBAlBM,WAmBJ,OAAOxuF,KAAK+nC,wBAAwB/nC,KAAKuuF,aAE3CE,SArBM,WAsBJ,OAAOzuF,KAAK8d,OAAO2O,QAAQ72B,aAAaoK,KAAKlD,KAAKhJ,IAAIuD,QAExDsG,qBAxBM,WAyBJ,OAAOA,YAAqBqC,KAAK+H,aAAalY,QAE7C27B,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,iBCpGxC,IAEIuhE,GAVJ,SAAoBlwE,GAClBpyB,EAAQ,MAyBKuiG,GAVCvjG,OAAAszB,GAAA,EAAAtzB,CACdwjG,GCjBQ,WAAgB,IAAAhwE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,kBAAAD,EAAA7W,aAAAlY,KAAAkvB,EAAA,UAA0DQ,MAAA,CAAOH,SAAA,EAAA0lB,UAAAlmB,EAAA7W,aAAAjO,UAAoDilB,EAAA,OAAAH,EAAA6vE,WAAA7vE,EAAAqoB,QAAAloB,EAAA,OAAqDE,YAAA,iCAA4C,CAAAF,EAAA,SAAAA,EAAA,eAAgCQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,kBAA0B,CAAAjQ,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAA7W,aAAAlK,aAAAtF,gBAAA,kBAAAqmB,EAAAsI,GAAA,KAAAnI,EAAA,UAAsHE,YAAA,yBAAA2H,GAAA,CAAyCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAurB,WAAAniB,MAAgC,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,gBAAoB,KAAApD,EAAA,OAAkBE,YAAA,2BAAAC,MAAA,CAAAN,EAAA6oB,UAAA,CAA8DgE,YAAA7sB,EAAAipB,WAA6B,UAAAjpB,EAAA7W,aAAAlY,MAAAu3B,MAAA,CAAAxI,EAAAipB,YAA+D,CAAA9oB,EAAA,KAAUE,YAAA,mBAAAM,MAAA,CAAsCpyB,KAAAyxB,EAAA7W,aAAAlK,aAAA3J,uBAA2D0yB,GAAA,CAAKklB,SAAA,SAAA9jB,GAA2E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAwrB,mBAAApiB,MAAwC,CAAAjJ,EAAA,cAAmBQ,MAAA,CAAOH,SAAA,EAAAC,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAA7W,aAAAlK,iBAAsF,GAAA+gB,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,sBAAiC,CAAAL,EAAA,aAAAG,EAAA,YAAoCQ,MAAA,CAAOwsB,UAAAntB,EAAAyvE,QAAAzvE,EAAA7W,cAAAjU,GAAA+4B,SAAA,EAAAG,UAAA,KAA2EpO,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,QAAkCE,YAAA,wBAAmC,CAAAF,EAAA,OAAYE,YAAA,mBAA8B,CAAAL,EAAA7W,aAAAlK,aAAAxJ,UAAA0qB,EAAA,OAAwDE,YAAA,WAAAM,MAAA,CAA8BnjB,MAAA,IAAAwiB,EAAA7W,aAAAlK,aAAAtF,gBAAyD+2B,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA/L,EAAA7W,aAAAlK,aAAAxJ,cAA6D0qB,EAAA,QAAaE,YAAA,WAAAM,MAAA,CAA8BnjB,MAAA,IAAAwiB,EAAA7W,aAAAlK,aAAAtF,iBAA0D,CAAAqmB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA7W,aAAAlK,aAAA7L,SAAA4sB,EAAAsI,GAAA,cAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,UAA8HE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,UAAevD,EAAAsI,GAAA,KAAAnI,EAAA,SAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,gBAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,UAAwKE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,UAAA/lB,MAAAwiB,EAAAgM,GAAA,sBAAoDhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,gBAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,UAAuKE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,eAAoBvD,EAAAsI,GAAA,KAAAnI,EAAA,SAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,wBAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,UAA+KE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,UAAevD,EAAAsI,GAAA,KAAAnI,EAAA,SAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,cAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,UAAuKE,YAAA,YAAAM,MAAA,CAA+B4C,KAAA,sBAA2BvD,EAAAsI,GAAA,KAAAnI,EAAA,SAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,gCAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,QAAAA,EAAA,SAAAA,EAAA,QAAgMQ,MAAA,CAAO+vB,KAAA,+BAAqC,CAAAvwB,EAAA,QAAaE,YAAA,wBAAmC,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA7W,aAAAvO,aAAA,KAAAolB,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,qBAAAG,EAAA,OAA+GE,YAAA,WAAsB,CAAAL,EAAA7W,aAAA,OAAAgX,EAAA,eAA8CE,YAAA,aAAAM,MAAA,CAAgCuL,GAAA,CAAM94B,KAAA,eAAAgS,OAAA,CAAgClQ,GAAA8qB,EAAA7W,aAAAjO,OAAAhG,OAAqC,CAAAirB,EAAA,WAAgBQ,MAAA,CAAOysB,KAAAptB,EAAA7W,aAAAnQ,WAAAq0C,cAAA,QAAsD,GAAArtB,EAAAuI,MAAA,GAAApI,EAAA,OAA6BE,YAAA,WAAsB,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAF,EAAA,WAAgBQ,MAAA,CAAOysB,KAAAptB,EAAA7W,aAAAnQ,WAAAq0C,cAAA,QAAsD,KAAArtB,EAAAsI,GAAA,KAAAtI,EAAA,SAAAG,EAAA,UAAgDE,YAAA,kBAAA2H,GAAA,CAAkCI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAurB,WAAAniB,MAAgC,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,gBAAoB,GAAAvD,EAAAuI,OAAAvI,EAAAsI,GAAA,gBAAAtI,EAAA7W,aAAAlY,MAAA,mBAAA+uB,EAAA7W,aAAAlY,KAAAkvB,EAAA,OAA0HE,YAAA,eAA0B,CAAAF,EAAA,eAAoBE,YAAA,cAAAM,MAAA,CAAiCuL,GAAAlM,EAAAiQ,kBAA0B,CAAAjQ,EAAAsI,GAAA,gBAAAtI,EAAA+L,GAAA/L,EAAA7W,aAAAlK,aAAAtF,gBAAA,gBAAAqmB,EAAAsI,GAAA,wBAAAtI,EAAA7W,aAAAlY,KAAAkvB,EAAA,OAAiKstB,YAAA,CAAawiD,cAAA,WAAwB,CAAA9vE,EAAA,UAAeE,YAAA,oDAAAM,MAAA,CAAuE4C,KAAA,QAAA/lB,MAAAwiB,EAAAgM,GAAA,mCAAgEhE,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAtJ,kBAA2BsJ,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BE,YAAA,oDAAAM,MAAA,CAAuE4C,KAAA,QAAA/lB,MAAAwiB,EAAAgM,GAAA,mCAAgEhE,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAnJ,gBAAwB,GAAAmJ,EAAAuI,MAAA,YAAAvI,EAAA7W,aAAAlY,KAAAkvB,EAAA,OAAgEE,YAAA,aAAwB,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAAlM,EAAA4vE,wBAAgC,CAAA5vE,EAAAsI,GAAA,gBAAAtI,EAAA+L,GAAA/L,EAAA7W,aAAA7X,OAAAqI,gBAAA,qBAAAwmB,EAAA,kBAAkHE,YAAA,QAAAM,MAAA,CAA2BzlB,OAAA8kB,EAAA7W,aAAAnK,YAAkC,QAC9+J,IDOY,EAa7B8wF,GATiB,KAEU,MAYG,ukBEoDhCI,GAAA,EAAA1mE,IACA2mE,GAAA,GAGA,IAAAC,GAAA,CACA9wE,WAAA,CAAAmE,QAAAsE,GAAA,SACAqC,SAAA,CACA6hB,QADA,WAEA,OAAA7qC,KAAA8d,OAAA2O,QAAAtL,aAAAnB,yBAGA5B,QAAA,CACA6wE,yBADA,SACAp/F,GACAmQ,KAAA8d,OAAA+L,SAAA,aACA73B,KAAA,yBACAS,MAAAy8F,GAAA,GACAlvF,KAAA6qC,QADAk7B,IAAA,GAEAl2E,GAAAmQ,KAAA6qC,QAAAh7C,UCtFA,ICNMs/F,GAAQC,GAAWC,GAAYv5F,GAkB7Bw5F,GAEAC,GDZJC,GAXJ,SAAoBhxE,GAClBpyB,EAAQ,MA0BKqjG,GAVCrkG,OAAAszB,GAAA,EAAAtzB,CACd4jG,GElBQ,WAAgB,IAAApwE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,WAAqBE,YAAA,sBAAAM,MAAA,CAAyC+C,QAAA,QAAAC,UAAA,SAAAsJ,WAAA,CAAmDvH,EAAA,cAAkBqd,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,UAAA8uC,GAAA,WAA4B,OAAA9iB,EAAA,OAAkBE,YAAA,iBAA4B,CAAAF,EAAA,UAAeE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,YAA+C,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAA5qB,SAA8CrB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAyGE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,cAAiD,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAA3qB,WAAgDtB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2DAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA2GE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,cAAiD,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAA1qB,WAAgDvB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2DAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA2GE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,eAAkD,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAA5tC,YAAiD2hB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4DAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4GE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,qBAAwD,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAAvqB,kBAAuD1B,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mEAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAmHE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAqwE,yBAAA,YAA+C,CAAAlwE,EAAA,QAAaE,YAAA,gBAAAC,MAAA,CAAmC2L,wBAAAjM,EAAAisB,QAAAxqB,SAA8CzB,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6DAAmFhkB,OAAA,GAAY,CAAE7T,IAAA,UAAA8uC,GAAA,WAA4B,OAAA9iB,EAAA,UAAqBQ,MAAA,CAAO4C,KAAA,cAAoBvb,OAAA,QACjyE,IFQY,EAa7B4oF,GATiB,KAEU,MAYG,QCiCjBE,IAvCPJ,GAAgB,SAAC7mC,GAAD,OAASA,EAAIptB,UAAkC,IAAtBotB,EAAImB,eA8B5C,CACL+lC,mBA5CyB,WACzB,IAAMC,EAAQxgG,SAASC,qBAAqB,SAC5CyG,GAAUsuC,IAAKwrD,EAAO,SAAA94C,GAAI,MAAiB,SAAbA,EAAKrnD,UAEjC2/F,GAAYhgG,SAASQ,cAAc,WACzBozB,MATO,IAUjBosE,GAAUnsE,OATQ,KAUlBksE,GAAS,IAAIn5B,OACN7lE,IAAM2F,GAAQ3I,KACrBkiG,GAAaD,GAAUxiC,WAAW,QAoCpC2iC,kBA9BIA,GAAoB,WACnBJ,IAAWE,IAAev5F,KAE/Bu5F,GAAWQ,UAAU,EAAG,EAtBL,IACC,KAsBhBP,GAAcH,KAChBE,GAAWxiC,UAAUsiC,GAAQ,EAAG,EAAGA,GAAOnsE,MAAOmsE,GAAOlsE,OAAQ,EAAG,EAxBlD,IACC,KAyBpBntB,GAAQ3I,KAAOiiG,GAAUU,UAAU,eAwBnCC,iBArBuB,WACvB,GAAKZ,IAAWE,IAAeA,GAA/B,CAEAE,KAEA,IAAMnoE,EAAQjC,iBAAiB/1B,SAAS0Q,MAClCkwF,EAAU,GAAAp2F,OAAMwtB,EAAMq+D,iBAAiB,wBAA0B,sBAEnE6J,GAAcH,KAChBE,GAAWxiC,UAAUsiC,GAAQ,EAAG,EAAGA,GAAOnsE,MAAOmsE,GAAOlsE,OAAQ,EAAG,EAtClD,IACC,KAuCpBosE,GAAWY,UAAYD,EACvBX,GAAWa,YACXb,GAAWc,IAAIC,GAxCG,MAwCmD,EAAG,EAAIz1E,KAAK01E,IAAI,GACrFhB,GAAWiB,OACXx6F,GAAQ3I,KAAOiiG,GAAUU,UAAU,8OEnCvC3nE,KAAQC,IACN8b,MAGF,IAsGeqsD,GApGO,CACpBryE,WAAY,CACVyzC,gBACA6+B,wBAEF7yE,MAAO,CAELmqB,UAAW7pC,QAGXwyF,YAAaxyF,QAEbyyF,WAAYzgE,OAEdxlC,KAdoB,WAelB,MAAO,CACL+/F,aAAa,EAIbmG,mBAtBgC,KAyBpC3nE,wWAAU4nE,CAAA,CACRC,UADM,WAEJ,OAAO7wF,KAAKywF,YAAc,GAAK,uBAEjC5mF,cAJM,WAKJ,OAAO8V,YAAuB3f,KAAK8d,SAErC3sB,MAPM,WAQJ,OAAO6O,KAAK8d,OAAOC,MAAMzF,SAASzO,cAAc1Y,OAElD2/F,oBAVM,WAWJ,OAAO/uE,YAA6B/hB,KAAK8d,SAE3CizE,sBAbM,WAcJ,OAAOrvE,YAA+B1hB,KAAK8d,OAAQ9d,KAAK0wF,aAE1DM,YAhBM,WAiBJ,OAAOhxF,KAAK8wF,oBAAoB7lG,QAElCgmG,iBAnBM,WAoBJ,OAAOjxF,KAAKgxF,YAAehxF,KAAKkhF,iBAElC3zC,QAtBM,WAuBJ,OAAOvtC,KAAK8d,OAAOC,MAAMzF,SAASzO,cAAc0jC,SAElD2jD,uBAzBM,WA0BJ,OAAOlxF,KAAK+wF,sBAAsBt9F,MAAM,EAAGuM,KAAKgxF,YAAchxF,KAAK2wF,sBAElE5iE,YAAW,CAAC,qBAEjBwc,MAAO,CACL0mD,iBADK,SACa7qD,GACZA,EAAQ,GACVspD,GAAeK,mBACf/vF,KAAK8d,OAAO+L,SAAS,eAArB,IAAAjwB,OAAyCwsC,EAAzC,QAEAspD,GAAeH,oBACfvvF,KAAK8d,OAAO+L,SAAS,eAAgB,OAI3CzL,QAAS,CACP+yE,WADO,WAELnxF,KAAK8d,OAAO+L,SAAS,2BACrB7pB,KAAK2wF,mBArE2B,IAuElCS,wBALO,WAKoB,IAAA7wF,EAAAP,KACzB,IAAIA,KAAKutC,QAAT,CAIA,IAAM8jD,EAAYrxF,KAAK+wF,sBAAsB9lG,OAAS+U,KAAKgxF,YAC3D,GAAIhxF,KAAK2wF,mBAAqBU,EAC5BrxF,KAAK2wF,mBAAqBh2E,KAAK8J,IAAIzkB,KAAK2wF,mBAAqB,GAAIU,OADnE,CAGWrxF,KAAK2wF,mBAAqBU,IACnCrxF,KAAK2wF,mBAAqBU,GAG5B,IAAMzxE,EAAQ5f,KAAK8d,OACbja,EAAc+b,EAAM7B,MAAMzS,MAAM6hB,YAAYtpB,YAClD+b,EAAM6J,OAAO,0BAA2B,CAAEh3B,OAAO,IACjDu8E,GAAqBlB,eAAe,CAClCluD,QACA/b,cACAolE,OAAO,IACNx4E,KAAK,SAAA6gG,GACN1xE,EAAM6J,OAAO,0BAA2B,CAAEh3B,OAAO,IAC3B,IAAlB6+F,EAAOrmG,SACTsV,EAAKiqF,aAAc,GAErBjqF,EAAKowF,oBAAsBW,EAAOrmG,cCzG1C,IAEIsmG,GAVJ,SAAoB/yE,GAClBpyB,EAAQ,MAyBKolG,GAVCpmG,OAAAszB,GAAA,EAAAtzB,CACdqmG,GCjBQ,WAAgB,IAAA7yE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,gBAAAC,MAAA,CAAmCwyE,QAAA9yE,EAAA6xE,cAA4B,CAAA1xE,EAAA,OAAYG,MAAAN,EAAAiyE,WAAoB,CAAAjyE,EAAAkpB,UAAodlpB,EAAAuI,KAApdpI,EAAA,OAA6BE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8CAAAhM,EAAA,YAAAG,EAAA,QAA+GE,YAAA,yCAAoD,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAoyE,gBAAApyE,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAA0FE,YAAA,6BAAA2H,GAAA,CAA6CI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAuyE,WAAAnpE,MAAgC,CAAApJ,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,2BAAAH,EAAAsI,GAAA,KAAAnI,EAAA,OAA2JE,YAAA,cAAyBL,EAAAmjB,GAAAnjB,EAAA,gCAAA7W,GAA4D,OAAAgX,EAAA,OAAiBhsB,IAAAgV,EAAAjU,GAAAmrB,YAAA,eAAAC,MAAA,CAAsDyyE,QAAA/yE,EAAA6xE,cAAA1oF,EAAAtK,OAAkD,CAAAshB,EAAA,OAAYE,YAAA,yBAAmCL,EAAAsI,GAAA,KAAAnI,EAAA,gBAAiCQ,MAAA,CAAOxX,mBAA6B,KAAM,GAAA6W,EAAAsI,GAAA,KAAAnI,EAAA,OAA2BE,YAAA,gBAA2B,CAAAL,EAAA,YAAAG,EAAA,OAA8BE,YAAA,0DAAqE,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sDAAAhM,EAAA2uB,QAA4UxuB,EAAA,OAAqJE,YAAA,oDAA+D,CAAAF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,SAA6C,GAAnmBzQ,EAAA,UAAsHE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAwyE,6BAAuC,CAAAryE,EAAA,OAAYE,YAAA,oDAA+D,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAA6xE,YAAA7xE,EAAAgM,GAAA,2BAAAhM,EAAAgM,GAAA,sDACllD,IDOY,EAa7B2mE,GATiB,KAEU,MAYG,QExB1BK,GAAc,CAClB30F,SAAU,CAAC,WACX40F,gBAAiB,CAAC,SAAU,QAC5B1xE,QAAS,CAAC,UACVE,MAAO,CAAC,SAoBKyxE,GAjBM,CACnBrnG,KADmB,WAEjB,MAAO,CACLsnG,mBAAoB/xF,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYl3B,qBACxDy6F,WAAYkB,GAAW,WAG3BxzE,QAAS,CACP4zE,aADO,SACOj/F,GACZiN,KAAK0wF,WAAakB,GAAY7+F,KAGlCmrB,WAAY,CACVqyE,mBCCW0B,GAVC7mG,OAAAszB,GAAA,EAAAtzB,CACd8mG,GCdQ,WAAgB,IAAAtzE,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,gBAAoGgI,IAAA,cAAAxH,MAAA,CAAyB4yE,YAAAvzE,EAAAozE,eAA8B,CAAAjzE,EAAA,QAAahsB,IAAA,WAAAwsB,MAAA,CAAsB2zC,MAAAt0C,EAAAgM,GAAA,mBAAgChM,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBhsB,IAAA,gBAAAwsB,MAAA,CAA2B2zC,MAAAt0C,EAAAgM,GAAA,gCAA6ChM,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBhsB,IAAA,UAAAwsB,MAAA,CAAqB2zC,MAAAt0C,EAAAgM,GAAA,2BAAwChM,EAAAsI,GAAA,KAAAtI,EAAAmzE,mBAA4GnzE,EAAAuI,KAA5GpI,EAAA,QAAmDhsB,IAAA,QAAAwsB,MAAA,CAAmB2zC,MAAAt0C,EAAAgM,GAAA,2BAAsChM,EAAAsI,GAAA,KAAAnI,EAAA,iBAA6CgI,IAAA,gBAAAxH,MAAA,CAA2BotB,cAAA,EAAAylD,gBAAA,EAAAC,cAAAzzE,EAAA8xE,eAAoE,IAC90B,IDIY,EAEb,KAEC,KAEU,MAYG,QEVjB4B,GAXH,CACVtpE,SAAU,CACRngB,SADQ,WAEN,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAU79D,MAGhDsU,WAAY,CACVmsE,cCcWkI,GAVCnnG,OAAAszB,GAAA,EAAAtzB,CACdonG,GCdQ,WAAgB,IAAa3zE,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,YAAsBU,MAAA,CAAOnjB,MAA5F4D,KAA4F4qB,GAAA,WAAA/hB,SAA5F7I,KAA4F6I,SAAAmkF,gBAAA,UACnG,IDIY,EAEb,KAEC,KAEU,MAYG,kBEnBjB11B,OAAIC,UAAU,aAAc,CACzCvlE,KAAM,YACNksB,WAAY,CACVR,uBAEFC,MAAO,CACL,OAAQ,cAEVqL,SAAU,CACR5sB,MADQ,WAEN,OAAO4D,KAAKlD,KAAOkD,KAAKlD,KAAKvE,eAAiB,IAEhDk6F,UAJQ,WAKN,OAAOzyF,KAAKlD,KAAOkD,KAAKlD,KAAKzI,UAAY,KAG7C+pB,QAAS,CACPs0E,mBADO,SACa51F,GAClB,OAAOwgB,aAAoBxgB,EAAKhJ,GAAIgJ,EAAK9I,iBCd/C,IAEI2+F,GAVJ,SAAoBn0E,GAClBpyB,EAAQ,MAyBKwmG,GAVCxnG,OAAAszB,GAAA,EAAAtzB,CACdynG,GCjBQ,WAAgB,IAAAj0E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,aAAAM,MAAA,CAAgCnjB,MAAAwiB,EAAAxiB,QAAmB,CAAAwiB,EAAAk0E,YAAAl0E,EAAA9hB,KAAAiiB,EAAA,eAAiDQ,MAAA,CAAOuL,GAAAlM,EAAA8zE,mBAAA9zE,EAAA9hB,QAAuC,CAAAiiB,EAAA,cAAmBQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,KAAAkmB,MAAA,OAAAC,OAAA,WAAgD,GAAArE,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,QAAsCE,YAAA,WAAAqQ,SAAA,CAAiCC,UAAA3Q,EAAA+L,GAAA/L,EAAA6zE,eAAmC,IAC7Z,IDOY,EAa7BE,GATiB,KAEU,MAYG,qOElBhC,IA0DeI,GA1DM,CACnB/gG,KAAM,eACN2rB,MAAO,CACL,QAEFO,WAAY,CACVR,sBACAopB,gBACAC,aACAisD,aACAhsD,oBAEFhe,wWAAUiqE,CAAA,GACLznE,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,eAF9B,CAIN+lE,eAJM,WAKJ,GAAiD,IAA7ClzF,KAAKf,KAAKE,YAAYjC,YAAYjS,OAAtC,CAEA,IAAM02B,EAAQ3hB,KAAKf,KAAKE,YAAYjC,YAAYpI,IAAI,SAAA6e,GAAI,OAAI0T,KAASA,SAAS1T,EAAK5a,YACnF,OAAI4oB,EAAMxqB,SAAS,SACV6I,KAAK4qB,GAAG,mBACNjJ,EAAMxqB,SAAS,SACjB6I,KAAK4qB,GAAG,mBACNjJ,EAAMxqB,SAAS,SACjB6I,KAAK4qB,GAAG,mBAER5qB,KAAK4qB,GAAG,oBAGnBuoE,wBAlBM,WAmBJ,IAAM3hG,EAAUwO,KAAKf,KAAKE,YACpBi0F,EAAQ5hG,GAAWA,EAAQmmB,aAAe3X,KAAKmtB,YAAYr5B,GAC3D8G,EAAUpJ,EAAWwO,KAAKkzF,gBAAkB1hG,EAAQoJ,QAAW,GAC/Dy4F,EAAiBD,EAAK,MAAAx5F,OAASoG,KAAK4qB,GAAG,aAAjB,SAAAhxB,OAAqCgB,GAAYA,EAC7E,MAAO,CACLE,QAAS,GACTH,eAAgB04F,EAChBx4F,KAAMw4F,EACNn2F,YAAa,OAInBkhB,QAAS,CACPiN,SADO,SACGlE,GACJnnB,KAAKf,KAAKnL,IACZkM,KAAKsrB,QAAQngC,KAAK,CAChB6G,KAAM,OACNgS,OAAQ,CACN/C,SAAUjB,KAAKmtB,YAAYn5B,YAC3Bu3B,aAAcvrB,KAAKf,KAAKlC,QAAQjJ,SClD5C,IAEIw/F,GAVJ,SAAoB90E,GAClBpyB,EAAQ,MAyBKmnG,GAVCnoG,OAAAszB,GAAA,EAAAtzB,CACdooG,GCjBQ,WAAgB,IAAA50E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,iBAAA2H,GAAA,CAAiCklB,SAAA,SAAA9jB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAyM,SAAArD,MAA8B,CAAAjJ,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,cAAmBQ,MAAA,CAAOziB,KAAA8hB,EAAA3f,KAAAlC,QAAAkmB,OAAA,OAAAD,MAAA,WAAwD,GAAApE,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,yBAAoC,CAAAF,EAAA,OAAYE,YAAA,WAAsB,CAAAL,EAAA3f,KAAA,QAAA8f,EAAA,QAAgCE,YAAA,yBAAoC,CAAAF,EAAA,aAAkBQ,MAAA,CAAOziB,KAAA8hB,EAAA3f,KAAAlC,YAAyB,GAAA6hB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,QAAsCE,YAAA,kBAA4BL,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,gBAA2B,CAAAF,EAAA,WAAgBQ,MAAA,CAAOysB,KAAAptB,EAAA3f,KAAAK,WAAA2sC,cAAA,OAA6C,KAAArtB,EAAAsI,GAAA,KAAAnI,EAAA,OAA8BE,YAAA,gBAA2B,CAAAF,EAAA,iBAAsBQ,MAAA,CAAOzlB,OAAA8kB,EAAAu0E,wBAAAr/C,eAAA,KAAyDl1B,EAAAsI,GAAA,KAAAtI,EAAA3f,KAAAC,OAAA,EAAA6f,EAAA,OAA8CE,YAAA,8CAAyD,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAA3f,KAAAC,QAAA,cAAA0f,EAAAuI,MAAA,QAC/8B,IDOY,EAa7BmsE,GATiB,KAEU,MAYG,8OEjBhCnrE,KAAQC,IACNqrE,KACAC,MAGF,IAoEeC,GApEC,CACdz1E,WAAY,CACV+2B,mBACAv3B,uBAEFjzB,KALc,WAMZ,MAAO,CACLmrB,YAAa,GACbg+E,QAAS,GACTrmD,SAAS,EACT90B,MAAO,KAGL+N,QAbQ,eAAAplB,EAAAb,EAAAP,KAAA,OAAAuL,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,cAAA8M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAcY3L,KAAKwpB,kBAAkBrQ,SAdnC,OAAA/X,EAAAqK,EAAAG,KAAAxK,EAcJ+X,MACF5J,QAAQ,SAAAtQ,GAAI,OAAIsB,EAAKqV,YAAYzqB,KAAK8T,EAAKlC,WAfrC,wBAAA0O,EAAAM,SAAA,KAAA/L,OAiBdgpB,wWAAU6qE,CAAA,CACRvoF,MADM,WACG,IAAAqe,EAAA3pB,KACP,OAAOA,KAAK4zF,QAAQ9+F,IAAI,SAAAqU,GAAM,OAAIwgB,EAAK+C,SAASvjB,MAElD2qF,eAJM,WAKJ,OAA0B,IAAtB9zF,KAAKyY,MAAMxtB,OACN+U,KAAKsL,MAELtL,KAAK4V,cAGb4V,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,aAClC3D,kBAAmB,SAAAzL,GAAK,OAAIA,EAAMwL,IAAIC,qBAblC,GAeHuE,YAAW,CAAC,cAEjB3P,QAAS,CACP21E,OADO,WAEL/zF,KAAKgmB,MAAM,WAEbguE,SAJO,SAIGl3F,GACRkD,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,OAAQgS,OAAQ,CAAEunB,aAAczuB,EAAKhJ,OAEjEwqE,QAPO,WAQLt+D,KAAKytE,OAAOztE,KAAKyY,QAEnBw7E,QAVO,SAUEn3F,GACPkD,KAAKk0F,gBAAgB/oG,KAAK2R,EAAKhJ,IAC/BkM,KAAKyY,MAAQ,IAEf07E,WAdO,SAcKhrF,GACVnJ,KAAKk0F,gBAAkBl0F,KAAKk0F,gBAAgB9uF,OAAO,SAAAtR,GAAE,OAAIA,IAAOqV,KAElEskE,OAjBO,SAiBCh1D,GAAO,IAAAuR,EAAAhqB,KACRyY,GAKLzY,KAAKutC,SAAU,EACfvtC,KAAK4zF,QAAU,GACf5zF,KAAK8d,OAAO+L,SAAS,SAAU,CAAE1R,EAAGM,EAAOxrB,SAAS,EAAM4C,KAAM,aAC7DY,KAAK,SAAAhG,GACJu/B,EAAKujB,SAAU,EACfvjB,EAAK4pE,QAAUnpG,EAAKwsB,SAASniB,IAAI,SAAAkS,GAAC,OAAIA,EAAElT,QAT1CkM,KAAKutC,SAAU,KC3DvB,IAEI6mD,GAVJ,SAAoB51E,GAClBpyB,EAAQ,MAyBKioG,GAVCjpG,OAAAszB,GAAA,EAAAtzB,CACdkpG,GCjBQ,WAAgB,IAAA11E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,+BAAAM,MAAA,CAAkDzrB,GAAA,QAAY,CAAAirB,EAAA,OAAYgI,IAAA,SAAA9H,YAAA,iBAAyC,CAAAF,EAAA,KAAUE,YAAA,iBAAA2H,GAAA,CAAiCI,MAAApI,EAAAm1E,SAAoB,CAAAh1E,EAAA,UAAeQ,MAAA,CAAOiQ,KAAA,KAAArN,KAAA,mBAAmC,KAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,OAA8BE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAF,EAAA,UAAeE,YAAA,0CAAAM,MAAA,CAA6D4C,KAAA,aAAiB,GAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,SAA8B2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,MAAAgR,WAAA,UAAoE7I,IAAA,SAAAxH,MAAA,CAAsBuiB,YAAA,iBAA8BxS,SAAA,CAAW78B,MAAAmsB,EAAA,OAAoBgI,GAAA,CAAKzJ,MAAA,UAAA6K,GAA0BA,EAAA93B,OAAA2/B,YAAsCjR,EAAAnG,MAAAuP,EAAA93B,OAAAuC,QAA8BmsB,EAAA0/C,cAAe1/C,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,eAA0BL,EAAAmjB,GAAAnjB,EAAA,wBAAA9hB,GAA4C,OAAAiiB,EAAA,OAAiBhsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,UAAiC,CAAAF,EAAA,OAAY6H,GAAA,CAAIklB,SAAA,SAAA9jB,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAAo1E,SAAAl3F,MAA4B,CAAAiiB,EAAA,iBAAsBQ,MAAA,CAAOziB,WAAa,OAAQ,MACnlC,IDOY,EAa7Bs3F,GATiB,KAEU,MAYG,8OErBhC,IA+BeG,GA/BE,CACfr2E,WAAY,CACV60E,gBACAyB,UACAC,YAEFzrE,wWAAU0rE,CAAA,GACLlpE,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,eAF9B,GAIHY,YAAW,CAAC,oBAEjBtjC,KAZe,WAab,MAAO,CACLkqG,OAAO,IAGXnuE,QAjBe,WAkBbxmB,KAAK8d,OAAO+L,SAAS,aAAc,CAAE6tD,QAAQ,KAE/Ct5D,QAAS,CACPw2E,cADO,WAEL50F,KAAK20F,OAAQ,EACb30F,KAAK8d,OAAO+L,SAAS,aAAc,CAAE6tD,QAAQ,KAE/Cmd,QALO,WAML70F,KAAK20F,OAAQ,KCvBnB,IAEIG,GAVJ,SAAoBt2E,GAClBpyB,EAAQ,MAyBK2oG,GAVC3pG,OAAAszB,GAAA,EAAAtzB,CACd4pG,GCjBQ,WAAgB,IAAAp2E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,MAAAG,EAAA,OAAAA,EAAA,WAA2C6H,GAAA,CAAIquE,OAAAr2E,EAAAg2E,kBAA4B,GAAA71E,EAAA,OAAgBE,YAAA,iCAA4C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAuFE,YAAA,iBAAA2H,GAAA,CAAiCI,MAAApI,EAAAi2E,UAAqB,CAAAj2E,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAoFE,YAAA,cAAyB,CAAAL,EAAAqiE,eAAAh2F,OAAA,EAAA8zB,EAAA,OAA4CE,YAAA,YAAuB,CAAAF,EAAA,QAAaQ,MAAA,CAAOksC,MAAA7sC,EAAAqiE,gBAA2Bt/C,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,OAAA8uC,GAAA,SAAA9a,GAC3qB,IAAA4kC,EAAA5kC,EAAA4kC,KACA,OAAA5sC,EAAA,gBAA2BhsB,IAAA44D,EAAA73D,GAAAyrB,MAAA,CAAmBH,SAAA,EAAAngB,KAAA0sD,SAAiC,uBAAyB,GAAA5sC,EAAA,OAAgBE,YAAA,yBAAoC,CAAAF,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gDACzI,IDKY,EAa7BkqE,GATiB,KAEU,MAYG,+CEjBhCI,GAAA,CACAljG,KAAA,UACA2rB,MAAA,SACAqL,SAAA,CACAmsE,YADA,WAEA,IAAAC,EAAA,IAAAv9F,KAGA,OAFAu9F,EAAApW,SAAA,SAEAh/E,KAAA60C,KAAAoqC,YAAAmW,EAAAnW,UACAj/E,KAAA4qB,GAAA,sBAEA5qB,KAAA60C,KAAAwgD,mBAAA5qC,GAAA,EAAAC,wBAAA1qD,KAAA2qD,MAAA/3C,QAAA,CAAA0iF,IAAA,UAAAC,MAAA,YCIeC,GAVCpqG,OAAAszB,GAAA,EAAAtzB,CACd8pG,GCfQ,WAAgB,IAAar2E,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,QAA/D7e,KAA+DknB,GAAA,OAA/DlnB,KAA+D2qB,GAA/D3qB,KAA+Dm1F,aAAA,SACtE,IDKY,EAEb,KAEC,KAEU,MAYG,qOEThChtE,KAAQC,IACNqe,MACApE,MAGF,IAqFeozD,GArFK,CAClBzjG,KAAM,cACN2rB,MAAO,CACL,SACA,SACA,YACA,eACA,uBAEFO,WAAY,CACVmE,mBACAiwB,gBACAtL,mBACAtpB,sBACA80B,aACAC,iBACAijD,oBAEF1sE,wWAAU2sE,CAAA,CAERC,UAFM,WAIJ,OADa51F,KAAK61F,aAAaprG,KAAKmN,WACxBk+F,mBAAmB,KAAM,CAAEC,KAAM,UAAWC,OAAQ,UAAWC,QAAQ,KAErFC,cANM,WAOJ,OAAOl2F,KAAKxO,QAAQmmB,aAAe3X,KAAKmtB,YAAYr5B,IAEtDtC,QATM,WAUJ,OAAOwO,KAAK61F,aAAaprG,MAE3BokC,gBAZM,WAaJ,OAAOvR,aAAoBtd,KAAKm2F,OAAOriG,GAAIkM,KAAKm2F,OAAOniG,YAAagM,KAAK8d,OAAOC,MAAMC,SAAST,sBAEjG64E,UAfM,WAgBJ,MAAkC,YAA3Bp2F,KAAK61F,aAAahmG,MAE3BsjG,wBAlBM,WAmBJ,MAAO,CACLr4F,QAAS,GACTH,eAAgBqF,KAAKxO,QAAQoJ,QAC7BC,KAAMmF,KAAKxO,QAAQoJ,QACnBsC,YAAa8C,KAAKxO,QAAQ0L,cAG9Bm5F,cA1BM,WA2BJ,OAAOr2F,KAAKxO,QAAQ0L,YAAYjS,OAAS,IAExCugC,YAAS,CACVlM,aAAc,SAAAvB,GAAK,OAAIA,EAAK,UAAWuO,eAAeC,WACtDY,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,aAClC5P,oBAAqB,SAAAQ,GAAK,OAAIA,EAAMC,SAAST,uBAhCzC,CAkCN+4E,mBAlCM,WAmCJ,OAAIt2F,KAAKk2F,cACA,GAEA,CAAE/xE,KAAM,MAGhB4J,YAAW,CAAC,eAAgB,cAEjCtjC,KA7DkB,WA8DhB,MAAO,CACL8rG,SAAS,EACTC,YAAY,IAGhBp4E,QAAS,CACPq4E,QADO,SACEC,GACP12F,KAAKgmB,MAAM,QAAS,CAAE2wE,UAAWD,EAAMtX,eAAgBp/E,KAAK61F,aAAazW,kBAErEE,cAJC,kBAAA/zE,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,WAKapL,OAAOsvC,QAAQ7iC,KAAK4qB,GAAG,yBALpC,CAAAnf,EAAA9M,KAAA,eAAA8M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAOG3L,KAAK8d,OAAO+L,SAAS,oBAAqB,CAC9CpmB,UAAWzD,KAAK61F,aAAaprG,KAAKqJ,GAClC0P,OAAQxD,KAAK61F,aAAaprG,KAAK+U,WAT9B,OAYLQ,KAAKu2F,SAAU,EACfv2F,KAAKw2F,YAAa,EAbb,wBAAA/qF,EAAAM,SAAA,KAAA/L,SC/EX,IAEI42F,GAVJ,SAAoBp4E,GAClBpyB,EAAQ,MAyBKyqG,GAVCzrG,OAAAszB,GAAA,EAAAtzB,CACd0rG,GCjBQ,WAAgB,IAAAl4E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,UAAAG,EAAA,OAAiCE,YAAA,uBAAAC,MAAA,CAA0C63E,wBAAAn4E,EAAAo4E,qBAAmDpwE,GAAA,CAAKqwE,UAAA,SAAAjvE,GAA6B,OAAApJ,EAAA63E,SAAA,IAAyB3vE,WAAA,SAAAkB,GAA+B,OAAApJ,EAAA63E,SAAA,MAA4B,CAAA13E,EAAA,OAAYE,YAAA,eAAAC,MAAA,EAAmCg4E,SAAAt4E,EAAAs3E,cAAAiB,UAAAv4E,EAAAs3E,iBAAkE,CAAAt3E,EAAAs3E,cAA0Ot3E,EAAAuI,KAA1OpI,EAAA,OAAiCE,YAAA,kBAA6B,CAAAL,EAAAi3E,aAAA,OAAA92E,EAAA,eAA8CQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,kBAA0B,CAAA9P,EAAA,cAAmBQ,MAAA,CAAOH,SAAA,EAAAC,gBAAAT,EAAAU,aAAAxiB,KAAA8hB,EAAAu3E,WAAmE,GAAAv3E,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAkDE,YAAA,sBAAiC,CAAAF,EAAA,OAAYE,YAAA,cAAAmI,MAAA,CAAkCklB,YAAA1tB,EAAAptB,QAAAiO,WAAA,WAAqD,CAAAsf,EAAA,OAAYE,YAAA,eAAAC,MAAA,CAAkCk4E,sBAAAx4E,EAAAy3E,cAAA32F,QAAAkf,EAAAi3E,aAAAprG,KAAAiV,QAAAvO,MAAAytB,EAAAi3E,aAAAprG,KAAA0G,OAA2Hk7C,YAAA,CAAc7N,SAAA,YAAsB5X,GAAA,CAAKC,WAAA,SAAAmB,GAA8BpJ,EAAA23E,SAAA,GAAmBzvE,WAAA,SAAAkB,GAA+BpJ,EAAA23E,SAAA,KAAsB,CAAAx3E,EAAA,OAAYE,YAAA,oBAAAC,MAAA,CAAuCwoC,QAAA9oC,EAAA23E,SAAA33E,EAAA43E,aAA4C,CAAAz3E,EAAA,WAAgBQ,MAAA,CAAO+C,QAAA,QAAAC,UAAA,MAAA80E,oBAAAz4E,EAAAs3E,cAAA,8BAAArqE,WAAA,CAAwHvH,EAAA,aAAiB5B,OAAA9D,EAAA03E,oBAAiC1vE,GAAA,CAAKmD,KAAA,SAAA/B,GAAwBpJ,EAAA43E,YAAA,GAAsB/uF,MAAA,SAAAugB,GAA0BpJ,EAAA43E,YAAA,KAAyB,CAAAz3E,EAAA,OAAYQ,MAAA,CAAOmL,KAAA,WAAiBA,KAAA,WAAgB,CAAA3L,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,UAAeE,YAAA,kDAAA2H,GAAA,CAAkEI,MAAApI,EAAA0gE,gBAA2B,CAAAvgE,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,WAAgBvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAAqGE,YAAA,2BAAAM,MAAA,CAA8CmL,KAAA,UAAAtuB,MAAAwiB,EAAAgM,GAAA,eAA8CF,KAAA,WAAgB,CAAA3L,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,iBAAqB,SAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,iBAA4CQ,MAAA,CAAOzlB,OAAA8kB,EAAAu0E,wBAAAmE,gBAAA,IAA0D,CAAAv4E,EAAA,QAAaE,YAAA,aAAAM,MAAA,CAAgCmL,KAAA,UAAgBA,KAAA,UAAe,CAAA9L,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAg3E,WAAA,kCAAA72E,EAAA,OAA8FE,YAAA,+BAA0C,CAAAF,EAAA,mBAAwBQ,MAAA,CAAOs1B,KAAAj2B,EAAAi3E,aAAAhhD,SAA8B,IACj3E,IDOY,EAa7B+hD,GATiB,KAEU,MAYG,iBEzBnBW,GAAoB,SAACz2C,GAChC,MAAO,CACL4C,UAAW5C,EAAG4C,UACdI,aAAchD,EAAGgD,aACjB//B,aAAc+8B,EAAG/8B,8kBCWrBoE,KAAQC,IACNC,KACAqrE,MAGF,IAmYe8D,GA7XF,CACXt5E,WAAY,CACVu3E,eACAzC,aACApsD,qBAEFn8C,KANW,WAOT,MAAO,CACLgtG,2BAA2B,EAC3BC,2BAAuBjmG,EACvBkmG,mBAAoB,GACpBC,0BAA2B,OAC3BC,kBAAkB,EAClBC,gBAAiB,KAGrBtxE,QAhBW,WAiBTxmB,KAAK0uE,gBACLn7E,OAAO0T,iBAAiB,SAAUjH,KAAK+3F,qBAEzCj7C,QApBW,WAoBA,IAAAv8C,EAAAP,KACTzM,OAAO0T,iBAAiB,SAAUjH,KAAKurF,mBACR,IAApBn8F,SAASyzB,QAClBzzB,SAAS6X,iBAAiB,mBAAoBjH,KAAKwrF,wBAAwB,GAG7ExrF,KAAK+lB,UAAU,WACbxlB,EAAKy3F,kCACLz3F,EAAK03F,iBAEPj4F,KAAKk4F,iBAEPzxE,UAhCW,WAiCTlzB,OAAOmzB,oBAAoB,SAAU1mB,KAAKurF,cAC1Ch4F,OAAOmzB,oBAAoB,SAAU1mB,KAAK+3F,oBAC1C/3F,KAAKm4F,uBAC0B,IAApB/oG,SAASyzB,QAAwBzzB,SAASs3B,oBAAoB,mBAAoB1mB,KAAKwrF,wBAAwB,GAC1HxrF,KAAK8d,OAAO+L,SAAS,qBAEvBb,SAAUovE,GAAA,CACRC,UADM,WAEJ,OAAOr4F,KAAK6gF,aAAe7gF,KAAK6gF,YAAY9jF,SAE9CikF,YAJM,WAKJ,OAAOhhF,KAAKkqB,OAAOlmB,OAAOunB,cAE5B+sE,gBAPM,WAQJ,OAAIt4F,KAAKq4F,UACAr4F,KAAK4qB,GAAG,qBAAsB,CAAEvY,SAAUrS,KAAKq4F,UAAU9/F,iBAEzD,IAGXggG,cAdM,WAeJ,OAAOlW,GAAY1D,QAAQ3+E,KAAK8gF,4BAElCrC,gBAjBM,WAkBJ,OAAOz+E,KAAK8gF,2BAA6B9gF,KAAK8gF,0BAA0BrC,iBAE1E+Z,iBApBM,WAqBJ,OAAOx4F,KAAKmhB,aAAa0vC,iBAAmB7wD,KAAKi4E,wBAA0BhwE,IAAmBE,SAE7F4lB,YAAW,CACZ,cACA,4BACA,8BACA,iBA3BI,GA6BHvC,YAAS,CACVhC,kBAAmB,SAAAzL,GAAK,OAAIA,EAAMwL,IAAIC,mBACtCyuD,sBAAuB,SAAAl6D,GAAK,OAAIA,EAAMwL,IAAI0uD,uBAC1C33B,aAAc,SAAAviC,GAAK,OAAIA,EAAK,UAAWuiC,cACvCmiB,aAAc,SAAA1kD,GAAK,OAAIA,EAAK,UAAW0kD,cACvCt1C,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,gBAGtCod,MAAO,CACLguD,cADK,WACY,IAAA5uE,EAAA3pB,KAGTy4F,EAA0Bz4F,KAAKwqF,YAtFf,IAuFtBxqF,KAAK+lB,UAAU,WACT0yE,GACF9uE,EAAK+uE,gBAIXxuE,OAAU,WACRlqB,KAAK0uE,iBAEPjM,aAdK,WAeHziE,KAAKi4F,aAAa,CAAEU,QAAQ,KAE9B1gB,sBAjBK,SAiBkBzZ,GACjBA,IAAav2D,IAAmBE,QAClCnI,KAAK44F,UAAU,CAAEC,cAAc,MAIrCz6E,QAAS,CAEP06E,eAFO,SAAA13F,GAEwC,IAA7Bu1F,EAA6Bv1F,EAA7Bu1F,UAAWvX,EAAkBh+E,EAAlBg+E,eAC3Bp/E,KAAK03F,sBAAwBf,EAAYvX,OAAiB3tF,GAE5DsnG,eALO,WAKW,IAAA/uE,EAAAhqB,KAChBA,KAAK+lB,UAAU,WACbiE,EAAKiuE,eACLjuE,EAAKguE,qCAGTxM,uBAXO,WAWmB,IAAAxoD,EAAAhjC,KACxBA,KAAK+lB,UAAU,YACR32B,SAASyzB,QAAUmgB,EAAKwnD,YAtHT,KAuHlBxnD,EAAK01D,WAAW,CAAEM,WAAW,OAInCd,cAlBO,WAkBU,IAAAh1D,EAAAljC,KAQXqxC,EAAOjiD,SAASkxC,cAAc,QAC9B+Q,GACFA,EAAK3X,UAAUtR,IAAI,eAGrBpoB,KAAK+lB,UAAU,WACbmd,EAAK80D,qCAGTG,gBAnCO,WAoCL,IAAI9mD,EAAOjiD,SAASkxC,cAAc,QAC9B+Q,GACFA,EAAK3X,UAAUS,OAAO,gBAG1B49D,mBAzCO,WAyCe,IAAAx0D,EAAAvjC,KACpBA,KAAK+lB,UAAU,WACbwd,EAAKy0D,kCACLz0D,EAAKm1D,gBAITV,gCAhDO,WAiDL,IAAMziG,EAASyK,KAAKyjB,MAAMluB,OACpBy1F,EAAShrF,KAAKyjB,MAAMunE,OACpBiO,EAAQj5F,KAAKsgD,aAAe/sD,OAAOnE,SAAS0Q,KAAOE,KAAKyjB,MAAMw1E,MACpEj5F,KAAK43F,0BD3J8B,SAACqB,EAAO1jG,EAAQy1F,GACvD,OAAOiO,EAAMl1E,aAAexuB,EAAOyuB,aAAegnE,EAAOhnE,aC0JpB4zE,CAA0BqB,EAAO1jG,EAAQy1F,GAAU,MAGtFiN,aAvDO,WAuDkB,IAAAz0D,EAAAxjC,KAAX63E,EAAWt5E,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GAAI26F,EACqBrhB,EAApC8gB,cADe,IAAAO,KAAAC,EACqBthB,EAApB91B,aADD,IAAAo3C,KAIrBznG,WAAW,WACT8xC,EAAKy0D,aAALG,GAAA,GAAuBvgB,EAAvB,CAA6B91B,SAAS,MAnKhB,KAwK1B/hD,KAAK+lB,UAAU,WACbyd,EAAKw0D,kCADc,IAAAoB,EAGkB51D,EAAKm0D,mBAAlC5zE,oBAHW,IAAAq1E,OAGI3nG,EAHJ2nG,EAInB51D,EAAKm0D,mBAAqBJ,GAAkB/zD,EAAK/f,MAAM41E,YAEvD,IAAMC,EAAO91D,EAAKm0D,mBAAmB5zE,aAAeA,GAChDu1E,EAAO,IAAO91D,EAAKgnD,eAAiBmO,IACtCn1D,EAAKzd,UAAU,WACbyd,EAAKw0D,kCACLx0D,EAAK/f,MAAM41E,WAAWE,SAAS,CAC7Bn1E,IAAKof,EAAK/f,MAAM41E,WAAW31C,UAAY41C,EACvCn1E,KAAM,SAMhBu0E,WAnFO,WAmFmB,IAAdz8F,EAAcsC,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAJ,GAAIi7F,EACyBv9F,EAAzCotC,gBADgB,IAAAmwD,EACL,OADKA,EAAAC,EACyBx9F,EAAtB+8F,iBADH,IAAAS,KAElBJ,EAAar5F,KAAKyjB,MAAM41E,WACzBA,IACLr5F,KAAK+lB,UAAU,WACbszE,EAAWE,SAAS,CAAEn1E,IAAKi1E,EAAWv1C,aAAc3/B,KAAM,EAAGklB,eAE3D2vD,GACFh5F,KAAK+Z,aAGTA,SA9FO,WA+FL,GAAM/Z,KAAK8gF,2BAA6B9gF,KAAK8gF,0BAA0BpiF,QACnEtP,SAASyzB,OAAb,CACA,IAAM5I,EAAaja,KAAK8gF,0BAA0BpiF,MAClDsB,KAAK8d,OAAO+L,SAAS,WAAY,CAC/B/1B,GAAIkM,KAAK6gF,YAAY/sF,GACrBmmB,iBAGJuwE,YAvGO,SAuGMpyE,GACX,ODvNuB,SAAC0oC,GAAmB,IAAf1oC,EAAe7Z,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAN,EACzC,GAAKuiD,EAAL,CACA,IAAMgD,EAAehD,EAAG4C,UAAYtrC,EAEpC,OADoB0oC,EAAGgD,aAAehD,EAAG/8B,cACnB+/B,GCmNX41C,CAAc15F,KAAKyjB,MAAM41E,WAAYjhF,IAE9CuhF,WA1GO,WA2GL,IAAMN,EAAar5F,KAAKyjB,MAAM41E,WAC9B,OAAOA,GAAcA,EAAW31C,WAAa,GAE/Ck2C,eA9GO,WA8GW,IAAAC,EAAA75F,KAChBzM,OAAO7B,WAAW,WACZmoG,EAAKrP,YAxN+B,MAyNtCqP,EAAK/7E,OAAO+L,SAAS,oBAAqBgwE,EAAK/Y,0BAA0Bt9E,SAE1E,MAEL+nF,aAAcO,KAAW,WAAY,IAAAgO,EAAA95F,KAC9BA,KAAK6gF,cAEN7gF,KAAK25F,aACP35F,KAAK44F,UAAU,CAAEl6F,MAAOsB,KAAK8gF,0BAA0BjiF,QAC9CmB,KAAKwqF,YAlO0B,MAmOxCxqF,KAAKy3F,2BAA4B,EACjCz3F,KAAK45F,iBACD55F,KAAKy+E,gBAAkB,GAIzBlrF,OAAO7B,WAAW,WAEZooG,EAAK32E,KAAK22E,EAAK//E,YAzOJ,OA6OnB/Z,KAAKy3F,2BAA4B,IAElC,KACHsC,eA1IO,SA0ISC,GACd,ID9P4BC,EAAkBC,EC8PxCC,EAAuB5C,GAAkBv3F,KAAKyjB,MAAM41E,YAC1Dr5F,KAAKyjB,MAAM41E,WAAWE,SAAS,CAC7Bn1E,KDhQ0B61E,ECgQHD,EDhQqBE,ECgQEC,ED/P7CF,EAAiBv2C,WAAaw2C,EAAYp2C,aAAem2C,EAAiBn2C,eCgQ3E3/B,KAAM,KAGVy0E,UAjJO,SAAAv3F,GAiJ0D,IAAA+4F,EAAAp6F,KAAAq6F,EAAAh5F,EAApDw3F,oBAAoD,IAAAwB,KAAAC,EAAAj5F,EAA9Bk5F,mBAA8B,IAAAD,KAAT57F,EAAS2C,EAAT3C,MAChDmkF,EAAqB7iF,KAAK8gF,0BAChC,GAAK+B,KACD0X,IAAev6F,KAAKw4F,kBAAxB,CAEA,IAAMh1F,EAASq/E,EAAmBr/E,OAC5Bg3F,IAAuB97F,EACvBqG,EAAUw1F,GAAe1X,EAAmBnkF,MAElD,OAAOsB,KAAKwpB,kBAAkBhQ,aAAa,CAAE1lB,GAAI0P,EAAQ9E,QAAOqG,YAC7DtU,KAAK,SAACo+D,GAEDgqC,GACFxW,GAAY9mC,MAAMsnC,GAGpB,IAAM4X,EAAuBlD,GAAkB6C,EAAK32E,MAAM41E,YAC1De,EAAKt8E,OAAO+L,SAAS,kBAAmB,CAAErmB,SAAQqrD,aAAYp+D,KAAK,WACjE2pG,EAAKr0E,UAAU,WACTy0E,GACFJ,EAAKL,eAAeU,GAGlB5B,GACFuB,EAAKpC,mCD3QO,SAACl3C,GAC3B,GAAKA,EAEL,OAAOA,EAAGgD,aAAehD,EAAG98B,aC+QX02E,CAAaN,EAAK32E,MAAM41E,aAAexqC,EAAS5jE,OAAS,GAC5DmvG,EAAKxB,UAAU,CAAEl6F,MAAO07F,EAAKtZ,0BAA0BjiF,gBAM7D6vE,cAvLC,eAAAzvE,EAAA07F,EAAA36F,KAAA,OAAAuL,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,UAwLDM,EAAOe,KAAK+gF,4BAA4B/gF,KAAKghF,aAxL5C,CAAAv1E,EAAA9M,KAAA,gBAAA8M,EAAA3M,KAAA,EAAA2M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MA2LY3L,KAAKwpB,kBAAkBnQ,gBAAgB,CAAEE,UAAWvZ,KAAKghF,eA3LrE,OA2LD/hF,EA3LCwM,EAAAG,KAAAH,EAAA9M,KAAA,gBAAA8M,EAAA3M,KAAA,EAAA2M,EAAAK,GAAAL,EAAA,SA6LDpY,QAAQlC,MAAM,mCAAdsa,EAAAK,IACA9L,KAAK63F,kBAAmB,EA9LvB,QAiMD54F,IACFe,KAAK+lB,UAAU,WACb40E,EAAKjC,WAAW,CAAEM,WAAW,MAE/Bh5F,KAAK8d,OAAO+L,SAAS,gBAAiB,CAAE5qB,SACxCe,KAAK46F,mBAtMF,yBAAAnvF,EAAAM,SAAA,KAAA/L,KAAA,UAyMP46F,gBAzMO,WAyMY,IAAAC,EAAA76F,KACjBA,KAAK8d,OAAO+L,SAAS,2BAA4B,CAC/CyuD,QAAS,kBAAM5K,GAAgB,kBAAMmtB,EAAKjC,UAAU,CAAE2B,aAAa,KAAS,QAE9Ev6F,KAAK44F,UAAU,CAAEC,cAAc,KAEjCiC,wBA/MO,WA+MoB,IAAAC,EAAA/6F,KACzBA,KAAK+lB,UAAU,WACbg1E,EAAK9C,eAGLvmG,WAAW,WACTqpG,EAAK/C,mCA5TiB,KA8TxB+C,EAAKrC,WAAW,CAAEM,WAAW,OAGjCgC,YA1NO,SAAA12F,GA0NyC,IAAA22F,EAAAj7F,KAAjClG,EAAiCwK,EAAjCxK,OAAQiQ,EAAyBzF,EAAzByF,MAAOoF,EAAkB7K,EAAlB6K,eACtBnL,EAAS,CACblQ,GAAIkM,KAAK6gF,YAAY/sF,GACrB8G,QAASd,EACTqV,kBAGEpF,EAAM,KACR/F,EAAO8V,QAAU/P,EAAM,GAAGjW,IAG5B,IAAMwqF,EnF9UoB,SAAAl9E,GAA8D,IAA3DxG,EAA2DwG,EAA3DxG,QAAS4I,EAAkDpC,EAAlDoC,OAAQtG,EAA0CkE,EAA1ClE,YAAaiM,EAA6B/H,EAA7B+H,OAAQgG,EAAqB/N,EAArB+N,eACjEmvE,EAAc,CAClB1jF,UACA4E,QAASgE,EACT5L,WAAY,IAAIC,KAChB/D,GAAE,GAAA8F,QAAK,IAAI/B,MAAOonF,WAClB/hF,YAAaA,EACbya,WAAYxO,EACZxJ,gBAAiBwP,EACjB3a,OAAQ,GACRkL,SAAS,EACTH,cAAc,GAOhB,OAJIrC,EAAY,KACdohF,EAAY7+E,WAAavC,EAAY,IAGhCohF,EmF4TiB4c,CAAiB,CACnCh+F,YAAa6M,EACbvG,OAAQxD,KAAK6gF,YAAY/sF,GACzB8G,QAASd,EACTqP,OAAQnJ,KAAKmtB,YAAYr5B,GACzBqb,mBAUF,OAPAnP,KAAK8d,OAAO+L,SAAS,kBAAmB,CACtCrmB,OAAQxD,KAAK6gF,YAAY/sF,GACzB+6D,SAAU,CAACyvB,KACV7tF,KAAK,WACNwqG,EAAKH,4BAGA96F,KAAKm7F,cAAc,CAAEn3F,SAAQs6E,cAAa8c,YAzVnC,MA2VhBD,cAtPO,SAAArjF,GAsP4D,IAAAujF,EAAAr7F,KAAlDgE,EAAkD8T,EAAlD9T,OAAQs6E,EAA0CxmE,EAA1CwmE,YAA0Cgd,EAAAxjF,EAA7BsjF,mBAA6B,IAAAE,EA3VnD,GA2VmDA,EACjE,KAAIF,GAAe,GA2BnB,OAzBAp7F,KAAKwpB,kBAAkB7P,gBAAgB3V,GACpCvT,KAAK,SAAAhG,GAOJ,OANA4wG,EAAKv9E,OAAO+L,SAAS,kBAAmB,CACtCrmB,OAAQ63F,EAAKxa,YAAY/sF,GACzBqqF,aAAa,EACbtvB,SAAU,CAACupC,GAAA,GAAK3tG,EAAN,CAAY4zF,OAAQC,EAAYxqF,QAGrCrJ,IARX,MAUS,SAAA0G,GAYL,OAXAkC,QAAQlC,MAAM,wBAAyBA,GACvCkqG,EAAKv9E,OAAO+L,SAAS,qBAAsB,CACzCrmB,OAAQ63F,EAAKxa,YAAY/sF,GACzBuqF,OAAQC,EAAYxqF,GACpBqsF,QA7WQ,KA6WCib,KAENjqG,EAAM0O,YAAc,KAAO1O,EAAM0O,WAAa,KAA0B,oBAAlB1O,EAAMK,WAC/D6pG,EAAKvD,gBAAgBxZ,EAAYxqF,IAAMpC,WAAW,WAChD2pG,EAAKF,cAAc,CAAEn3F,SAAQs6E,cAAa8c,YAAaA,EAAc,KACpE,IAAAzgF,KAAAQ,IAAQ,EAlXH,GAkXuBigF,KAE1B,KAGJpuG,QAAQC,QAAQqxF,IAEzByV,OApRO,WAqRL/zF,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,QAASgS,OAAQ,CAAE/C,SAAUjB,KAAKmtB,YAAYn5B,kBC3Y9E,IAEIunG,GAVJ,SAAoB/8E,GAClBpyB,EAAQ,MAyBKovG,GAVCpwG,OAAAszB,GAAA,EAAAtzB,CACdqwG,GCjBQ,WAAgB,IAAA78E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,aAAwB,CAAAF,EAAA,OAAYE,YAAA,mBAA8B,CAAAF,EAAA,OAAYgI,IAAA,QAAA9H,YAAA,qCAAAM,MAAA,CAAoEzrB,GAAA,QAAY,CAAAirB,EAAA,OAAYgI,IAAA,SAAA9H,YAAA,iDAAyE,CAAAF,EAAA,KAAUE,YAAA,iBAAA2H,GAAA,CAAiCI,MAAApI,EAAAm1E,SAAoB,CAAAh1E,EAAA,UAAeQ,MAAA,CAAOiQ,KAAA,KAAArN,KAAA,mBAAmC,GAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,OAA4BE,YAAA,qBAAgC,CAAAF,EAAA,aAAkBQ,MAAA,CAAOziB,KAAA8hB,EAAAy5E,UAAAqD,eAAA,MAAyC,KAAA98E,EAAAsI,GAAA,MAAAnI,EAAA,OAA+BgI,IAAA,aAAA9H,YAAA,0BAAAmI,MAAA,CAA+DnE,OAAArE,EAAAg5E,2BAAwChxE,GAAA,CAAM69B,OAAA7lC,EAAA2sE,eAA2B,CAAA3sE,EAAAi5E,iBAA0S94E,EAAA,OAAYE,YAAA,sBAAiC,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mDAA7XhM,EAAAmjB,GAAAnjB,EAAA,uBAAAi3E,GAA4E,OAAA92E,EAAA,eAAyBhsB,IAAA8iG,EAAA/hG,GAAAyrB,MAAA,CAA2B42E,OAAAv3E,EAAAy5E,UAAAsD,iBAAA9F,EAAAkB,wBAAAlB,EAAAzW,iBAAAxgE,EAAA84E,uBAAuI9wE,GAAA,CAAKg1E,MAAAh9E,EAAAk6E,qBAAiH,GAAAl6E,EAAAsI,GAAA,KAAAnI,EAAA,OAAuHgI,IAAA,SAAA9H,YAAA,qBAA6C,CAAAF,EAAA,OAAYE,YAAA,wBAAAC,MAAA,CAA2CwoC,QAAA9oC,EAAA64E,2BAA2C7wE,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA85E,WAAA,CAAuBrvD,SAAA,cAAyB,CAAAtqB,EAAA,QAAAA,EAAA,UAA0BQ,MAAA,CAAO4C,KAAA,kBAAuBvD,EAAAsI,GAAA,KAAAtI,EAAA,gBAAAG,EAAA,OAA8CE,YAAA,mEAA8E,CAAAL,EAAAsI,GAAA,qBAAAtI,EAAA+L,GAAA/L,EAAA6/D,iBAAA,sBAAA7/D,EAAAuI,MAAA,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,kBAAgIQ,MAAA,CAAOs8E,mBAAA,EAAAC,0BAAA,EAAAC,kBAAA,EAAAC,wBAAA,EAAAC,iBAAA,EAAAC,gCAAA,EAAAC,iBAAAv9E,EAAAi5E,mBAAAj5E,EAAAiiE,YAAAub,mBAAA,EAAAC,sBAAA,EAAAC,eAAA19E,EAAAo8E,YAAAuB,mBAAA39E,EAAA0hC,aAAAk8C,kBAAA59E,EAAA0hC,aAAAm8C,cAAA79E,EAAA0hC,aAAAxe,YAAAljB,EAAA05E,gBAAAoE,aAAA,EAAAC,aAAA,MAAAC,yBAAA,OAAmfh2E,GAAA,CAAKo2B,OAAAp+B,EAAAq5E,iBAA2B,aACtwE,IDOY,EAa7BsD,GATiB,KAEU,MAYG,4BECjBsB,GAvBI,CACjBl/E,MAAO,CACL,OACA,gBAEFO,WAAY,CACV+2B,mBACA3mB,kBACAC,mBAEFvF,SAAU,CACR8zE,KADQ,WAEN,OAAO98F,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYr5B,KAAOkM,KAAKlD,KAAKhJ,IAE9D25B,SAJQ,WAKN,OAAOztB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjCv3B,aAPQ,WAQN,OAAOoK,KAAK8d,OAAO2O,QAAQ72B,aAAaoK,KAAKlD,KAAKhJ,OCdxD,IAEIipG,GAVJ,SAAoBv+E,GAClBpyB,EAAQ,MAyBK4wG,GAVC5xG,OAAAszB,GAAA,EAAAtzB,CACd6xG,GCjBQ,WAAgB,IAAAr+E,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,mBAA6BQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,OAAiB,CAAAiiB,EAAA,OAAYE,YAAA,iCAA4C,CAAAL,EAAAk+E,OAAAl+E,EAAAs+E,cAAAt+E,EAAAhpB,aAAA6B,YAAAsnB,EAAA,QAA+EE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAk+E,KAAAl+E,EAAAgM,GAAA,qBAAAhM,EAAAgM,GAAA,sCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA6O,SAAoR7O,EAAAk+E,KAAsLl+E,EAAAuI,KAAtL,CAAApI,EAAA,gBAAgDE,YAAA,4BAAAM,MAAA,CAA+C3pB,aAAAgpB,EAAAhpB,aAAAunG,kBAAAv+E,EAAAgM,GAAA,iCAAnX,CAAAhM,EAAAhpB,aAAA+B,UAAoRinB,EAAAuI,KAApRpI,EAAA,OAA+LE,YAAA,6BAAwC,CAAAF,EAAA,gBAAqBQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,SAAiB,KAAsL,MAChuB,IDOY,EAa7BigG,GATiB,KAEU,MAYG,4oBEfhC50E,KAAQC,IACN8b,MAGF,IAgGek5D,GAhGM,SAAAh8F,GAAA,IACnBuC,EADmBvC,EACnBuC,MACA05F,EAFmBj8F,EAEnBi8F,OACAC,EAHmBl8F,EAGnBk8F,QAHmBC,EAAAn8F,EAInBo8F,qBAJmB,IAAAD,EAIH,UAJGA,EAAAE,EAAAr8F,EAKnBs8F,2BALmB,IAAAD,EAKG,GALHA,EAAA,OAMf,SAACE,GACL,IACMhgF,EADgBvyB,OAAO0kB,KAAKipD,aAAkB4kC,IACxBv4F,OAAO,SAAAqpB,GAAC,OAAIA,IAAM+uE,IAAe5jG,OAAO8jG,GAEpE,OAAOpmC,IAAIC,UAAU,eAAgB,CACnC55C,QACAlzB,KAFmC,WAGjC,MAAO,CACL8iD,SAAS,EACTi9C,aAAa,EACbr5F,OAAO,EACP+P,QAAS,KAGbslB,QAVmC,WAWjCjzB,OAAO0T,iBAAiB,SAAUjH,KAAKosF,YACX,IAAxBpsF,KAAKkB,QAAQjW,QACf+U,KAAK49F,gBAGTn3E,UAhBmC,WAiBjClzB,OAAOmzB,oBAAoB,SAAU1mB,KAAKosF,YAC1CkR,GAAWA,EAAQt9F,KAAK69F,OAAQ79F,KAAK8d,SAEvCM,QAAS,CAGP0/E,cAHO,WAIL99F,KAAKkB,QAAUm8F,EAAOr9F,KAAK69F,OAAQ79F,KAAK8d,SAAW,IAErD8/E,aANO,WAMS,IAAAr9F,EAAAP,KACTA,KAAKutC,UACRvtC,KAAKutC,SAAU,EACfvtC,KAAK7O,OAAQ,EACbwS,EAAM3D,KAAK69F,OAAQ79F,KAAK8d,QACrBrtB,KAAK,SAACstG,GACLx9F,EAAKgtC,SAAU,EACfhtC,EAAKiqF,YAActhC,KAAQ60C,KAH/B,MAKS,WACLx9F,EAAKgtC,SAAU,EACfhtC,EAAKpP,OAAQ,IAPjB,QASW,WACPoP,EAAKu9F,oBAIb1R,WAxBO,SAwBKx/F,GACV,IAAMy/F,EAAYj9F,SAAS0Q,KAAKwjB,wBAC1BL,EAAStI,KAAK+J,IAAI2nE,EAAUppE,QAAUopE,EAAU9nE,IACjC,IAAjBvkB,KAAKutC,UACc,IAArBvtC,KAAKwqF,aACLxqF,KAAKmjB,IAAIY,aAAe,GACvBxwB,OAAOuxB,YAAcvxB,OAAOy4F,aAAiB/oE,EAAS,KAEvDjjB,KAAK49F,iBAIXrlC,OAxDmC,SAwD3BC,GACN,IAAM76C,EAAQ,CACZA,MAAOqgF,GAAA,GACFh+F,KAAK69F,OADL93B,IAAA,GAEFy3B,EAAgBx9F,KAAKkB,UAExB0lB,GAAI5mB,KAAKi+F,WACTt8D,YAAa3hC,KAAKk+F,cAEdx6E,EAAWt4B,OAAO8V,QAAQlB,KAAK4rD,QAAQ92D,IAAI,SAAAuM,GAAA,IAAAiD,EAAAhD,IAAAD,EAAA,GAAEtO,EAAFuR,EAAA,GAAO7R,EAAP6R,EAAA,UAAkBk0D,EAAE,WAAY,CAAE9tC,KAAM33B,GAAON,KAChG,OAAA+lE,EAAA,OAAAt5C,MACa,kBADb,CAAAs5C,EAAAmlC,EAAAQ,KAAA,IAE0BxgF,IAF1B,CAGO+F,IAHP80C,EAAA,OAAAt5C,MAKe,yBALf,CAMOlf,KAAK7O,OAALqnE,EAAA,UAAA5xC,GAAA,CAAAI,MACkBhnB,KAAK49F,cADvB1+E,MAC2C,gDAD3C,CAEIlf,KAAK4qB,GAAG,4BAGX5qB,KAAK7O,OAAS6O,KAAKutC,SAApBirB,EAAA4lC,GAAA,GAAA7+E,MAAA,CAAAqgB,MAAA,EAAAzd,KAAiD,mBAChDniB,KAAK7O,QAAU6O,KAAKutC,UAAYvtC,KAAKwqF,aAAtChyB,EAAA,KAAA5xC,GAAA,CAAAI,MAAiEhnB,KAAK49F,eAAtE,CAAqF59F,KAAK4qB,GAAG,2BC1F1GzC,KAAQC,IACN8b,MAGF,IAAMm6D,GAAejB,GAAa,CAChCz5F,MAAO,SAACga,EAAOG,GAAR,OAAmBA,EAAO+L,SAAS,iBAAkBlM,EAAMxU,SAClEk0F,OAAQ,SAAC1/E,EAAOG,GAAR,OAAmBzrB,KAAIyrB,EAAO2O,QAAQC,SAAS/O,EAAMxU,QAAS,cAAe,IAAIrU,IAAI,SAAAhB,GAAE,OAAIgqB,EAAO2O,QAAQC,SAAS54B,MAC3HwpG,QAAS,SAAC3/E,EAAOG,GAAR,OAAmBA,EAAO+L,SAAS,iBAAkBlM,EAAMxU,SACpEq0F,cAAe,QACfE,oBAAqB,CAAC,WALHN,CAMlB5I,MAEG8J,GAAalB,GAAa,CAC9Bz5F,MAAO,SAACga,EAAOG,GAAR,OAAmBA,EAAO+L,SAAS,eAAgBlM,EAAMxU,SAChEk0F,OAAQ,SAAC1/E,EAAOG,GAAR,OAAmBzrB,KAAIyrB,EAAO2O,QAAQC,SAAS/O,EAAMxU,QAAS,YAAa,IAAIrU,IAAI,SAAAhB,GAAE,OAAIgqB,EAAO2O,QAAQC,SAAS54B,MACzHwpG,QAAS,SAAC3/E,EAAOG,GAAR,OAAmBA,EAAO+L,SAAS,eAAgBlM,EAAMxU,SAClEq0F,cAAe,QACfE,oBAAqB,CAAC,WALLN,CAMhB5I,MA2IY+J,GAvIK,CAClB9zG,KADkB,WAEhB,MAAO,CACL0G,OAAO,EACPgY,OAAQ,KACR+sB,IAPgB,aAUpB1P,QARkB,WAShB,IAAMg4E,EAAcx+F,KAAKkqB,OAAOlmB,OAChChE,KAAK+sD,KAAKyxC,EAAYxsG,MAAQwsG,EAAY1qG,IAC1CkM,KAAKk2B,IAAM7jC,KAAI2N,KAAKkqB,OAAQ,YAbV,aAepBzD,UAbkB,WAchBzmB,KAAKy+F,gBAEPz1E,SAAU,CACRngB,SADQ,WAEN,OAAO7I,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAU3qE,MAE9CkN,UAJQ,WAKN,OAAOhK,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAUz9D,WAE9CD,MAPQ,WAQN,OAAO/J,KAAK8d,OAAOC,MAAMzF,SAASmvD,UAAU19D,OAE9C20F,KAVQ,WAWN,OAAO1+F,KAAKmJ,QAAUnJ,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYr5B,IACxDkM,KAAKmJ,SAAWnJ,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYr5B,IAExDgJ,KAdQ,WAeN,OAAOkD,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAKmJ,SAE3CkU,WAjBQ,WAkBN,MAA4B,0BAArBrd,KAAKkqB,OAAOl4B,MAErB2sG,kBApBQ,WAqBN,OAAO3+F,KAAK0+F,OAAS1+F,KAAKlD,KAAK5G,cAEjC0oG,oBAvBQ,WAwBN,OAAO5+F,KAAK0+F,OAAS1+F,KAAKlD,KAAK3G,iBAGnCioB,QAAS,CACP2uC,KADO,SACD8xC,GAAc,IAAAt+F,EAAAP,KACZsvE,EAAwB,SAACzmE,EAAUM,GAEnCA,IAAW5I,EAAKud,OAAOC,MAAMzF,SAASmvD,UAAU5+D,GAAUM,QAC5D5I,EAAKud,OAAO2L,OAAO,gBAAiB,CAAE5gB,aAExCtI,EAAKud,OAAO+L,SAAS,wBAAyB,CAAEhhB,WAAUM,YAGtD21F,EAAW,SAAC31F,GAChB5I,EAAK4I,OAASA,EACdmmE,EAAsB,OAAQnmE,GAC9BmmE,EAAsB,QAASnmE,GAC3B5I,EAAKm+F,MACPpvB,EAAsB,YAAanmE,GAGrC5I,EAAKud,OAAO+L,SAAS,sBAAuB1gB,IAI9CnJ,KAAKmJ,OAAS,KACdnJ,KAAK7O,OAAQ,EAGb,IAAM2L,EAAOkD,KAAK8d,OAAO2O,QAAQC,SAASmyE,GACtC/hG,EACFgiG,EAAShiG,EAAKhJ,IAEdkM,KAAK8d,OAAO+L,SAAS,YAAag1E,GAC/BpuG,KAAK,SAAA2Q,GAAA,IAAGtN,EAAHsN,EAAGtN,GAAH,OAAYgrG,EAAShrG,KAD7B,MAES,SAACirG,GACN,IAAMC,EAAe3sG,KAAI0sG,EAAQ,eAE/Bx+F,EAAKpP,MADc,8BAAjB6tG,EACWz+F,EAAKqqB,GAAG,uCACZo0E,GAGIz+F,EAAKqqB,GAAG,yCAK/B6zE,aA5CO,WA6CLz+F,KAAK8d,OAAO+L,SAAS,uBAAwB,QAC7C7pB,KAAK8d,OAAO+L,SAAS,uBAAwB,aAC7C7pB,KAAK8d,OAAO+L,SAAS,uBAAwB,UAE/Co1E,WAjDO,SAiDKJ,GACV7+F,KAAKy+F,eACLz+F,KAAK+sD,KAAK8xC,IAEZK,YArDO,SAqDMhpE,GACXl2B,KAAKk2B,IAAMA,EACXl2B,KAAKsrB,QAAQp2B,QAAQ,CAAEujB,MAAO,CAAEyd,UAElCvH,YAzDO,SAAAttB,GAyDkB,IAAVnR,EAAUmR,EAAVnR,OACU,SAAnBA,EAAOm5B,UACTn5B,EAASA,EAAOI,YAEK,MAAnBJ,EAAOm5B,SACT91B,OAAOq7B,KAAK1+B,EAAO/C,KAAM,YAI/Bo9C,MAAO,CACL40D,mBAAoB,SAAUnY,GACxBA,GACFhnF,KAAKi/F,WAAWjY,IAGpBoY,qBAAsB,SAAUpY,GAC1BA,GACFhnF,KAAKi/F,WAAWjY,IAGpBqY,eAAgB,SAAUrY,GACxBhnF,KAAKk2B,IAAM8wD,EAAO9wD,KA3HF,aA8HpBhY,WAAY,CACV2oB,cACAwjD,YACAgU,gBACAC,cACAzB,cACAyC,iBACA3U,kBC9JJ,IAEI4U,GAVJ,SAAoB/gF,GAClBpyB,EAAQ,MAyBKozG,GAVCp0G,OAAAszB,GAAA,EAAAtzB,CACdq0G,GCjBQ,WAAgB,IAAA7gF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAH,EAAA,KAAAG,EAAA,OAAsCE,YAAA,oCAA+C,CAAAF,EAAA,YAAiBQ,MAAA,CAAOwsB,UAAAntB,EAAAzV,OAAAulB,UAAA,EAAAwB,SAAAtR,EAAA/V,SAAA62F,QAAAC,wBAAA,EAAA9yE,QAAA,SAAkHjO,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAAjI,aAAA+pB,EAAA9hB,KAAAjI,YAAA5J,OAAA,EAAA8zB,EAAA,OAAkFE,YAAA,uBAAkCL,EAAAmjB,GAAAnjB,EAAA9hB,KAAA,qBAAA/H,EAAAs5C,GAAqD,OAAAtvB,EAAA,MAAgBhsB,IAAAs7C,EAAApvB,YAAA,sBAA2C,CAAAF,EAAA,MAAWE,YAAA,0BAAAM,MAAA,CAA6CnjB,MAAAwiB,EAAA9hB,KAAA9H,YAAAq5C,GAAAr8C,MAAyCs9B,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA51B,EAAA/C,OAA+B40B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,OAAiCpJ,EAAAsI,GAAA,KAAAnI,EAAA,MAAuBE,YAAA,2BAAAM,MAAA,CAA8CnjB,MAAAwiB,EAAA9hB,KAAA9H,YAAAq5C,GAAA57C,OAA0C68B,SAAA,CAAWC,UAAA3Q,EAAA+L,GAAA51B,EAAAtC,QAAgCm0B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAA+P,YAAA3G,WAAqC,GAAApJ,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,gBAA6CQ,MAAA,CAAOqgF,aAAAhhF,EAAAsX,IAAA2pE,uBAAA,EAAA1N,YAAAvzE,EAAAsgF,cAA6E,CAAAngF,EAAA,YAAiBhsB,IAAA,WAAAwsB,MAAA,CAAsB2zC,MAAAt0C,EAAAgM,GAAA,sBAAAwb,MAAAxnB,EAAA9hB,KAAA9E,eAAA+yF,UAAA,EAAA3uF,MAAAwiB,EAAAgM,GAAA,+BAAA/hB,SAAA+V,EAAA/V,SAAAmkF,gBAAA,OAAAjhD,UAAAntB,EAAAzV,OAAA22F,oBAAAlhF,EAAA9hB,KAAAs4E,gBAAA0S,cAAA,KAAuQlpE,EAAAsI,GAAA,KAAAtI,EAAA,kBAAAG,EAAA,OAAgDhsB,IAAA,YAAAwsB,MAAA,CAAuB2zC,MAAAt0C,EAAAgM,GAAA,uBAAAukB,UAAAvwB,EAAA9hB,KAAAtH,gBAA0E,CAAAupB,EAAA,cAAmBQ,MAAA,CAAOwsB,UAAAntB,EAAAzV,QAAqBw4B,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,OAAA8uC,GAAA,SAAA9a,GACxnD,IAAA4kC,EAAA5kC,EAAA4kC,KACA,OAAA5sC,EAAA,cAAyBQ,MAAA,CAAOziB,KAAA6uD,SAAiB,sBAAwB,GAAA/sC,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,oBAAAG,EAAA,OAA+DhsB,IAAA,YAAAwsB,MAAA,CAAuB2zC,MAAAt0C,EAAAgM,GAAA,uBAAAukB,UAAAvwB,EAAA9hB,KAAA/E,kBAA4E,CAAAgnB,EAAA,gBAAqBQ,MAAA,CAAOwsB,UAAAntB,EAAAzV,QAAqBw4B,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,OAAA8uC,GAAA,SAAA9a,GAClT,IAAA4kC,EAAA5kC,EAAA4kC,KACA,OAAA5sC,EAAA,cAAyBQ,MAAA,CAAOziB,KAAA6uD,EAAAo0C,iBAAAnhF,EAAA8/E,YAA2C,uBAAyB,GAAA9/E,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,YAA0ChsB,IAAA,QAAAwsB,MAAA,CAAmB2zC,MAAAt0C,EAAAgM,GAAA,mBAAAukB,UAAAvwB,EAAA7U,MAAAg9D,gBAAA97E,OAAA8/F,UAAA,EAAA3uF,MAAAwiB,EAAAgM,GAAA,mBAAAoiE,gBAAA,QAAAnkF,SAAA+V,EAAA7U,MAAAgiC,UAAAntB,EAAAzV,OAAA2+E,cAAA,KAAsNlpE,EAAAsI,GAAA,KAAAtI,EAAA,KAAAG,EAAA,YAAwChsB,IAAA,YAAAwsB,MAAA,CAAuB2zC,MAAAt0C,EAAAgM,GAAA,uBAAAukB,UAAAvwB,EAAA5U,UAAA+8D,gBAAA97E,OAAA8/F,UAAA,EAAA3uF,MAAAwiB,EAAAgM,GAAA,uBAAAoiE,gBAAA,YAAAnkF,SAAA+V,EAAA5U,UAAA89E,cAAA,KAAqNlpE,EAAAuI,MAAA,OAAApI,EAAA,OAA6BE,YAAA,kCAA6C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAmGE,YAAA,cAAyB,CAAAL,EAAA,MAAAG,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAztB,UAAA4tB,EAAA,UAAkEQ,MAAA,CAAOqgB,KAAA,GAAAzd,KAAA,mBAAiC,QACh/B,IDGY,EAa7Bo9E,GATiB,KAEU,MAYG,QEhBhCp3E,KAAQC,IACN8b,KACAuvD,MAGF,IA4FeuM,GA5FA,CACb9hF,WAAY,CACV2+E,cACAlS,gBACApmD,mBAEF5mB,MAAO,CACL,SAEFlzB,KATa,WAUX,MAAO,CACLq4F,QAAQ,EACRv1C,SAAS,EACT0yD,WAAYjgG,KAAKyY,OAAS,GAC1Bm7E,QAAS,GACTt7E,SAAU,GACV4nF,SAAU,GACVC,gBAAiB,aAGrBn3E,SAAU,CACR1d,MADQ,WACC,IAAA/K,EAAAP,KACP,OAAOA,KAAK4zF,QAAQ9+F,IAAI,SAAAqU,GAAM,OAAI5I,EAAKud,OAAO2O,QAAQC,SAASvjB,MAEjE49D,gBAJQ,WAKN,IAAMx+B,EAAoBvoC,KAAK8d,OAAOC,MAAMzF,SAASiwB,kBAErD,OAAOvoC,KAAKsY,SAASlT,OAAO,SAAAtL,GAAM,OAChCyuC,EAAkBzuC,EAAOhG,MAAQy0C,EAAkBzuC,EAAOhG,IAAI4zC,YAIpEoV,QAhCa,WAiCX98C,KAAKytE,OAAOztE,KAAKyY,QAEnB8xB,MAAO,CACL9xB,MADK,SACE+lD,GACLx+D,KAAKigG,WAAazhC,EAClBx+D,KAAKytE,OAAOjP,KAGhBpgD,QAAS,CACPgiF,SADO,SACG3nF,GACRzY,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,SAAUymB,MAAO,CAAEA,WAC7CzY,KAAKyjB,MAAM48E,YAAY9/D,SAEzBktC,OALO,SAKCh1D,GAAO,IAAAkR,EAAA3pB,KACRyY,GAKLzY,KAAKutC,SAAU,EACfvtC,KAAK4zF,QAAU,GACf5zF,KAAKsY,SAAW,GAChBtY,KAAKkgG,SAAW,GAChBlgG,KAAKyjB,MAAM48E,YAAY7lE,OAEvBx6B,KAAK8d,OAAO+L,SAAS,SAAU,CAAE1R,EAAGM,EAAOxrB,SAAS,IACjDwD,KAAK,SAAAhG,GACJk/B,EAAK4jB,SAAU,EACf5jB,EAAKiqE,QAAU9+F,KAAIrK,EAAKwsB,SAAU,MAClC0S,EAAKrR,SAAW7tB,EAAK6tB,SACrBqR,EAAKu2E,SAAWz1G,EAAKy1G,SACrBv2E,EAAKw2E,gBAAkBx2E,EAAK22E,eAC5B32E,EAAKm5D,QAAS,KAjBhB9iF,KAAKutC,SAAU,GAoBnBgzD,YA3BO,SA2BMC,GACX,IAAMv1G,EAAS+U,KAAKwgG,GAASv1G,OAC7B,OAAkB,IAAXA,EAAe,GAAf,KAAA2O,OAAyB3O,EAAzB,MAETw1G,kBA/BO,SA+BY1tG,GACjBiN,KAAKmgG,gBAAkBptG,GAEzButG,aAlCO,WAmCL,OAAItgG,KAAK+mE,gBAAgB97E,OAAS,EACzB,WACE+U,KAAKsL,MAAMrgB,OAAS,EACtB,SACE+U,KAAKkgG,SAASj1G,OAAS,EACzB,WAGF,YAETy1G,kBA7CO,SA6CYC,GACjB,OAAOA,EAAQv2E,SAAWu2E,EAAQv2E,QAAQ,MC9FhD,IAEIw2E,GAVJ,SAAoBpiF,GAClBpyB,EAAQ,MAyBKy0G,GAVCz1G,OAAAszB,GAAA,EAAAtzB,CACd01G,GCjBQ,WAAgB,IAAAliF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAqFE,YAAA,0BAAqC,CAAAF,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,WAAAgR,WAAA,eAA8E7I,IAAA,cAAA9H,YAAA,eAAAM,MAAA,CAAsDuiB,YAAAljB,EAAAgM,GAAA,eAAmC0E,SAAA,CAAW78B,MAAAmsB,EAAA,YAAyBgI,GAAA,CAAKm6E,MAAA,SAAA/4E,GAAyB,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAe6rB,EAAAwhF,SAAAxhF,EAAAqhF,aAAoC9iF,MAAA,SAAA6K,GAA0BA,EAAA93B,OAAA2/B,YAAsCjR,EAAAqhF,WAAAj4E,EAAA93B,OAAAuC,WAAqCmsB,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BE,YAAA,mCAAAM,MAAA,CAAsD1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAwhF,SAAAxhF,EAAAqhF,eAAsC,CAAAlhF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,aAAiB,KAAAvD,EAAAsI,GAAA,KAAAtI,EAAA,QAAAG,EAAA,OAA4CE,YAAA,4BAAuC,CAAAF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,SAA6C,GAAA5Q,EAAA,OAAAG,EAAA,OAAAA,EAAA,OAAuCE,YAAA,sBAAiC,CAAAF,EAAA,gBAAqBgI,IAAA,cAAAxH,MAAA,CAAyB4yE,YAAAvzE,EAAA6hF,kBAAAb,aAAAhhF,EAAAuhF,kBAAoE,CAAAphF,EAAA,QAAahsB,IAAA,WAAAwsB,MAAA,CAAsB2zC,MAAAt0C,EAAAgM,GAAA,sBAAAhM,EAAA2hF,YAAA,sBAA2E3hF,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBhsB,IAAA,SAAAwsB,MAAA,CAAoB2zC,MAAAt0C,EAAAgM,GAAA,iBAAAhM,EAAA2hF,YAAA,YAA4D3hF,EAAAsI,GAAA,KAAAnI,EAAA,QAAyBhsB,IAAA,WAAAwsB,MAAA,CAAsB2zC,MAAAt0C,EAAAgM,GAAA,mBAAAhM,EAAA2hF,YAAA,kBAAiE,KAAA3hF,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAyCE,YAAA,cAAyB,cAAAL,EAAAuhF,gBAAAphF,EAAA,WAAAH,EAAAmoD,gBAAA97E,SAAA2zB,EAAA2uB,SAAA3uB,EAAAkkE,OAAA/jE,EAAA,OAA4HE,YAAA,yBAAoC,CAAAF,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,yBAAA9kB,GAA8H,OAAAilB,EAAA,UAAoBhsB,IAAA+G,EAAAhG,GAAAmrB,YAAA,gBAAAM,MAAA,CAAiDmoE,aAAA,EAAAv7C,YAAA,EAAA/sB,SAAA,EAAA0lB,UAAAhrC,EAAA6yC,cAAA,QAAgG,cAAA/tB,EAAAuhF,gBAAAphF,EAAA,WAAAH,EAAAtT,MAAArgB,SAAA2zB,EAAA2uB,SAAA3uB,EAAAkkE,OAAA/jE,EAAA,OAAoHE,YAAA,yBAAoC,CAAAF,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,eAAA9hB,GAAkH,OAAAiiB,EAAA,cAAwBhsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,0BAAAM,MAAA,CAAyDziB,aAAe,gBAAA8hB,EAAAuhF,gBAAAphF,EAAA,WAAAH,EAAAshF,SAAAj1G,SAAA2zB,EAAA2uB,SAAA3uB,EAAAkkE,OAAA/jE,EAAA,OAAyHE,YAAA,yBAAoC,CAAAF,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAnjB,EAAA,kBAAA+hF,GAAwH,OAAA5hF,EAAA,OAAiBhsB,IAAA4tG,EAAAxsG,IAAA8qB,YAAA,8BAAyD,CAAAF,EAAA,OAAYE,YAAA,WAAsB,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,eAAAgS,OAAA,CAAgCzU,IAAAoxG,EAAA3uG,SAAwB,CAAA4sB,EAAAsI,GAAA,kBAAAtI,EAAA+L,GAAAg2E,EAAA3uG,MAAA,kBAAA4sB,EAAAsI,GAAA,KAAAtI,EAAA8hF,kBAAAC,GAAA5hF,EAAA,UAAAH,EAAA8hF,kBAAAC,GAAA1pF,SAAA8H,EAAA,QAAAH,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yBAAqPwb,MAAAxnB,EAAA8hF,kBAAAC,GAAA1pF,YAAiD,oBAAA8H,EAAA,QAAAH,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yBAAoGwb,MAAAxnB,EAAA8hF,kBAAAC,GAAA1pF,YAAiD,sBAAA2H,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAtI,EAAA8hF,kBAAAC,GAAA5hF,EAAA,OAA6FE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAA8hF,kBAAAC,GAAAK,MAAA,gBAAApiF,EAAAuI,UAA+F,GAAAvI,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAuCE,YAAA,2DAC3oH,IDOY,EAa7B2hF,GATiB,KAEU,MAYG,0lBEtBhC,IAoFepvB,GApFM,CACnByvB,OAAQ,CAACC,oBACTz2G,KAAM,iBAAO,CACXqS,KAAM,CACJuX,MAAO,GACP8sF,SAAU,GACVlgG,SAAU,GACViT,SAAU,GACV2uB,QAAS,GACTk8D,OAAQ,IAEVqC,QAAS,KAEXC,YAbmB,WAaJ,IAAA9gG,EAAAP,KACb,MAAO,CACLlD,KAAM,CACJuX,MAAO,CAAEojD,SAAU6pC,sBAAW,kBAAM/gG,EAAKghG,6BACzCtgG,SAAU,CAAEw2D,sBACZ0pC,SAAU,CAAE1pC,sBACZvjD,SAAU,CAAEujD,sBACZ50B,QAAS,CACP40B,qBACA+pC,eAAgBC,kBAAO,aAEzB1C,OAAQ,CAAEtnC,SAAU6pC,sBAAW,kBAAM/gG,EAAKmhG,8BAIhDl7E,QA5BmB,aA6BXxmB,KAAKgkE,mBAAqBhkE,KAAKjK,OAAUiK,KAAK2hG,WAClD3hG,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,SAG5BgO,KAAK4hG,cAEP54E,SAAU64E,GAAA,CACR9rG,MADM,WACK,OAAOiK,KAAKkqB,OAAOlmB,OAAOjO,OACrC+rG,eAFM,WAGJ,OAAO9hG,KAAK+hG,gBAAgB/hG,KAAK4qB,GAAG,kCAEtCo3E,kBALM,WAMJ,OAAOhiG,KAAK+hG,gBAAgB/hG,KAAK4qB,GAAG,sCAEnCY,YAAS,CACVw4C,iBAAkB,SAACjmD,GAAD,OAAWA,EAAMC,SAASgmD,kBAC5C29B,SAAU,SAAC5jF,GAAD,QAAaA,EAAMzS,MAAM6hB,aACnC80E,UAAW,SAAClkF,GAAD,OAAWA,EAAMzS,MAAM+nE,eAClC6uB,uBAAwB,SAACnkF,GAAD,OAAWA,EAAMzS,MAAMgoE,cAC/C6uB,eAAgB,SAACpkF,GAAD,OAAWA,EAAMC,SAASwnD,KAC1C+7B,0BAA2B,SAACxjF,GAAD,OAAWA,EAAMC,SAASujF,2BACrDG,wBAAyB,SAAC3jF,GAAD,OAAWA,EAAMC,SAAS0jF,4BAGvDtjF,QAASyjF,GAAA,GACJO,YAAW,CAAC,SAAU,eADpB,CAEC58C,OAFD,kBAAAj6C,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,UAGHqB,KAAKlD,KAAKuV,SAAWrS,KAAKlD,KAAKmE,SAC/BjB,KAAKlD,KAAK/G,MAAQiK,KAAKjK,MAEvBiK,KAAKlD,KAAKulG,iBAAmBriG,KAAKohG,QAAQkB,SAC1CtiG,KAAKlD,KAAKylG,cAAgBviG,KAAKohG,QAAQrrG,MACvCiK,KAAKlD,KAAK0lG,oBAAsBxiG,KAAKohG,QAAQqB,YAE7CziG,KAAK0iG,GAAGC,SAEH3iG,KAAK0iG,GAAGE,SAZV,CAAAn3F,EAAA9M,KAAA,gBAAA8M,EAAA3M,KAAA,EAAA2M,EAAA9M,KAAA,GAAA4M,EAAAvE,EAAA2E,MAcO3L,KAAKi3E,OAAOj3E,KAAKlD,OAdxB,QAeCkD,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,YAf3ByZ,EAAA9M,KAAA,iBAAA8M,EAAA3M,KAAA,GAAA2M,EAAAK,GAAAL,EAAA,SAiBCpY,QAAQyU,KAAK,wBAAb2D,EAAAK,IACA9L,KAAK4hG,aAlBN,yBAAAn2F,EAAAM,SAAA,KAAA/L,KAAA,WAsBL4hG,WAtBK,WAsBS,IAAAj4E,EAAA3pB,KACZA,KAAK8S,aAAariB,KAAK,SAAAoyG,GAASl5E,EAAKy3E,QAAUyB,KAEjDd,gBAzBK,SAyBYh3D,GACf,OAAOA,EAAI71C,QAAQ,YAAa,WC3EtC,IAEI4tG,GAVJ,SAAoBtkF,GAClBpyB,EAAQ,MAyBK22G,GAVC33G,OAAAszB,GAAA,EAAAtzB,CACd43G,GCjBQ,WAAgB,IAAApkF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,gCAA2C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA8FE,YAAA,cAAyB,CAAAF,EAAA,QAAaE,YAAA,oBAAA2H,GAAA,CAAoC4+B,OAAA,SAAAx9B,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4mC,OAAA5mC,EAAA9hB,SAA8B,CAAAiiB,EAAA,OAAYE,YAAA,aAAwB,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAF,EAAA,OAAYE,YAAA,aAAAC,MAAA,CAAgC+jF,oBAAArkF,EAAA8jF,GAAA5lG,KAAAmE,SAAAiiG,SAAoD,CAAAnkF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,qBAA0B,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAqE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,eAAAl9B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAmE,SAAA,OAAA2uB,WAAA,0BAAAuzE,UAAA,CAAwHrxD,MAAA,KAAa7yB,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,mBAAAq7C,SAAAvwB,EAAAqjF,UAAAngE,YAAAljB,EAAAgM,GAAA,sCAA2G0E,SAAA,CAAW78B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAmE,SAAA,QAAsC2lB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA8jF,GAAA5lG,KAAAmE,SAAA,SAAA+mB,EAAA93B,OAAAuC,MAAAq/C,SAAqEtX,KAAA,SAAAxS,GAAyB,OAAApJ,EAAAwkF,qBAA4BxkF,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAAmE,SAAA,OAAA8d,EAAA,OAAwDE,YAAA,cAAyB,CAAAF,EAAA,MAAAH,EAAA8jF,GAAA5lG,KAAAmE,SAAAw2D,SAAA74C,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqLE,YAAA,aAAAC,MAAA,CAAgC+jF,oBAAArkF,EAAA8jF,GAAA5lG,KAAAqkG,SAAA+B,SAAoD,CAAAnkF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,qBAA0B,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAA4E2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,eAAAl9B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAqkG,SAAA,OAAAvxE,WAAA,0BAAAuzE,UAAA,CAAwHrxD,MAAA,KAAa7yB,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,mBAAAq7C,SAAAvwB,EAAAqjF,UAAAngE,YAAAljB,EAAAgM,GAAA,sCAA2G0E,SAAA,CAAW78B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAqkG,SAAA,QAAsCv6E,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA8jF,GAAA5lG,KAAAqkG,SAAA,SAAAn5E,EAAA93B,OAAAuC,MAAAq/C,SAAqEtX,KAAA,SAAAxS,GAAyB,OAAApJ,EAAAwkF,qBAA4BxkF,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAAqkG,SAAA,OAAApiF,EAAA,OAAwDE,YAAA,cAAyB,CAAAF,EAAA,MAAAH,EAAA8jF,GAAA5lG,KAAAqkG,SAAA1pC,SAAA74C,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqLE,YAAA,aAAAC,MAAA,CAAgC+jF,oBAAArkF,EAAA8jF,GAAA5lG,KAAAuX,MAAA6uF,SAAiD,CAAAnkF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,UAAe,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAyE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAuX,MAAA,OAAAub,WAAA,yBAAkG3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,QAAAq7C,SAAAvwB,EAAAqjF,UAAApyG,KAAA,SAAqDy/B,SAAA,CAAW78B,MAAAmsB,EAAA8jF,GAAA5lG,KAAAuX,MAAA,QAAmCuS,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA8jF,GAAA5lG,KAAAuX,MAAA,SAAA2T,EAAA93B,OAAAuC,aAA6DmsB,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAAuX,MAAA,OAAA0K,EAAA,OAAqDE,YAAA,cAAyB,CAAAF,EAAA,MAAAH,EAAA8jF,GAAA5lG,KAAAuX,MAAAojD,SAAA74C,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA+KE,YAAA,cAAyB,CAAAF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,QAAa,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAA+L,GAAA/L,EAAAgM,GAAA,4BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,YAAsH2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,IAAA8yB,WAAA,aAA0E3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,MAAAq7C,SAAAvwB,EAAAqjF,UAAAngE,YAAAljB,EAAAkjF,gBAAqExyE,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,KAAuB8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,MAAAkrB,EAAA93B,OAAAuC,aAAiDmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,aAAAC,MAAA,CAAgC+jF,oBAAArkF,EAAA8jF,GAAA5lG,KAAAoX,SAAAgvF,SAAoD,CAAAnkF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,qBAA0B,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAqE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,SAAA8yB,WAAA,kBAAoF3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,mBAAAq7C,SAAAvwB,EAAAqjF,UAAApyG,KAAA,YAAmEy/B,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,UAA4B8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,WAAAkrB,EAAA93B,OAAAuC,aAAsDmsB,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAAoX,SAAA,OAAA6K,EAAA,OAAwDE,YAAA,cAAyB,CAAAF,EAAA,MAAAH,EAAA8jF,GAAA5lG,KAAAoX,SAAAujD,SAAA74C,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAqLE,YAAA,aAAAC,MAAA,CAAgC+jF,oBAAArkF,EAAA8jF,GAAA5lG,KAAA+lC,QAAAqgE,SAAmD,CAAAnkF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,kCAAuC,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAoF2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,QAAA8yB,WAAA,iBAAkF3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,gCAAAq7C,SAAAvwB,EAAAqjF,UAAApyG,KAAA,YAAgFy/B,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,SAA2B8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,UAAAkrB,EAAA93B,OAAAuC,aAAqDmsB,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAA+lC,QAAA,OAAA9jB,EAAA,OAAuDE,YAAA,cAAyB,CAAAF,EAAA,MAAAH,EAAA8jF,GAAA5lG,KAAA+lC,QAAA40B,SAAA74C,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iEAAAhM,EAAAsI,GAAA,KAAAtI,EAAA8jF,GAAA5lG,KAAA+lC,QAAA2+D,eAAA5iF,EAAAuI,KAAApI,EAAA,MAAAA,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kEAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,wBAAAG,EAAA,OAAiYE,YAAA,cAAyB,CAAAF,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,WAAgB,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,YAA6E2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,OAAA8yB,WAAA,gBAAgF3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,SAAAq7C,SAAAvwB,EAAAqjF,UAAAngE,YAAAljB,EAAAojF,mBAA2E1yE,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,QAA0B8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,SAAAkrB,EAAA93B,OAAAuC,aAAoDmsB,EAAAuI,KAAAvI,EAAAsI,GAAA,aAAAtI,EAAAwiF,QAAAvxG,KAAAkvB,EAAA,OAAgEE,YAAA,aAAAM,MAAA,CAAgCzrB,GAAA,kBAAsB,CAAAirB,EAAA,SAAcE,YAAA,cAAAM,MAAA,CAAiCuQ,IAAA,kBAAuB,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4BAAAhM,EAAAsI,GAAA,4BAAA/vB,SAAAynB,EAAAwiF,QAAAvxG,MAAA,CAAAkvB,EAAA,OAA+HQ,MAAA,CAAOpvB,IAAAyuB,EAAAwiF,QAAAjtG,KAAsByyB,GAAA,CAAKI,MAAApI,EAAAgjF,cAAwBhjF,EAAAsI,GAAA,KAAAnI,EAAA,OAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAqG2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAAwiF,QAAA,SAAAxxE,WAAA,qBAA0F3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,iBAAAq7C,SAAAvwB,EAAAqjF,UAAApyG,KAAA,OAAA01D,aAAA,MAAA89C,YAAA,MAAAC,eAAA,MAAAC,WAAA,SAAkJj0E,SAAA,CAAW78B,MAAAmsB,EAAAwiF,QAAA,UAA+Bx6E,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAAwiF,QAAA,WAAAp5E,EAAA93B,OAAAuC,YAAyDmsB,EAAAuI,MAAA,GAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAA2DE,YAAA,cAAyB,CAAAF,EAAA,SAAcQ,MAAA,CAAOuQ,IAAA,UAAe,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAyE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,MAAAgR,WAAA,UAAoE3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,QAAAq7C,SAAA,OAAAt/C,KAAA,QAA6Cy/B,SAAA,CAAW78B,MAAAmsB,EAAA,OAAoBgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAA7oB,MAAAiyB,EAAA93B,OAAAuC,aAAgCmsB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAmCE,YAAA,cAAyB,CAAAF,EAAA,UAAeE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAAvwB,EAAAqjF,UAAApyG,KAAA,WAA0C,CAAA+uB,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAkHE,YAAA,mBAAAqQ,SAAA,CAAyCC,UAAA3Q,EAAA+L,GAAA/L,EAAAujF,qBAAwCvjF,EAAAsI,GAAA,KAAAtI,EAAAsjF,uBAAA,OAAAnjF,EAAA,OAA8DE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,eAA0BL,EAAAmjB,GAAAnjB,EAAA,gCAAAztB,GAAqD,OAAA4tB,EAAA,QAAkBhsB,IAAA5B,GAAU,CAAAytB,EAAAsI,GAAAtI,EAAA+L,GAAAx5B,QAA0B,KAAAytB,EAAAuI,YACluQ,IDOY,EAa7B27E,GATiB,KAEU,MAYG,QETjBU,GAbO,SAAApiG,GAAyB,IAAtB4c,EAAsB5c,EAAtB4c,SACjBha,EAAS,CAAEqQ,MAD4BjT,EAAZiT,OAE3BoE,EAAQ6gD,KAAOt1D,EAAQ,SAACzK,EAAKk1B,EAAGltB,GACpC,IAAMovE,EAAO,GAAA/2E,OAAM2H,EAAN,KAAA3H,OAAW2K,mBAAmBkqB,IAC3C,SAAA70B,OAAUL,EAAV,KAAAK,OAAiB+2E,IAChB,IACGx8E,EAAG,GAAAyF,OAAMokB,GAANpkB,OARsB,iBAQtB,KAAAA,OAAgD6e,GAEzD,OAAOllB,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,uOCNZokB,KAAQC,IACNqe,OAGF,IA2Deg9D,GA3DO,CACpBh5G,KAAM,iBAAO,CACXqS,KAAM,CACJuX,MAAO,IAET4tF,WAAW,EACXr/B,SAAS,EACT8gC,WAAW,EACXvyG,MAAO,OAET63B,wWAAU26E,CAAA,GACLn4E,YAAS,CACVm2E,SAAU,SAAC5jF,GAAD,QAAaA,EAAMzS,MAAM6hB,aACnCnP,SAAU,SAAAD,GAAK,OAAIA,EAAMC,YAHrB,CAKN4lF,cALM,WAMJ,OAAO5jG,KAAKge,SAAS4lF,iBAGzBp9E,QAnBoB,WAoBdxmB,KAAK2hG,UACP3hG,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,UAG9B2rB,MAAO,CACLkmF,uBAAwB,CACtBn8E,SAAS,EACT73B,KAAMoO,UAGVmgB,QAAS,CACP0lF,aADO,WAEL9jG,KAAK7O,MAAQ,MAEfq0D,OAJO,WAIG,IAAAjlD,EAAAP,KACRA,KAAKiiG,WAAY,EACjB,IAAM5tF,EAAQrU,KAAKlD,KAAKuX,MAClB2J,EAAWhe,KAAKge,SAASC,OAE/B8lF,GAAiB,CAAE/lF,WAAU3J,UAAS5jB,KAAK,SAAA2Q,GAAgB,IAAbtH,EAAasH,EAAbtH,OAC5CyG,EAAK0hG,WAAY,EACjB1hG,EAAKzD,KAAKuX,MAAQ,GAEH,MAAXva,GACFyG,EAAKqiE,SAAU,EACfriE,EAAKpP,MAAQ,MACO,MAAX2I,IACTyG,EAAKmjG,WAAY,EACjBnjG,EAAKpP,MAAQoP,EAAKqqB,GAAG,uCATzB,MAWS,WACPrqB,EAAK0hG,WAAY,EACjB1hG,EAAKzD,KAAKuX,MAAQ,GAClB9T,EAAKpP,MAAQoP,EAAKqqB,GAAG,8BCxD7B,IAEIo5E,GAVJ,SAAoBxlF,GAClBpyB,EAAQ,MAyBK63G,GAVC74G,OAAAszB,GAAA,EAAAtzB,CACd84G,GCjBQ,WAAgB,IAAAtlF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,gCAA2C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAkGE,YAAA,cAAyB,CAAAF,EAAA,QAAaE,YAAA,sBAAA2H,GAAA,CAAsC4+B,OAAA,SAAAx9B,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4mC,OAAAx9B,MAA4B,CAAAjJ,EAAA,OAAYE,YAAA,aAAwB,CAAAL,EAAAglF,cAAAhlF,EAAAgkD,SAAAhkD,EAAA8kF,UAAA3kF,EAAA,OAAAH,EAAA,QAAAG,EAAA,KAAAH,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAkeE,YAAA,0BAAqC,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,UAAe,CAAA4sB,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yDAAA7L,EAAA,OAAAH,EAAA,uBAAAG,EAAA,KAAkJE,YAAA,iCAA4C,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6DAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA+OE,YAAA,cAAyB,CAAAF,EAAA,SAAc2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,MAAA8yB,WAAA,eAA8E7I,IAAA,QAAA9H,YAAA,eAAAM,MAAA,CAAgD4vB,SAAAvwB,EAAAqjF,UAAAngE,YAAAljB,EAAAgM,GAAA,8BAAA/6B,KAAA,SAA2Fy/B,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,OAAyB8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,QAAAkrB,EAAA93B,OAAAuC,aAAmDmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAyB,CAAAF,EAAA,UAAeE,YAAA,+BAAAM,MAAA,CAAkD4vB,SAAAvwB,EAAAqjF,UAAApyG,KAAA,WAA0C,CAAA+uB,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAA1iD7L,EAAA,OAAAH,EAAA,uBAAAG,EAAA,KAAAH,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oFAAA7L,EAAA,KAAAH,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+DAA0iDhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,KAAoHE,YAAA,kCAA6C,CAAAF,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAztB,UAAAytB,EAAAsI,GAAA,KAAAnI,EAAA,KAA6DE,YAAA,sCAAA2H,GAAA,CAAsDI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAklF,kBAA4B,CAAA/kF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,YAAgB,KAAAvD,EAAAuI,cAC33E,IDOY,EAa7B68E,GATiB,KAEU,MAYG,QEajBG,GApCW,CACxBxmF,MAAO,CAAC,QACRO,WAAY,CACV+2B,oBAEF72B,QAAS,CACPgmF,gCADO,WAC4B,IAAA7jG,EAAAP,KAC3BqkG,EAAQ1kF,YAAuB3f,KAAK8d,QAAQqiB,KAChD,SAACkkE,GAAD,OAAWA,EAAMxmG,aAAa/J,KAAOyM,EAAKzD,KAAKhJ,IAAqB,mBAAfuwG,EAAMx0G,OAE7D,OAAOw0G,GAASA,EAAMvwG,IAExBwhB,YAPO,WAQLtV,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkBlU,YAAY,CAAExhB,GAAIkM,KAAKlD,KAAKhJ,KACpEkM,KAAK8d,OAAO+L,SAAS,sBAAuB7pB,KAAKlD,MAEjD,IAAMwnG,EAAUtkG,KAAKokG,kCACrBpkG,KAAK8d,OAAO+L,SAAS,+BAAgC,CAAE/1B,GAAIwwG,IAC3DtkG,KAAK8d,OAAO+L,SAAS,qBAAsB,CACzC/1B,GAAIwwG,EACJz4B,QAAS,SAAA9jE,GACPA,EAAalY,KAAO,aAI1B4lB,SApBO,WAoBK,IAAAkU,EAAA3pB,KACJskG,EAAUtkG,KAAKokG,kCACrBpkG,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkB/T,SAAS,CAAE3hB,GAAIkM,KAAKlD,KAAKhJ,KAC9DrD,KAAK,WACJk5B,EAAK7L,OAAO+L,SAAS,2BAA4B,CAAE/1B,GAAIwwG,IACvD36E,EAAK7L,OAAO+L,SAAS,sBAAuBF,EAAK7sB,WCzB3D,IAEIynG,GAVJ,SAAoB/lF,GAClBpyB,EAAQ,MCYKo4G,GAXQ,CACrBtmF,WAAY,CACVimF,kBDYY/4G,OAAAszB,GAAA,EAAAtzB,CACdq5G,GEjBQ,WAAgB,IAAA7lF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,mBAA6BQ,MAAA,CAAOziB,KAAA8hB,EAAA9hB,OAAiB,CAAAiiB,EAAA,OAAYE,YAAA,yCAAoD,CAAAF,EAAA,UAAeE,YAAA,qBAAA2H,GAAA,CAAqCI,MAAApI,EAAAtJ,cAAyB,CAAAsJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA6FE,YAAA,qBAAA2H,GAAA,CAAqCI,MAAApI,EAAAnJ,WAAsB,CAAAmJ,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCACha,IFOY,EAa7B25E,GATiB,KAEU,MAYG,SCpB9Bv7E,SAAU,CACRmmD,SADQ,WAEN,OAAOnvE,KAAK8d,OAAOC,MAAMwL,IAAI2uD,kBEepBwsB,GAVCt5G,OAAAszB,GAAA,EAAAtzB,CACdu5G,GCdQ,WAAgB,IAAa9lF,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,gCAA2C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAnMjf,KAAmMknB,GAAA,WAAnMlnB,KAAmM2qB,GAAnM3qB,KAAmM4qB,GAAA,sCAAnM5qB,KAAmMknB,GAAA,KAAAnI,EAAA,OAA8FE,YAAA,cAAjSjf,KAA0T+hC,GAA1T/hC,KAA0T,kBAAA/P,GAAyC,OAAA8uB,EAAA,qBAA+BhsB,IAAA9C,EAAA6D,GAAAmrB,YAAA,YAAAM,MAAA,CAA8CziB,KAAA7M,OAAkB,MACzc,IDIY,EAEb,KAEC,KAEU,MAYG,QEDjB20G,GApBH,CACVjnF,MAAO,CAAC,QACRm/B,QAFU,WAEC,IAAAv8C,EAAAP,KACT,GAAIA,KAAKwH,KAAM,KAAAq9F,EACsB7kG,KAAK8d,OAAOC,MAAMuyD,MAA7CR,EADK+0B,EACL/0B,SAAUC,EADL80B,EACK90B,aAElBO,GAAMM,SAAS,CACbd,WACAC,eACA/xD,SAAUhe,KAAK8d,OAAOC,MAAMC,SAASC,OACrCzW,KAAMxH,KAAKwH,OACV/W,KAAK,SAAC3E,GACPyU,EAAKud,OAAO2L,OAAO,WAAY39B,EAAO4Z,cACtCnF,EAAKud,OAAO+L,SAAS,YAAa/9B,EAAO4Z,cACzCnF,EAAK+qB,QAAQngC,KAAK,CAAE6G,KAAM,iBCOnB8yG,GAVC15G,OAAAszB,GAAA,EAAAtzB,CACd25G,GCdQ,WAAgB,IAAalmF,EAAb7e,KAAa8e,eAAkD,OAA/D9e,KAAuCgf,MAAAD,IAAAF,GAAwB,MAA/D7e,KAA+DknB,GAAA,UACtE,IDIY,EAEb,KAEC,KAEU,MAYG,ukBEhBhCiB,KAAQC,IACNqe,OAGF,IAiFeu+D,GAjFG,CAChBv6G,KAAM,iBAAO,CACXqS,KAAM,GACN3L,OAAO,IAET63B,SAAUi8E,GAAA,CACRC,eADM,WACc,OAAOllG,KAAKs7E,kBAChC6pB,YAFM,WAEW,OAAOnlG,KAAKu7E,gBAC1B/vD,YAAS,CACVw4C,iBAAkB,SAAAjmD,GAAK,OAAIA,EAAMC,SAASgmD,kBAC1ChmD,SAAU,SAAAD,GAAK,OAAIA,EAAMC,UACzBk1D,UAAW,SAAAn1D,GAAK,OAAIA,EAAMzS,MAAM4nE,WAChC5C,MAAO,SAAAvyD,GAAK,OAAIA,EAAMuyD,SAPlB,GASHviD,YACD,WAAY,CAAC,mBAAoB,gBAAiB,iBAGtD3P,QAAS6mF,GAAA,GACJG,YAAa,WAAY,CAAC,eADxB,GAEFhD,YAAW,CAAE7xB,MAAO,mBAFlB,CAGL/qB,OAHK,WAIHxlD,KAAKmlG,YAAcnlG,KAAKqlG,cAAgBrlG,KAAKslG,kBAE/CD,YANK,WAMU,IAAAE,EACsBvlG,KAAKswE,MAClC7lF,EAAO,CACXqlF,SAHWy1B,EACLz1B,SAGNC,aAJWw1B,EACKx1B,aAIhB/xD,SAAUhe,KAAKge,SAASC,OACxBwL,OAAQzpB,KAAK8d,OAAO2L,QAGtB6tD,GAASzH,eAAeplF,GACrBgG,KAAK,SAACy/E,GAAUoH,GAAS/G,MAAT00B,GAAA,GAAoB/0B,EAApB,GAA4BzlF,OAEjD66G,eAlBK,WAkBa,IAAA/kG,EAAAP,KAEVvV,EAAO,CACXqlF,SAFmB9vE,KAAKswE,MAAlBR,SAGNQ,MAAOtwE,KAAKswE,MACZtyD,SAAUhe,KAAKge,SAASC,OACxBwL,OAAQzpB,KAAK8d,OAAO2L,QAEtBzpB,KAAK7O,OAAQ,EAEbmmF,GAASzH,eAAeplF,GAAMgG,KAAK,SAACy/E,GAClCoH,GAASzG,wBAATo0B,GAAA,GAEO/0B,EAFP,CAGIlyD,SAAUvzB,EAAKuzB,SACf/c,SAAUV,EAAKzD,KAAKmE,SACpBiT,SAAU3T,EAAKzD,KAAKoX,YAEtBzjB,KAAK,SAAC3E,GACFA,EAAOqF,MACY,iBAAjBrF,EAAOqF,MACToP,EAAKs7E,WAAW,CAAE9jE,SAAUjsB,IACG,4BAAtBA,EAAO05G,WAChBjlG,EAAK+qB,QAAQngC,KAAK,CAAE6G,KAAM,iBAAkBgS,OAAQ,CAAE6/F,wBAAwB,MAE9EtjG,EAAKpP,MAAQrF,EAAOqF,MACpBoP,EAAKklG,wBAITllG,EAAKgwE,MAAMzkF,GAAQ2E,KAAK,WACtB8P,EAAK+qB,QAAQngC,KAAK,CAAE6G,KAAM,mBAKlC+3C,WAtDK,WAsDW/pC,KAAK7O,OAAQ,GAC7Bs0G,qBAvDK,WAwDH,IAAIC,EAAgB1lG,KAAKyjB,MAAMiiF,cAC/BA,EAAcnlE,QACdmlE,EAAcvoD,kBAAkB,EAAGuoD,EAAcjzG,MAAMxH,YC/E7D,IAEI06G,GAVJ,SAAoBnnF,GAClBpyB,EAAQ,MAyBKw5G,GAVCx6G,OAAAszB,GAAA,EAAAtzB,CACdy6G,GCjBQ,WAAgB,IAAAjnF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,6BAAwC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAgFE,YAAA,cAAyB,CAAAF,EAAA,QAAaE,YAAA,aAAA2H,GAAA,CAA6B4+B,OAAA,SAAAx9B,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4mC,OAAAx9B,MAA4B,CAAApJ,EAAA,gBAAAG,EAAA,OAAkCE,YAAA,cAAyB,CAAAF,EAAA,SAAcQ,MAAA,CAAOuQ,IAAA,aAAkB,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAqE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,SAAA8yB,WAAA,kBAAoF3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,WAAAq7C,SAAAvwB,EAAAs0D,UAAApxC,YAAAljB,EAAAgM,GAAA,sBAAmF0E,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,UAA4B8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,WAAAkrB,EAAA93B,OAAAuC,aAAsDmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAyB,CAAAF,EAAA,SAAcQ,MAAA,CAAOuQ,IAAA,aAAkB,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sBAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAAqE2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA9hB,KAAA,SAAA8yB,WAAA,kBAAoF7I,IAAA,gBAAA9H,YAAA,eAAAM,MAAA,CAAwDzrB,GAAA,WAAAq7C,SAAAvwB,EAAAs0D,UAAArjF,KAAA,YAA2Dy/B,SAAA,CAAW78B,MAAAmsB,EAAA9hB,KAAA,UAA4B8pB,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,WAAsCjR,EAAA09B,KAAA19B,EAAA9hB,KAAA,WAAAkrB,EAAA93B,OAAAuC,aAAsDmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAyB,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,oBAAyB,CAAA4sB,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0DAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,OAAmJE,YAAA,cAAyB,CAAAF,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAyFE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAF,EAAA,OAAAH,EAAA,iBAAAG,EAAA,eAAqDE,YAAA,WAAAM,MAAA,CAA8BuL,GAAA,CAAM94B,KAAA,kBAAuB,CAAA4sB,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAAuHE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAAvwB,EAAAs0D,UAAArjF,KAAA,WAA0C,CAAA+uB,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAAsHE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAztB,OAAA,YAAA4tB,EAAA,UAA+DE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,SAAeyE,GAAA,CAAKI,MAAApI,EAAAmrB,eAAwB,KAAAnrB,EAAAuI,QACx/E,IDOY,EAa7Bw+E,GATiB,KAEU,MAYG,QEWjBG,GALH,CACVh1B,cAjCoB,SAAA1vE,GAA0D,IAAvD0uE,EAAuD1uE,EAAvD0uE,SAAUC,EAA6C3uE,EAA7C2uE,aAAc/xD,EAA+B5c,EAA/B4c,SAAU+yD,EAAqB3vE,EAArB2vE,SAAUvpE,EAAWpG,EAAXoG,KAC7DrT,EAAG,GAAAyF,OAAMokB,EAAN,wBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAawgE,GACzBtjE,EAAK8C,OAAO,gBAAiBygE,GAC7BvjE,EAAK8C,OAAO,YAAayhE,GACzBvkE,EAAK8C,OAAO,OAAQ9H,GACpBgF,EAAK8C,OAAO,iBAAkB,QAEvB/b,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,UAqBvBusE,mBAlByB,SAAA3vE,GAA0D,IAAvDyuE,EAAuDzuE,EAAvDyuE,SAAUC,EAA6C1uE,EAA7C0uE,aAAc/xD,EAA+B3c,EAA/B2c,SAAU+yD,EAAqB1vE,EAArB0vE,SAAUvpE,EAAWnG,EAAXmG,KAClErT,EAAG,GAAAyF,OAAMokB,EAAN,wBACHxR,EAAO,IAAIjZ,OAAO6b,SAQxB,OANA5C,EAAK8C,OAAO,YAAawgE,GACzBtjE,EAAK8C,OAAO,gBAAiBygE,GAC7BvjE,EAAK8C,OAAO,YAAayhE,GACzBvkE,EAAK8C,OAAO,OAAQ9H,GACpBgF,EAAK8C,OAAO,iBAAkB,YAEvB/b,OAAOoQ,MAAMxP,EAAK,CACvB4P,OAAQ,OACRjE,KAAM0M,IACL/b,KAAK,SAAChG,GAAD,OAAUA,EAAKga,0kBCtBzB0jB,KAAQC,IACNqe,OAGa,IAAAs/D,GAAA,CACbt7G,KAAM,iBAAO,CACX+c,KAAM,KACNrW,OAAO,IAET63B,SAAUg9E,GAAA,GACLj4E,YAAW,CACZk4E,aAAc,sBAFV,GAIHz6E,YAAS,CACVxN,SAAU,WACVsyD,MAAO,WAGXlyD,QAAS4nF,GAAA,GACJZ,YAAa,WAAY,CAAC,cAAe,aADvC,GAEFhD,YAAW,CAAE7xB,MAAO,mBAFlB,CAGLxmC,WAHK,WAGW/pC,KAAK7O,OAAQ,GAC7Bq0D,OAJK,WAIK,IAAAjlD,EAAAP,KAAAulG,EAC2BvlG,KAAKswE,MAElC7lF,EAAO,CACXqlF,SAJMy1B,EACAz1B,SAINC,aALMw1B,EACUx1B,aAKhB/xD,SAAUhe,KAAKge,SAASC,OACxB8yD,SAAU/wE,KAAKimG,aAAaC,UAC5B1+F,KAAMxH,KAAKwH,MAGb2+F,GAAOn1B,mBAAmBvmF,GAAMgG,KAAK,SAAC3E,GACpC,GAAIA,EAAOqF,MAGT,OAFAoP,EAAKpP,MAAQrF,EAAOqF,WACpBoP,EAAKiH,KAAO,MAIdjH,EAAKgwE,MAAMzkF,GAAQ2E,KAAK,WACtB8P,EAAK+qB,QAAQngC,KAAK,CAAE6G,KAAM,oBCzBrBo0G,GAVCh7G,OAAAszB,GAAA,EAAAtzB,CACd26G,GCdQ,WAAgB,IAAAnnF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,6BAAwC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA2FE,YAAA,cAAyB,CAAAF,EAAA,QAAaE,YAAA,aAAA2H,GAAA,CAA6B4+B,OAAA,SAAAx9B,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4mC,OAAAx9B,MAA4B,CAAAjJ,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,SAAcQ,MAAA,CAAOuQ,IAAA,SAAc,CAAAlR,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAA0E2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,KAAAgR,WAAA,SAAkE3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,QAAYw7B,SAAA,CAAW78B,MAAAmsB,EAAA,MAAmBgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAApX,KAAAwgB,EAAA93B,OAAAuC,aAA+BmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAF,EAAA,OAAAA,EAAA,UAAyBE,YAAA,wBAAAM,MAAA,CAA2C1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAm9D,YAAA/zD,MAAiC,CAAApJ,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAA,KAAAnI,EAAA,UAA4IE,YAAA,wBAAAM,MAAA,CAA2C1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAo9D,SAAAh0D,MAA8B,CAAApJ,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4GE,YAAA,qBAAAM,MAAA,CAAwC1vB,KAAA,WAAiB,CAAA+uB,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAAuHE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAztB,OAAA,YAAA4tB,EAAA,UAA+DE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,SAAeyE,GAAA,CAAKI,MAAApI,EAAAmrB,eAAwB,KAAAnrB,EAAAuI,QAC5zD,IDIY,EAEb,KAEC,KAEU,MAYG,ukBEhBhCgB,KAAQC,IACNqe,OAGa,IAAA4/D,GAAA,CACb57G,KAAM,iBAAO,CACX+c,KAAM,KACNrW,OAAO,IAET63B,SAAUs9E,GAAA,GACLv4E,YAAW,CACZk4E,aAAc,sBAFV,GAIHz6E,YAAS,CACVxN,SAAU,WACVsyD,MAAO,WAGXlyD,QAASkoF,GAAA,GACJlB,YAAa,WAAY,CAAC,kBAAmB,aAD3C,GAEFhD,YAAW,CAAE7xB,MAAO,mBAFlB,CAGLxmC,WAHK,WAGW/pC,KAAK7O,OAAQ,GAC7Bq0D,OAJK,WAIK,IAAAjlD,EAAAP,KAAAulG,EAC2BvlG,KAAKswE,MAElC7lF,EAAO,CACXqlF,SAJMy1B,EACAz1B,SAINC,aALMw1B,EACUx1B,aAKhB/xD,SAAUhe,KAAKge,SAASC,OACxB8yD,SAAU/wE,KAAKimG,aAAaC,UAC5B1+F,KAAMxH,KAAKwH,MAGb2+F,GAAOr1B,cAAcrmF,GAAMgG,KAAK,SAAC3E,GAC/B,GAAIA,EAAOqF,MAGT,OAFAoP,EAAKpP,MAAQrF,EAAOqF,WACpBoP,EAAKiH,KAAO,MAIdjH,EAAKgwE,MAAMzkF,GAAQ2E,KAAK,WACtB8P,EAAK+qB,QAAQngC,KAAK,CAAE6G,KAAM,oBCzBrBu0G,GAVCn7G,OAAAszB,GAAA,EAAAtzB,CACdi7G,GCdQ,WAAgB,IAAAznF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,6BAAwC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAuFE,YAAA,cAAyB,CAAAF,EAAA,QAAaE,YAAA,aAAA2H,GAAA,CAA6B4+B,OAAA,SAAAx9B,GAAkD,OAAxBA,EAAAsI,iBAAwB1R,EAAA4mC,OAAAx9B,MAA4B,CAAAjJ,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,SAAcQ,MAAA,CAAOuQ,IAAA,SAAc,CAAAlR,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,SAA4G2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,KAAAgR,WAAA,SAAkE3Q,YAAA,eAAAM,MAAA,CAAoCzrB,GAAA,QAAYw7B,SAAA,CAAW78B,MAAAmsB,EAAA,MAAmBgI,GAAA,CAAKzJ,MAAA,SAAA6K,GAAyBA,EAAA93B,OAAA2/B,YAAsCjR,EAAApX,KAAAwgB,EAAA93B,OAAAuC,aAA+BmsB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,gBAA2B,CAAAF,EAAA,OAAAA,EAAA,UAAyBE,YAAA,wBAAAM,MAAA,CAA2C1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAk9D,gBAAA9zD,MAAqC,CAAApJ,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAA,KAAAnI,EAAA,UAA0IE,YAAA,wBAAAM,MAAA,CAA2C1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAo9D,SAAAh0D,MAA8B,CAAApJ,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4GE,YAAA,qBAAAM,MAAA,CAAwC1vB,KAAA,WAAiB,CAAA+uB,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAAuHE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAztB,OAAA,YAAA4tB,EAAA,UAA+DE,YAAA,8BAAAM,MAAA,CAAiDiQ,KAAA,KAAArN,KAAA,SAA2ByE,GAAA,CAAKI,MAAApI,EAAAmrB,eAAwB,KAAAnrB,EAAAuI,QACx2D,IDIY,EAEb,KAEC,KAEU,MAYG,qOElBhC,IAoBeq/E,GApBE,CACfx0G,KAAM,WACNumE,OAFe,SAEP3oE,GACN,OAAOA,EAAc,YAAa,CAAE62G,GAAIzmG,KAAK0mG,YAE/C19E,wWAAU29E,CAAA,CACRD,SADM,WAEJ,OAAI1mG,KAAKw7E,aAAuB,cAC5Bx7E,KAAKy7E,iBAA2B,kBAC7B,cAEN1tD,YAAW,WAAY,CAAC,eAAgB,sBAE7C7P,WAAY,CACV0oF,mBACAC,eACA7B,eCdJ78E,KAAQC,IACN0+E,KACArgE,OAGF,IAwCesgE,GAxCG,CAChBppF,MAAO,CAAE,YACTlzB,KAFgB,WAGd,MAAO,CACLu8G,eAAgB,GAChB3sB,QAAS,KACT4sB,WAAW,IAGfj+E,SAAU,CACR6lC,SADQ,WAEN,OAAO7uD,KAAK8d,OAAOC,MAAM9e,KAAK4vD,WAGlCzwC,QAAS,CACPonC,OADO,SACCh0D,GACNwO,KAAK8d,OAAOC,MAAM9e,KAAKo7E,QAAQlvF,KAAK,UAAW,CAAE0P,KAAMrJ,GAAW,KAClEwO,KAAKgnG,eAAiB,IAExBE,YALO,WAMLlnG,KAAKinG,WAAajnG,KAAKinG,WAEzBp4E,gBARO,SAQU/xB,GACf,OAAOwgB,aAAoBxgB,EAAKhJ,GAAIgJ,EAAKmE,SAAUjB,KAAK8d,OAAOC,MAAMC,SAAST,uBAGlFgtB,MAAO,CACLskB,SADK,SACKm4B,GACR,IAAMmgB,EAAWnnG,KAAKmjB,IAAImd,cAAc,gBACnC6mE,GACDA,EAASzjD,UAAYyjD,EAASpjF,aAAe,GAAKojF,EAASrjD,cAC7D9jD,KAAK+lB,UAAU,WACRohF,IACLA,EAASzjD,UAAYyjD,EAASrjD,aAAeqjD,EAASpjF,mBCrChE,IAEIqjF,GAVJ,SAAoB5oF,GAClBpyB,EAAQ,MAyBKi7G,GAVCj8G,OAAAszB,GAAA,EAAAtzB,CACdk8G,GCjBQ,WAAgB,IAAA1oF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAqoF,WAAAroF,EAAA2oF,SAAunDxoF,EAAA,OAAkBE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,mDAAA2H,GAAA,CAAmEI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAsoF,YAAAl/E,MAAiC,CAAAjJ,EAAA,OAAYE,YAAA,SAAoB,CAAAF,EAAA,UAAeE,YAAA,OAAAM,MAAA,CAA0B4C,KAAA,cAAmBvD,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAt+D7L,EAAA,OAAmDE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,iCAAAC,MAAA,CAAoDsoF,eAAA5oF,EAAA2oF,UAA+B3gF,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAsoF,YAAAl/E,MAAiC,CAAAjJ,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAA,SAAAG,EAAA,UAAiGE,YAAA,aAAAM,MAAA,CAAgC4C,KAAA,WAAgBvD,EAAAuI,MAAA,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAuCE,YAAA,eAA0BL,EAAAmjB,GAAAnjB,EAAA,kBAAAptB,GAAyC,OAAAutB,EAAA,OAAiBhsB,IAAAvB,EAAAsC,GAAAmrB,YAAA,gBAA0C,CAAAF,EAAA,QAAaE,YAAA,eAA0B,CAAAF,EAAA,OAAYQ,MAAA,CAAOpvB,IAAAqB,EAAA2kG,OAAA/gG,YAA6BwpB,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,gBAA2B,CAAAF,EAAA,eAAoBE,YAAA,YAAAM,MAAA,CAA+BuL,GAAAlM,EAAAiQ,gBAAAr9B,EAAA2kG,UAA0C,CAAAv3E,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAAn5B,EAAA2kG,OAAAl1F,UAAA,kBAAA2d,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAA,KAAAnI,EAAA,QAAwHE,YAAA,aAAwB,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAAn5B,EAAAqJ,MAAA,0BAAuE,GAAA+jB,EAAAsI,GAAA,KAAAnI,EAAA,OAA2BE,YAAA,cAAyB,CAAAF,EAAA,YAAiB2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,eAAAgR,WAAA,mBAAsF3Q,YAAA,sBAAAM,MAAA,CAA2CqnC,KAAA,KAAWt3B,SAAA,CAAW78B,MAAAmsB,EAAA,gBAA6BgI,GAAA,CAAKm6E,MAAA,SAAA/4E,GAAyB,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAe6rB,EAAA4mC,OAAA5mC,EAAAooF,iBAAsC7pF,MAAA,SAAA6K,GAA0BA,EAAA93B,OAAA2/B,YAAsCjR,EAAAooF,eAAAh/E,EAAA93B,OAAAuC,kBACppD,IDOY,EAa7B20G,GATiB,KAEU,MAYG,QEajBK,GApCK,CAClBvpF,WAAY,CACV2+E,eAEFpyG,KAJkB,WAKhB,MAAO,CACL6gB,MAAO,KAGXwxC,QATkB,WAUhB98C,KAAK0nG,kBAEPtpF,QAAS,CACPupF,gBADO,SACUj7D,GAAO,IAAAnsC,EAAAP,KACtB0sC,EAAMn9B,QAAQ,SAACxkB,EAAGsjD,GAChB9tC,EAAKud,OAAOC,MAAMwL,IAAIC,kBAAkB7b,UAAU,CAAE7Z,GAAI/I,EAAEkJ,OACvDxD,KAAK,SAACm3G,GACAA,EAAaz2G,QAChBoP,EAAKud,OAAO2L,OAAO,cAAe,CAACm+E,IACnCrnG,EAAK+K,MAAMngB,KAAKy8G,SAK1BF,eAZO,WAYW,IAAA/9E,EAAA3pB,KACV6D,EAAc7D,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYtpB,YACpDA,GACF4E,IAAWmN,YAAY,CAAE/R,YAAaA,IACnCpT,KAAK,SAACi8C,GACL/iB,EAAKg+E,gBAAgBj7D,QCxBjC,IAEIm7D,GAVJ,SAAoBrpF,GAClBpyB,EAAQ,MAyBK07G,GAVC18G,OAAAszB,GAAA,EAAAtzB,CACd28G,GCjBQ,WAAgB,IAAalpF,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAA1Jjf,KAA0JknB,GAAA,SAA1JlnB,KAA0J2qB,GAA1J3qB,KAA0J4qB,GAAA,0CAA1J5qB,KAA0JknB,GAAA,KAAAnI,EAAA,OAAgGE,YAAA,cAA1Pjf,KAAmR+hC,GAAnR/hC,KAAmR,eAAAlD,GAAmC,OAAAiiB,EAAA,cAAwBhsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,YAAAM,MAAA,CAA2CziB,YAAe,MAC/Y,IDOY,EAa7B+qG,GATiB,KAEU,MAYG,QElBjBG,GARe,CAC5Bh/E,SAAU,CACRu8C,6BADQ,WAEN,OAAOvlE,KAAK8d,OAAOC,MAAMC,SAASunD,gCCoBzB0iC,GAVC78G,OAAAszB,GAAA,EAAAtzB,CACd88G,GCdQ,WAAgB,IAAarpF,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,2BAAsC,CAAAF,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,OAAYuQ,SAAA,CAAUC,UAA/NvvB,KAA+N2qB,GAA/N3qB,KAA+NulE,wCACtO,IDIY,EAEb,KAEC,KAEU,MAYG,iBERjB4iC,GAbO,CACpBn/E,SAAU,CACR/pB,KAAM,WAAc,OAAOe,KAAK8d,OAAOC,MAAMC,SAASmnD,eACtDijC,oBAAqB,WAAc,OAAOpoG,KAAK8d,OAAOC,MAAMC,SAASyN,8BACrE48E,OAAQ,WAAc,OAAOroG,KAAK8d,OAAOC,MAAMC,SAASonD,iBACxDkjC,YAAa,WAAc,OAAOtoG,KAAK8d,OAAOC,MAAMC,SAASqnD,oBAC7DkjC,WAAY,WAAc,OAAOvoG,KAAK8d,OAAOC,MAAMC,SAASirC,qBAC5DtK,kBAAmB,WAAc,OAAO3+C,KAAK8d,OAAOC,MAAMC,SAAS2gC,mBACnEQ,UAAW,WAAc,OAAOn/C,KAAK8d,OAAOC,MAAMC,SAASmhC,WAC3DhG,YAAa,WAAc,OAAOE,KAAsBC,eAAet5C,KAAK8d,OAAOC,MAAMC,SAASm7B,gBCHtG,IAEIqvD,GAVJ,SAAoBhqF,GAClBpyB,EAAQ,MAyBKq8G,GAVCr9G,OAAAszB,GAAA,EAAAtzB,CACds9G,GCjBQ,WAAgB,IAAA9pF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,kBAA6B,CAAAF,EAAA,OAAYE,YAAA,yCAAoD,CAAAF,EAAA,OAAYE,YAAA,2DAAsE,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAmGE,YAAA,6BAAwC,CAAAF,EAAA,MAAAH,EAAA,KAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,oBAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,OAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,WAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAA+L,GAAA/L,EAAAugC,cAAAvgC,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAA+L,GAAA/L,EAAAu6B,YAAAxO,KAAA,IAAA/rB,EAAA+L,GAAA/L,EAAAgM,GAAA,0BAAAhM,EAAAu6B,YAAAM,mBACjb,IDOY,EAa7B+uD,GATiB,KAEU,MAYG,QElBjBG,GARa,CAC1B3/E,SAAU,CACRpuB,QADQ,WAEN,OAAOoF,KAAK8d,OAAOC,MAAMC,SAASwnD,OCKxC,IAEIojC,GAVJ,SAAoBpqF,GAClBpyB,EAAQ,MAyBKy8G,GAVCz9G,OAAAszB,GAAA,EAAAtzB,CACd09G,GCjBQ,WAAgB,IAAajqF,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,OAA2BE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,cAAAqQ,SAAA,CAAoCC,UAAjNvvB,KAAiN2qB,GAAjN3qB,KAAiNpF,mBACxN,IDOY,EAa7BguG,GATiB,KAEU,MAYG,0PErBhC,IA2BeG,GA3BI,CACjBviF,QADiB,WACN,IAAAjmB,EAAAP,KACSA,KAAK8d,OAAOC,MAAMC,SAASgrF,cACnCz5F,QAAQ,SAAA8C,GAAQ,OAAI9R,EAAKud,OAAO+L,SAAS,qBAAsBxX,MAE3E6L,WAAY,CACV+2B,oBAEFjsB,wWAAUigF,CAAA,CACRC,qBADM,WAEJ,IAAMF,EAAgBl0G,KAAIkL,KAAKgpG,cAAehpG,KAAK0sB,UAAUtnB,OAAO,SAAAC,GAAC,OAAIA,IACnE6jG,EAAuBC,KAAQH,EAAe,QAEpD,MAAO,CACL,CAAEryG,KAAM,QAAS2U,MAAO49F,EAAoB,OAC5C,CAAEvyG,KAAM,YAAa2U,MAAO49F,EAAoB,YAChD9jG,OAAO,SAAA+2D,GAAK,OAAIA,EAAM7wD,UAEvByiB,YAAW,CACZ,aAXI,GAaHvC,YAAS,CACVw9E,cAAe,SAAAjrF,GAAK,OAAIA,EAAMC,SAASgrF,mBCnB7C,IAEII,GAVJ,SAAoB5qF,GAClBpyB,EAAQ,MAyBKi9G,GAVCj+G,OAAAszB,GAAA,EAAAtzB,CACdk+G,GCjBQ,WAAgB,IAAA1qF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,eAA0B,CAAAF,EAAA,OAAYE,YAAA,yCAAoD,CAAAF,EAAA,OAAYE,YAAA,oDAA+D,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA0FE,YAAA,cAAyBL,EAAAmjB,GAAAnjB,EAAA,8BAAAu9C,GAAmD,OAAAp9C,EAAA,OAAiBhsB,IAAAopE,EAAAxlE,KAAAsoB,YAAA,eAAyC,CAAAF,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gBAAAuxC,EAAAxlE,UAAAioB,EAAAsI,GAAA,KAAAtI,EAAAmjB,GAAAo6B,EAAA,eAAAr/D,GAAkH,OAAAiiB,EAAA,mBAA6BhsB,IAAA+J,EAAA9I,YAAAurB,MAAA,CAA4BziB,aAAe,KAAM,QAC5rB,IDOY,EAa7BssG,GATiB,KAEU,MAYG,qOEvBhC,IA+BeG,GA/Bc,CAC3BvgF,wWAAUwgF,CAAA,GACLh+E,YAAS,CACVi+E,iBAAkB,SAAA1rF,GAAK,OAAIzL,KAAIyL,EAAO,8BACtC2rF,YAAa,SAAA3rF,GAAK,OAAIzL,KAAIyL,EAAO,yCAA0C,KAC3E4rF,oBAAqB,SAAA5rF,GAAK,OAAIzL,KAAIyL,EAAO,kDAAmD,KAC5F6rF,gBAAiB,SAAA7rF,GAAK,OAAIzL,KAAIyL,EAAO,8CAA+C,KACpF8rF,gBAAiB,SAAA9rF,GAAK,OAAIzL,KAAIyL,EAAO,8CAA+C,KACpF+rF,oBAAqB,SAAA/rF,GAAK,OAAIzL,KAAIyL,EAAO,kEAAmE,KAC5GgsF,mBAAoB,SAAAhsF,GAAK,OAAIzL,KAAIyL,EAAO,kDAAmD,KAC3FisF,sBAAuB,SAAAjsF,GAAK,OAAIzL,KAAIyL,EAAO,qDAAsD,KACjGksF,mBAAoB,SAAAlsF,GAAK,OAAIzL,KAAIyL,EAAO,mEAAoE,KAC5GmsF,eAAgB,SAAAnsF,GAAK,OAAIzL,KAAIyL,EAAO,+CAAgD,KACpFosF,gBAAiB,SAAApsF,GAAK,OAAIzL,KAAIyL,EAAO,gDAAiD,OAZlF,CAcNqsF,4BAdM,WAeJ,OAAOpqG,KAAK2pG,oBAAoB1+G,QAC9B+U,KAAK4pG,gBAAgB3+G,QACrB+U,KAAK6pG,gBAAgB5+G,QACrB+U,KAAK8pG,oBAAoB7+G,QACzB+U,KAAK+pG,mBAAmB9+G,QACxB+U,KAAKgqG,sBAAsB/+G,QAE/Bo/G,mBAtBM,WAuBJ,OAAOrqG,KAAKiqG,mBAAmBh/G,QAC7B+U,KAAKkqG,eAAej/G,QACpB+U,KAAKmqG,gBAAgBl/G,WCrB7B,IAEIq/G,GAVJ,SAAoB9rF,GAClBpyB,EAAQ,MCuBKm+G,GAlBD,CACZrsF,WAAY,CACV8pF,yBACAG,iBACAQ,uBACAI,cACAQ,qBDIYn+G,OAAAszB,GAAA,EAAAtzB,CACdo/G,GEjBQ,WAAgB,IAAA5rF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,iBAAAG,EAAA,OAAwCE,YAAA,0BAAqC,CAAAF,EAAA,OAAYE,YAAA,yCAAoD,CAAAF,EAAA,OAAYE,YAAA,oDAA+D,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAAmGE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,eAA0B,CAAAF,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,qBAAA6rF,GAAwM,OAAA1rF,EAAA,MAAgBhsB,IAAA03G,EAAAn7E,SAAA,CAAqBo7E,YAAA9rF,EAAA+L,GAAA8/E,QAAgC,GAAA7rF,EAAAsI,GAAA,KAAAtI,EAAA,4BAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAgrF,gBAAA,OAAA7qF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,yBAAAZ,GAA+Z,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAirF,gBAAA,OAAA9qF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,yBAAAZ,GAAiR,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA+qF,oBAAA,OAAA5qF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,6BAAAZ,GAAiS,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAkrF,oBAAA,OAAA/qF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,6BAAAZ,GAAmS,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAmrF,mBAAA,OAAAhrF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,4BAAAZ,GAA+R,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAorF,sBAAA,OAAAjrF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,+BAAAZ,GAA2S,OAAAe,EAAA,MAAgBhsB,IAAAirB,EAAAsR,SAAA,CAAuBo7E,YAAA9rF,EAAA+L,GAAA3M,QAAkC,KAAAY,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,mBAAAG,EAAA,MAAAH,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uDAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAqrF,mBAAA,OAAAlrF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,4BAAA27C,GAAiW,OAAAx7C,EAAA,MAAgBhsB,IAAAwnE,EAAAjrC,SAAA,CAAsBo7E,YAAA9rF,EAAA+L,GAAA4vC,QAAiC,KAAA37C,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAsrF,eAAA,OAAAnrF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,wBAAA27C,GAAkM,OAAAx7C,EAAA,MAAgBhsB,IAAAwnE,EAAAjrC,SAAA,CAAsBo7E,YAAA9rF,EAAA+L,GAAA4vC,QAAiC,KAAA37C,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAurF,gBAAA,OAAAprF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,iCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAmjB,GAAAnjB,EAAA,yBAAA27C,GAAqM,OAAAx7C,EAAA,MAAgBhsB,IAAAwnE,GAAY,CAAA37C,EAAAsI,GAAA,mBAAAtI,EAAA+L,GAAA4vC,EAAAowC,SAAA,mBAAA/rF,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAA+L,GAAA4vC,EAAA75B,aAAA,sBAA6L,KAAA9hB,EAAAuI,aAAAvI,EAAAuI,MAChjI,IFOY,EAa7BmjF,GATiB,KAEU,MAYG,SCZ9BthF,SAAU,CACR47C,kBADQ,WACe,OAAO5kE,KAAK8d,OAAOC,MAAMC,SAAS4mD,mBACzDC,0BAFQ,WAGN,OAAO7kE,KAAK8d,OAAOC,MAAMC,SAAS6mD,4BAC/B7kE,KAAK8d,OAAO2O,QAAQtL,aAAa8uC,SAClCjwD,KAAK8d,OAAOC,MAAMC,SAASunD,gCEXnC,IAEIqlC,GAVJ,SAAoBpsF,GAClBpyB,EAAQ,MAyBKy+G,GAVCz/G,OAAAszB,GAAA,EAAAtzB,CACd0/G,GCjBQ,WAAgB,IAAAlsF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,WAAsB,CAAAL,EAAA,0BAAAG,EAAA,2BAAAH,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,eAAAH,EAAAsI,GAAA,KAAAnI,EAAA,0BAAAH,EAAAsI,GAAA,KAAAnI,EAAA,wBAAAH,EAAAsI,GAAA,KAAAtI,EAAA,kBAAAG,EAAA,kBAAAH,EAAAuI,MAAA,IAC7G,IDOY,EAa7ByjF,GATiB,KAEU,MAYG,QEIjBG,GA9BY,CACzBtgH,KAAM,iBAAO,CACX0G,OAAO,IAET2rD,QAJyB,WAKvB98C,KAAKgrG,YAEP5sF,QAAS,CACP4sF,SADO,WACK,IAAAzqG,EAAAP,KACJ/L,EAAO+L,KAAKkqB,OAAOlmB,OAAO/C,SAAW,IAAMjB,KAAKkqB,OAAOlmB,OAAOinG,SACpEjrG,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkB7b,UAAU,CAAE7Z,GAAIG,IACrDxD,KAAK,SAACm3G,GACL,GAAIA,EAAaz2G,MACfoP,EAAKpP,OAAQ,MACR,CACLoP,EAAKud,OAAO2L,OAAO,cAAe,CAACm+E,IACnC,IAAM9zG,EAAK8zG,EAAa9zG,GACxByM,EAAK+qB,QAAQp2B,QAAQ,CACnBlD,KAAM,wBACNgS,OAAQ,CAAElQ,WATlB,MAaS,WACLyM,EAAKpP,OAAQ,OChBvB,IAEI+5G,GAVJ,SAAoB1sF,GAClBpyB,EAAQ,MAyBK++G,GAVC//G,OAAAszB,GAAA,EAAAtzB,CACdggH,GCjBQ,WAAgB,IAAAxsF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,SAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA8GE,YAAA,cAAyB,CAAAF,EAAA,KAAAH,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAA+L,GAAA/L,EAAAsL,OAAAlmB,OAAA/C,UAAA,IAAA2d,EAAA+L,GAAA/L,EAAAsL,OAAAlmB,OAAAinG,UAAA,YAAArsF,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,KAAAH,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAuI,UACxS,IDOY,EAa7B+jF,GATiB,KAEU,MAYG,QEHjBG,GAAA,SAACzrF,GACd,IAAM0rF,EAA6B,SAACxgF,EAAIonD,EAAMvzE,GACxCihB,EAAM7B,MAAMzS,MAAM6hB,YACpBxuB,IAEAA,EAAKihB,EAAM7B,MAAMC,SAAS2mD,qBAAuB,cAIjD4mC,EAAS,CACX,CAAEv5G,KAAM,OACNs9C,KAAM,IACN07D,SAAU,SAAAQ,GACR,OAAQ5rF,EAAM7B,MAAMzS,MAAM6hB,YACtBvN,EAAM7B,MAAMC,SAAS0mD,kBACrB9kD,EAAM7B,MAAMC,SAAS2mD,sBAAwB,cAGrD,CAAE3yE,KAAM,2BAA4Bs9C,KAAM,YAAaioB,UAAW01B,IAClE,CAAEj7F,KAAM,kBAAmBs9C,KAAM,eAAgBioB,UAAWs1B,IAC5D,CAAE76F,KAAM,UAAWs9C,KAAM,gBAAiBioB,UAAW61B,GAAiBqe,YAAaH,GACnF,CAAEt5G,KAAM,eAAgBs9C,KAAM,YAAaioB,UAAWg2B,IACtD,CAAEv7F,KAAM,YAAas9C,KAAM,aAAcioB,UAAWm0C,IACpD,CAAE15G,KAAM,eAAgBs9C,KAAM,cAAeioB,UAAWo0C,GAAkB1yG,KAAM,CAAE2yG,YAAY,IAC9F,CAAE55G,KAAM,2BACNs9C,KAAM,wDACNioB,UAAWwzC,GACXU,YAAaH,GAEf,CAAEt5G,KAAM,sBACNs9C,KAAM,oCACNioB,UAAWwzC,GACXU,YAAaH,GAEf,CAAEt5G,KAAM,wBAAyBs9C,KAAM,aAAcioB,UAAWgnC,IAChE,CAAEvsG,KAAM,eAAgBs9C,KAAM,gCAAiCioB,UAAWu6B,GAAc2Z,YAAaH,GACrG,CAAEt5G,KAAM,MAAOs9C,KAAM,uBAAwBioB,UAAW+6B,GAAKmZ,YAAaH,GAC1E,CAAEt5G,KAAM,eAAgBs9C,KAAM,gBAAiBioB,UAAWs0C,IAC1D,CAAE75G,KAAM,iBAAkBs9C,KAAM,kBAAmBioB,UAAWu0C,GAAenuF,OAAO,GACpF,CAAE3rB,KAAM,qBAAsBs9C,KAAM,uBAAwBioB,UAAWs0C,IACvE,CAAE75G,KAAM,kBAAmBs9C,KAAM,mBAAoBioB,UAAWitC,GAAgBiH,YAAaH,GAC7F,CAAEt5G,KAAM,gBAAiBs9C,KAAM,2BAA4BioB,UAAWg5B,GAAekb,YAAaH,GAClG,CAAEt5G,KAAM,QAASs9C,KAAM,SAAUioB,UAAWivC,IAC5C,CAAEx0G,KAAM,aAAcs9C,KAAM,cAAeioB,UAAWw0C,GAAWpuF,MAAO,iBAAO,CAAE4pF,UAAU,KAC3F,CAAEv1G,KAAM,iBAAkBs9C,KAAM,kBAAmBioB,UAAWy0C,GAAeruF,MAAO,SAACqrE,GAAD,MAAY,CAAExhF,KAAMwhF,EAAMvwE,MAAMjR,QACpH,CAAExV,KAAM,SAAUs9C,KAAM,UAAWioB,UAAWyoC,GAAQriF,MAAO,SAACqrE,GAAD,MAAY,CAAEvwE,MAAOuwE,EAAMvwE,MAAMA,SAC9F,CAAEzmB,KAAM,gBAAiBs9C,KAAM,iBAAkBioB,UAAWkwC,GAAagE,YAAaH,GACtF,CAAEt5G,KAAM,QAASs9C,KAAM,SAAUioB,UAAWgzC,IAC5C,CAAEv4G,KAAM,eAAgBs9C,KAAM,kBAAmBioB,UAAWgnC,KAU9D,OAPI3+E,EAAM7B,MAAMC,SAASyN,+BACvB8/E,EAASA,EAAO3xG,OAAO,CACrB,CAAE5H,KAAM,OAAQs9C,KAAM,uCAAwCioB,UAAWigC,GAAMv+F,KAAM,CAAE2yG,YAAY,GAASH,YAAaH,GACzH,CAAEt5G,KAAM,QAASs9C,KAAM,yBAA0BioB,UAAWg9B,GAAUt7F,KAAM,CAAE2yG,YAAY,GAASH,YAAaH,MAI7GC,gOC5ET,IAYeU,GAZG,CAChBjjF,wWAAUkjF,CAAA,CACRvK,SADM,WACQ,OAAO3hG,KAAKlD,OACvB0uB,YAAS,CAAE1uB,KAAM,SAAAihB,GAAK,OAAIA,EAAMzS,MAAM6hB,gBAE3CjP,WAAY,CACVsoF,YACA5/D,oBACAC,gBCLJ,IAEIslE,GAVJ,SAAoB3tF,GAClBpyB,EAAQ,MAyBKggH,GAVChhH,OAAAszB,GAAA,EAAAtzB,CACdihH,GCjBQ,WAAgB,IAAaxtF,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,cAAyB,CAAzGjf,KAAyG,SAAA+e,EAAA,OAA2BhsB,IAAA,aAAAksB,YAAA,iCAA6D,CAAAF,EAAA,YAAiBQ,MAAA,CAAOwsB,UAAzN/rC,KAAyNlD,KAAAhJ,GAAAs7B,YAAA,EAAAvC,QAAA,SAAzN7sB,KAAgRknB,GAAA,KAAAnI,EAAA,sBAAAA,EAAA,aAAuDhsB,IAAA,gBAAiB,IAC/V,IDOY,EAa7Bo5G,GATiB,KAEU,MAYG,qOEThChkF,KAAQC,IACN6/D,MACA3hD,KACAhE,KACA+D,KACAhe,KACAikF,KACAC,KACAtgF,KACAugF,KACAC,OAGF,IA+BeC,GA/BE,CACflmF,QADe,WAETxmB,KAAKmtB,aAAentB,KAAKmtB,YAAYr1B,QACvCkI,KAAK8d,OAAO+L,SAAS,gCAGzB3L,WAAY,CACViqE,wBAEF19F,KATe,WAUb,MAAO,CACLkiH,eAAe,IAGnBvuF,QAAS,CACPwuF,gBADO,WAEL5sG,KAAK2sG,eAAiB3sG,KAAK2sG,gBAG/B3jF,wWAAU6jF,CAAA,GACLrhF,YAAS,CACV2B,YAAa,SAAApP,GAAK,OAAIA,EAAMzS,MAAM6hB,aAClC2/E,mBAAoB,SAAA/uF,GAAK,OAAIA,EAAMwL,IAAI2uD,eAAejtF,QACtDo9F,YAAa,SAAAtqE,GAAK,OAAIA,EAAMC,SAAN,SACtBsqE,WAAY,SAAAvqE,GAAK,OAAIA,EAAMC,SAASsqE,YACpC78D,6BAA8B,SAAA1N,GAAK,OAAIA,EAAMC,SAASyN,gCANlD,GAQHsC,YAAW,CAAC,sBCjDnB,IAEIg/E,GAVJ,SAAoBvuF,GAClBpyB,EAAQ,MAyBK4gH,GAVC5hH,OAAAszB,GAAA,EAAAtzB,CACd6hH,GCjBQ,WAAgB,IAAAruF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,YAAuB,CAAAF,EAAA,OAAYE,YAAA,uBAAkC,CAAAF,EAAA,MAAAH,EAAAuO,cAAAvO,EAAAypE,YAAAtpE,EAAA,MAAAA,EAAA,UAAuEE,YAAA,4BAAA2H,GAAA,CAA4CI,MAAApI,EAAAguF,kBAA6B,CAAA7tF,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,YAAkCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,kCAAA7L,EAAA,UAAsEE,YAAA,oBAAAM,MAAA,CAAuC0kB,cAAA,GAAA9hB,KAAAvD,EAAA+tF,cAAA,gCAA2E,GAAA/tF,EAAAsI,GAAA,KAAAnI,EAAA,OAA4B2Q,WAAA,EAAa19B,KAAA,OAAA29B,QAAA,SAAAl9B,MAAAmsB,EAAA,cAAAgR,WAAA,kBAAkF3Q,YAAA,wBAAqC,CAAAF,EAAA,uBAA4BE,YAAA,eAAwB,KAAAL,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAAA,EAAA,eAA0EE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,eAAAgS,OAAA,CAAgC/C,SAAA2d,EAAAuO,YAAAn5B,gBAA4C,CAAA+qB,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,UAAgCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAA6M,6BAAA1M,EAAA,MAAAA,EAAA,eAAwKE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,QAAAgS,OAAA,CAAyB/C,SAAA2d,EAAAuO,YAAAn5B,gBAA4C,CAAA4qB,EAAA,gBAAAG,EAAA,OAAkCE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAsiE,iBAAA,kBAAAtiE,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAA0GE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,cAAoCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAAuO,YAAAr1B,OAAAinB,EAAA,MAAAA,EAAA,eAAuJE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,qBAA4B,CAAA+sB,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,eAAqCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAkuF,mBAAA,EAAA/tF,EAAA,QAAuGE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAkuF,oBAAA,kBAAAluF,EAAAuI,MAAA,OAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,MAAAA,EAAA,eAA4IE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,WAAkB,CAAA+sB,EAAA,UAAeE,YAAA,eAAAM,MAAA,CAAkC0kB,cAAA,GAAA9hB,KAAA,iBAAuCvD,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CACzvE,IDOY,EAa7BmiF,GATiB,KAEU,MAYG,6BEDhC,SAASrF,GAAgB12E,GACvB,IAAIntB,EAAcmtB,EAAMlT,OAAOC,MAAMzS,MAAM6hB,YAAYtpB,YACnDA,IACFmtB,EAAMk8E,cAAc39F,QAAQ,SAAA49F,GAC1BA,EAASn7G,KAAO,eAElByW,IAAWmN,YAAY,CAAE/R,YAAaA,IACnCpT,KAAK,SAACi8C,IA5Bb,SAA0B1b,EAAO0b,GAAO,IAAAnsC,EAAAP,KAChCotG,EAAWC,KAAQ3gE,GAEzB1b,EAAMk8E,cAAc39F,QAAQ,SAAC49F,EAAU9+D,GACrC,IAAIvxC,EAAOswG,EAAS/+D,GAChBoa,EAAM3rD,EAAK1H,QAAUmL,EAAKud,OAAOC,MAAMC,SAASH,cAChD7rB,EAAO8K,EAAK7I,KAEhBk5G,EAAS1kD,IAAMA,EACf0kD,EAASn7G,KAAOA,EAEhBg/B,EAAMlT,OAAOC,MAAMwL,IAAIC,kBAAkB7b,UAAU,CAAE7Z,GAAI9B,IACtDvB,KAAK,SAACm3G,GACAA,EAAaz2G,QAChB6/B,EAAMlT,OAAO2L,OAAO,cAAe,CAACm+E,IACpCuF,EAASr5G,GAAK8zG,EAAa9zG,QAc7B6zG,CAAgB32E,EAAO0b,MAK/B,IAuCe4gE,GAvCU,CACvB7iH,KAAM,iBAAO,CACXyiH,cAAe,KAEjBlkF,SAAU,CACRlsB,KAAM,WACJ,OAAOkD,KAAK8d,OAAOC,MAAMzS,MAAM6hB,YAAYn5B,aAE7CqxE,mBAJQ,WAKN,OAAOrlE,KAAK8d,OAAOC,MAAMC,SAASqnD,qBAGtCjnD,QAAS,CACPyQ,gBADO,SACU/6B,EAAI9B,GACnB,OAAOsrB,aAAoBxpB,EAAI9B,EAAMgO,KAAK8d,OAAOC,MAAMC,SAAST,uBAGpEgtB,MAAO,CACLztC,KAAM,SAAUA,EAAMywG,GAChBvtG,KAAKqlE,oBACPqiC,GAAe1nG,QAIrB88C,QACE,WAAY,IAAAnzB,EAAA3pB,KACVA,KAAKktG,cAAgB,IAAIj9E,MAAM,GAAGqgE,OAAOx7F,IAAI,SAAAwvB,GAAC,MAC5C,CACEmkC,IAAK9+B,EAAK7L,OAAOC,MAAMC,SAASH,cAChC7rB,KAAM,GACN8B,GAAI,KAGJkM,KAAKqlE,oBACPqiC,GAAe1nG,QChEvB,IAEIwtG,GAVJ,SAAoBhvF,GAClBpyB,EAAQ,MAyBKqhH,GAVCriH,OAAAszB,GAAA,EAAAtzB,CACdsiH,GCjBQ,WAAgB,IAAA9uF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,uBAAkC,CAAAF,EAAA,OAAYE,YAAA,yCAAoD,CAAAF,EAAA,OAAYE,YAAA,2DAAsE,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,gDAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA0GE,YAAA,iBAA4B,CAAAL,EAAAmjB,GAAAnjB,EAAA,uBAAA9hB,GAA4C,OAAAiiB,EAAA,KAAehsB,IAAA+J,EAAAhJ,GAAAmrB,YAAA,uBAA8C,CAAAF,EAAA,OAAYQ,MAAA,CAAOpvB,IAAA2M,EAAA2rD,OAAgB7pC,EAAAsI,GAAA,KAAAnI,EAAA,eAAgCQ,MAAA,CAAOuL,GAAAlM,EAAAiQ,gBAAA/xB,EAAAhJ,GAAAgJ,EAAA9K,QAA8C,CAAA4sB,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA7tB,EAAA9K,MAAA,gBAAA+sB,EAAA,YAAuEH,EAAAsI,GAAA,KAAAnI,EAAA,KAAsBE,YAAA,sBAAiC,CAAAF,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,mBAA0B,CAAA4sB,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oDAC30B,IDOY,EAa7B4iF,GATiB,KAEU,MAYG,QEbhCG,GAAA,CACAhwF,MAAA,CACA+qE,OAAA,CACA74F,KAAAoO,QACAypB,SAAA,GAEAkmF,aAAA,CACA/9G,KAAAoO,QACAypB,SAAA,IAGAsB,SAAA,CACA2D,QADA,WAEA,OACAkhF,oBAAA7tG,KAAA4tG,aACAh/E,KAAA5uB,KAAA0oF,WCnBA,IAEIolB,GAXJ,SAAoBtvF,GAClBpyB,EAAQ,MA0BK2hH,GAVC3iH,OAAAszB,GAAA,EAAAtzB,CACduiH,GClBQ,WAAgB,IAAA/uF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAAkD,OAAxBF,EAAAI,MAAAD,IAAAF,GAAwB,OAAiB6Q,WAAA,EAAa19B,KAAA,OAAA29B,QAAA,SAAAl9B,MAAAmsB,EAAA,OAAAgR,WAAA,UAAoE,CAAE59B,KAAA,mBAAA29B,QAAA,qBAAAl9B,MAAAmsB,EAAA8pE,SAAA9pE,EAAAgvF,aAAAh+E,WAAA,4BAAkI3Q,YAAA,aAAAC,MAAAN,EAAA+N,QAAA/F,GAAA,CAAiDI,MAAA,SAAAgB,GAAyB,OAAAA,EAAA93B,SAAA83B,EAAAC,cAA2C,KAAerJ,EAAAoH,MAAA,sBAAsC,CAAApH,EAAAqI,GAAA,gBACtd,IDQY,EAa7B6mF,GATiB,KAEU,MAYG,QEVhChf,GAAA,EAAA1mE,IACA2mE,GAAA,GCTA,IAEIif,GAXJ,SAAoBxvF,GAClBpyB,EAAQ,MCQV,IAEI6hH,GAXJ,SAAoBzvF,GAClBpyB,EAAQ,mOC8BK8hH,ICUAC,GApCO,CACpBjwF,WAAY,CACVkwF,SACAC,qBDCJ,SAAsCC,EAAgBryG,GACpD,IAAMsyG,EAAwB,kBAAM,iXAAAC,CAAA,CAClCj3C,UAAW+2C,KACRryG,KAGCwyG,EAAUn3C,IAAIo3C,WAAW,CAAE58G,EAAGy8G,MAEpC,MAAO,CACLI,YAAY,EACZp2C,OAFK,SAEG3oE,EAFHwR,GAEsC,IAAlB3W,EAAkB2W,EAAlB3W,KAAMi5B,EAAYtiB,EAAZsiB,SAO7B,OALAj5B,EAAKm8B,GAAK,GACVn8B,EAAKm8B,GAAGgoF,oBAAsB,WAC5BH,EAAQ38G,EAAIy8G,KAGP3+G,EAAc6+G,EAAQ38G,EAAGrH,EAAMi5B,KClBlBwqF,CACpB,kBAAMlhH,QAAA4E,IAAA,CAAAxF,EAAAQ,EAAA,GAAAR,EAAAQ,EAAA,KAAA6D,KAAArE,EAAA4G,KAAA,YACN,CACEu6C,QHMQniD,OAAAszB,GAAA,EAAAtzB,CDIhB,GKrBU,WAAgB,IAAayzB,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,iBAA4B,CAAAF,EAAA,QAAaE,YAAA,gBAA2B,CAAAF,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,eAAAyd,KAAA,GAAApQ,KAAA,QAA1KxvB,KAAuNknB,GAAA,SAAvNlnB,KAAuN2qB,GAAvN3qB,KAAuN4qB,GAAA,mCAC9N,IJQY,EAa7BojF,GATiB,KAEU,MAYG,QGfxB78G,MFKQ/F,OAAAszB,GAAA,EAAAtzB,CIGhB,CACAgzB,QAAA,CACAywF,MADA,WAEA7uG,KAAAgmB,MAAA,0BCvBU,WAAgB,IAAApH,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,yBAAoC,CAAAF,EAAA,OAAAA,EAAA,MAAAH,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAAAH,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4ME,YAAA,qBAAA2H,GAAA,CAAqCI,MAAApI,EAAAiwF,QAAmB,CAAAjwF,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAC/X,ILQY,EAa7BqjF,GATiB,KAEU,MAYG,QEdxBa,MAAO,KAIb1wF,QAAS,CACP2wF,WADO,WAEL/uG,KAAK8d,OAAO+L,SAAS,uBAEvBmlF,UAJO,WAKLhvG,KAAK8d,OAAO+L,SAAS,6BAGzBb,SAAU,CACRm5C,uBADQ,WAEN,OAAOniE,KAAK8d,OAAOC,MAAZ,UAA4BhG,SAASoqD,wBAE9C2a,eAJQ,WAKN,MAA0D,WAAnD98E,KAAK8d,OAAOC,MAAZ,UAA4Bm6C,oBAErC+2C,gBAPQ,WAQN,OAAOjvG,KAAK8d,OAAOC,MAAZ,UAA4BkkD,qBAErCitC,YAVQ,WAWN,MAA0D,cAAnDlvG,KAAK8d,OAAOC,MAAZ,UAA4Bm6C,sBI5BzC,IAEIi3C,GAVJ,SAAoB3wF,GAClBpyB,EAAQ,MAyBKgjH,GAVChkH,OAAAszB,GAAA,EAAAtzB,CACdikH,GCjBQ,WAAgB,IAAAzwF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,SAAmBE,YAAA,iBAAAC,MAAA,CAAoCowF,KAAA1wF,EAAAswF,aAAwB3vF,MAAA,CAAQgwF,UAAA3wF,EAAAk+D,eAAA0yB,gBAAA5wF,EAAAswF,cAA8D,CAAAnwF,EAAA,OAAYE,YAAA,8BAAyC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,cAAqGQ,MAAA,CAAOvtB,KAAA,SAAe,CAAA4sB,EAAA,wBAAAA,EAAAujD,uBAAA,MAAApjD,EAAA,OAA6EE,YAAA,cAAA2H,GAAA,CAA8BI,MAAA,SAAAgB,GAAyBA,EAAAsI,oBAA2B,CAAA1R,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAujD,uBAAAhxE,MAA6OytB,EAAAuI,KAA7OpI,EAAA,OAAqJE,YAAA,oBAAA2H,GAAA,CAAoCI,MAAA,SAAAgB,GAAyBA,EAAAsI,oBAA2B,CAAA1R,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAAiIE,YAAA,qBAAA2H,GAAA,CAAqCI,MAAApI,EAAAowF,YAAuB,CAAApwF,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,+BAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,UAA4FE,YAAA,qBAAA2H,GAAA,CAAqCI,MAAApI,EAAAmwF,aAAwB,CAAAnwF,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,OAA8FE,YAAA,cAAyB,CAAAL,EAAA,gBAAAG,EAAA,wBAAAH,EAAAuI,MAAA,QAC7yC,IDOY,EAa7BgoF,GATiB,KAEU,MAYG,2BElB1BM,GAAkB,SAAA7iH,GAAC,MAAK,CAACA,EAAE8iH,QAAQ,GAAGC,QAAS/iH,EAAE8iH,QAAQ,GAAGE,UAE5DC,GAAe,SAAAphF,GAAC,OAAI9T,KAAKm1F,KAAKrhF,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,KAIrDshF,GAAa,SAACC,EAAIC,GAAL,OAAYD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,IAEpDC,GAAU,SAACF,EAAIC,GACnB,IAAME,EAAUJ,GAAWC,EAAIC,GAAMF,GAAWE,EAAIA,GACpD,MAAO,CAACE,EAASF,EAAG,GAAIE,EAASF,EAAG,KAuDvBG,GAVQ,CACrBC,eA/DqB,EAAE,EAAG,GAgE1BC,gBA/DsB,CAAC,EAAG,GAgE1BC,aA/DmB,CAAC,GAAI,GAgExBC,eA/DqB,CAAC,EAAG,GAgEzBC,aAzCmB,SAACC,EAAWC,GAC/B,MAAO,CACLD,YACAC,UACAC,UAJuFryG,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAArC,GAKlDsyG,uBALuFtyG,UAAAtT,OAAA,QAAAwG,IAAA8M,UAAA,GAAAA,UAAA,GAAR,EAM/EuyG,UAAW,CAAC,EAAG,GACfC,UAAU,IAmCZC,WA/BiB,SAAChhH,EAAOihH,GACzBA,EAAQH,UAAYrB,GAAgBz/G,GACpCihH,EAAQF,UAAW,GA8BnBG,YA3BkB,SAAClhH,EAAOihH,GAC1B,GAAKA,EAAQF,SAAb,CAEA,IAxCkBI,EAAUC,EAwCtBC,GAxCYF,EAwCOF,EAAQH,UAxCQ,EAAbM,EAwCgB3B,GAAgBz/G,IAxCT,GAAKmhH,EAAS,GAAIC,EAAS,GAAKD,EAAS,KAyC5F,KAAItB,GAAawB,GAASJ,EAAQL,WAE9Bb,GAAWsB,EAAOJ,EAAQP,WAAa,GAA3C,CAEA,IAvCoBjiF,EAuCd6iF,EAAapB,GAAQmB,EAAOJ,EAAQP,WACpCa,EAxCmB,EAAL9iF,EAwCmBwiF,EAAQP,WAxCnB,IAAKjiF,EAAE,IAyC7B+iF,EAAuBtB,GAAQmB,EAAOE,GAE1C1B,GAAayB,GAAcL,EAAQJ,uBACnChB,GAAa2B,KAGfP,EAAQN,UACRM,EAAQF,UAAW,OCjDrB5oF,KAAQC,IACNsrE,KACA+d,MAGF,IA2FeC,GA3FI,CACjBxzF,WAAY,CACVC,gBACAyqC,qBACAwlD,UAEFplF,SAAU,CACR2oF,QADQ,WAEN,OAAO3xG,KAAK8d,OAAOC,MAAMm+D,YAAYE,WAEvCryE,MAJQ,WAKN,OAAO/J,KAAK8d,OAAOC,MAAMm+D,YAAYnyE,OAEvCoyE,aAPQ,WAQN,OAAOn8E,KAAK8d,OAAOC,MAAMm+D,YAAYC,cAEvCy1B,aAVQ,WAWN,OAAO5xG,KAAK+J,MAAM/J,KAAKm8E,eAEzB01B,YAbQ,WAcN,OAAO7xG,KAAK+J,MAAM9e,OAAS,GAE7B4E,KAhBQ,WAiBN,OAAOmQ,KAAK4xG,aAAetqF,KAAgBD,SAASrnB,KAAK4xG,aAAa74G,UAAY,OAGtFytB,QA1BiB,WA2BfxmB,KAAK8xG,uBAAyB1B,GAAeK,aAC3CL,GAAeE,gBACftwG,KAAK+xG,OACL,IAEF/xG,KAAKgyG,sBAAwB5B,GAAeK,aAC1CL,GAAeC,eACfrwG,KAAKiyG,OACL,KAGJ7zF,QAAS,CACP8zF,gBADO,SACUtlH,GACfwjH,GAAeY,WAAWpkH,EAAGoT,KAAK8xG,wBAClC1B,GAAeY,WAAWpkH,EAAGoT,KAAKgyG,wBAEpCG,eALO,SAKSvlH,GACdwjH,GAAec,YAAYtkH,EAAGoT,KAAK8xG,wBACnC1B,GAAec,YAAYtkH,EAAGoT,KAAKgyG,wBAErCnxC,KATO,WAUL7gE,KAAK8d,OAAO+L,SAAS,qBAEvBkoF,OAZO,WAaL,GAAI/xG,KAAK6xG,YAAa,CACpB,IAAMO,EAAkC,IAAtBpyG,KAAKm8E,aAAqBn8E,KAAK+J,MAAM9e,OAAS,EAAK+U,KAAKm8E,aAAe,EACzFn8E,KAAK8d,OAAO+L,SAAS,aAAc7pB,KAAK+J,MAAMqoG,MAGlDH,OAlBO,WAmBL,GAAIjyG,KAAK6xG,YAAa,CACpB,IAAMQ,EAAYryG,KAAKm8E,eAAiBn8E,KAAK+J,MAAM9e,OAAS,EAAI,EAAK+U,KAAKm8E,aAAe,EACzFn8E,KAAK8d,OAAO+L,SAAS,aAAc7pB,KAAK+J,MAAMsoG,MAGlDC,iBAxBO,SAwBW1lH,GACZoT,KAAK2xG,SAAyB,KAAd/kH,EAAEyvD,SACpBr8C,KAAK6gE,QAGT0xC,mBA7BO,SA6Ba3lH,GACboT,KAAK2xG,UAIQ,KAAd/kH,EAAEyvD,QACJr8C,KAAKiyG,SACkB,KAAdrlH,EAAEyvD,SACXr8C,KAAK+xG,YAIXj1D,QA/EiB,WAgFfvpD,OAAO0T,iBAAiB,WAAYjH,KAAK6gE,MACzCzxE,SAAS6X,iBAAiB,QAASjH,KAAKsyG,kBACxCljH,SAAS6X,iBAAiB,UAAWjH,KAAKuyG,qBAE5C9rF,UApFiB,WAqFflzB,OAAOmzB,oBAAoB,WAAY1mB,KAAK6gE,MAC5CzxE,SAASs3B,oBAAoB,QAAS1mB,KAAKsyG,kBAC3CljH,SAASs3B,oBAAoB,UAAW1mB,KAAKuyG,sBC/FjD,IAEIC,GAVJ,SAAoBh0F,GAClBpyB,EAAQ,MAyBKqmH,GAVCrnH,OAAAszB,GAAA,EAAAtzB,CACdsnH,GCjBQ,WAAgB,IAAA9zF,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,QAAAG,EAAA,SAAiCE,YAAA,mBAAA2H,GAAA,CAAmC+rF,gBAAA/zF,EAAAiiD,OAA4B,WAAAjiD,EAAA/uB,KAAAkvB,EAAA,OAAmCE,YAAA,cAAAM,MAAA,CAAiCpvB,IAAAyuB,EAAAgzF,aAAAz9G,IAAAqrB,IAAAZ,EAAAgzF,aAAAn9G,YAAA2H,MAAAwiB,EAAAgzF,aAAAn9G,aAAmGmyB,GAAA,CAAKohC,WAAA,SAAAhgC,GAAuD,OAAzBA,EAAAE,kBAAyBtJ,EAAAszF,gBAAAlqF,IAAmC4qF,UAAA,SAAA5qF,GAAuD,OAAzBA,EAAAE,kBAAyBtJ,EAAAuzF,eAAAnqF,IAAkChB,MAAApI,EAAAiiD,QAAmBjiD,EAAAuI,KAAAvI,EAAAsI,GAAA,eAAAtI,EAAA/uB,KAAAkvB,EAAA,mBAAoEE,YAAA,cAAAM,MAAA,CAAiC9f,WAAAmf,EAAAgzF,aAAA1nD,UAAA,KAA+CtrC,EAAAuI,KAAAvI,EAAAsI,GAAA,eAAAtI,EAAA/uB,KAAAkvB,EAAA,SAA0DE,YAAA,cAAAM,MAAA,CAAiCpvB,IAAAyuB,EAAAgzF,aAAAz9G,IAAAqrB,IAAAZ,EAAAgzF,aAAAn9G,YAAA2H,MAAAwiB,EAAAgzF,aAAAn9G,YAAAy1D,SAAA,MAAkHtrC,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAAsDE,YAAA,wDAAAM,MAAA,CAA2EnjB,MAAAwiB,EAAAgM,GAAA,yBAAuChE,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAmzF,OAAA/pF,MAA4B,CAAAjJ,EAAA,UAAeE,YAAA,aAAAM,MAAA,CAAgC4C,KAAA,mBAAuB,GAAAvD,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAA0DE,YAAA,wDAAAM,MAAA,CAA2EnjB,MAAAwiB,EAAAgM,GAAA,qBAAmChE,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAqzF,OAAAjqF,MAA4B,CAAAjJ,EAAA,UAAeE,YAAA,aAAAM,MAAA,CAAgC4C,KAAA,oBAAwB,GAAAvD,EAAAuI,MAAA,GAAAvI,EAAAuI,MAC5iD,IDOY,EAa7BqrF,GATiB,KAEU,MAYG,qOEPhCrqF,KAAQC,IACNyqF,KACAC,KACA5qB,KACAqkB,KACAtgF,KACAiiE,MACA4Y,KACArT,KACAsf,MACA3oB,KACAoiB,MAGF,IA6EewG,GA7EI,CACjBr1F,MAAO,CAAE,UACTlzB,KAAM,iBAAO,CACXwoH,QAAQ,EACRC,kBAAczhH,IAEhB+0B,QANiB,WAOfxmB,KAAKkzG,aAAe9C,GAAeK,aAAaL,GAAeC,eAAgBrwG,KAAKmzG,cAEhFnzG,KAAKmtB,aAAentB,KAAKmtB,YAAYr1B,QACvCkI,KAAK8d,OAAO+L,SAAS,gCAGzB3L,WAAY,CAAE2oB,eACd7d,wWAAUoqF,CAAA,CACRjmF,YADM,WAEJ,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjCluB,KAJM,WAII,MAAgD,WAAzCe,KAAK8d,OAAOC,MAAM9e,KAAKo7E,QAAQt8D,OAChD+yE,oBALM,WAMJ,OAAO/uE,YAA6B/hB,KAAK8d,SAE3Cu1F,yBARM,WASJ,OAAOrzG,KAAK8wF,oBAAoB7lG,QAElCo6E,mBAXM,WAYJ,OAAOrlE,KAAK8d,OAAOC,MAAMC,SAASqnD,oBAEpCf,KAdM,WAeJ,OAAOtkE,KAAK8d,OAAOC,MAAMC,SAASsmD,MAEpCF,aAjBM,WAkBJ,OAAOpkE,KAAK8d,OAAOC,MAAMC,SAASomD,cAEpCkvC,SApBM,WAqBJ,OAAOtzG,KAAK8d,OAAOC,MAAMC,SAAShsB,MAEpC86G,mBAvBM,WAwBJ,OAAO9sG,KAAK8d,OAAOC,MAAMwL,IAAI2uD,eAAejtF,QAE9Co9F,YA1BM,WA2BJ,OAAOroF,KAAK8d,OAAOC,MAAMC,SAAlB,SAETsqE,WA7BM,WA8BJ,OAAOtoF,KAAK8d,OAAOC,MAAMC,SAASsqE,YAEpCirB,eAhCM,WAiCJ,OAAIvzG,KAAK8d,OAAOC,MAAZ,UAA4B2kD,aACvB1iE,KAAK8d,OAAOC,MAAZ,UAA4B2kD,aAE9B1iE,KAAKmtB,YAAc,UAAY,oBAErC3B,YAAS,CACVC,6BAA8B,SAAA1N,GAAK,OAAIA,EAAMC,SAASyN,gCAvClD,GAyCHsC,YAAW,CAAC,qBAEjB3P,QAAS,CACP+0F,aADO,WAELnzG,KAAKizG,QAAUjzG,KAAKizG,QAEtBO,SAJO,WAKLxzG,KAAKo3E,SACLp3E,KAAKmzG,gBAEPM,WARO,SAQK7mH,GACVwjH,GAAeY,WAAWpkH,EAAGoT,KAAKkzG,eAEpCQ,UAXO,SAWI9mH,GACTwjH,GAAec,YAAYtkH,EAAGoT,KAAKkzG,eAErChwC,kBAdO,WAeLljE,KAAK8d,OAAO+L,SAAS,wBCjG3B,IAEI8pF,GAVJ,SAAoBn1F,GAClBpyB,EAAQ,MAyBKwnH,GAVCxoH,OAAAszB,GAAA,EAAAtzB,CACdyoH,GCjBQ,WAAgB,IAAAj1F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,wBAAAC,MAAA,CAA2C40F,+BAAAl1F,EAAAq0F,OAAAc,8BAAAn1F,EAAAq0F,SAAyF,CAAAl0F,EAAA,OAAYE,YAAA,qBAAAC,MAAA,CAAwC80F,4BAAAp1F,EAAAq0F,UAA0Cr0F,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,cAAAC,MAAA,CAAiC+0F,qBAAAr1F,EAAAq0F,QAAiCrsF,GAAA,CAAKohC,WAAAppC,EAAA60F,WAAAb,UAAAh0F,EAAA80F,YAAuD,CAAA30F,EAAA,OAAYE,YAAA,sBAAA2H,GAAA,CAAsCI,MAAApI,EAAAu0F,eAA0B,CAAAv0F,EAAA,YAAAG,EAAA,YAAmCQ,MAAA,CAAOwsB,UAAAntB,EAAAuO,YAAAr5B,GAAAs7B,YAAA,KAA8CrQ,EAAA,OAAYE,YAAA,4BAAuC,CAAAF,EAAA,OAAYQ,MAAA,CAAOpvB,IAAAyuB,EAAA0lD,QAAgB1lD,EAAAsI,GAAA,KAAAtI,EAAAwlD,aAAAxlD,EAAAuI,KAAApI,EAAA,QAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAA00F,gBAAA,GAAA10F,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAuO,YAAoUvO,EAAAuI,KAApUpI,EAAA,MAA4I6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,WAAkB,CAAA+sB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,iBAAuCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,sCAAAhM,EAAAsI,GAAA,KAAAtI,EAAAuO,cAAAvO,EAAAypE,YAAAtpE,EAAA,MAAqI6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA4sB,EAAA20F,kBAA6B,CAAAx0F,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,UAAgCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAA6M,6BAAA1M,EAAA,MAAuJ6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBstB,YAAA,CAAa7N,SAAA,YAAsBjf,MAAA,CAAQuL,GAAA,CAAM94B,KAAA,QAAAgS,OAAA,CAAyB/C,SAAA2d,EAAAuO,YAAAn5B,gBAA4C,CAAA+qB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,cAAoCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8BAAAhM,EAAA,gBAAAG,EAAA,QAA0FE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAsiE,iBAAA,kBAAAtiE,EAAAuI,MAAA,OAAAvI,EAAAuI,OAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAAA,EAAA,MAAoJ6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,eAAAgS,OAAA,CAAgC/C,SAAA2d,EAAAuO,YAAAn5B,gBAA4C,CAAA+qB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,UAAgCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAsI,GAAA,KAAAtI,EAAAuO,YAAA,OAAApO,EAAA,MAAoH6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,qBAAyB,CAAA/L,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,eAAqCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wCAAAhM,EAAAkuF,mBAAA,EAAA/tF,EAAA,QAA2GE,YAAA,4BAAuC,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAkuF,oBAAA,kBAAAluF,EAAAuI,MAAA,OAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,KAAAG,EAAA,MAAqI6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,gBAAuB,CAAA+sB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,cAAoCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,yCAAAhM,EAAAuI,OAAAvI,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,MAAAH,EAAAuO,cAAAvO,EAAAypE,YAAAtpE,EAAA,MAA4J6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,YAAmB,CAAA+sB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,YAAkCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAAymD,mBAAAtmD,EAAA,MAA0I6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,mBAA0B,CAAA+sB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,eAAqCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,MAAqG6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,UAAeE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAApI,EAAAskD,oBAA+B,CAAAnkD,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,SAA+BvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,MAA0F6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,eAAoBQ,MAAA,CAAOuL,GAAA,CAAM94B,KAAA,WAAiB,CAAA+sB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,iBAAuCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,oCAAAhM,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAA,UAAAvO,EAAAuO,YAAAx2B,KAAAooB,EAAA,MAA0I6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,KAAUQ,MAAA,CAAOpyB,KAAA,iCAAA+C,OAAA,WAA2D,CAAA6uB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,oBAA0CvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,2CAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,MAAsH6H,GAAA,CAAII,MAAApI,EAAAu0F,eAA0B,CAAAp0F,EAAA,UAAeE,YAAA,mCAAA2H,GAAA,CAAmDI,MAAApI,EAAA40F,WAAsB,CAAAz0F,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,kBAAwCvD,EAAAsI,GAAA,IAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,qCAAAhM,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAAmGE,YAAA,4BAAAC,MAAA,CAA+Cg1F,mCAAAt1F,EAAAq0F,QAA+CrsF,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAu0F,aAAAnrF,UAC3pK,IDOY,EAa7B2rF,GATiB,KAEU,MAYG,QEpBhCxrF,KAAQC,IACN+rF,MAGF,IAAMC,GAAmB,IAAIpuG,IAAI,CAC/B,QACA,SA+FaquG,GA5FgB,CAC7B5pH,KAD6B,WAE3B,MAAO,CACLo4B,QAAQ,EACRyxF,eAAe,EACfC,aAAa,EACbC,aAAc,EACdC,eAAgB,IAGpBjuF,QAV6B,WAWvBxmB,KAAKwwD,4BACPxwD,KAAK00G,qCAEPnhH,OAAO0T,iBAAiB,SAAUjH,KAAK20G,YAEzCluF,UAhB6B,WAiBvBzmB,KAAKwwD,4BACPxwD,KAAK40G,uCAEPrhH,OAAOmzB,oBAAoB,SAAU1mB,KAAK20G,YAE5C3rF,SAAU,CACR6rF,WADQ,WAEN,QAAS70G,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEnC2nF,SAJQ,WAKN,QAAIV,GAAiBvsG,IAAI7H,KAAKkqB,OAAOl4B,OAE9BgO,KAAKwwD,6BAA+BxwD,KAAK6iB,QAAU7iB,KAAKu0G,cAEjE/jD,2BATQ,WAUN,QAASxwD,KAAK8d,OAAO2O,QAAQtL,aAAaqvC,6BAG9CjmB,MAAO,CACLimB,2BAA4B,SAAU+gB,GAChCA,EACFvxE,KAAK00G,qCAEL10G,KAAK40G,yCAIXx2F,QAAS,CACPs2F,mCADO,WAELnhH,OAAO0T,iBAAiB,SAAUjH,KAAK+0G,mBACvCxhH,OAAO0T,iBAAiB,SAAUjH,KAAKg1G,kBAEzCJ,qCALO,WAMLrhH,OAAOmzB,oBAAoB,SAAU1mB,KAAK+0G,mBAC1CxhH,OAAOmzB,oBAAoB,SAAU1mB,KAAKg1G,kBAE5CC,aATO,WAULj1G,KAAK8d,OAAO+L,SAAS,wBAEvB8qF,UAZO,WAqBL,IAAMO,EAAa3hH,OAAOoxB,WAAa,IACjCwwF,EAAmBD,GAAc3hH,OAAOuxB,YAAc,IAGtDswF,GADeF,GAAc3hH,OAAOoxB,WAAa,KACdpxB,OAAOuxB,YAAc,IAE5D9kB,KAAKu0G,eADHY,IAAoBC,IAM1BL,kBAAmBrzD,KAAS,WACtBnuD,OAAOkwD,QAAUzjD,KAAKw0G,aACxBx0G,KAAK6iB,QAAS,EAEd7iB,KAAK6iB,QAAS,EAEhB7iB,KAAKw0G,aAAejhH,OAAOkwD,SAC1B,IAAK,CAAE4xD,SAAS,EAAMC,UAAU,IAEnCN,gBAAiBtzD,KAAS,WACxB1hD,KAAK6iB,QAAS,EACd7iB,KAAKw0G,aAAejhH,OAAOkwD,SAC1B,IAAK,CAAE4xD,SAAS,EAAOC,UAAU,MC/FxC,IAEIC,GAVJ,SAAoB/2F,GAClBpyB,EAAQ,MAyBKopH,GAVCpqH,OAAAszB,GAAA,EAAAtzB,CACdqqH,GCjBQ,WAAgB,IAAa52F,EAAb7e,KAAa8e,eAA0BC,EAAvC/e,KAAuCgf,MAAAD,IAAAF,EAAwB,OAA/D7e,KAA+D,WAAA+e,EAAA,OAAAA,EAAA,UAA+CE,YAAA,mCAAAC,MAAA,CAAsD2D,OAApK7iB,KAAoK80G,UAAyBluF,GAAA,CAAKI,MAAlMhnB,KAAkMi1G,eAA0B,CAAAl2F,EAAA,UAAeQ,MAAA,CAAO4C,KAAA,UAAc,KAAhQniB,KAAgQmnB,MACvQ,IDOY,EAa7BouF,GATiB,KAEU,MAYG,qOEdhCptF,KAAQC,IACNqe,MACAxa,KACAypF,MAGF,IA+EeC,GA/EG,CAChBz3F,WAAY,CACV80F,cACAziB,kBAEF9lG,KAAM,iBAAO,CACXmrH,+BAA2BnkH,EAC3BokH,mBAAmB,IAErBrvF,QATgB,WAUdxmB,KAAK41G,0BAA4BxF,GAAeK,aAC9CL,GAAeE,gBACftwG,KAAK81G,yBACL,KAGJ9sF,wWAAU+sF,CAAA,CACR5oF,YADM,WAEJ,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEjC2jE,oBAJM,WAKJ,OAAO/uE,YAA6B/hB,KAAK8d,SAE3Cu1F,yBAPM,WAQJ,OAAOrzG,KAAK8wF,oBAAoB7lG,QAElCm5E,aAVM,WAUY,OAAOpkE,KAAK8d,OAAOC,MAAMC,SAASomD,cACpDkvC,SAXM,WAWQ,OAAOtzG,KAAK8d,OAAOC,MAAMC,SAAShsB,MAChDgkH,OAZM,WAaJ,MAA4B,SAArBh2G,KAAKkqB,OAAOl4B,OAElB+7B,YAAW,CAAC,qBAEjB3P,QAAS,CACP63F,oBADO,WAELj2G,KAAKyjB,MAAMyyF,WAAW/C,gBAExBgD,wBAJO,WAKLn2G,KAAK61G,mBAAoB,GAE3BC,yBAPO,WAQD91G,KAAK61G,oBAGP71G,KAAK61G,mBAAoB,EACzB71G,KAAK8V,4BAGTsgG,wBAfO,SAekBxpH,GACvBwjH,GAAeY,WAAWpkH,EAAGoT,KAAK41G,4BAEpCS,uBAlBO,SAkBiBzpH,GACtBwjH,GAAec,YAAYtkH,EAAGoT,KAAK41G,4BAErCU,YArBO,WAsBL/iH,OAAOgmG,SAAS,EAAG,IAErBniB,OAxBO,WAyBLp3E,KAAKsrB,QAAQp2B,QAAQ,gBACrB8K,KAAK8d,OAAO+L,SAAS,WAEvB/T,wBA5BO,WA6BL9V,KAAKyjB,MAAM5Z,cAAcsnF,cAE3B31B,SA/BO,SAAAp6D,GA+B0D,IAAAm1G,EAAAn1G,EAArDlR,OAAqDqmH,EAA3C7yD,UAA2C6yD,EAAhCvyF,cAAgCuyF,EAAlBzyD,cAE3C9jD,KAAKyjB,MAAM5Z,cAAcunF,4BAI/B7mD,MAAO,CACLrgB,OADK,WAIHlqB,KAAK81G,8BCpFX,IAEIU,GAVJ,SAAoBh4F,GAClBpyB,EAAQ,MAyBKqqH,GAVCrrH,OAAAszB,GAAA,EAAAtzB,CACdsrH,GCjBQ,WAAgB,IAAA93F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,aAAwB,CAAAF,EAAA,OAAYE,YAAA,aAAAC,MAAA,CAAgCy3F,gBAAA/3F,EAAAo3F,QAA8Bz2F,MAAA,CAAQzrB,GAAA,OAAW8yB,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA03F,iBAA2B,CAAAv3F,EAAA,OAAYE,YAAA,QAAmB,CAAAF,EAAA,UAAeE,YAAA,oCAAA2H,GAAA,CAAoDI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAq3F,yBAAmC,CAAAl3F,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,UAAevD,EAAAsI,GAAA,KAAAtI,EAAA,gBAAAG,EAAA,OAA8CE,YAAA,cAAwBL,EAAAuI,MAAA,GAAAvI,EAAAsI,GAAA,KAAAtI,EAAAwlD,aAA6IxlD,EAAAuI,KAA7IpI,EAAA,eAAiEE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,QAAe4kH,eAAA,SAAwB,CAAAh4F,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAA00F,UAAA,kBAAA10F,EAAAsI,GAAA,KAAAnI,EAAA,OAA4FE,YAAA,cAAyB,CAAAL,EAAA,YAAAG,EAAA,UAAiCE,YAAA,oCAAA2H,GAAA,CAAoDI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAu3F,6BAAuC,CAAAp3F,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,UAAevD,EAAAsI,GAAA,KAAAtI,EAAA,yBAAAG,EAAA,OAAuDE,YAAA,cAAwBL,EAAAuI,MAAA,GAAAvI,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,OAAoEE,YAAA,8BAAAC,MAAA,CAAiD+zF,QAAAr0F,EAAAi3F,mBAAmCjvF,GAAA,CAAKohC,WAAA,SAAAhgC,GAAuD,OAAzBA,EAAAE,kBAAyBtJ,EAAAw3F,wBAAApuF,IAA2C4qF,UAAA,SAAA5qF,GAAuD,OAAzBA,EAAAE,kBAAyBtJ,EAAAy3F,uBAAAruF,MAA4C,CAAAjJ,EAAA,OAAYE,YAAA,+BAA0C,CAAAF,EAAA,QAAaE,YAAA,SAAoB,CAAAL,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,KAA8EE,YAAA,oBAAA2H,GAAA,CAAoCI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAE,kBAAyBF,EAAAsI,iBAAwB1R,EAAAk3F,8BAAwC,CAAA/2F,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,YAAgB,KAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,OAA8BE,YAAA,uBAAA2H,GAAA,CAAuC69B,OAAA7lC,EAAA48C,WAAuB,CAAAz8C,EAAA,iBAAsBgI,IAAA,gBAAAxH,MAAA,CAA2BotB,cAAA,MAAmB,KAAA/tB,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,cAA8CgI,IAAA,aAAAxH,MAAA,CAAwB63D,OAAAx4D,EAAAw4D,WAAqB,IACvrE,IDOY,EAa7Bo/B,GATiB,KAEU,MAYG,QEpBhCruF,KAAQC,IACNqe,MACAgtD,MAGF,IA8BeojB,GA9BG,CAChBpsH,KAAM,iBAAO,CACXw1G,gBAAYxuG,EACZoxB,QAAQ,EACR1xB,OAAO,IAETo5C,MAAO,CACLrgB,OAAU,SAAU8+D,GACC,WAAfA,EAAMh3F,OACRgO,KAAKigG,WAAajX,EAAMvwE,MAAMA,SAIpC2F,QAAS,CACP+hB,KADO,SACD8/D,GACJjgG,KAAKsrB,QAAQngC,KAAK,CAAE6G,KAAM,SAAUymB,MAAO,CAAEA,MAAOwnF,KACpDjgG,KAAKyjB,MAAM48E,YAAY9/D,SAEzBipB,aALO,WAKS,IAAAjpD,EAAAP,KACdA,KAAK6iB,QAAU7iB,KAAK6iB,OACpB7iB,KAAKgmB,MAAM,UAAWhmB,KAAK6iB,QAC3B7iB,KAAK+lB,UAAU,WACRxlB,EAAKsiB,QACRtiB,EAAKkjB,MAAM48E,YAAY9/D,aC1BjC,IAEIu2E,GAVJ,SAAoBt4F,GAClBpyB,EAAQ,MAyBK2qH,GAVC3rH,OAAAszB,GAAA,EAAAtzB,CACd4rH,GCjBQ,WAAgB,IAAAp4F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,YAAAC,MAAA,CAA+BsoE,aAAA5oE,EAAAiE,SAA4B,CAAAjE,EAAA,OAAAG,EAAA,UAA4BE,YAAA,2BAAAM,MAAA,CAA8CnjB,MAAAwiB,EAAAgM,GAAA,cAAA/6B,KAAA,UAA6C+2B,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAsI,iBAAwBtI,EAAAE,kBAAyBtJ,EAAA4qC,aAAAxhC,MAAkC,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,aAAkC,IAAApD,EAAA,SAAmB2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,WAAAgR,WAAA,eAA8E7I,IAAA,cAAA9H,YAAA,mBAAAM,MAAA,CAA0DzrB,GAAA,mBAAAguC,YAAAljB,EAAAgM,GAAA,cAAA/6B,KAAA,QAAyEy/B,SAAA,CAAW78B,MAAAmsB,EAAA,YAAyBgI,GAAA,CAAKm6E,MAAA,SAAA/4E,GAAyB,OAAAA,EAAAn4B,KAAAyxC,QAAA,QAAA1iB,EAAAw9B,GAAAp0B,EAAAq0B,QAAA,WAAAr0B,EAAAj1B,IAAA,SAAsF,KAAe6rB,EAAAuhB,KAAAvhB,EAAAqhF,aAAgC9iF,MAAA,SAAA6K,GAA0BA,EAAA93B,OAAA2/B,YAAsCjR,EAAAqhF,WAAAj4E,EAAA93B,OAAAuC,WAAqCmsB,EAAAsI,GAAA,KAAAnI,EAAA,UAA2BE,YAAA,+BAAAM,MAAA,CAAkD1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAuhB,KAAAvhB,EAAAqhF,eAAkC,CAAAlhF,EAAA,UAAeQ,MAAA,CAAO0kB,cAAA,GAAA9hB,KAAA,aAAkC,GAAAvD,EAAAsI,GAAA,KAAAnI,EAAA,UAA+BE,YAAA,gCAAAM,MAAA,CAAmD1vB,KAAA,UAAgB+2B,GAAA,CAAKI,MAAA,SAAAgB,GAA0E,OAAjDA,EAAAsI,iBAAwBtI,EAAAE,kBAAyBtJ,EAAA4qC,aAAAxhC,MAAkC,CAAAjJ,EAAA,UAAeE,YAAA,0CAAAM,MAAA,CAA6D0kB,cAAA,GAAA9hB,KAAA,YAAiC,SAC9gD,IDOY,EAa7B20F,GATiB,KAEU,MAYG,QEVhC3uF,KAAQC,IACNyqF,KACAC,KACA5qB,KACAqkB,KACAtgF,KACAiiE,MACA4Y,KACArT,KACAsf,MACA3oB,KACAoiB,MAGa,IAAAyK,GAAA,CACb/4F,WAAY,CACV24F,cAEFpsH,KAAM,iBAAO,CACXysH,iBAAiB,EACjBC,aAAc5jH,OAAO+uE,KAAO/uE,OAAO+uE,IAAIC,WACrChvE,OAAO+uE,IAAIC,SAAS,YAAa,YAC/BhvE,OAAO+uE,IAAIC,SAAS,oBAAqB,YACzChvE,OAAO+uE,IAAIC,SAAS,iBAAkB,YACtChvE,OAAO+uE,IAAIC,SAAS,gBAAiB,YACrChvE,OAAO+uE,IAAIC,SAAS,eAAgB,cAG1Cv5C,SAAU,CACRouF,WADQ,WACQ,OAAOp3G,KAAKm3G,cAAgBn3G,KAAK8d,OAAOC,MAAMC,SAASwmD,UACvE6yC,UAFQ,WAGN,MAAO,CACLz6G,WAAcoD,KAAKo3G,WAAa,SAAW,YAG/CE,cAPQ,WAQN,OAAOt3G,KAAKo3G,WAAa,CACvBG,aAAA,OAAA39G,OAAqBoG,KAAK8d,OAAOC,MAAMC,SAASsmD,KAAhD,MACE,CACFkzC,mBAAoBx3G,KAAKo3G,WAAa,GAAK,gBAG/CK,YAdQ,WAeN,OAAOrsH,OAAO0xB,OAAO,CACnB4F,OAAA,GAAA9oB,OAAaoG,KAAK8d,OAAOC,MAAMC,SAASumD,WAAxC,MACApoD,QAASnc,KAAKk3G,gBAAkB,EAAI,GACnCl3G,KAAKo3G,WAAa,GAAK,CACxBI,mBAAoBx3G,KAAKo3G,WAAa,GAAK,iBAG/C9yC,KAtBQ,WAsBE,OAAOtkE,KAAK8d,OAAOC,MAAMC,SAASsmD,MAC5CgvC,SAvBQ,WAuBM,OAAOtzG,KAAK8d,OAAOC,MAAMC,SAAShsB,MAChDoyE,aAxBQ,WAwBU,OAAOpkE,KAAK8d,OAAOC,MAAMC,SAASomD,cACpDK,SAzBQ,WAyBM,OAAOzkE,KAAK8d,OAAOC,MAAMC,SAASymD,UAChDt3C,YA1BQ,WA0BS,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAChDk7D,YA3BQ,WA2BS,OAAOroF,KAAK8d,OAAOC,MAAMC,SAAlB,UAE1BI,QAAS,CACPk4F,YADO,WAEL/iH,OAAOgmG,SAAS,EAAG,IAErBniB,OAJO,WAKLp3E,KAAKsrB,QAAQp2B,QAAQ,gBACrB8K,KAAK8d,OAAO+L,SAAS,WAEvB6tF,mBARO,SAQa70F,GAClB7iB,KAAKk3G,gBAAkBr0F,GAEzBqgD,kBAXO,WAYLljE,KAAK8d,OAAO+L,SAAS,wBC7E3B,IAEI8tF,GAVJ,SAAoBn5F,GAClBpyB,EAAQ,MAyBKwrH,GAVCxsH,OAAAszB,GAAA,EAAAtzB,CACd6rH,GCjBQ,WAAgB,IAAAr4F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,aAAAC,MAAA,CAAgC24F,YAAAj5F,EAAA6lD,UAA4BllD,MAAA,CAAQzrB,GAAA,OAAW8yB,GAAA,CAAKI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAA03F,iBAA2B,CAAAv3F,EAAA,OAAYE,YAAA,aAAwB,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAwlD,aAAoHxlD,EAAAuI,KAApHpI,EAAA,eAAwCE,YAAA,YAAAM,MAAA,CAA+BuL,GAAA,CAAM94B,KAAA,QAAe4kH,eAAA,SAAwB,CAAAh4F,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAA00F,UAAA,kBAAA10F,EAAAsI,GAAA,KAAAnI,EAAA,eAAoGE,YAAA,OAAAmI,MAAAxI,EAAA,YAAAW,MAAA,CAAkDuL,GAAA,CAAM94B,KAAA,UAAiB,CAAA+sB,EAAA,OAAYE,YAAA,OAAAmI,MAAAxI,EAAA,gBAA6CA,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBqI,MAAAxI,EAAA,UAAAW,MAAA,CAA6BpvB,IAAAyuB,EAAA0lD,UAAgB1lD,EAAAsI,GAAA,KAAAnI,EAAA,OAA0BE,YAAA,sBAAiC,CAAAL,EAAAuO,cAAAvO,EAAAypE,YAAAtpE,EAAA,cAAyD6H,GAAA,CAAImC,QAAAnK,EAAA84F,oBAAiC7rE,SAAA,CAAW7kB,MAAA,SAAAgB,GAAyBA,EAAAE,sBAA4BtJ,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,UAAoCE,YAAA,2BAAA2H,GAAA,CAA2CI,MAAA,SAAAgB,GAAkD,OAAzBA,EAAAE,kBAAyBtJ,EAAAskD,kBAAAl7C,MAAuC,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,MAAA/lB,MAAAwiB,EAAAgM,GAAA,uBAAiE,GAAAhM,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAA,UAAAvO,EAAAuO,YAAAx2B,KAAAooB,EAAA,KAAgFE,YAAA,WAAAM,MAAA,CAA8BpyB,KAAA,iCAAA+C,OAAA,WAA2D,CAAA6uB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,iBAAA/lB,MAAAwiB,EAAAgM,GAAA,0BAA+E,GAAAhM,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,UAA0DE,YAAA,2BAAA2H,GAAA,CAA2CI,MAAA,SAAAgB,GAAiD,OAAxBA,EAAAsI,iBAAwB1R,EAAAw4D,OAAApvD,MAA4B,CAAAjJ,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD0kB,cAAA,GAAA9hB,KAAA,eAAA/lB,MAAAwiB,EAAAgM,GAAA,oBAAuE,GAAAhM,EAAAuI,MAAA,UAC7zD,IDOY,EAa7BwwF,GATiB,KAEU,MAYG,8OEpBhC,IA2GeG,GA3GY,CACzB55F,WAAY,CACVqmB,kBACAiwD,UACA33C,cACAuxD,UAEF3jH,KAPyB,WAQvB,MAAO,CACLgtB,QAAS,GACTC,SAAS,EACTqgG,kBAAmB,GACnBC,YAAY,EACZ7mH,OAAO,IAGX63B,SAAU,CACR6rF,WADQ,WAEN,QAAS70G,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEnCu7D,OAJQ,WAKN,OAAO1oF,KAAK60G,YAAc70G,KAAK8d,OAAOC,MAAM6+D,QAAQE,gBAEtD3zE,OAPQ,WAQN,OAAOnJ,KAAK8d,OAAOC,MAAM6+D,QAAQzzE,QAEnCrM,KAVQ,WAWN,OAAOkD,KAAK8d,OAAO2O,QAAQC,SAAS1sB,KAAKmJ,SAE3C8uG,eAbQ,WAcN,OAAQj4G,KAAKlD,KAAK5F,UAAY8I,KAAKlD,KAAK9I,YAAY4iE,OAAO52D,KAAKlD,KAAK9I,YAAYstC,QAAQ,KAAO,IAElGhpB,SAhBQ,WAiBN,OAAOtY,KAAK8d,OAAOC,MAAM6+D,QAAQtkE,UAEnCukE,aAnBQ,WAoBN,OAAO78E,KAAK8d,OAAOC,MAAM6+D,QAAQC,eAGrCtyC,MAAO,CACLphC,OAAQ,aACR0zE,aAFK,SAESre,GACZx+D,KAAK+3G,kBAAoBv5C,IAG7BpgD,QAAS,CACP68D,WADO,WAGLj7E,KAAKyX,QAAU,GACfzX,KAAK0X,SAAU,EACf1X,KAAK+3G,kBAAoB/3G,KAAK68E,aAC9B78E,KAAKg4G,YAAa,EAClBh4G,KAAK7O,OAAQ,GAEf49G,WATO,WAUL/uG,KAAK8d,OAAO+L,SAAS,4BAEvBvS,WAZO,WAYO,IAAA/W,EAAAP,KACZA,KAAKg4G,YAAa,EAClBh4G,KAAK7O,OAAQ,EACb,IAAM6S,EAAS,CACbmF,OAAQnJ,KAAKmJ,OACbsO,QAASzX,KAAKyX,QACdC,QAAS1X,KAAK0X,QACdF,UAAWxX,KAAK+3G,mBAElB/3G,KAAK8d,OAAOC,MAAMwL,IAAIC,kBAAkBlS,0WAAxC4gG,CAAA,GAAwDl0G,IACrDvT,KAAK,WACJ8P,EAAKy3G,YAAa,EAClBz3G,EAAK06E,aACL16E,EAAKwuG,eAJT,MAMS,WACLxuG,EAAKy3G,YAAa,EAClBz3G,EAAKpP,OAAQ,KAGnB44C,WAhCO,WAiCL/pC,KAAK7O,OAAQ,GAEfgnH,UAnCO,SAmCI7zE,GACT,OAAqD,IAA9CtkC,KAAK+3G,kBAAkBz2E,QAAQgD,IAExC8zE,aAtCO,SAsCOtpE,EAASxK,GACjBwK,IAAY9uC,KAAKm4G,UAAU7zE,KAI3BwK,EACF9uC,KAAK+3G,kBAAkB5sH,KAAKm5C,GAE5BtkC,KAAK+3G,kBAAkB5rH,OAAO6T,KAAK+3G,kBAAkBz2E,QAAQgD,GAAW,KAG5E0Y,OAjDO,SAiDCpwD,GACN,IAAMsD,EAAStD,EAAEsD,QAAUtD,EACrBsD,aAAkBqD,OAAOuvD,UAE/B5yD,EAAOk3B,MAAMnE,OAAS,OACtB/yB,EAAOk3B,MAAMnE,OAAb,GAAArpB,OAAyB1J,EAAO4zD,aAAhC,MACqB,KAAjB5zD,EAAOuC,QACTvC,EAAOk3B,MAAMnE,OAAS,UCnG9B,IAEIo1F,GAVJ,SAAoB75F,GAClBpyB,EAAQ,MAyBKksH,GAVCltH,OAAAszB,GAAA,EAAAtzB,CACdmtH,GCjBQ,WAAgB,IAAA35F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAA,OAAAG,EAAA,SAAgC6H,GAAA,CAAI+rF,gBAAA/zF,EAAAmwF,aAAkC,CAAAhwF,EAAA,OAAYE,YAAA,8BAAyC,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAF,EAAA,OAAYE,YAAA,SAAoB,CAAAL,EAAAsI,GAAA,aAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,wBAAAhM,EAAA9hB,KAAAvE,kBAAA,gBAAAqmB,EAAAsI,GAAA,KAAAnI,EAAA,OAA8HE,YAAA,cAAyB,CAAAF,EAAA,OAAYE,YAAA,6BAAwC,CAAAF,EAAA,OAAAA,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,8CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,YAAkH2Q,WAAA,EAAa19B,KAAA,QAAA29B,QAAA,UAAAl9B,MAAAmsB,EAAA,QAAAgR,WAAA,YAAwE3Q,YAAA,eAAAM,MAAA,CAAoCuiB,YAAAljB,EAAAgM,GAAA,sCAAAg8B,KAAA,KAAsEt3B,SAAA,CAAW78B,MAAAmsB,EAAA,SAAsBgI,GAAA,CAAKzJ,MAAA,UAAA6K,GAA0BA,EAAA93B,OAAA2/B,YAAsCjR,EAAAnH,QAAAuQ,EAAA93B,OAAAuC,QAAgCmsB,EAAAo+B,aAAcp+B,EAAAsI,GAAA,KAAAtI,EAAA9hB,KAAA5F,SAA4O0nB,EAAAuI,KAA5OpI,EAAA,OAAAA,EAAA,KAAAH,EAAAsI,GAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,0CAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,YAAiJknC,MAAA,CAAOxzD,MAAAmsB,EAAA,QAAAsnC,SAAA,SAAAC,GAA6CvnC,EAAAlH,QAAAyuC,GAAgBv2B,WAAA,YAAuB,CAAAhR,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,6BAAAhM,EAAAq5F,kBAAA,sBAAAr5F,EAAAsI,GAAA,KAAAnI,EAAA,OAAAA,EAAA,UAA8JE,YAAA,qBAAAM,MAAA,CAAwC4vB,SAAAvwB,EAAAo5F,YAA0BpxF,GAAA,CAAKI,MAAApI,EAAAtH,aAAwB,CAAAsH,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,4CAAAhM,EAAAsI,GAAA,KAAAtI,EAAA,MAAAG,EAAA,OAAsHE,YAAA,eAA0B,CAAAL,EAAAsI,GAAA,iBAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mDAAAhM,EAAAuI,SAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA8HE,YAAA,8BAAyC,CAAAF,EAAA,QAAaQ,MAAA,CAAOksC,MAAA7sC,EAAAtG,UAAqBqpB,YAAA/iB,EAAAgjB,GAAA,EAAsB7uC,IAAA,OAAA8uC,GAAA,SAAA9a,GAC3wD,IAAA4kC,EAAA5kC,EAAA4kC,KACA,OAAA5sC,EAAA,OAAkBE,YAAA,4CAAuD,CAAAF,EAAA,UAAeQ,MAAA,CAAOsoE,mBAAA,EAAA5+C,SAAA,EAAAnE,UAAA6mB,KAA0D/sC,EAAAsI,GAAA,KAAAnI,EAAA,YAA6BQ,MAAA,CAAOuvB,QAAAlwB,EAAAu5F,UAAAxsD,EAAA73D,KAAiC8yB,GAAA,CAAKmJ,OAAA,SAAA+e,GAA6B,OAAAlwB,EAAAw5F,aAAAtpE,EAAA6c,EAAA73D,SAA+C,OAAQ,uBAAyB,SAAA8qB,EAAAuI,MAC7T,IDKY,EAa7BkxF,GATiB,KAEU,MAYG,QEwBjBG,GA9CS,CACtBt6F,WAAY,CACV0oB,oBACAwnE,UAEF3jH,KALsB,WAMpB,MAAO,CACLguH,eAAe,IAGnBzvF,SAAU,CACR6rF,WADQ,WAEN,QAAS70G,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAEnC2vD,eAJQ,WAKN,OAAO98E,KAAK8d,OAAOC,MAAMpP,WAAWmuE,gBAEtC47B,cAPQ,WAQN,OAAO14G,KAAK60G,aAAe70G,KAAKy4G,eAAiBz4G,KAAK88E,gBAExD94E,OAVQ,WAWN,OAAOhE,KAAK8d,OAAOC,MAAMpP,WAAW3K,QAAU,KAGlDumC,MAAO,CACLvmC,OADK,SACGgjF,EAAQC,GAAQ,IAAA1mF,EAAAP,KAClB3N,KAAI20F,EAAQ,oBAAsB30F,KAAI40F,EAAQ,oBAChDjnF,KAAKy4G,eAAgB,EACrBz4G,KAAK+lB,UAAU,WACbxlB,EAAKk4G,eAAgB,MAI3BC,cATK,SASU7yG,GAAK,IAAA8jB,EAAA3pB,KACd6F,GACF7F,KAAK+lB,UAAU,kBAAM4D,EAAKxG,KAAOwG,EAAKxG,IAAImd,cAAc,YAAYC,YAI1EniB,QAAS,CACP2wF,WADO,WAEL/uG,KAAK8d,OAAO+L,SAAS,2BCrC3B,IAEI8uF,GAVJ,SAAoBn6F,GAClBpyB,EAAQ,MAyBKwsH,GAVCxtH,OAAAszB,GAAA,EAAAtzB,CACdytH,GCjBQ,WAAgB,IAAAj6F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAi2F,aAAAj2F,EAAA65F,cAAA15F,EAAA,SAA0DE,YAAA,uBAAAM,MAAA,CAA0CgwF,UAAA3wF,EAAAk+D,gBAA6Bl2D,GAAA,CAAK+rF,gBAAA/zF,EAAAmwF,aAAkC,CAAAhwF,EAAA,OAAYE,YAAA,+BAA0C,CAAAF,EAAA,OAAYE,YAAA,iBAA4B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,uCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,iBAAAH,EAAAk6F,GAAA,CAAiH75F,YAAA,aAAA2H,GAAA,CAA6B0mB,OAAA1uB,EAAAmwF,aAAyB,iBAAAnwF,EAAA5a,QAAA,UAAA4a,EAAAuI,MACnf,IDOY,EAa7BwxF,GATiB,KAEU,MAYG,QErBhCxwF,KAAQC,IACNqe,OAGF,IAaesyE,GAbU,CACvB/vF,SAAU,CACRgwF,QADQ,WAEN,OAAOh5G,KAAK8d,OAAOC,MAAZ,UAA4BykD,gBAGvCpkD,QAAS,CACP66F,YADO,SACMl7G,GACXiC,KAAK8d,OAAO+L,SAAS,qBAAsB9rB,MCTjD,IAEIm7G,GAVJ,SAAoB16F,GAClBpyB,EAAQ,MAyBK+sH,GAVC/tH,OAAAszB,GAAA,EAAAtzB,CACdguH,GCjBQ,WAAgB,IAAAx6F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAiCL,EAAAmjB,GAAAnjB,EAAA,iBAAA7gB,EAAAswC,GAC3I,IAAAyb,EACA,OAAA/qC,EAAA,OAAiBhsB,IAAAs7C,EAAApvB,YAAA,sBAAAC,OAAA4qC,EAAA,GAA6DA,EAAA,UAAA/rD,EAAA2zC,QAAA,EAAAoY,IAAgD,CAAA/qC,EAAA,OAAYE,YAAA,kBAA6B,CAAAL,EAAAsI,GAAA,WAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA7sB,EAAA4lE,WAAA5lE,EAAA8lE,cAAA,YAAAjlD,EAAAsI,GAAA,KAAAnI,EAAA,UAA+GE,YAAA,+BAAA2H,GAAA,CAA+CI,MAAA,SAAAgB,GAAyB,OAAApJ,EAAAq6F,YAAAl7G,MAAiC,CAAAghB,EAAA,UAAeE,YAAA,8BAAAM,MAAA,CAAiD4C,KAAA,YAAgB,OAAQ,IACpc,IDKY,EAa7B+2F,GATiB,KAEU,MAYG,QEzBnBG,GAAc,kBACzB9lH,OAAOoxB,YACPv1B,SAASg2F,gBAAgBvhE,aACzBz0B,SAAS0Q,KAAK+jB,0OCeD,IAAAy1F,GAAA,CACbtnH,KAAM,MACNksB,WAAY,CACV+tF,aACAS,YACAnc,iBACAyX,yBACAG,iBACAmF,oBACAvB,aACA2F,cACAsB,cACAqB,0BACAsB,aACA4D,cACApL,iBACA2J,sBACAU,mBACAO,qBAEFtuH,KAAM,iBAAO,CACX+uH,kBAAmB,aAErBhzF,QAvBa,WAyBX,IAAM3gB,EAAM7F,KAAK8d,OAAO2O,QAAQtL,aAAayvC,kBAC7C5wD,KAAK8d,OAAO+L,SAAS,YAAa,CAAE73B,KAAM,oBAAqBS,MAAOoT,IACtEtS,OAAO0T,iBAAiB,SAAUjH,KAAKy5G,oBAEzChzF,UA7Ba,WA8BXlzB,OAAOmzB,oBAAoB,SAAU1mB,KAAKy5G,oBAE5CzwF,wWAAU0wF,CAAA,CACRvsF,YADM,WACW,OAAOntB,KAAK8d,OAAOC,MAAMzS,MAAM6hB,aAChDwsF,eAFM,WAEc,OAAO35G,KAAKmtB,YAAYt3B,kBAC5C+jH,mBAHM,WAIJ,OAAO55G,KAAKmhB,aAAa+uC,sBACrB,KACAlwD,KAAK8d,OAAOC,MAAMC,SAAS1K,YAEjCA,WARM,WAQU,OAAOtT,KAAK25G,gBAAkB35G,KAAK45G,oBACnDC,QATM,WAUJ,GAAI75G,KAAKsT,WACP,MAAO,CACLwmG,0BAAA,OAAAlgH,OAAkCoG,KAAKsT,WAAvC,OAINrU,KAhBM,WAgBI,MAAgD,WAAzCe,KAAK8d,OAAOC,MAAM9e,KAAKo7E,QAAQt8D,OAChDsnD,mBAjBM,WAiBkB,OAAOrlE,KAAK8d,OAAOC,MAAMC,SAASqnD,oBAC1DR,0BAlBM,WAmBJ,OAAO7kE,KAAK8d,OAAOC,MAAMC,SAAS6mD,4BAC/B7kE,KAAK8d,OAAO2O,QAAQtL,aAAa8uC,SAClCjwD,KAAK8d,OAAOC,MAAMC,SAASunD,8BAE/BX,kBAvBM,WAuBiB,OAAO5kE,KAAK8d,OAAOC,MAAMC,SAAS4mD,mBACzDm1C,eAxBM,WAwBc,OAAO/5G,KAAK8d,OAAOC,MAAZ,UAA4BuiC,cACvD+nC,YAzBM,WAyBW,OAAOroF,KAAK8d,OAAOC,MAAMC,SAAlB,SACxBg8F,aA1BM,WA2BJ,MAAO,CACLC,MAASj6G,KAAK8d,OAAOC,MAAMC,SAAS8mD,aAAe,GAAK,KAGzD/2C,YAAW,CAAC,kBAEjB3P,QAAS,CACPq7F,kBADO,WAEL,IAAMn5D,EAAe+4D,MAAiB,IAChC52C,EDhFVlvE,OAAOuxB,aACP11B,SAASg2F,gBAAgBphE,cACzB50B,SAAS0Q,KAAKkkB,aC+EMs8B,IAAiBtgD,KAAK+5G,gBAEpC/5G,KAAK8d,OAAO+L,SAAS,kBAAmBy2B,GAE1CtgD,KAAK8d,OAAO+L,SAAS,kBAAmB44C,MCpF9C,IAEIy3C,GAVJ,SAAoB17F,GAClBpyB,EAAQ,MAyBK+tH,GAVC/uH,OAAAszB,GAAA,EAAAtzB,CACdkuH,GCjBQ,WAAgB,IAAA16F,EAAA5e,KAAa6e,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBqI,MAAAxI,EAAA,QAAAW,MAAA,CAA2BzrB,GAAA,QAAY,CAAAirB,EAAA,OAAYE,YAAA,iBAAAM,MAAA,CAAoCzrB,GAAA,oBAAuB8qB,EAAAsI,GAAA,KAAAtI,EAAA,eAAAG,EAAA,aAAAA,EAAA,cAAAH,EAAAsI,GAAA,KAAAnI,EAAA,OAA0FE,YAAA,yCAAmDL,EAAAsI,GAAA,KAAAnI,EAAA,OAAwBE,YAAA,qBAAAM,MAAA,CAAwCzrB,GAAA,YAAgB,CAAAirB,EAAA,OAAYE,YAAA,+BAAAmI,MAAAxI,EAAA,cAAoE,CAAAG,EAAA,OAAYE,YAAA,kBAA6B,CAAAF,EAAA,OAAYE,YAAA,oBAA+B,CAAAF,EAAA,OAAYE,YAAA,WAAsB,CAAAF,EAAA,cAAAH,EAAAsI,GAAA,KAAAtI,EAAAm7F,eAAAn7F,EAAAuI,KAAApI,EAAA,OAAAA,EAAA,aAAAH,EAAAsI,GAAA,KAAAtI,EAAA,0BAAAG,EAAA,2BAAAH,EAAAuI,KAAAvI,EAAAsI,GAAA,MAAAtI,EAAAuO,aAAAvO,EAAAgmD,kBAAA7lD,EAAA,kBAAAH,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAAymD,mBAAAtmD,EAAA,uBAAAH,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAtI,EAAA,YAAAG,EAAA,iBAAAH,EAAAuI,MAAA,aAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,OAA2bE,YAAA,QAAmB,CAAAL,EAAAuO,YAAwJvO,EAAAuI,KAAxJpI,EAAA,OAA+BE,YAAA,kCAA6C,CAAAF,EAAA,eAAoBE,YAAA,aAAAM,MAAA,CAAgCuL,GAAA,CAAM94B,KAAA,WAAkB,CAAA4sB,EAAAsI,GAAA,eAAAtI,EAAA+L,GAAA/L,EAAAgM,GAAA,mCAAAhM,EAAAsI,GAAA,KAAAnI,EAAA,mBAAAH,EAAAsI,GAAA,KAAAnI,EAAA,mBAAAH,EAAAsI,GAAA,KAAAtI,EAAAuO,aAAAvO,EAAA3f,KAAA8f,EAAA,cAAiNE,YAAA,8BAAAM,MAAA,CAAiDgoF,UAAA,KAAiB3oF,EAAAuI,KAAAvI,EAAAsI,GAAA,KAAAnI,EAAA,0BAAAH,EAAAsI,GAAA,KAAAnI,EAAA,sBAAAH,EAAAsI,GAAA,KAAAnI,EAAA,mBAAAH,EAAAsI,GAAA,KAAAnI,EAAA,iBAAAH,EAAAsI,GAAA,KAAAnI,EAAA,iBAA2LQ,MAAA,CAAOvtB,KAAA,WAAgB4sB,EAAAsI,GAAA,KAAAnI,EAAA,yBACnrD,IDOY,EAa7Bm7F,GATiB,KAEU,MAYG,ukBEfhC,IAAIE,GAAuB,KAYrBC,GAAmB,SAAC5vH,GACxB,IAAMknF,EAAUK,KAAKvnF,GACf4qD,EAAQ48B,WAAWC,KAAKzwE,IAAIkwE,GAAS78E,IAAI,SAACq9C,GAAD,OAAUA,EAAKggC,WAAW,MAEzE,OADa,IAAImoC,aAAcC,OAAOllE,IAIlCmlE,GAAe,SAAOvqH,GAAP,IAAAxF,EAAAgwH,EAAAC,EAAA,OAAAnvG,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,WACblU,EAjBD2E,SAASo2F,eAAe,oBAGxB40B,KACHA,GAAuBn6G,KAAKY,MAAMzR,SAASo2F,eAAe,mBAAmBklB,cAExE0P,IALE,OAiBK3vH,EAAKwF,GAFA,CAAAwb,EAAA9M,KAAA,eAAA8M,EAAA01C,OAAA,SAGV5tD,OAAOoQ,MAAM1T,IAHH,cAKbwqH,EAAUJ,GAAiB5vH,EAAKwF,IAChCyqH,EAAcz6G,KAAKY,MAAM45G,GANZhvG,EAAA01C,OAAA,SAOZ,CACLz8C,IAAI,EACJD,KAAM,kBAAMi2G,GACZ7/G,KAAM,kBAAM6/G,KAVK,wBAAAjvG,EAAAM,WAcf4uG,GAAoB,SAAAv5G,GAAA,IAAAwe,EAAAqmD,EAAAx7E,EAAA00D,EAAA8kB,EAAA,OAAA14D,EAAAvE,EAAAwE,MAAA,SAAA46D,GAAA,cAAAA,EAAAtnE,KAAAsnE,EAAAznE,MAAA,cAASihB,EAATxe,EAASwe,MAATwmD,EAAAtnE,KAAA,EAAAsnE,EAAAznE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEJ6uG,GAAa,qBAFT,YAEhBv0C,EAFgBG,EAAAx6D,MAGdlH,GAHc,CAAA0hE,EAAAznE,KAAA,gBAAAynE,EAAAznE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIDs6D,EAAIxhE,QAJH,OAIdha,EAJc27E,EAAAx6D,KAKduzC,EAAY10D,EAAKmwH,eACjB32C,EAAiBx5E,EAAKkL,QAAQklH,iBAEpCj7F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,YAAaS,MAAO0sD,IAChEv/B,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,0BAA2BS,MAAOhI,EAAKqwH,oBAE/E72C,GACFrkD,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,iBAAkBS,MAAOwxE,IAZnDmC,EAAAznE,KAAA,uBAebsnE,EAfa,QAAAG,EAAAznE,KAAA,iBAAAynE,EAAAtnE,KAAA,GAAAsnE,EAAAt6D,GAAAs6D,EAAA,SAkBtB/yE,QAAQlC,MAAM,qDACdkC,QAAQlC,MAARi1E,EAAAt6D,IAnBsB,yBAAAs6D,EAAAr6D,SAAA,qBAuBpBgvG,GAA2B,SAAA15G,GAAA,IAAA4kE,EAAAx7E,EAAA,OAAA8gB,EAAAvE,EAAAwE,MAAA,SAAAm7D,GAAA,cAAAA,EAAA7nE,KAAA6nE,EAAAhoE,MAAA,cAAA0C,EAASue,MAAT+mD,EAAA7nE,KAAA,EAAA6nE,EAAAhoE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEXpY,OAAOoQ,MAAM,yCAFF,YAEvBsiE,EAFuBU,EAAA/6D,MAGrBlH,GAHqB,CAAAiiE,EAAAhoE,KAAA,gBAAAgoE,EAAAhoE,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIRs6D,EAAIxhE,QAJI,cAIrBha,EAJqBk8E,EAAA/6D,KAAA+6D,EAAAxlB,OAAA,SAKpB12D,EAAKuwH,YALe,cAOpB/0C,EAPoB,QAAAU,EAAAhoE,KAAA,iBAAAgoE,EAAA7nE,KAAA,GAAA6nE,EAAA76D,GAAA66D,EAAA,SAU7BtzE,QAAQlC,MAAM,sEACdkC,QAAQlC,MAARw1E,EAAA76D,IAX6B,yBAAA66D,EAAA56D,SAAA,qBAe3BkvG,GAAkB,eAAAh1C,EAAA,OAAA16D,EAAAvE,EAAAwE,MAAA,SAAA0vG,GAAA,cAAAA,EAAAp8G,KAAAo8G,EAAAv8G,MAAA,cAAAu8G,EAAAp8G,KAAA,EAAAo8G,EAAAv8G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEFpY,OAAOoQ,MAAM,wBAFX,YAEdsiE,EAFci1C,EAAAtvG,MAGZlH,GAHY,CAAAw2G,EAAAv8G,KAAA,eAAAu8G,EAAA/5D,OAAA,SAIX8kB,EAAIxhE,QAJO,aAMXwhE,EANW,OAAAi1C,EAAAv8G,KAAA,wBAAAu8G,EAAAp8G,KAAA,GAAAo8G,EAAApvG,GAAAovG,EAAA,SASpB7nH,QAAQyU,KAAK,6DACbzU,QAAQyU,KAARozG,EAAApvG,IAVoBovG,EAAA/5D,OAAA,SAWb,IAXa,yBAAA+5D,EAAAnvG,SAAA,qBAelBovG,GAAc,SAAA72G,GAAA,IAAA82G,EAAAC,EAAAz7F,EAAA07F,EAAAC,EAAAx7F,EAAAy7F,EAAA,OAAAjwG,EAAAvE,EAAAwE,MAAA,SAAAiwG,GAAA,cAAAA,EAAA38G,KAAA28G,EAAA98G,MAAA,cAASy8G,EAAT92G,EAAS82G,UAAWC,EAApB/2G,EAAoB+2G,aAAcz7F,EAAlCtb,EAAkCsb,MAC9C07F,EAAY/nH,OAAOmoH,4BAA8B,GACjDH,EAAMhoH,OAAOooH,kBAAkBC,SAGjC77F,EAAS,GACTu7F,EAAUO,wBAAkC,gBAARN,GACtCloH,QAAQyU,KAAK,4CACbiY,EAAS30B,OAAO0xB,OAAO,GAAIs+F,EAAWC,IAEtCt7F,EAAS30B,OAAO0xB,OAAO,GAAIu+F,EAAcD,IAGrCI,EAAqB,SAACxpH,GAC1B4tB,EAAMiK,SAAS,oBAAqB,CAAE73B,OAAMS,MAAOstB,EAAO/tB,OAGzC,mBACnBwpH,EAAmB,cACnBA,EAAmB,iBACnBA,EAAmB,iBACnBA,EAAmB,wBACnBA,EAAmB,QAEnB57F,EAAMiK,SAAS,oBAAqB,CAClC73B,KAAM,WACNS,WAAkC,IAApBstB,EAAOykD,UAEjBzkD,EAAOykD,WAGb5kD,EAAMiK,SAAS,oBAAqB,CAClC73B,KAAM,aACNS,WAAoC,IAAtBstB,EAAOwkD,WACjB,EACAxkD,EAAOwkD,aAEbi3C,EAAmB,YACnB57F,EAAM6J,OAAO,8BAA+B1J,EAAOskD,aAEnDm3C,EAAmB,uBACnBA,EAAmB,qBACnBA,EAAmB,6BACnBA,EAAmB,qBACnBA,EAAmB,kBACnBA,EAAmB,8BACnBA,EAAmB,aACnBA,EAAmB,uBACnBA,EAAmB,mBACnBA,EAAmB,0BACnBA,EAAmB,qBACnBA,EAAmB,gBACnBA,EAAmB,gBApDDC,EAAAt6D,OAAA,SAsDXvhC,EAAMiK,SAAS,WAAY9J,EAAM,QAtDtB,yBAAA07F,EAAA1vG,WAyDd+vG,GAAS,SAAAhkG,GAAA,IAAA8H,EAAAqmD,EAAA50B,EAAA,OAAA9lC,EAAAvE,EAAAwE,MAAA,SAAAuwG,GAAA,cAAAA,EAAAj9G,KAAAi9G,EAAAp9G,MAAA,cAASihB,EAAT9H,EAAS8H,MAATm8F,EAAAj9G,KAAA,EAAAi9G,EAAAp9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEOpY,OAAOoQ,MAAM,kCAFpB,YAELsiE,EAFK81C,EAAAnwG,MAGHlH,GAHG,CAAAq3G,EAAAp9G,KAAA,gBAAAo9G,EAAAp9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIUs6D,EAAIprE,QAJd,OAIHw2C,EAJG0qE,EAAAnwG,KAKTgU,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,MAAOS,MAAO4+C,IALjD0qE,EAAAp9G,KAAA,uBAOFsnE,EAPE,QAAA81C,EAAAp9G,KAAA,iBAAAo9G,EAAAj9G,KAAA,GAAAi9G,EAAAjwG,GAAAiwG,EAAA,SAUX1oH,QAAQyU,KAAK,kBACbzU,QAAQyU,KAARi0G,EAAAjwG,IAXW,yBAAAiwG,EAAAhwG,SAAA,qBAeTiwG,GAAmB,SAAA/oG,GAAA,IAAA2M,EAAAqmD,EAAA50B,EAAA,OAAA9lC,EAAAvE,EAAAwE,MAAA,SAAAywG,GAAA,cAAAA,EAAAn9G,KAAAm9G,EAAAt9G,MAAA,cAASihB,EAAT3M,EAAS2M,MAATq8F,EAAAn9G,KAAA,EAAAm9G,EAAAt9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEH6uG,GAAa,yBAFV,YAEfv0C,EAFeg2C,EAAArwG,MAGblH,GAHa,CAAAu3G,EAAAt9G,KAAA,gBAAAs9G,EAAAt9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIAs6D,EAAIprE,QAJJ,OAIbw2C,EAJa4qE,EAAArwG,KAKnBgU,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,+BAAgCS,MAAO4+C,IALhE4qE,EAAAt9G,KAAA,uBAOZsnE,EAPY,QAAAg2C,EAAAt9G,KAAA,iBAAAs9G,EAAAn9G,KAAA,GAAAm9G,EAAAnwG,GAAAmwG,EAAA,SAUrB5oH,QAAQyU,KAAK,6BACbzU,QAAQyU,KAARm0G,EAAAnwG,IAXqB,yBAAAmwG,EAAAlwG,SAAA,qBAenBmwG,GAAc,SAAA1oG,GAAA,IAAAoM,EAAAqmD,EAAAC,EAAAvJ,EAAA,OAAApxD,EAAAvE,EAAAwE,MAAA,SAAA2wG,GAAA,cAAAA,EAAAr9G,KAAAq9G,EAAAx9G,MAAA,cAASihB,EAATpM,EAASoM,MAATu8F,EAAAr9G,KAAA,EAAAq9G,EAAAx9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEEpY,OAAOoQ,MAAM,0BAFf,YAEVsiE,EAFUk2C,EAAAvwG,MAGRlH,GAHQ,CAAAy3G,EAAAx9G,KAAA,gBAAAw9G,EAAAx9G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIOs6D,EAAIxhE,QAJX,cAIRyhE,EAJQi2C,EAAAvwG,KAAAuwG,EAAAx9G,KAAA,GAAA4M,EAAAvE,EAAA2E,MAKU3e,QAAQ4E,IAC9BxG,OAAO8V,QAAQglE,GAAQpxE,IAAI,SAAA4d,GAAA,IAAArG,EAAAra,EAAAs9C,EAAA8sE,EAAAnjH,EAAA,OAAAsS,EAAAvE,EAAAwE,MAAA,SAAA6wG,GAAA,cAAAA,EAAAv9G,KAAAu9G,EAAA19G,MAAA,cAAA0N,EAAA/K,IAAAoR,EAAA,GAAQ1gB,EAARqa,EAAA,GAAcijC,EAAdjjC,EAAA,GAAAgwG,EAAA19G,KAAA,EAAA4M,EAAAvE,EAAA2E,MACHpY,OAAOoQ,MAAM2rC,EAAO,cADjB,UACnB8sE,EADmBC,EAAAzwG,KAErB3S,EAAO,IACPmjH,EAAQ13G,GAHa,CAAA23G,EAAA19G,KAAA,eAAA09G,EAAA19G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIVywG,EAAQ33G,QAJE,OAIvBxL,EAJuBojH,EAAAzwG,KAAA,cAAAywG,EAAAl7D,OAAA,SAMlB,CACLm7D,KAAMtqH,EACNs9C,OACAr2C,SATuB,yBAAAojH,EAAAtwG,cANf,QAAAowG,EAAArwG,GAkBN,SAAC9E,EAAGuT,GACV,OAAOvT,EAAE/N,KAAKmD,MAAMmgH,cAAchiG,EAAEthB,KAAKmD,QAdrCugE,EALQw/C,EAAAvwG,KAkBXiW,KAlBWs6F,EAAArwG,IAqBd8T,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,WAAYS,MAAOkqE,IArBjDw/C,EAAAx9G,KAAA,uBAuBPsnE,EAvBO,QAAAk2C,EAAAx9G,KAAA,iBAAAw9G,EAAAr9G,KAAA,GAAAq9G,EAAAK,GAAAL,EAAA,SA0BhB9oH,QAAQyU,KAAK,uBACbzU,QAAQyU,KAARq0G,EAAAK,IA3BgB,yBAAAL,EAAApwG,SAAA,qBA+Bd0wG,GAAe,SAAA9vG,GAAA,IAAAiT,EAAA7B,EAAA0L,EAAA6mD,EAAAtyD,EAAA,OAAAzS,EAAAvE,EAAAwE,MAAA,SAAAkxG,GAAA,cAAAA,EAAA59G,KAAA49G,EAAA/9G,MAAA,cAASihB,EAATjT,EAASiT,MACpB7B,EAAkB6B,EAAlB7B,MAAO0L,EAAW7J,EAAX6J,OACP6mD,EAAoBvyD,EAApBuyD,MAAOtyD,EAAaD,EAAbC,SAFI0+F,EAAAv7D,OAAA,SAGZ0uB,GAAe8sC,GAAA,GAAKrsC,EAAN,CAAatyD,SAAUA,EAASC,OAAQwL,YAC1Dh5B,KAAK,SAACy/E,GAAD,OAASG,GAAessC,GAAA,GAAKzsC,EAAN,CAAWlyD,SAAUA,EAASC,YAC1DxtB,KAAK,SAACsF,GACL0zB,EAAO,cAAe1zB,EAAM2P,cAC5B+jB,EAAO,uBAAwB2lD,GAAyBxvD,EAAM6M,QAAQmkD,gBAPvD,wBAAA8rC,EAAA3wG,WAWf6wG,GAAuB,SAAA9vG,GAAyB,IAAtB8S,EAAsB9S,EAAtB8S,MACxBlO,EAD8C5E,EAAfmK,SACVniB,IAAI,SAAAyH,GAAG,OAAIA,EAAI9D,MAAM,KAAKy5C,QACrDtyB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,gBAAiBS,MAAOif,KAGhEmrG,GAAc,SAAA7vG,GAAA,IAAA4S,EAAAqmD,EAAAx7E,EAAAqyH,EAAAC,EAAAC,EAAApnG,EAAAqnG,EAAAC,EAAAx3C,EAAAy3C,EAAA5b,EAAAtqF,EAAA,OAAA1L,EAAAvE,EAAAwE,MAAA,SAAA4xG,GAAA,cAAAA,EAAAt+G,KAAAs+G,EAAAz+G,MAAA,cAASihB,EAAT5S,EAAS4S,MAATw9F,EAAAt+G,KAAA,EAAAs+G,EAAAz+G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEE6uG,GAAa,uBAFf,YAEVv0C,EAFUm3C,EAAAxxG,MAGRlH,GAHQ,CAAA04G,EAAAz+G,KAAA,gBAAAy+G,EAAAz+G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIKs6D,EAAIxhE,QAJT,OAIRha,EAJQ2yH,EAAAxxG,KAKRkxG,EAAWryH,EAAKqyH,SAChBC,EAAWD,EAASC,SAC1Bn9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,OAAQS,MAAOqqH,EAASO,WACpEz9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,mBAAoBS,MAAOhI,EAAK6yH,oBAC5E19F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,sBAAuBS,MAAOsqH,EAAS5lH,SAAS,iBAC5FyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,SAAUS,MAAOsqH,EAAS5lH,SAAS,sBAC/EyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,gBAAiBS,MAAOsqH,EAAS5lH,SAAS,UACtFyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,+BAAgCS,MAAOsqH,EAAS5lH,SAAS,2BACrGyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,kBAAmBS,MAAOsqH,EAAS5lH,SAAS,YACxFyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,iBAAkBS,MAAOsqH,EAAS5lH,SAAS,WACvFyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,aAAcS,MAAOqqH,EAASpiE,aAC1E96B,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,gBAAiBS,MAAOqqH,EAASlZ,gBAEvEoZ,EAAeF,EAASE,aAC9Bp9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,cAAeS,MAAO0L,SAAS6+G,EAAaO,WACxF39F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,cAAeS,MAAO0L,SAAS6+G,EAAa5nH,UACxFwqB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,kBAAmBS,MAAO0L,SAAS6+G,EAAa1pG,cAC5FsM,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,cAAeS,MAAO0L,SAAS6+G,EAAa5pG,UACxFwM,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,eAAgBS,MAAOqqH,EAASU,eAE5E59F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,sBAAuBS,MAAOqqH,EAASv/F,sBACnFqC,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,cAAeS,MAAOqqH,EAASr9D,cAErE7pC,EAAcknG,EAASlnG,YAC7BgK,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,qBAAsBS,MAAOmjB,EAAY6nG,UACrF79F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,iBAAkBS,MAAOmjB,EAAY8nG,MAE3ET,EAAWxyH,EAAKwyH,SACtBr9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,iBAAkBS,MAAOwqH,EAASU,UAC9E/9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,iBAAkBS,MAAyB,YAAlBwqH,EAASjrH,OAExEkrH,EAAOJ,EAAQ,QACrBl9F,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,UAAWS,MAAOyqH,IAExDx3C,EAAkBnyE,OAAOy8E,yBAC/BpwD,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,kBAAmBS,MAAOizE,IAEhEy3C,EAAaL,EAASK,WAE5Bv9F,EAAMiK,SAAS,oBAAqB,CAClC73B,KAAM,qBACNS,WAA0C,IAA5B0qH,EAAWS,cAErBd,EAASK,WAAWS,aAAazmH,SAAS,eAGhDyoB,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,mBAAoBS,MAAO0qH,IACvEv9F,EAAMiK,SAAS,oBAAqB,CAClC73B,KAAM,aACNS,WAAqC,IAAvB0qH,EAAWM,SAErBN,EAAWM,UAGXlc,EAA4Bub,EAASvb,0BAC3C3hF,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,4BAA6BS,MAAO8uG,IAE1EtqF,EAAW6lG,EAAS9T,cAC1B4T,GAAqB,CAAEh9F,QAAO3I,aA/DhBmmG,EAAAz+G,KAAA,uBAiEPsnE,EAjEO,QAAAm3C,EAAAz+G,KAAA,iBAAAy+G,EAAAt+G,KAAA,GAAAs+G,EAAAtxG,GAAAsxG,EAAA,SAoEhB/pH,QAAQyU,KAAK,2BACbzU,QAAQyU,KAARs1G,EAAAtxG,IArEgB,yBAAAsxG,EAAArxG,SAAA,qBAyEd8xG,GAAY,SAAA3wG,GAAA,IAAA0S,EAAAk+F,EAAA1C,EAAAC,EAAA,OAAA9vG,EAAAvE,EAAAwE,MAAA,SAAAuyG,GAAA,cAAAA,EAAAj/G,KAAAi/G,EAAAp/G,MAAA,cAASihB,EAAT1S,EAAS0S,MAATm+F,EAAAp/G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAEU3e,QAAQ4E,IAAI,CAACmpH,GAAyB,CAAEn7F,UAAUq7F,QAF5D,cAEV6C,EAFUC,EAAAnyG,KAGVwvG,EAAY0C,EAAY,GACxBzC,EAAeyC,EAAY,GAJjBC,EAAAp/G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAMVwvG,GAAY,CAAEv7F,QAAOw7F,YAAWC,iBAAgB5qH,KAAKgsH,GAAa,CAAE78F,YAN1D,wBAAAm+F,EAAAhyG,WASZiyG,GAAkB,SAAA5wG,GAAA,IAAAwS,EAAA,OAAArU,EAAAvE,EAAAwE,MAAA,SAAAyyG,GAAA,cAAAA,EAAAn/G,KAAAm/G,EAAAt/G,MAAA,cAASihB,EAATxS,EAASwS,MAATq+F,EAAA98D,OAAA,SACf,IAAIn0D,QAAQ,SAAOC,EAASC,GAAhB,OAAAqe,EAAAvE,EAAAwE,MAAA,SAAA0yG,GAAA,cAAAA,EAAAp/G,KAAAo/G,EAAAv/G,MAAA,WACbihB,EAAM6M,QAAQuuD,eADD,CAAAkjC,EAAAv/G,KAAA,eAAAu/G,EAAAp/G,KAAA,EAAAo/G,EAAAv/G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAGPiU,EAAMiK,SAAS,YAAajK,EAAM6M,QAAQuuD,iBAHnC,OAAAkjC,EAAAv/G,KAAA,eAAAu/G,EAAAp/G,KAAA,EAAAo/G,EAAApyG,GAAAoyG,EAAA,SAKb7qH,QAAQlC,MAAR+sH,EAAApyG,IALa,OAQjB7e,IARiB,yBAAAixH,EAAAnyG,SAAA,sBADG,wBAAAkyG,EAAAlyG,WA4EToyG,GA/DS,SAAA7wG,GAAA,IAAAsS,EAAA4B,EAAAwB,EAAAs4F,EAAAr9F,EAAAmgG,EAAAruD,EAAAC,EAAA10B,EAAA+iF,EAAA,OAAA9yG,EAAAvE,EAAAwE,MAAA,SAAA8yG,GAAA,cAAAA,EAAAx/G,KAAAw/G,EAAA3/G,MAAA,cAASihB,EAATtS,EAASsS,MAAO4B,EAAhBlU,EAAgBkU,KAChCwB,EAAQq2F,KACdz5F,EAAMiK,SAAS,kBAAmB7G,GAAS,KAE3C0sE,GAAeC,qBAET2rB,EAAY/nH,OAAOmoH,4BAA8B,GACjDz9F,OAAsC,IAArBq9F,EAAUprH,OAA0BorH,EAAUprH,OAASqD,OAAOq8E,SAAS1rD,OAC9FtE,EAAMiK,SAAS,oBAAqB,CAAE73B,KAAM,SAAUS,MAAOwrB,IARvCqgG,EAAA3/G,KAAA,EAAA4M,EAAAvE,EAAA2E,MAUhBkyG,GAAU,CAAEj+F,WAVI,cAAAw+F,EAYqBx+F,EAAM7B,MAAMgC,OAA/CgwC,EAZcquD,EAYdruD,YAAaC,EAZCouD,EAYDpuD,kBACb10B,EAAU1b,EAAM7B,MAAMC,SAAtBsd,MACmB00B,GAAqBD,EAG1CC,GAAqBA,EAAkBl1B,qBAAuBqa,IAChE5b,YAAWy2B,GAEXz2B,YAAWw2B,GAEJz0B,GAGTjoC,QAAQlC,MAAM,6BAzBMmtH,EAAA3/G,KAAA,GAAA4M,EAAAvE,EAAA2E,MA8BhB3e,QAAQ4E,IAAI,CAChBosH,GAAgB,CAAEp+F,UAClBo8F,GAAiB,CAAEp8F,UACnBi9F,GAAY,CAAEj9F,UACd+6F,GAAkB,CAAE/6F,aAlCA,eAsCtBA,EAAMiK,SAAS,cACfiyF,GAAO,CAAEl8F,UACTs8F,GAAY,CAAEt8F,UAERy+F,EAAS,IAAIE,IAAU,CAC3B5rH,KAAM,UACN44G,OAAQA,GAAO3rF,GACf4+F,eAAgB,SAAC1zF,EAAI2zF,EAAOC,GAC1B,OAAI5zF,EAAG6zF,QAAQnvG,KAAK,SAAA3d,GAAC,OAAIA,EAAEoH,KAAK2yG,eAGzB8S,GAAiB,CAAEp6F,EAAG,EAAGC,EAAG,OAjDjB+5F,EAAAn9D,OAAA,SAsDf,IAAImW,IAAI,CACb+mD,SACAz+F,QACA4B,OACAs/B,GAAI,OACJyX,OAAQ,SAAAC,GAAC,OAAIA,EAAE8gD,QA3DK,yBAAAgF,EAAAvyG,WChSlB6yG,IAAiBrrH,OAAO4vC,UAAU+rB,UAAY,MAAMz2D,MAAM,KAAK,GAErE6+D,IAAIunD,IAAIC,KACRxnD,IAAIunD,IAAIN,KACRjnD,IAAIunD,IAAIE,MACRznD,IAAIunD,IAAIG,MACR1nD,IAAIunD,IAAII,MACR3nD,IAAIunD,IhM4BW,SAACvnD,GACdA,EAAIuuB,UAAU,mBAAoBA,MgM3BpCvuB,IAAIC,UAAU,SAAU2nD,MACxB5nD,IAAIC,UAAU,WAAY4nD,MAE1B,IAAM39F,GAAO,IAAIu9F,KAAQ,CAEvBnsG,OAAQ,KACRwsG,eAAgB,KAChBvwD,SAAUA,KAAQ,UAGpBA,KAASI,YAAYztC,GAAMo9F,IAE3B,IAQCS,GAAAC,GAAAC,GAAA3/F,GARK4/F,GAAwB,CAC5Bx8B,MAAO,CACL,SACA,sBACA,UAIHz3E,EAAAvE,EAAAwE,MAAA,SAAAC,GAAA,cAAAA,EAAA3M,KAAA2M,EAAA9M,MAAA,cACK0gH,IAAe,EACbC,GAAU,CAACG,IAFlBh0G,EAAA3M,KAAA,EAAA2M,EAAA9M,KAAA,EAAA4M,EAAAvE,EAAA2E,MAIgC23E,GAAqBk8B,KAJrD,OAISD,GAJT9zG,EAAAG,KAKG0zG,GAAQn0H,KAAKo0H,IALhB9zG,EAAA9M,KAAA,gBAAA8M,EAAA3M,KAAA,EAAA2M,EAAAK,GAAAL,EAAA,SAOGpY,QAAQlC,MAARsa,EAAAK,IACAuzG,IAAe,EARlB,QAUOz/F,GAAQ,IAAIk/F,IAAKY,MAAM,CAC3Bl0H,QAAS,CACPg2B,KAAM,CACJiL,QAAS,CACPjL,KAAM,kBAAMA,MAGhBua,UAAW4jF,EACX3hG,SAAU4hG,EACVtnG,SAAUunG,GACVv0G,MAAOw0G,GACPv2F,IAAKw2F,GACLhgG,OAAQigG,IACR/gH,KAAMghH,GACN3vC,MAAO4vC,GACPC,SAAUC,GACVlkC,YAAamkC,GACb7jC,YAAa8jC,GACb1jC,QAAS2jC,GACT/yE,MAAOgzE,GACP7xG,WAAY8xG,GACZtnG,MAAOunG,IAETpB,WACAqB,QAAQ,IAGNtB,IACFz/F,GAAMiK,SAAS,mBAAoB,CAAE85C,WAAY,6BAA8BjyB,MAAO,UAExFysE,GAAgB,CAAEv+F,SAAO4B,UAxC1B,yBAAA/V,EAAAM,SAAA,mBA6CDxY,OAAOooH,kBAAoBiF,gCAC3BrtH,OAAOy8E,yBAA2B6wC,aAClCttH,OAAOmoH,gCAA6BoF","file":"static/js/app.89064324e3c7c7a2f31c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"db736abc7537ffb875b9\",\"3\":\"47e63c5b451f505d2ad7\",\"4\":\"8143023ffce355019392\",\"5\":\"1168bb0d7d448211af6f\",\"6\":\"9465b86224a89cf0b71a\",\"7\":\"73a45da38831e1125000\",\"8\":\"f35030299cbcba7abbc3\",\"9\":\"6bb680e6f3391973debc\",\"10\":\"cfcf13082320d857c1a8\",\"11\":\"e7e77f4068f03556413c\",\"12\":\"f9377ed6c1c3c7784e63\",\"13\":\"c7df91ebdb57e0a68f70\",\"14\":\"5d1601bef8dd43f68bfd\",\"15\":\"2e40c41f6cf4311fdc25\",\"16\":\"362dd1bc93d1ef66d43c\",\"17\":\"d41f802866b381151c92\",\"18\":\"a784d2b6c00c188fc0ab\",\"19\":\"c09e1f6f5af070a2aee1\",\"20\":\"21c2d7cee08d64b858b1\",\"21\":\"bc3a68efcc623cbadff4\",\"22\":\"d8523326d76df8b19465\",\"23\":\"00ef72d646b4fefebdf9\",\"24\":\"917df54d2c158214c2f3\",\"25\":\"62621d1c1ac2230f38af\",\"26\":\"c04246a4627b6eff91f9\",\"27\":\"1456d24b50ca99316eb1\",\"28\":\"c6c12bd01dcf7e6324e0\",\"29\":\"df7dd5d2bc3262f6533a\",\"30\":\"ef6d09fe7f856d459eb7\",\"31\":\"db660964751af4542d44\",\"32\":\"d9beff4d99e2c80cb471\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"0778a6a864a1307a6c41\",\"3\":\"b2603a50868c68a1c192\",\"4\":\"31d6cfe0d16ae931b73c\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([577,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n output.id = String(data.id)\n\n if (masto) {\n output.screen_name = data.acct\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.name = data.display_name\n output.name_html = addEmojis(escape(data.display_name), data.emojis)\n\n output.description = data.note\n output.description_html = addEmojis(data.note, data.emojis)\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: addEmojis(escape(field.name), data.emojis),\n value: addEmojis(field.value, data.emojis)\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n let unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n unicodeDomain = '🌏' + unicodeDomain\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !data.hasOwnProperty('oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\nexport const addEmojis = (string, emojis) => {\n const matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g\n return emojis.reduce((acc, emoji) => {\n const regexSafeShortCode = emoji.shortcode.replace(matchOperatorsRegex, '\\\\$&')\n return acc.replace(\n new RegExp(`:${regexSafeShortCode}:`, 'g'),\n `<img src='${emoji.url}' alt=':${emoji.shortcode}:' title=':${emoji.shortcode}:' class='emoji' />`\n )\n }, string)\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.statusnet_html = addEmojis(data.content, data.emojis)\n\n output.tags = data.tags\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_html = addEmojis(escape(data.spoiler_text), data.emojis)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: addEmojis(escape(field.title), data.emojis)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.statusnet_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n 'favourite': 'like',\n 'reblog': 'repeat'\n }\n const masto = !data.hasOwnProperty('ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n if (message.content) {\n output.content = addEmojis(message.content, message.emojis)\n } else {\n output.content = ''\n }\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n let message = val.reduce((acc, message) => {\n let key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) form.append('avatar', avatar)\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { 'Authorization': `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n let status = ''\n let statusText = ''\n\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.errors) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n let postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n 'JOINED': 1,\n 'CLOSED': 2,\n 'ERROR': 3,\n 'DISABLED': 4,\n 'STARTING': 5,\n 'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n 'last_read_id': lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n fetchUser,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n fetchFollowRequests,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","import StillImage from '../still-image/still-image.vue'\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_avatar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_avatar.js\"\nimport __vue_script__ from \"!!babel-loader!./user_avatar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1bc06501\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.user)?_c('StillImage',{staticClass:\"Avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name_ui,\"title\":_vm.user.screen_name_ui,\"src\":_vm.imgSrc(_vm.user.profile_image_url_original),\"image-load-error\":_vm.imageLoadError}}):_c('div',{staticClass:\"Avatar -placeholder\",class:{ 'avatar-compact': _vm.compact }})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // Either 'top' or 'bottom'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one slot=\"trigger\".\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const screenBox = anchorEl.getBoundingClientRect()\n // Screen position of the origin point for popover\n const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n const content = this.$refs.content\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentBounds = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n min: parentBounds.left + (margin.left || 0),\n max: parentBounds.right - (margin.right || 0)\n } : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n min: parentBounds.top + (margin.top || 0),\n max: parentBounds.bottom - (margin.bottom || 0)\n } : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n\n // If overflowing from left, move it so that it doesn't\n if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n }\n\n // If overflowing from right, move it so that it doesn't\n if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n }\n\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n let vPadding = 0\n if (this.removePadding && usingTop) {\n const anchorStyle = getComputedStyle(anchorEl)\n vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n }\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n // Note, separate translateX and translateY avoids blurry text on chromium,\n // single translate or translate3d resulted in blurry text.\n this.styles = {\n opacity: 1,\n transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n }\n },\n showPopover () {\n const wasHidden = this.hidden\n this.hidden = false\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n destroyed () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./popover.js\"\nimport __vue_script__ from \"!!babel-loader!./popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-67137541\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"mouseenter\":_vm.onMouseenter,\"mouseleave\":_vm.onMouseleave}},[_c('button',{ref:\"trigger\",staticClass:\"button-unstyled -fullwidth popover-trigger-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass || 'popover-default',style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dialog_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./dialog_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./dialog_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70b9d662\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dialog_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:{ 'dark-overlay': _vm.darkOverlay },on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }$event.stopPropagation();return _vm.onCancel()}}},[_c('div',{staticClass:\"dialog-modal panel panel-default\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"panel-heading dialog-modal-heading\"},[_c('div',{staticClass:\"title\"},[_vm._t(\"header\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-footer user-interactions panel-footer\"},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./moderation_tools.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./moderation_tools.js\"\nimport __vue_script__ from \"!!babel-loader!./moderation_tools.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1db08408\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./moderation_tools.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Popover',{staticClass:\"moderation-tools-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"offset\":{ y: 5 }},on:{\"show\":function($event){return _vm.setToggled(true)},\"close\":function($event){return _vm.setToggled(false)}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleActivationStatus()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.deleteUserDialog(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.SANDBOX)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n \")]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.QUARANTINE)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n \")]):_vm._e()]):_vm._e()])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default btn-block moderation-tools-button\",class:{ toggled: _vm.toggled },attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n \"),_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}})],1)]),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)}},[_c('template',{slot:\"header\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))]),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn button-default\",on:{\"click\":function($event){return _vm.deleteUserDialog(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])])],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { recipient_id: this.user.id }\n })\n }\n },\n computed: {\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./account_actions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./account_actions.js\"\nimport __vue_script__ from \"!!babel-loader!./account_actions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7a55d8a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"AccountActions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"}},[_c('div',{staticClass:\"account-tools-popover\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.relationship.following)?[(_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.relationship.blocking)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.report'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaChatMessagesAvailable)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.openChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.message'))+\"\\n \")]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"ellipsis-button\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"ellipsis-v\"}})],1)])],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faChevronDown,\n faSearchPlus,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faChevronDown,\n faSearchPlus,\n faExternalLinkAlt\n)\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton\n },\n methods: {\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrent', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e30e573\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-card\",class:_vm.classes},[_c('div',{staticClass:\"background-image\",class:{ 'hide-bio': _vm.hideBio },style:(_vm.style)}),_vm._v(\" \"),_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"container\"},[(_vm.allowZoomingAvatar)?_c('a',{staticClass:\"user-info-avatar-link\",on:{\"click\":_vm.zoomAvatar}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}}),_vm._v(\" \"),_c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search-plus\"}})],1)],1):_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}})],1),_vm._v(\" \"),_c('div',{staticClass:\"user-summary\"},[_c('div',{staticClass:\"top-line\"},[(_vm.user.name_html)?_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name},domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.user.name)+\"\\n \")]),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('a',{staticClass:\"external-link-button\",attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"external-link-alt\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user,\"relationship\":_vm.relationship}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"title\":_vm.user.screen_name_ui,\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"general.role.\" + _vm.visibleRole)))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.bot'))+\"\\n \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('FAIcon',{staticClass:\"lock-icon\",attrs:{\"icon\":\"lock\",\"size\":\"sm\"}})],1):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],2)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.relationship.followed_by && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"userHighlightSel select\",attrs:{\"for\":\"theme_tab\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightType),expression:\"userHighlightType\"}],staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.userHighlightType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(_vm._s(_vm.$t('user_card.highlight.disabled')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(_vm._s(_vm.$t('user_card.highlight.solid')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(_vm._s(_vm.$t('user_card.highlight.striped')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(_vm._s(_vm.$t('user_card.highlight.side')))])]),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"relationship\":_vm.relationship}}),_vm._v(\" \"),(_vm.relationship.following)?[(!_vm.relationship.subscribing)?_c('ProgressButton',{staticClass:\"btn button-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1):_c('ProgressButton',{staticClass:\"btn button-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('FALayers',[_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"left-5 shrink-6 up-3 rotate-20\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"right-5 shrink-6 up-3 rotate-20\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1)],1)]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn button-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio && _vm.user.description_html)?_c('p',{staticClass:\"user-card-bio\",domProps:{\"innerHTML\":_vm._s(_vm.user.description_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):(!_vm.hideBio)?_c('p',{staticClass:\"user-card-bio\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.description)+\"\\n \")]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n undelay: null, // root\n topBar: null, // no transparency support\n badge: null, // no transparency support\n profileTint: null, // doesn't matter\n fg: null,\n bg: 'underlay',\n highlight: 'bg',\n panel: 'bg',\n popover: 'bg',\n selectedMenu: 'popover',\n btn: 'bg',\n btnPanel: 'panel',\n btnTopBar: 'topBar',\n input: 'bg',\n inputPanel: 'panel',\n inputTopBar: 'topBar',\n alert: 'bg',\n alertPanel: 'panel',\n poll: 'bg',\n chatBg: 'underlay',\n chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n wallpaper: {\n depends: ['bg'],\n color: (mod, bg) => brightness(-2 * mod, bg).rgb\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n border: {\n depends: ['fg'],\n opacity: 'border',\n color: (mod, fg) => brightness(2 * mod, fg).rgb\n },\n\n poll: {\n depends: ['accent', 'bg'],\n copacity: 'poll',\n color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n },\n pollText: {\n depends: ['text'],\n layer: 'poll',\n textColor: true\n },\n\n icon: {\n depends: ['bg', 'text'],\n inheritsOpacity: false,\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n // Foreground\n fgText: {\n depends: ['text'],\n layer: 'fg',\n textColor: true\n },\n fgLink: {\n depends: ['link'],\n layer: 'fg',\n textColor: 'preserve'\n },\n\n // Panel header\n panel: {\n depends: ['fg'],\n opacity: 'panel'\n },\n panelText: {\n depends: ['text'],\n layer: 'panel',\n textColor: true\n },\n panelFaint: {\n depends: ['fgText'],\n layer: 'panel',\n opacity: 'faint',\n textColor: true\n },\n panelLink: {\n depends: ['fgLink'],\n layer: 'panel',\n textColor: 'preserve'\n },\n\n // Top bar\n topBar: '--fg',\n topBarText: {\n depends: ['fgText'],\n layer: 'topBar',\n textColor: true\n },\n topBarLink: {\n depends: ['fgLink'],\n layer: 'topBar',\n textColor: 'preserve'\n },\n\n // Tabs\n tab: {\n depends: ['btn']\n },\n tabText: {\n depends: ['btnText'],\n layer: 'btn',\n textColor: true\n },\n tabActiveText: {\n depends: ['text'],\n layer: 'bg',\n textColor: true\n },\n\n // Buttons\n btn: {\n depends: ['fg'],\n variant: 'btn',\n opacity: 'btn'\n },\n btnText: {\n depends: ['fgText'],\n layer: 'btn',\n textColor: true\n },\n btnPanelText: {\n depends: ['btnText'],\n layer: 'btnPanel',\n variant: 'btn',\n textColor: true\n },\n btnTopBarText: {\n depends: ['btnText'],\n layer: 'btnTopBar',\n variant: 'btn',\n textColor: true\n },\n\n // Buttons: pressed\n btnPressed: {\n depends: ['btn'],\n layer: 'btn'\n },\n btnPressedText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedPanel: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedTopBar: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnPressed',\n textColor: true\n },\n\n // Buttons: toggled\n btnToggled: {\n depends: ['btn'],\n layer: 'btn',\n color: (mod, btn) => brightness(mod * 20, btn).rgb\n },\n btnToggledText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnToggled',\n textColor: true\n },\n\n // Buttons: disabled\n btnDisabled: {\n depends: ['btn', 'bg'],\n color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n },\n btnDisabledText: {\n depends: ['btnText', 'btnDisabled'],\n layer: 'btn',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledPanelText: {\n depends: ['btnPanelText', 'btnDisabled'],\n layer: 'btnPanel',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledTopBarText: {\n depends: ['btnTopBarText', 'btnDisabled'],\n layer: 'btnTopBar',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n\n // Input fields\n input: {\n depends: ['fg'],\n opacity: 'input'\n },\n inputText: {\n depends: ['text'],\n layer: 'input',\n textColor: true\n },\n inputPanelText: {\n depends: ['panelText'],\n layer: 'inputPanel',\n variant: 'input',\n textColor: true\n },\n inputTopbarText: {\n depends: ['topBarText'],\n layer: 'inputTopBar',\n variant: 'input',\n textColor: true\n },\n\n alertError: {\n depends: ['cRed'],\n opacity: 'alert'\n },\n alertErrorText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertError',\n textColor: true\n },\n alertErrorPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertError',\n textColor: true\n },\n\n alertWarning: {\n depends: ['cOrange'],\n opacity: 'alert'\n },\n alertWarningText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertWarning',\n textColor: true\n },\n alertWarningPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertWarning',\n textColor: true\n },\n\n alertSuccess: {\n depends: ['cGreen'],\n opacity: 'alert'\n },\n alertSuccessText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertSuccess',\n textColor: true\n },\n alertSuccessPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertSuccess',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupSuccess: {\n depends: ['alertSuccess'],\n opacity: 'alertPopup'\n },\n alertPopupSuccessText: {\n depends: ['alertSuccessText'],\n layer: 'popover',\n variant: 'alertPopupSuccess',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n },\n\n chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`body { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n }\n}\n\nexport default ReplyButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./reply_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./reply_button.js\"\nimport __vue_script__ from \"!!babel-loader!./reply_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56f413c0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./reply_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ReplyButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:{'-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('toggle')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\"}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"title\":_vm.$t('tool_tip.reply')}})],1),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.replies_count)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21f861d8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"FavoriteButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.favorited && '-favorited',attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":[_vm.status.favorited ? 'fas' : 'far', 'star'],\"spin\":_vm.animated}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"title\":_vm.$t('tool_tip.favorite'),\"icon\":['far', 'star']}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.fave_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n focusInput () {\n this.$nextTick(() => {\n const input = this.$el.querySelector('input')\n if (input) input.focus()\n })\n }\n },\n computed: {\n commonEmojis () {\n return [\n { displayText: 'thumbsup', replacement: '👍' },\n { displayText: 'angry', replacement: '😠' },\n { displayText: 'eyes', replacement: '👀' },\n { displayText: 'joy', replacement: '😂' },\n { displayText: 'fire', replacement: '🔥' }\n ]\n },\n emojis () {\n if (this.filterWord !== '') {\n const filterWordLowercase = this.filterWord.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of this.$store.state.instance.emoji) {\n if (emoji.replacement === this.filterWord) return [emoji]\n\n const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n if (indexOfFilterWord > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n orderedEmojiList[indexOfFilterWord] = []\n }\n orderedEmojiList[indexOfFilterWord].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return this.$store.state.instance.emoji || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-814fabba\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ReactButton\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},on:{\"show\":_vm.focusInput},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"size\":\"1\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji.replacement,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)])}}])},[_vm._v(\" \"),_c('span',{staticClass:\"popover-trigger\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('tool_tip.add_reaction')},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":['far', 'smile-beam']}})],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46fe49c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"RetweetButton\"},[(_vm.visibility !== 'private' && _vm.visibility !== 'direct' && _vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.repeated && '-repeated',attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"spin\":_vm.animated}})],1):(_vm.loggedIn)?_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\",\"title\":_vm.$t('timeline.no_retweet_hint')}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',{staticClass:\"no-event\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.repeat_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag\n)\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-57750a15\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ExtraButtons\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'bookmark']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"share-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])],1),_vm._v(\" \"),(!_vm.status.is_local)?_c('a',{staticClass:\"button-default dropdown-item dropdown-item-icon\",attrs:{\"title\":\"Source\",\"href\":_vm.status.external_url,\"target\":\"_blank\"}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"external-link-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.external_source\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.reportStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'flag']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"user_card.report\")))])],1)])])}}])},[_vm._v(\" \"),_c('span',{staticClass:\"popover-trigger\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"ellipsis-h\"}})],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: () => import('../status/status.vue'),\n Popover: () => import('../popover/popover.vue')\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-32b5e6b8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"popover-class\":\"popover-default status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter}},[_c('template',{slot:\"trigger\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.status)?_c('Status',{attrs:{\"is-preview\":true,\"statusoid\":_vm.status,\"compact\":true}}):(_vm.error)?_c('div',{staticClass:\"status-preview-no-content faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.status_unavailable'))+\"\\n \")]):_c('div',{staticClass:\"status-preview-no-content\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"2x\"}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n Popover: () => import('../popover/popover.vue'),\n UserAvatar: () => import('../user_avatar/user_avatar.vue')\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_list_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_list_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./user_list_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6725f7f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_list_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }}},[_c('template',{slot:\"trigger\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"user-list-popover\",attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.users.length)?_c('div',_vm._l((_vm.usersCapped),function(user){return _c('div',{key:user.id,staticClass:\"user-list-row\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"user-list-names\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(user.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"user-list-screen-name\"},[_vm._v(_vm._s(user.screen_name_ui))])])],1)}),0):_c('div',[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}})],1)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a9f972b4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('UserListPopover',{key:reaction.name,attrs:{\"users\":_vm.accountsForEmoji[reaction.name]}},[_c('button',{staticClass:\"emoji-reaction btn button-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}}},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack\n)\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId'\n ],\n data () {\n return {\n replying: false,\n unmuted: false,\n userExpanded: false,\n mediaPlaying: [],\n suspendable: true,\n error: null\n }\n },\n computed: {\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n return this.generateUserProfileLink(this.status.in_reply_to_user_id, this.replyToName)\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name_html },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n const reasonsToMute = (\n // Post is muted according to BE\n status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting) ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0\n )\n const excusesNotToMute = (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n\n return !this.unmuted && !excusesNotToMute && reasonsToMute\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideStatus () {\n return (this.muted && this.hideFilteredStatuses) || this.virtualHidden\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n }\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'lock'\n case 'unlisted':\n return 'lock-open'\n case 'direct':\n return 'envelope'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n this.replying = !this.replying\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n this.mediaPlaying.push(id)\n },\n removeMediaPlaying (id) {\n this.mediaPlaying = this.mediaPlaying.filter(mediaId => mediaId !== id)\n }\n },\n watch: {\n 'highlight': function (id) {\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n },\n 'isSuspendable': function (val) {\n this.suspendable = val\n }\n },\n filters: {\n capitalize: function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n }\n}\n\nexport default Status\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./status.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./status.js\"\nimport __vue_script__ from \"!!babel-loader!./status.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2273de09\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Status\",class:[{ '-focused': _vm.isFocused }, { '-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('span',{staticClass:\"fa-scale-110 fa-old-padding\",on:{\"click\":_vm.clearError}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"status-container muted\"},[_c('small',{staticClass:\"status-username\"},[(_vm.muted && _vm.retweet)?_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding repeat-icon\",attrs:{\"icon\":\"retweet\"}}):_vm._e(),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n \")])],1),_vm._v(\" \"),(_vm.showReasonMutedThread)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showReasonMutedThread && _vm.muteWordHits.length > 0)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted_and_words'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('small',{staticClass:\"mute-words\",attrs:{\"title\":_vm.muteWordHits.join(', ')}},[_vm._v(\"\\n \"+_vm._s(_vm.muteWordHits.join(', '))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"unmute button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)])]:[(_vm.showPinned)?_c('div',{staticClass:\"pin\"},[_c('FAIcon',{staticClass:\"faint\",attrs:{\"icon\":\"thumbtack\"}}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])],1):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"status-container repeat-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"left-side repeater-avatar\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side faint\"},[_c('span',{staticClass:\"status-username repeater-name\",attrs:{\"title\":_vm.retweeter}},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink},domProps:{\"innerHTML\":_vm._s(_vm.retweeterHtml)}}):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('FAIcon',{staticClass:\"repeat-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.deleted)?_c('div',{staticClass:\"status-container\",class:[_vm.userClass, { highlighted: _vm.userStyle, '-repeat': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"left-side\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink},nativeOn:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact,\"better-shadow\":_vm.betterShadow,\"user\":_vm.status.user}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"usercard\",attrs:{\"user-id\":_vm.status.user.id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"status-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"heading-left\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name},domProps:{\"innerHTML\":_vm._s(_vm.status.user.name_html)}}):_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.name)+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"title\":_vm.status.user.screen_name_ui,\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(!!(_vm.status.user && _vm.status.user.favicon))?_c('img',{staticClass:\"status-favicon\",attrs:{\"src\":_vm.status.user.favicon}}):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"},[_c('router-link',{staticClass:\"timeago faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.status.created_at,\"auto-update\":60}})],1),_vm._v(\" \"),(_vm.status.visibility)?_c('span',{staticClass:\"visibility-icon\",attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.visibilityIcon(_vm.status.visibility)}})],1):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?_c('button',{staticClass:\"button-unstyled\",attrs:{\"title\":_vm.$t('status.expand')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"plus-square\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}})],1):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('div',{staticClass:\"reply-to-and-accountname\"},[(!_vm.isPreview)?_c('StatusPopover',{staticClass:\"reply-to-popover\",class:{ '-strikethrough': !_vm.status.parent_visible },staticStyle:{\"min-width\":\"0\"},attrs:{\"status-id\":_vm.status.parent_visible && _vm.status.in_reply_to_status_id}},[_c('button',{staticClass:\"button-unstyled reply-to\",attrs:{\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('span',{staticClass:\"faint-link reply-to-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.reply_to'))+\"\\n \")])],1)]):_c('span',{staticClass:\"reply-to-no-popover\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('router-link',{staticClass:\"reply-to-link\",attrs:{\"title\":_vm.replyToName,\"to\":_vm.replyProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.replyToName)+\"\\n \")]),_vm._v(\" \"),(_vm.replies && _vm.replies.length)?_c('span',{staticClass:\"faint replies-separator\"},[_vm._v(\"\\n -\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.inConversation && !_vm.isPreview && _vm.replies && _vm.replies.length)?_c('div',{staticClass:\"replies\"},[_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.replies_list')))]),_vm._v(\" \"),_vm._l((_vm.replies),function(reply){return _c('StatusPopover',{key:reply.id,attrs:{\"status-id\":reply.id}},[_c('button',{staticClass:\"button-unstyled -link reply-link\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(reply.id)}}},[_vm._v(\"\\n \"+_vm._s(reply.name)+\"\\n \")])])})],2):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.status,\"no-heading\":_vm.noHeading,\"highlight\":_vm.highlight,\"focused\":_vm.isFocused},on:{\"mediaplay\":function($event){return _vm.addMediaPlaying($event)},\"mediapause\":function($event){return _vm.removeMediaPlaying($event)}}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.hidePostStats && _vm.isFocused && _vm.combinedFavsAndRepeatsUsers.length > 0)?_c('div',{staticClass:\"favs-repeated-users\"},[_c('div',{staticClass:\"stats\"},[(_vm.statusFromGlobalRepository.rebloggedBy && _vm.statusFromGlobalRepository.rebloggedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.rebloggedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.repeats')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.rebloggedBy.length)+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),(_vm.statusFromGlobalRepository.favoritedBy && _vm.statusFromGlobalRepository.favoritedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.favoritedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.favorites')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.favoritedBy.length)+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"avatar-row\"},[_c('AvatarList',{attrs:{\"users\":_vm.combinedFavsAndRepeatsUsers}})],1)],1)]):_vm._e()]),_vm._v(\" \"),((_vm.mergedConfig.emojiReactionsOnTimeline || _vm.isFocused) && (!_vm.noHeading && !_vm.isPreview))?_c('EmojiReactions',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading && !_vm.isPreview)?_c('div',{staticClass:\"status-actions\"},[_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}),_vm._v(\" \"),_c('retweet-button',{attrs:{\"visibility\":_vm.status.visibility,\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('favorite-button',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),(_vm.loggedIn)?_c('ReactButton',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),_c('extra-buttons',{attrs:{\"status\":_vm.status},on:{\"onError\":_vm.showError,\"onSuccess\":_vm.clearError}})],1):_vm._e()],1)]):_c('div',{staticClass:\"gravestone\"},[_c('div',{staticClass:\"left-side\"},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact}})],1),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[_c('div',{staticClass:\"deleted-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.status_deleted'))+\"\\n \")]),_vm._v(\" \"),(_vm.replying)?_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}):_vm._e()],1)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"status-container reply-form\"},[_c('PostStatusForm',{staticClass:\"reply-body\",attrs:{\"reply-to\":_vm.status.id,\"attentions\":_vm.status.attentions,\"replied-user\":_vm.status.user,\"copy-message-scope\":_vm.status.visibility,\"subject\":_vm.replySubject},on:{\"posted\":_vm.toggleReplying}})],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeago from '../timeago/timeago.vue'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll'],\n components: { Timeago },\n data () {\n return {\n loading: false,\n choices: []\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n destroyed () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll.js\"\nimport __vue_script__ from \"!!babel-loader!./poll.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4236989e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"poll\",class:_vm.containerClass},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[(_vm.showResults)?_c('div',{staticClass:\"option-result\",attrs:{\"title\":_vm.resultTitle(option)}},[_c('div',{staticClass:\"option-result-label\"},[_c('span',{staticClass:\"result-percentage\"},[_vm._v(\"\\n \"+_vm._s(_vm.percentageForOption(option.votes_count))+\"%\\n \")]),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(option.title_html)}})]),_vm._v(\" \"),_c('div',{staticClass:\"result-fill\",style:({ 'width': ((_vm.percentageForOption(option.votes_count)) + \"%\") })})]):_c('div',{on:{\"click\":function($event){return _vm.activateOption(index)}}},[(_vm.poll.multiple)?_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.loading},domProps:{\"value\":index}}):_c('input',{attrs:{\"type\":\"radio\",\"disabled\":_vm.loading},domProps:{\"value\":index}}),_vm._v(\" \"),_c('label',{staticClass:\"option-vote\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(option.title_html)}})])])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn button-default poll-vote-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.vote}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.vote'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"total\"},[(typeof _vm.poll.voters_count === 'number')?[_vm._v(\"\\n \"+_vm._s(_vm.$tc(\"polls.people_voted_count\", _vm.poll.voters_count, { count: _vm.poll.voters_count }))+\" · \\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$tc(\"polls.votes_count\", _vm.poll.votes_count, { count: _vm.poll.votes_count }))+\" · \\n \")]],2),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":_vm.expired ? 'polls.expired' : 'polls.expires_in'}},[_c('Timeago',{attrs:{\"time\":_vm.expiresAt,\"auto-update\":60,\"now-threshold\":0}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport fileType from 'src/services/file_type/file_type.service'\nimport { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js'\nimport { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine'\n ],\n data () {\n return {\n showingTall: this.fullContent || (this.inConversation && this.focused),\n showingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n // This is a bit hacky, but we want to approximate post height before rendering\n // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n // as well as approximate line count by counting characters and approximating ~80\n // per line.\n //\n // Using max-height + overflow: auto for status components resulted in false positives\n // very often with japanese characters, and it was very annoying.\n tallStatus () {\n const lengthScore = this.status.statusnet_html.split(/<p|<br/).length + this.status.text.length / 80\n return lengthScore > 20\n },\n longSubject () {\n return this.status.summary.length > 240\n },\n // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n mightHideBecauseSubject () {\n return !!this.status.summary && this.localCollapseSubjectDefault\n },\n mightHideBecauseTall () {\n return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n },\n hideSubjectStatus () {\n return this.mightHideBecauseSubject && !this.expandingSubject\n },\n hideTallStatus () {\n return this.mightHideBecauseTall && !this.showingTall\n },\n showingMore () {\n return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n } else if (this.compact) {\n return 'small'\n }\n return 'normal'\n },\n galleryTypes () {\n if (this.attachmentSize === 'hide') {\n return []\n }\n return this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n },\n galleryAttachments () {\n return this.status.attachments.filter(\n file => fileType.fileMatchesSomeType(this.galleryTypes, file)\n )\n },\n nonGalleryAttachments () {\n return this.status.attachments.filter(\n file => !fileType.fileMatchesSomeType(this.galleryTypes, file)\n )\n },\n attachmentTypes () {\n return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n postBodyHtml () {\n const html = this.status.statusnet_html\n\n if (this.mergedConfig.greentext) {\n try {\n if (html.includes('&gt;')) {\n // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works\n return processHtml(html, (string) => {\n if (string.includes('&gt;') &&\n string\n .replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n .startsWith('&gt;')) {\n return `<span class='greentext'>${string}</span>`\n } else {\n return string\n }\n })\n } else {\n return html\n }\n } catch (e) {\n console.err('Failed to process status html', e)\n return html\n }\n } else {\n return html\n }\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview\n },\n methods: {\n linkClicked (event) {\n const target = event.target.closest('.status-content a')\n if (target) {\n if (target.className.match(/mention/)) {\n const href = target.href\n const attn = this.status.attentions.find(attn => mentionMatchesUrl(attn, href))\n if (attn) {\n event.stopPropagation()\n event.preventDefault()\n const link = this.generateUserProfileLink(attn.id, attn.screen_name)\n this.$router.push(link)\n return\n }\n }\n if (target.rel.match(/(?:^|\\s)tag(?:$|\\s)/) || target.className.match(/hashtag/)) {\n // Extract tag name from dataset or link url\n const tag = target.dataset.tag || extractTagFromUrl(target.href)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n return\n }\n }\n window.open(target.href, '_blank')\n }\n },\n toggleShowMore () {\n if (this.mightHideBecauseTall) {\n this.showingTall = !this.showingTall\n } else if (this.mightHideBecauseSubject) {\n this.expandingSubject = !this.expandingSubject\n }\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects any type of visual newline and\n * allows it to be processed, useful for greentexting, mostly\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @param {(string) => string} processor - function that will be called on every line\n * @return {string} processed html\n */\nexport const processHtml = (html, processor) => {\n const handledTags = new Set(['p', 'br', 'div'])\n const openCloseTags = new Set(['p', 'div'])\n\n let buffer = '' // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n // Extracts tag name from tag, i.e. <span a=\"b\"> => span\n const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?[^/]*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n }\n\n const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer.trim().length > 0) {\n buffer += processor(textBuffer)\n } else {\n buffer += textBuffer\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer += tag\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer += tag\n level.push(tag)\n }\n\n const handleClose = (tag) => { // handles closing tags\n flush()\n buffer += tag\n if (level[level.length - 1] === tag) {\n level.pop()\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (handledTags.has(tagName)) {\n if (tagName === 'br') {\n handleBr(tagFull)\n } else if (openCloseTags.has(tagName)) {\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleBr(tagFull)\n } else {\n handleOpen(tagFull)\n }\n }\n } else {\n textBuffer += tagFull\n }\n } else if (char === '\\n') {\n handleBr(char)\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flush()\n\n return buffer\n}\n","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_content.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_content.js\"\nimport __vue_script__ from \"!!babel-loader!./status_content.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f73ef5c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"StatusContent\"},[_vm._t(\"header\"),_vm._v(\" \"),(_vm.status.summary_html)?_c('div',{staticClass:\"summary-wrapper\",class:{ 'tall-subject': (_vm.longSubject && !_vm.showingLongSubject) }},[_c('div',{staticClass:\"media-body summary\",domProps:{\"innerHTML\":_vm._s(_vm.status.summary_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.longSubject && _vm.showingLongSubject)?_c('button',{staticClass:\"button-unstyled -link tall-subject-hider\",on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.hide_full_subject\"))+\"\\n \")]):(_vm.longSubject)?_c('button',{staticClass:\"button-unstyled -link tall-subject-hider\",class:{ 'tall-subject-hider_focused': _vm.focused },on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_full_subject\"))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-content-wrapper\",class:{'tall-status': _vm.hideTallStatus}},[(_vm.hideTallStatus)?_c('button',{staticClass:\"button-unstyled -link tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.focused },on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_c('div',{staticClass:\"status-content media-body\",class:{ 'single-line': _vm.singleLine },domProps:{\"innerHTML\":_vm._s(_vm.postBodyHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):_vm._e(),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('button',{staticClass:\"button-unstyled -link cw-status-hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_content\"))+\"\\n \"),(_vm.attachmentTypes.includes('image'))?_c('FAIcon',{attrs:{\"icon\":\"image\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('video'))?_c('FAIcon',{attrs:{\"icon\":\"video\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('audio'))?_c('FAIcon',{attrs:{\"icon\":\"music\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('unknown'))?_c('FAIcon',{attrs:{\"icon\":\"file\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('FAIcon',{attrs:{\"icon\":\"link\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showingMore && !_vm.fullContent)?_c('button',{staticClass:\"button-unstyled -link status-unhider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.tallStatus ? _vm.$t(\"general.show_less\") : _vm.$t(\"status.hide_content\"))+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options && !_vm.hideSubjectStatus)?_c('div',[_c('poll',{attrs:{\"base-poll\":_vm.status.poll}})],1):_vm._e(),_vm._v(\" \"),(_vm.status.attachments.length !== 0 && (!_vm.hideSubjectStatus || _vm.showingLongSubject))?_c('div',{staticClass:\"attachments media-body\"},[_vm._l((_vm.nonGalleryAttachments),function(attachment){return _c('attachment',{key:attachment.id,staticClass:\"non-gallery\",attrs:{\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough,\"attachment\":attachment,\"allow-play\":true,\"set-media\":_vm.setMedia()},on:{\"play\":function($event){return _vm.$emit('mediaplay', attachment.id)},\"pause\":function($event){return _vm.$emit('mediapause', attachment.id)}}})}),_vm._v(\" \"),(_vm.galleryAttachments.length > 0)?_c('gallery',{attrs:{\"nsfw\":_vm.nsfwClickthrough,\"attachments\":_vm.galleryAttachments,\"set-media\":_vm.setMedia()}}):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.status.card && !_vm.hideSubjectStatus && !_vm.noHeading)?_c('div',{staticClass:\"link-preview media-body\"},[_c('link-preview',{attrs:{\"card\":_vm.status.card,\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough}})],1):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n let r = { num: round(d / YEAR), key: 'time.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.months'\n }\n // Remove plural form when singular\n if (r.num === 1) r.key = r.key.slice(0, -1)\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n","import UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n props: [\n 'user'\n ],\n data () {\n return {\n userExpanded: false\n }\n },\n components: {\n UserCard,\n UserAvatar\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./basic_user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./basic_user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./basic_user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9c08ab70\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./basic_user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"basic-user-card\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{staticClass:\"avatar\",attrs:{\"user\":_vm.user},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.toggleUserExpanded($event)}}})],1),_vm._v(\" \"),(_vm.userExpanded)?_c('div',{staticClass:\"basic-user-card-expanded-content\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"rounded\":true,\"bordered\":true}})],1):_c('div',{staticClass:\"basic-user-card-collapsed-content\"},[_c('div',{staticClass:\"basic-user-card-user-name\",attrs:{\"title\":_vm.user.name}},[(_vm.user.name_html)?_c('span',{staticClass:\"basic-user-card-user-name-value\",domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('span',{staticClass:\"basic-user-card-user-name-value\"},[_vm._v(_vm._s(_vm.user.name))])]),_vm._v(\" \"),_c('div',[_c('router-link',{staticClass:\"basic-user-card-screen-name\",attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n \")])],1),_vm._v(\" \"),_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n let array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_upload.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_upload.js\"\nimport __vue_script__ from \"!!babel-loader!./media_upload.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9d0f738a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_upload.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"media-upload\",class:{ disabled: _vm.disabled },attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('FAIcon',{staticClass:\"progress-icon\",attrs:{\"icon\":\"circle-notch\",\"spin\":\"\"}}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('FAIcon',{staticClass:\"new-icon\",attrs:{\"icon\":\"upload\"}}):_vm._e(),_vm._v(\" \"),(_vm.uploadReady)?_c('input',{staticStyle:{\"position\":\"fixed\",\"top\":\"-100em\"},attrs:{\"disabled\":_vm.disabled,\"type\":\"file\",\"multiple\":\"true\"},on:{\"change\":_vm.change}}):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faChevronDown,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faChevronDown,\n faPlus\n)\n\nexport default {\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-287d7742\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"size\":\"1\",\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('button',{staticClass:\"delete-option button-unstyled -hover-highlight\",on:{\"click\":function($event){return _vm.deleteOption(index)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('button',{staticClass:\"add-option faint button-unstyled -hover-highlight\",on:{\"click\":_vm.addOption}},[_c('FAIcon',{attrs:{\"icon\":\"plus\",\"size\":\"sm\"}}),_vm._v(\"\\n\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"poll-type-selector\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.pollType),expression:\"pollType\"}],staticClass:\"select\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.pollType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePollToParent]}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(_vm._s(_vm.$t('polls.single_choice')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(_vm._s(_vm.$t('polls.multiple_choices')))])]),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"expiry-unit select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryUnit),expression:\"expiryUnit\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.expiryUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.expiryAmountChange]}},_vm._l((_vm.expiryUnits),function(unit){return _c('option',{key:unit,domProps:{\"value\":unit}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"time.\" + unit + \"_short\"), ['']))+\"\\n \")])}),0),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)])])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown,\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Attachment,\n StatusContent\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n 'newStatus': {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n }\n }\n}\n\nexport default PostStatusForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_form.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-89eb9e76\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"form\",staticClass:\"post-status-form\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();},\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropIcon !== 'hide'),expression:\"showDropIcon !== 'hide'\"}],staticClass:\"drop-indicator\",style:({ animation: _vm.showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }),on:{\"dragleave\":_vm.fileDragStop,\"drop\":function($event){$event.stopPropagation();return _vm.fileDrop($event)}}},[_c('FAIcon',{attrs:{\"icon\":_vm.uploadFileLimitReached ? 'ban' : 'upload'}})],1),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private' && !_vm.disableLockWarning)?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":_vm.openProfileTab}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),(!_vm.disablePreview)?_c('div',{staticClass:\"preview-heading faint\"},[_c('a',{staticClass:\"preview-toggle faint\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePreview($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.preview'))+\"\\n \"),_c('FAIcon',{attrs:{\"icon\":_vm.showPreview ? 'chevron-left' : 'chevron-right'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"preview-spinner\"},[_c('FAIcon',{staticClass:\"fa-old-padding\",attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.showPreview)?_c('div',{staticClass:\"preview-container\"},[(!_vm.preview)?_c('div',{staticClass:\"preview-status\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")]):(_vm.preview.error)?_c('div',{staticClass:\"preview-status preview-error\"},[_vm._v(\"\\n \"+_vm._s(_vm.preview.error)+\"\\n \")]):_c('StatusContent',{staticClass:\"preview-status\",attrs:{\"status\":_vm.preview}})],1):_vm._e(),_vm._v(\" \"),(!_vm.disableSubject && (_vm.newStatus.spoilerText || _vm.alwaysShowSubject))?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning'),\"disabled\":_vm.posting && !_vm.optimisticPosting,\"size\":\"1\"},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"placement\":_vm.emojiPickerPlacement,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"newline-on-ctrl-enter\":_vm.submitOnEnter,\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed,\"shown\":_vm.handleEmojiInputShow},model:{value:(_vm.newStatus.status),callback:function ($$v) {_vm.$set(_vm.newStatus, \"status\", $$v)},expression:\"newStatus.status\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.status),expression:\"newStatus.status\"}],ref:\"textarea\",staticClass:\"form-post-body\",class:{ 'scrollable-form': !!_vm.maxHeight },attrs:{\"placeholder\":_vm.placeholder || _vm.$t('post_status.default'),\"rows\":\"1\",\"cols\":\"1\",\"disabled\":_vm.posting && !_vm.optimisticPosting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }return _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }!_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)}],\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"status\", $event.target.value)},_vm.resize],\"compositionupdate\":_vm.resize,\"paste\":_vm.paste}}),_vm._v(\" \"),(_vm.hasStatusLengthLimit)?_c('p',{staticClass:\"character-counter faint\",class:{ error: _vm.isOverLengthLimit }},[_vm._v(\"\\n \"+_vm._s(_vm.charactersLeft)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(!_vm.disableScopeSelector)?_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"post-content-type\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.contentType),expression:\"newStatus.contentType\"}],staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.newStatus, \"contentType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.postFormats),function(postFormat){return _c('option',{key:postFormat,domProps:{\"value\":postFormat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + postFormat + \"\\\"]\")))+\"\\n \")])}),0),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n \")])]):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('poll-form',{ref:\"pollForm\",attrs:{\"visible\":_vm.pollFormVisible},on:{\"update-poll\":_vm.setPoll}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"bottom\",staticClass:\"form-bottom\"},[_c('div',{staticClass:\"form-bottom-left\"},[_c('media-upload',{ref:\"mediaUpload\",staticClass:\"media-upload-icon\",attrs:{\"drop-files\":_vm.dropFiles,\"disabled\":_vm.uploadFileLimitReached},on:{\"uploading\":_vm.startedUploadingFiles,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed,\"all-uploaded\":_vm.finishedUploadingFiles}}),_vm._v(\" \"),_c('button',{staticClass:\"emoji-icon button-unstyled\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}},[_c('FAIcon',{attrs:{\"icon\":\"smile-beam\"}})],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('button',{staticClass:\"poll-icon button-unstyled\",class:{ selected: _vm.pollFormVisible },attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}},[_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.post'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.uploadingFiles || _vm.disableSubmit},on:{\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.post'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1),_vm._v(\" \"),_c('attachment',{attrs:{\"attachment\":file,\"set-media\":function () { return _vm.$store.dispatch('setMedia', _vm.newStatus.files); },\"size\":\"small\",\"allow-play\":\"false\"}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.mediaDescriptions[file.id]),expression:\"newStatus.mediaDescriptions[file.id]\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.media_description')},domProps:{\"value\":(_vm.newStatus.mediaDescriptions[file.id])},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus.mediaDescriptions, file.id, $event.target.value)}}})],1)}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0 && !_vm.disableSensitivityCheckbox)?_c('div',{staticClass:\"upload_settings\"},[_c('Checkbox',{model:{value:(_vm.newStatus.nsfw),callback:function ($$v) {_vm.$set(_vm.newStatus, \"nsfw\", $$v)},expression:\"newStatus.nsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.attachments_sensitive'))+\"\\n \")])],1):_vm._e()],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'nsfw',\n 'size',\n 'allowPlay',\n 'setMedia',\n 'naturalSizeLoad'\n ],\n data () {\n return {\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false\n }\n },\n components: {\n StillImage,\n VideoAttachment\n },\n computed: {\n usePlaceholder () {\n return this.size === 'hide' || this.type === 'unknown'\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n },\n isSmall () {\n return this.size === 'small'\n },\n fullwidth () {\n if (this.size === 'hide') return false\n return this.type === 'html' || this.type === 'audio' || this.type === 'unknown'\n },\n useModal () {\n const modalTypes = this.size === 'hide' ? ['image', 'video', 'audio']\n : this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n return modalTypes.includes(this.type)\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n event.stopPropagation()\n event.preventDefault()\n this.setMedia()\n this.$store.dispatch('setCurrent', this.attachment)\n }\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n }\n }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0bbdeccd\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceholder)?_c('div',{class:{ 'fullwidth': _vm.fullwidth },on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description}},[_c('FAIcon',{attrs:{\"icon\":_vm.placeholderIconClass}}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n \")],1):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] = _vm.fullwidth, _obj['nsfw-placeholder'] = _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\"},on:{\"click\":_vm.openModal}},[_c('StillImage',{staticClass:\"image\",attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad,\"alt\":_vm.attachment.description}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"controls\":\"\"},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n destroyed () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-afc3a092\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n if (prefs === undefined) return\n const { color, type } = prefs\n if (typeof color !== 'string') return\n const rgb = hex2rgb(color)\n if (rgb == null) return\n const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n if (type === 'striped') {\n return {\n backgroundImage: [\n 'repeating-linear-gradient(135deg,',\n `${tintColor} ,`,\n `${tintColor} 20px,`,\n `${tintColor2} 20px,`,\n `${tintColor2} 40px`\n ].join(' '),\n backgroundPosition: '0 0'\n }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2\n }\n } else if (type === 'side') {\n return {\n backgroundImage: [\n 'linear-gradient(to right,',\n `${solidColor} ,`,\n `${solidColor} 2px,`,\n `transparent 6px`\n ].join(' '),\n backgroundPosition: '0 0'\n }\n }\n}\n\nconst highlightClass = (user) => {\n return 'USER____' + user.screen_name\n .replace(/\\./g, '_')\n .replace(/@/g, '_AT_')\n}\n\nexport {\n highlightClass,\n highlightStyle\n}\n","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c1790f52\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"list\"},[_vm._l((_vm.items),function(item){return _c('div',{key:_vm.getKey(item),staticClass:\"list-item\"},[_vm._t(\"item\",null,{\"item\":item})],2)}),_vm._v(\" \"),(_vm.items.length === 0 && !!_vm.$slots.empty)?_c('div',{staticClass:\"list-empty-content faint\"},[_vm._t(\"empty\")],2):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate }\"\n >\n <input\n type=\"checkbox\"\n :disabled=\"disabled\"\n :checked=\"checked\"\n :indeterminate.prop=\"indeterminate\"\n @change=\"$emit('change', $event.target.checked)\"\n >\n <i class=\"checkbox-indicator\" />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n model: {\n prop: 'checked',\n event: 'change'\n },\n props: [\n 'checked',\n 'indeterminate',\n 'disabled'\n ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: '✓';\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0px 0px 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: .5;\n }\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=checkbox] {\n display: none;\n\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: '–';\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n }\n\n & > span {\n margin-left: .5em;\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./checkbox.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0631206a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./checkbox.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"checkbox\",class:{ disabled: _vm.disabled, indeterminate: _vm.indeterminate }},[_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"checked\":_vm.checked,\"indeterminate\":_vm.indeterminate},on:{\"change\":function($event){return _vm.$emit('change', $event.target.checked)}}}),_vm._v(\" \"),_c('i',{staticClass:\"checkbox-indicator\"}),_vm._v(\" \"),(!!_vm.$slots.default)?_c('span',{staticClass:\"label\"},[_vm._t(\"default\")],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n }\n },\n methods: {\n onLoad () {\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./still-image.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./still-image.js\"\nimport __vue_script__ from \"!!babel-loader!./still-image.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-04da2070\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./still-image.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"still-image\",class:{ animated: _vm.animated }},[(_vm.animated)?_c('canvas',{ref:\"canvas\"}):_vm._e(),_vm._v(\" \"),_c('img',{key:_vm.src,ref:\"src\",attrs:{\"alt\":_vm.alt,\"title\":_vm.alt,\"src\":_vm.src,\"referrerpolicy\":_vm.referrerpolicy},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n ar: () => import('./ar.json'),\n ca: () => import('./ca.json'),\n cs: () => import('./cs.json'),\n de: () => import('./de.json'),\n eo: () => import('./eo.json'),\n es: () => import('./es.json'),\n et: () => import('./et.json'),\n eu: () => import('./eu.json'),\n fi: () => import('./fi.json'),\n fr: () => import('./fr.json'),\n ga: () => import('./ga.json'),\n he: () => import('./he.json'),\n hu: () => import('./hu.json'),\n it: () => import('./it.json'),\n ja: () => import('./ja_pedantic.json'),\n ja_easy: () => import('./ja_easy.json'),\n ko: () => import('./ko.json'),\n nb: () => import('./nb.json'),\n nl: () => import('./nl.json'),\n oc: () => import('./oc.json'),\n pl: () => import('./pl.json'),\n pt: () => import('./pt.json'),\n ro: () => import('./ro.json'),\n ru: () => import('./ru.json'),\n te: () => import('./te.json'),\n uk: () => import('./uk.json'),\n zh: () => import('./zh.json'),\n zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n languages: ['en', ...Object.keys(loaders)],\n default: {\n en: require('./en.json')\n },\n setLanguage: async (i18n, language) => {\n if (loaders[language]) {\n let messages = await loaders[language]()\n i18n.setLocaleMessage(language, messages)\n }\n i18n.locale = language\n }\n}\n\nexport default messages\n","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","<template>\n <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f751ae6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./progress_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{attrs:{\"disabled\":_vm.progress || _vm.disabled},on:{\"click\":_vm.onClick}},[(_vm.progress && _vm.$slots.progress)?[_vm._t(\"progress\")]:[_vm._t(\"default\")]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const specialLanguageCodes = {\n 'ja_easy': 'ja',\n 'zh_Hant': 'zh-HANT'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst localeService = {\n internalToBrowserLocale\n}\n\nexport default localeService\n","import { set, delete as del } from 'vue'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior'\n]\n\nexport const defaultState = {\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: false,\n replyVisibility: 'all',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n chatMention: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: false,\n greentext: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideUserStats: undefined, // instance default\n virtualScrolling: undefined, // instance default\n sensitiveByDefault: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n ...state\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n set(state, name, value)\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n set(state.highlight, user, { color: color || data.color, type: type || data.type })\n } else {\n del(state.highlight, user)\n }\n }\n },\n actions: {\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n break\n }\n }\n }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'labelFollowing', 'buttonClass'],\n data () {\n return {\n inProgress: false\n }\n },\n computed: {\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_again')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n }\n },\n methods: {\n onClick () {\n this.relationship.following ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./follow_button.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d23ef426\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn button-default follow-button\",class:{ toggled: _vm.isPressed },attrs:{\"disabled\":_vm.inProgress,\"title\":_vm.title},on:{\"click\":_vm.onClick}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","/* script */\nexport * from \"!!babel-loader!./video_attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./video_attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dda2841a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./video_attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{staticClass:\"video\",attrs:{\"preload\":\"metadata\",\"src\":_vm.attachment.url,\"loop\":_vm.loopVideo,\"controls\":_vm.controls,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"playsinline\":\"\"},on:{\"playing\":_vm.onPlaying,\"pause\":_vm.onPaused}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport { chunk, last, dropRight, sumBy } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'nsfw',\n 'setMedia'\n ],\n data () {\n return {\n sizes: {}\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const rows = chunk(this.attachments, 3)\n if (last(rows).length === 1 && rows.length > 1) {\n // if 1 attachment on last row -> add it to the previous row instead\n const lastAttachment = last(rows)[0]\n const allButLastRow = dropRight(rows)\n last(allButLastRow).push(lastAttachment)\n return allButLastRow\n }\n return rows\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n }\n },\n methods: {\n onNaturalSizeLoad (id, size) {\n this.$set(this.sizes, id, size)\n },\n rowStyle (itemsPerRow) {\n return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n }\n }\n}\n\nexport default Gallery\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./gallery.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./gallery.js\"\nimport __vue_script__ from \"!!babel-loader!./gallery.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3db94942\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./gallery.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"galleryContainer\",staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rows),function(row,index){return _c('div',{key:index,staticClass:\"gallery-row\",class:{ 'contain-fit': _vm.useContainFit, 'cover-fit': !_vm.useContainFit },style:(_vm.rowStyle(row.length))},[_c('div',{staticClass:\"gallery-row-inner\"},_vm._l((row),function(attachment){return _c('attachment',{key:attachment.id,style:(_vm.itemStyle(attachment.id, row)),attrs:{\"set-media\":_vm.setMedia,\"nsfw\":_vm.nsfw,\"attachment\":attachment,\"allow-play\":false,\"natural-size-load\":_vm.onNaturalSizeLoad.bind(null, attachment.id)}})}),1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./link-preview.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./link-preview.js\"\nimport __vue_script__ from \"!!babel-loader!./link-preview.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-25194025\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./link-preview.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"link-preview-card\",attrs:{\"href\":_vm.card.url,\"target\":\"_blank\",\"rel\":\"noopener\"}},[(_vm.useImage && _vm.imageLoaded)?_c('div',{staticClass:\"card-image\"},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[(_vm.censored)?_c('span',{staticClass:\"nsfw-alert alert warning\"},[_vm._v(_vm._s(_vm.$t('status.nsfw')))]):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.card.provider_name)+\"\\n \")]),_vm._v(\" \"),_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.card.title))]),_vm._v(\" \"),(_vm.useDescription)?_c('p',{staticClass:\"card-description\"},[_vm._v(_vm._s(_vm.card.description))]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export default {\n props: [ 'user' ],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ae39779\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote-follow\"},[_c('form',{attrs:{\"method\":\"POST\",\"action\":_vm.subscribeUrl}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"nickname\"},domProps:{\"value\":_vm.user.screen_name}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"profile\",\"value\":\"\"}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default remote-button\",attrs:{\"click\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.remote_follow'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./avatar_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./avatar_list.js\"\nimport __vue_script__ from \"!!babel-loader!./avatar_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4cea5bcf\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./avatar_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"avatars\"},_vm._l((_vm.slicedUsers),function(user){return _c('router-link',{key:user.id,staticClass:\"avatars-item\",attrs:{\"to\":_vm.userProfileLink(user)}},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user}})],1)}),1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // An exact match always wins\n aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n // Prioritize custom emoji a lot\n aScore += a.imageUrl ? 100 : 0\n bScore += b.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n // Sort by length\n aScore -= a.displayText.length\n bScore -= b.displayText.length\n\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n displayText: screen_name_ui,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","import Vue from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nexport default Vue.component('tab-switcher', {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: this.$slots.default.findIndex(_ => _.tag)\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.$slots.default.findIndex(slot => this.activeTab === slot.key)\n } else {\n return this.active\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.$slots.default[this.active]\n if (!currentSlot.tag) {\n this.active = this.$slots.default.findIndex(_ => _.tag)\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.$slots.default[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render (h) {\n const tabs = this.$slots.default\n .map((slot, index) => {\n if (!slot.tag) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (slot.data.attrs.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>\n {slot.data.attrs.label ? '' : slot.data.attrs.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!slot.data.attrs.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={slot.data.attrs.icon}/>)}\n <span class=\"text\">\n {slot.data.attrs.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.$slots.default.map((slot, index) => {\n if (!slot.tag) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (slot.data.attrs.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{slot.data.attrs.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div ref=\"contents\" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')} v-body-scroll-lock={this.settingsModalVisible}>\n {contents}\n </div>\n </div>\n )\n }\n})\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitByWhitespaceBoundary(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n let result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of list) {\n const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: () => import('../sticker_picker/sticker_picker.vue'),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref[0].offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom'][0]\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref[0].offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'smile-beam',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'box-open',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./emoji_picker.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_picker.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_picker.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-50bb08b3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-picker panel panel-default panel-body\"},[_c('div',{staticClass:\"heading\"},[_c('span',{staticClass:\"emoji-tabs\"},_vm._l((_vm.emojis),function(group){return _c('span',{key:group.id,staticClass:\"emoji-tabs-item\",class:{\n active: _vm.activeGroupView === group.id,\n disabled: group.emojis.length === 0\n },attrs:{\"title\":group.text},on:{\"click\":function($event){$event.preventDefault();return _vm.highlight(group.id)}}},[_c('FAIcon',{attrs:{\"icon\":group.icon,\"fixed-width\":\"\"}})],1)}),0),_vm._v(\" \"),(_vm.stickerPickerEnabled)?_c('span',{staticClass:\"additional-tabs\"},[_c('span',{staticClass:\"stickers-tab-icon additional-tabs-item\",class:{active: _vm.showingStickers},attrs:{\"title\":_vm.$t('emoji.stickers')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleStickers($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"sticky-note\",\"fixed-width\":\"\"}})],1)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"emoji-content\",class:{hidden: _vm.showingStickers}},[_c('div',{staticClass:\"emoji-search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keyword),expression:\"keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keyword=$event.target.value}}})]),_vm._v(\" \"),_c('div',{ref:\"emoji-groups\",staticClass:\"emoji-groups\",class:_vm.groupsScrolledClass,on:{\"scroll\":_vm.onScroll}},_vm._l((_vm.emojisView),function(group){return _c('div',{key:group.id,staticClass:\"emoji-group\"},[_c('h6',{ref:'group-' + group.id,refInFor:true,staticClass:\"emoji-group-title\"},[_vm._v(\"\\n \"+_vm._s(group.text)+\"\\n \")]),_vm._v(\" \"),_vm._l((group.emojis),function(emoji){return _c('span',{key:group.id + emoji.displayText,staticClass:\"emoji-item\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onEmoji(emoji)}}},[(!emoji.imageUrl)?_c('span',[_vm._v(_vm._s(emoji.replacement))]):_c('img',{attrs:{\"src\":emoji.imageUrl}})])}),_vm._v(\" \"),_c('span',{ref:'group-end-' + group.id,refInFor:true})],2)}),0),_vm._v(\" \"),_c('div',{staticClass:\"keep-open\"},[_c('Checkbox',{model:{value:(_vm.keepOpen),callback:function ($$v) {_vm.keepOpen=$$v},expression:\"keepOpen\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.keep_open'))+\"\\n \")])],1)]),_vm._v(\" \"),(_vm.showingStickers)?_c('div',{staticClass:\"stickers-content\"},[_c('sticker-picker',{on:{\"uploaded\":_vm.onStickerUploaded,\"upload-failed\":_vm.onStickerUploadFailed}})],1):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n value: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false,\n suggestions: []\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.value && this.caret) {\n const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const slots = this.$slots.default\n if (!slots || slots.length === 0) return\n const input = slots.find(slot => ['input', 'textarea'].includes(slot.tag))\n if (!input) return\n this.input = input\n this.resize()\n input.elm.addEventListener('blur', this.onBlur)\n input.elm.addEventListener('focus', this.onFocus)\n input.elm.addEventListener('paste', this.onPaste)\n input.elm.addEventListener('keyup', this.onKeyUp)\n input.elm.addEventListener('keydown', this.onKeyDown)\n input.elm.addEventListener('click', this.onClickInput)\n input.elm.addEventListener('transitionend', this.onTransition)\n input.elm.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.elm.removeEventListener('blur', this.onBlur)\n input.elm.removeEventListener('focus', this.onFocus)\n input.elm.removeEventListener('paste', this.onPaste)\n input.elm.removeEventListener('keyup', this.onKeyUp)\n input.elm.removeEventListener('keydown', this.onKeyDown)\n input.elm.removeEventListener('click', this.onClickInput)\n input.elm.removeEventListener('transitionend', this.onTransition)\n input.elm.removeEventListener('input', this.onInput)\n }\n },\n watch: {\n showSuggestions: function (newValue) {\n this.$emit('shown', newValue)\n },\n textAtCaret: async function (newWord) {\n const firstchar = newWord.charAt(0)\n this.suggestions = []\n if (newWord === firstchar) return\n const matchedSuggestions = await this.suggest(newWord)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord) return\n if (matchedSuggestions.length <= 0) return\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n },\n suggestions (newValue) {\n this.$nextTick(this.resize)\n }\n },\n methods: {\n focusPickerInput () {\n const pickerEl = this.$refs.picker.$el\n if (!pickerEl) return\n const pickerInput = pickerEl.querySelector('input')\n if (pickerInput) pickerInput.focus()\n },\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n this.focusPickerInput()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.elm.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(this.focusPickerInput)\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.value.substring(0, this.caret) || ''\n const after = this.value.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.keepOpen = keepOpen\n this.$emit('input', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.elm.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.elm.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.elm.focus()\n // Set selection right after the replacement instead of the very end\n this.input.elm.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted -= 1\n if (this.highlighted < 0) {\n this.highlighted = this.suggestions.length - 1\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = 0\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs['picker'].$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input.elm\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onTransition (e) {\n this.resize()\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n this.resize()\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n if (!this.keepOpen) {\n this.showPicker = false\n }\n this.focused = true\n this.setCaret(e)\n this.resize()\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n this.resize()\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n this.resize()\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.elm.blur()\n this.input.elm.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.elm.focus()\n }\n }\n\n this.showPicker = false\n this.resize()\n },\n onInput (e) {\n this.showPicker = false\n this.setCaret(e)\n this.resize()\n this.$emit('input', e.target.value)\n },\n onClickInput (e) {\n this.showPicker = false\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n this.showPicker = false\n },\n onStickerUploaded (e) {\n this.showPicker = false\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.showPicker = false\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n },\n resize () {\n const panel = this.$refs.panel\n if (!panel) return\n const picker = this.$refs.picker.$el\n const panelBody = this.$refs['panel-body']\n const { offsetHeight, offsetTop } = this.input.elm\n const offsetBottom = offsetTop + offsetHeight\n\n this.setPlacement(panelBody, panel, offsetBottom)\n this.setPlacement(picker, picker, offsetBottom)\n },\n setPlacement (container, target, offsetBottom) {\n if (!container || !target) return\n\n target.style.top = offsetBottom + 'px'\n target.style.bottom = 'auto'\n\n if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n target.style.top = 'auto'\n target.style.bottom = this.input.elm.offsetHeight + 'px'\n }\n },\n overflowsBottom (el) {\n return el.getBoundingClientRect().bottom > window.innerHeight\n }\n }\n}\n\nexport default EmojiInput\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_input.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_input.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_input.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1eea518d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_input.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],staticClass:\"emoji-input\",class:{ 'with-picker': !_vm.hideEmojiButton }},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.enableEmojiPicker)?[(!_vm.hideEmojiButton)?_c('button',{staticClass:\"button-unstyled emoji-picker-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('FAIcon',{attrs:{\"icon\":['far', 'smile-beam']}})],1):_vm._e(),_vm._v(\" \"),(_vm.enableEmojiPicker)?_c('EmojiPicker',{ref:\"picker\",staticClass:\"emoji-picker-panel\",class:{ hide: !_vm.showPicker },attrs:{\"enable-sticker-picker\":_vm.enableStickerPicker},on:{\"emoji\":_vm.insert,\"sticker-uploaded\":_vm.onStickerUploaded,\"sticker-upload-failed\":_vm.onStickerUploadFailed}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"autocomplete-panel\",class:{ hide: !_vm.showSuggestions }},[_c('div',{ref:\"panel-body\",staticClass:\"autocomplete-panel-body\"},_vm._l((_vm.suggestions),function(suggestion,index){return _c('div',{key:index,staticClass:\"autocomplete-item\",class:{ highlighted: index === _vm.highlighted },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onClick($event, suggestion)}}},[_c('span',{staticClass:\"image\"},[(suggestion.img)?_c('img',{attrs:{\"src\":suggestion.img}}):_c('span',[_vm._v(_vm._s(suggestion.replacement))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_c('span',{staticClass:\"displayText\"},[_vm._v(_vm._s(suggestion.displayText))]),_vm._v(\" \"),_c('span',{staticClass:\"detailText\"},[_vm._v(_vm._s(suggestion.detailText))])])])}),0)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./scope_selector.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./scope_selector.js\"\nimport __vue_script__ from \"!!babel-loader!./scope_selector.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b1abde80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./scope_selector.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showNothing)?_c('div',{staticClass:\"ScopeSelector\"},[(_vm.showDirect)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('direct')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"envelope\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('private')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock-open\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('public')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"globe\"}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"static/img/nsfw.74818f9.png\";","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0084eb3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Timeline .loadmore-text{opacity:1}.Timeline.-blocked{cursor:progress}.timeline-heading{max-width:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:center;align-items:center;position:relative}.timeline-heading .loadmore-button,.timeline-heading .loadmore-text{-ms-flex-negative:0;flex-shrink:0}.timeline-heading .loadmore-text{line-height:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./status.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80571546\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Status{min-width:0}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status.-focused{background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba);--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon)}.Status.-conversation{border-left-width:4px;border-left-style:solid;border-left-color:red;border-left-color:var(--cRed,red)}.Status .gravestone{padding:.75em;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));display:-ms-flexbox;display:flex}.Status .gravestone .deleted-text{margin:.5em 0;-ms-flex-align:center;align-items:center}.Status .status-container{display:-ms-flexbox;display:flex;padding:.75em}.Status .status-container.-repeat{padding-top:0}.Status .pin{padding:.75em .75em 0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{pointer-events:auto;cursor:auto}.Status .left-side{margin-right:.75em}.Status .right-side{-ms-flex:1;flex:1;min-width:0}.Status .usercard{margin-bottom:.75em}.Status .status-username{white-space:nowrap;font-size:14px;overflow:hidden;max-width:85%;font-weight:700;-ms-flex-negative:1;flex-shrink:1;margin-right:.4em;text-overflow:ellipsis}.Status .status-username .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.Status .status-favicon{height:18px;width:18px;margin-right:.4em}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;line-height:18px}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{min-width:1.6em;margin-right:.4em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-ms-flex:1 1 0px;flex:1 1 0}.Status .heading-left{display:-ms-flexbox;display:flex;min-width:0}.Status .heading-right{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.Status .heading-right .button-unstyled{padding:5px;margin:-5px}.Status .heading-right .button-unstyled:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .timeago{margin-right:.2em}.Status .heading-reply-row{position:relative;-ms-flex-line-pack:baseline;align-content:baseline;font-size:12px;line-height:18px;max-width:100%;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch}.Status .reply-to-and-accountname{display:-ms-flexbox;display:flex;height:18px;margin-right:.5em;max-width:100%}.Status .reply-to-and-accountname .reply-to-link{white-space:nowrap;word-break:break-word;text-overflow:ellipsis;overflow-x:hidden}.Status .reply-to-no-popover,.Status .reply-to-popover{min-width:0;margin-right:.4em;-ms-flex-negative:0;flex-shrink:0}.Status .reply-to-popover .reply-to:hover:before{content:\\\"\\\";display:block;position:absolute;bottom:0;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{content:\\\"\\\";display:block;position:absolute;top:50%;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .reply-to{position:relative}.Status .reply-to-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .replies-separator{margin-left:.4em}.Status .replies{line-height:18px;font-size:12px;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em .75em}.Status .repeat-info .repeat-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Status .repeater-avatar{border-radius:var(--avatarAltRadius,10px);margin-left:28px;width:20px;height:20px}.Status .repeater-name{text-overflow:ellipsis;margin-right:0}.Status .repeater-name .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{position:relative;width:100%;display:-ms-flexbox;display:flex;margin-top:.75em}.Status .status-actions>*{max-width:4em;-ms-flex:1;flex:1}.Status .muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Status .muted .mute-words,.Status .muted .status-username{text-overflow:ellipsis;overflow:hidden}.Status .muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Status .muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Status .muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:\\\" \\\"}.Status .muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Status .reply-form{padding-top:0;padding-bottom:0}.Status .reply-body{-ms-flex:1;flex:1}.Status .favs-repeated-users{margin-top:.75em}.Status .stats{width:100%;display:-ms-flexbox;display:flex;line-height:1em}.Status .avatar-row{-ms-flex:1;flex:1;overflow:hidden;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Status .avatar-row:before{content:\\\"\\\";position:absolute;height:100%;width:1px;left:0;background-color:var(--faint,hsla(240,1%,73%,.5))}.Status .stat-count{margin-right:.75em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:12px;text-transform:uppercase;position:relative}.Status .stat-count .stat-number{font-weight:bolder;font-size:16px;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .avatar:not(.repeater-avatar){width:40px;height:40px}.Status .avatar:not(.repeater-avatar).avatar-compact{width:32px;height:32px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./reply_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2b13c1d7\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReplyButton{display:-ms-flexbox;display:flex}.ReplyButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./favorite_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7d4fb47f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".FavoriteButton{display:-ms-flexbox;display:flex}.FavoriteButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:orange;color:var(--cOrange,orange)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./react_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b98558e8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReactButton .reaction-picker-filter{padding:.5em;display:-ms-flexbox;display:flex}.ReactButton .reaction-picker-filter input{-ms-flex:1;flex:1}.ReactButton .reaction-picker-divider{height:1px;width:100%;margin:.5em;background-color:var(--border,#222)}.ReactButton .reaction-picker{width:10em;height:9em;font-size:1.5em;overflow-y:scroll;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5em;text-align:center;-ms-flex-line-pack:start;align-content:flex-start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.ReactButton .reaction-picker .emoji-button{cursor:pointer;-ms-flex-preferred-size:20%;flex-basis:20%;line-height:1.5em;-ms-flex-line-pack:center;align-content:center}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger-button{width:auto}.ReactButton .popover-trigger{padding:10px;margin:-10px}.ReactButton .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"92bf6e22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".popover-trigger-button{display:block}.popover{z-index:8;position:absolute;min-width:0}.popover-default{transition:opacity .3s;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);border-radius:4px;border-radius:var(--btnRadius,4px);background-color:#121a24;background-color:var(--popover,#121a24);color:#b9b9ba;color:var(--popoverText,#b9b9ba);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.dropdown-menu{display:block;padding:.5rem 0;font-size:1rem;text-align:left;list-style:none;max-width:100vw;z-index:10;white-space:nowrap}.dropdown-menu .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #222;border-top:1px solid var(--border,#222)}.dropdown-menu .dropdown-item{line-height:21px;overflow:auto;display:block;padding:.5em .75em;clear:both;font-weight:400;text-align:inherit;white-space:nowrap;border:none;border-radius:0;background-color:transparent;box-shadow:none;width:100%;height:100%;box-sizing:border-box;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon svg{width:22px;margin-right:.75rem;color:var(--menuPopoverIcon,#666)}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.dropdown-menu .dropdown-item:active svg,.dropdown-menu .dropdown-item:hover svg{color:var(--selectedMenuPopoverIcon,#666)}.dropdown-menu .dropdown-item .menu-checkbox{display:inline-block;vertical-align:middle;min-width:22px;max-width:22px;min-height:22px;max-height:22px;line-height:22px;text-align:center;border-radius:0;background-color:#182230;background-color:var(--input,#182230);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.75em}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{font-size:1.25em;content:\\\"\\\\2713\\\"}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-radio:after{font-size:2em;content:\\\"\\\\2022\\\"}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./retweet_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c52cbcb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RetweetButton{display:-ms-flexbox;display:flex}.RetweetButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./extra_buttons.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0d2c533c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger{position:static;padding:10px;margin:-10px}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce7966a8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tribute-container ul{padding:0}.tribute-container ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.tribute-container img{padding:3px;width:16px;height:16px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.post-status-form{position:relative}.post-status-form .form-bottom{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:.5em;height:32px}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.post-status-form .form-bottom-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding-right:7px;margin-right:7px;max-width:10em}.post-status-form .preview-heading{display:-ms-flexbox;display:flex;padding-left:.5em}.post-status-form .preview-toggle{-ms-flex:1;flex:1;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{margin-left:.2em;font-size:.8em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{font-style:italic;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);padding:.5em;margin:0;line-height:1.4em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-top:5px}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{font-size:26px;line-height:1.1;-ms-flex:1;flex:1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{cursor:not-allowed;color:#666;color:var(--btnDisabledText,#666)}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .media-upload-icon{-ms-flex-order:1;order:1;text-align:left}.post-status-form .emoji-icon{-ms-flex-order:2;order:2;text-align:center}.post-status-form .poll-icon{-ms-flex-order:3;order:3;text-align:right;cursor:pointer}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-right:.2em;margin-bottom:.5em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{-o-object-fit:contain;object-fit:contain;max-height:10em}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{-ms-flex:1;flex:1;width:100%}.post-status-form .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .attachments .media-upload-wrapper{position:relative}.post-status-form .attachments .media-upload-wrapper .attachment{margin:0;padding:0}.post-status-form form{margin:.6em;position:relative}.post-status-form .form-group,.post-status-form form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.post-status-form .form-group{padding:.25em .5em .5em;line-height:24px}.post-status-form .form-post-body,.post-status-form form textarea.form-cw{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:1px}.post-status-form .form-post-body{height:16px;padding-bottom:1.75em;box-sizing:content-box}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{position:absolute;bottom:0;right:0;padding:0;margin:0 .5em}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}.post-status-form .btn{cursor:pointer}.post-status-form .btn[disabled]{cursor:not-allowed}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{position:absolute;z-index:1;width:100%;height:100%;font-size:5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;opacity:.6;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24);border-radius:5px;border-radius:var(--tooltipRadius,5px);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba)}.media-upload-container>video,img.media-upload{line-height:0;max-height:200px;max-width:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_upload.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8585287c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-upload{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scope_selector.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"770eecd8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ScopeSelector .scope{display:inline-block;cursor:pointer;min-width:1.3em;min-height:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_input.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d6bd964a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:relative}.emoji-input.with-picker input{padding-right:30px}.emoji-input .emoji-picker-icon{position:absolute;top:0;right:0;margin:.2em .25em;font-size:16px;cursor:pointer;line-height:24px}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input .autocomplete-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .autocomplete-panel.hide{display:none}.emoji-input .autocomplete-panel-body{margin:0 .5em;border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:1px 2px 4px rgba(0,0,0,.5);box-shadow:var(--popupShadow);min-width:75%;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.emoji-input .autocomplete-item{display:-ms-flexbox;display:flex;cursor:pointer;padding:.2em .4em;border-bottom:1px solid rgba(0,0,0,.4);height:32px}.emoji-input .autocomplete-item .image{width:32px;height:32px;line-height:32px;text-align:center;font-size:32px;margin-right:4px}.emoji-input .autocomplete-item .image img{width:32px;height:32px;-o-object-fit:contain;object-fit:contain}.emoji-input .autocomplete-item .label{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;margin:0 .1em 0 .2em}.emoji-input .autocomplete-item .label .displayText{line-height:1.5}.emoji-input .autocomplete-item .label .detailText{font-size:9px;line-height:9px}.emoji-input .autocomplete-item.highlighted{background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.emoji-input input,.emoji-input textarea{-ms-flex:1 0 auto;flex:1 0 auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bb72e68\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-picker{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;right:0;left:0;margin:0!important;z-index:1;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--lightText:var(--popoverLightText,$fallback--faint);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{padding:7px;line-height:normal}.emoji-picker .too-many-emoji{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.emoji-picker .keep-open-label{padding:0 7px;display:-ms-flexbox;display:flex}.emoji-picker .heading{display:-ms-flexbox;display:flex;height:32px;padding:10px 7px 5px}.emoji-picker .content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-tabs{-ms-flex-positive:1;flex-grow:1}.emoji-picker .emoji-groups{min-height:200px}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:#666;border-left-color:var(--icon,#666);padding-left:7px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{display:block;min-width:0;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-negative:1;flex-shrink:1}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{padding:0 7px;cursor:pointer;font-size:24px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{-ms-flex:1 1 auto;flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{padding:5px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{-ms-flex:1 1 1px;flex:1 1 1px;position:relative;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:5px;-ms-flex-pack:left;justify-content:left}.emoji-picker .emoji-group-title{font-size:12px;width:100%;margin:0}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{width:32px;height:32px;box-sizing:border-box;display:-ms-flexbox;display:flex;font-size:32px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:4px;cursor:pointer}.emoji-picker .emoji-item img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"002629bb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox{position:relative;display:inline-block;min-height:1.2em}.checkbox-indicator{position:relative;padding-left:1.2em}.checkbox-indicator:before{position:absolute;right:0;top:0;display:block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]{display:none}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{content:\\\"\\\\2013\\\";color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox>span{margin-left:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60db0262\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{-ms-flex-item-align:start;align-self:flex-start;padding-top:.25em;padding-left:.1em}.poll-form .poll-option{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{width:1.5em;margin-left:-1.5em;z-index:1}.poll-form .poll-type-expiry{margin-top:.5em;display:-ms-flexbox;display:flex;width:100%}.poll-form .poll-type{margin-right:.75em;-ms-flex:1 1 60%;flex:1 1 60%}.poll-form .poll-type .select{border:none;box-shadow:none;background-color:transparent;padding-right:.75em}.poll-form .poll-expiry{display:-ms-flexbox;display:flex}.poll-form .poll-expiry .expiry-amount{width:3em;text-align:right}.poll-form .poll-expiry .expiry-unit{border:none;box-shadow:none;background-color:transparent}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./attachment.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60b296ca\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".attachments{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachments .non-gallery{max-width:100%}.attachments .placeholder{display:inline-block;padding:.3em 1em .3em 0;color:#d8a070;color:var(--postLink,#d8a070);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.attachments .placeholder svg{color:inherit}.attachments .nsfw-placeholder{cursor:pointer}.attachments .nsfw-placeholder.loading{cursor:progress}.attachments .attachment{position:relative;margin-top:.5em;-ms-flex-item-align:start;align-self:flex-start;line-height:0;border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222);overflow:hidden}.attachments .non-gallery.attachment.video{-ms-flex:1 0 40%;flex:1 0 40%}.attachments .non-gallery.attachment .nsfw{height:260px}.attachments .non-gallery.attachment .small{height:120px;-ms-flex-positive:0;flex-grow:0}.attachments .non-gallery.attachment .video{height:260px;display:-ms-flexbox;display:flex}.attachments .non-gallery.attachment video{max-height:100%;-o-object-fit:contain;object-fit:contain}.attachments .fullwidth{-ms-flex-preferred-size:100%;flex-basis:100%}.attachments.video{line-height:0}.attachments .video-container{display:-ms-flexbox;display:flex;max-height:100%}.attachments .video{width:100%;height:100%}.attachments .play-icon{position:absolute;font-size:64px;top:calc(50% - 32px);left:calc(50% - 32px);color:hsla(0,0%,100%,.75);text-shadow:0 0 2px rgba(0,0,0,.4)}.attachments .play-icon:before{margin:0}.attachments.html{-ms-flex-preferred-size:90%;flex-basis:90%;width:100%;display:-ms-flexbox;display:flex}.attachments .hider{position:absolute;right:0;margin:10px;padding:0;z-index:4;border-radius:5px;border-radius:var(--tooltipRadius,5px);text-align:center;width:2em;height:2em;font-size:1.25em;background:hsla(0,0%,90%,.7)}.attachments .hider .svg-inline--fa{color:rgba(0,0,0,.6)}.attachments .hider:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.attachments video{z-index:0}.attachments audio{width:100%}.attachments img.media-upload{line-height:0;max-height:200px;max-width:100%}.attachments .oembed{line-height:1.2em;-ms-flex:1 0 100%;flex:1 0 100%;width:100%;margin-right:15px;display:-ms-flexbox;display:flex}.attachments .oembed img{width:100%}.attachments .oembed .image{-ms-flex:1;flex:1}.attachments .oembed .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.attachments .oembed .text{-ms-flex:2;flex:2;margin:8px;word-break:break-all}.attachments .oembed .text h1{font-size:14px;margin:0}.attachments .image-attachment,.attachments .image-attachment .image{width:100%;height:100%}.attachments .image-attachment.hidden{display:none}.attachments .image-attachment .nsfw{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.attachments .image-attachment img{image-orientation:from-image}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./still-image.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"24ab97e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".still-image{position:relative;line-height:0;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.still-image canvas{position:absolute;top:0;bottom:0;left:0;right:0;height:100%;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{width:100%;-o-object-fit:contain;object-fit:contain}.still-image img{min-height:100%}.still-image.animated:before{content:\\\"gif\\\";position:absolute;line-height:10px;font-size:10px;top:5px;left:5px;background:hsla(0,0%,50%,.5);color:#fff;display:block;padding:2px 4px;border-radius:5px;border-radius:var(--tooltipRadius,5px);z-index:2;visibility:var(--_still-image-label-visibility,visible)}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_content.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af4a4f5c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StatusContent{-ms-flex:1;flex:1;min-width:0}.StatusContent .status-content-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.StatusContent .tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.StatusContent .tall-status .status-content{min-height:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude}.StatusContent .tall-status-hider{position:absolute;height:70px;margin-top:150px;line-height:110px;z-index:2}.StatusContent .cw-status-hider,.StatusContent .status-unhider,.StatusContent .tall-status-hider{display:inline-block;word-break:break-all;width:100%;text-align:center}.StatusContent .cw-status-hider svg,.StatusContent .status-unhider svg{color:inherit}.StatusContent img,.StatusContent video{max-width:100%;max-height:400px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.StatusContent img.emoji,.StatusContent video.emoji{width:32px;height:32px}.StatusContent .summary-wrapper{margin-bottom:.5em;border-style:solid;border-width:0 0 1px;border-color:var(--border,#222);-ms-flex-positive:0;flex-grow:0}.StatusContent .summary{font-style:italic;padding-bottom:.5em}.StatusContent .tall-subject{position:relative}.StatusContent .tall-subject .summary{max-height:2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.StatusContent .tall-subject-hider{display:inline-block;word-break:break-all;width:100%;text-align:center;padding-bottom:.5em}.StatusContent .status-content{font-family:var(--postFont,sans-serif);line-height:1.4em;white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.StatusContent .status-content blockquote{margin:.2em 0 .2em 2em;font-style:italic}.StatusContent .status-content pre{overflow:auto}.StatusContent .status-content code,.StatusContent .status-content kbd,.StatusContent .status-content pre,.StatusContent .status-content samp,.StatusContent .status-content var{font-family:var(--postCodeFont,monospace)}.StatusContent .status-content p{margin:0 0 1em}.StatusContent .status-content p:last-child{margin:0}.StatusContent .status-content h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.StatusContent .status-content h2{font-size:1.1em;margin:1em 0}.StatusContent .status-content h3{font-size:1em;margin:1.2em 0}.StatusContent .status-content h4{margin:1.1em 0}.StatusContent .status-content.single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;height:1.4em}.greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1a8b173f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll .votes{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;position:relative;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.poll .option-result-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.1em .25em;z-index:1;word-break:break-word}.poll .result-percentage{width:3.5em;-ms-flex-negative:0;flex-shrink:0}.poll .result-fill{height:100%;position:absolute;color:#b9b9ba;color:var(--pollText,#b9b9ba);background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);top:0;left:0;transition:width .5s}.poll .option-vote{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll input{width:3.5em}.poll .footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll.loading *{cursor:progress}.poll .poll-vote-button{padding:0 .5em;margin-right:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./gallery.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c9d5cbc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".gallery-row{position:relative;height:0;width:100%;-ms-flex-positive:1;flex-grow:1;margin-top:.5em}.gallery-row .gallery-row-inner{position:absolute;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-line-pack:stretch;align-content:stretch}.gallery-row .gallery-row-inner .attachment{margin:0 .5em 0 0;-ms-flex-positive:1;flex-grow:1;height:100%;box-sizing:border-box;min-width:2em}.gallery-row .gallery-row-inner .attachment:last-child{margin:0}.gallery-row .image-attachment{width:100%;height:100%}.gallery-row .video-container{height:100%}.gallery-row.contain-fit canvas,.gallery-row.contain-fit img,.gallery-row.contain-fit video{-o-object-fit:contain;object-fit:contain;height:100%}.gallery-row.cover-fit canvas,.gallery-row.cover-fit img,.gallery-row.cover-fit video{-o-object-fit:cover;object-fit:cover}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./link-preview.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c13d6bee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".link-preview-card{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;cursor:pointer;overflow:hidden;margin-top:.5em;color:#b9b9ba;color:var(--text,#b9b9ba);border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222)}.link-preview-card .card-image{-ms-flex-negative:0;flex-shrink:0;width:120px;max-width:25%}.link-preview-card .card-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:10px;border-radius:var(--attachmentRadius,10px)}.link-preview-card .card-content{max-height:100%;margin:.5em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.link-preview-card .card-host{font-size:12px}.link-preview-card .card-description{margin:.5em 0 0;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.2em;max-height:calc(1.2em * 3 - 1px)}.link-preview-card .nsfw-alert{margin:2em 0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0060b6a4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-card{position:relative}.user-card:hover .Avatar{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden}.user-card .panel-heading{padding:.5em 0;text-align:center;box-shadow:none;background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;position:relative}.user-card .panel-body{word-wrap:break-word;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit;position:relative}.user-card .background-image{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude;background-size:cover;-webkit-mask-size:100% 60%;mask-size:100% 60%;border-top-left-radius:calc(var(--panelRadius) - 1px);border-top-right-radius:calc(var(--panelRadius) - 1px);background-color:var(--profileBg)}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card p{margin-bottom:0}.user-card-bio{text-align:center}.user-card-bio a{color:#d8a070;color:var(--postLink,#d8a070)}.user-card-bio img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-card-bio img.emoji{width:32px;height:32px}.user-card-rounded-t{border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.user-card-rounded{border-radius:10px;border-radius:var(--panelRadius,10px)}.user-card-bordered{border-color:#222;border:1px solid var(--border,#222)}.user-info{color:#b9b9ba;color:var(--lightText,#b9b9ba);padding:0 26px}.user-info .container{padding:16px 0 6px;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;max-height:56px}.user-info .container .Avatar{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);-ms-flex:1 0 100%;flex:1 0 100%;width:56px;height:56px;-o-object-fit:cover;object-fit:cover}.user-info-avatar-link{position:relative;cursor:pointer}.user-info-avatar-link-overlay{position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border-radius:4px;border-radius:var(--avatarRadius,4px);opacity:0;transition:opacity .2s ease}.user-info-avatar-link-overlay svg{color:#fff}.user-info-avatar-link:hover .user-info-avatar-link-overlay{opacity:1}.user-info .external-link-button{cursor:pointer;width:2.5em;text-align:center;margin:-.5em 0;padding:.5em 0}.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .user-summary{display:block;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1 1 0px;flex:1 1 0;z-index:1}.user-info .user-summary img{width:26px;height:26px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.user-info .user-summary .top-line{display:-ms-flexbox;display:flex}.user-info .user-name{text-overflow:ellipsis;overflow:hidden;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:1em;font-size:15px}.user-info .user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.user-info .bottom-line{display:-ms-flexbox;display:flex;font-weight:light;font-size:15px}.user-info .bottom-line .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{min-width:1px;-ms-flex:0 1 auto;flex:0 1 auto;text-overflow:ellipsis;overflow:hidden;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line .dailyAvg{min-width:1px;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1em;font-size:.7em;color:#b9b9ba;color:var(--text,#b9b9ba)}.user-info .bottom-line .user-role{-ms-flex:none;flex:none;color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);background-color:#182230;background-color:var(--alertNeutral,#182230)}.user-info .user-meta{margin-bottom:.15em;display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;font-size:14px;line-height:22px;-ms-flex-wrap:wrap;flex-wrap:wrap}.user-info .user-meta .following{-ms-flex:1 0 auto;flex:1 0 auto;margin:0;margin-bottom:.25em;text-align:left}.user-info .user-meta .highlighter{-ms-flex:0 1 auto;flex:0 1 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5em;-ms-flex-item-align:start;align-self:start}.user-info .user-meta .highlighter .userHighlightCl{padding:2px 10px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightSel.select{padding-top:0;padding-bottom:0;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel.select svg{line-height:22px}.user-info .user-meta .highlighter .userHighlightText{width:70px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightSel.select,.user-info .user-meta .highlighter .userHighlightText{height:22px;vertical-align:top;margin-right:.5em;margin-bottom:.25em}.user-info .user-interactions{position:relative;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-.75em}.user-info .user-interactions>*{margin:0 .75em .6em 0;white-space:nowrap;min-width:95px}.user-info .user-interactions button{margin:0}.user-counts{display:-ms-flexbox;display:flex;line-height:16px;padding:.5em 1.5em 0;text-align:center;-ms-flex-pack:justify;justify-content:space-between;color:#b9b9ba;color:var(--lightText,#b9b9ba);-ms-flex-wrap:wrap;flex-wrap:wrap}.user-count{-ms-flex:1 0 auto;flex:1 0 auto;padding:.5em 0;margin:0 .5em}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_avatar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b6f3617\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Avatar{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;width:48px;height:48px;box-shadow:var(--_avatarShadowBox);border-radius:4px;border-radius:var(--avatarRadius,4px)}.Avatar img{width:100%;height:100%}.Avatar.better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar.animated:before{display:none}.Avatar.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4852bbb4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".remote-follow{max-width:220px}.remote-follow .remote-button{width:100%;min-height:28px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./moderation_tools.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0672fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:-ms-flexbox!important;display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dialog_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"56d82e88\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dark-overlay:before{bottom:0;content:\\\" \\\";left:0;right:0;background:rgba(27,31,35,.5);z-index:99}.dark-overlay:before,.dialog-modal.panel{display:block;cursor:default;position:fixed;top:0}.dialog-modal.panel{left:50%;max-height:80vh;max-width:90vw;margin:15vh auto;transform:translateX(-50%);z-index:999;background-color:#121a24;background-color:var(--bg,#121a24)}.dialog-modal.panel .dialog-modal-heading{padding:.5em;margin-right:auto;margin-bottom:0;white-space:nowrap;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230)}.dialog-modal.panel .dialog-modal-heading .title{margin-bottom:0;text-align:center}.dialog-modal.panel .dialog-modal-content{margin:0;padding:1rem;background-color:#121a24;background-color:var(--bg,#121a24);white-space:normal}.dialog-modal.panel .dialog-modal-footer{margin:0;padding:.5em;background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end}.dialog-modal.panel .dialog-modal-footer button{width:auto;margin-left:.5rem}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./account_actions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8c9d5016\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".AccountActions button.dropdown-item{margin-left:0}.AccountActions .ellipsis-button{cursor:pointer;width:2.5em;margin:-.5em 0;padding:.5em 0;text-align:center}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./avatar_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7096a06e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatars{display:-ms-flexbox;display:flex;margin:0;padding:0;-ms-flex-wrap:wrap;flex-wrap:wrap;height:24px}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"14cff5b4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-popover.popover{font-size:1rem;min-width:15em;max-width:95%;border-color:#222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow)}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_list_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50540f22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-list-popover{padding:.5em}.user-list-popover .user-list-row{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.user-list-popover .user-list-row .user-list-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{width:1em;height:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:9px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_reactions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cf35b50a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-reactions{display:-ms-flexbox;display:flex;margin-top:.25em;-ms-flex-wrap:wrap;flex-wrap:wrap}.emoji-reaction{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box}.emoji-reaction .reaction-emoji{width:1.25em;margin-right:.25em}.emoji-reaction:focus{outline:none}.emoji-reaction.not-clickable{cursor:default}.emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.emoji-reaction-expand{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.emoji-reaction-expand:hover{text-decoration:underline}.picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./conversation.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"93498d0a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Conversation .conversation-status{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:var(--border,#222);border-radius:0}.Conversation.-expanded .conversation-status:last-child{border-bottom:none;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_menu.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b449a0b2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineMenu{-ms-flex-negative:1;flex-shrink:1;margin-right:auto;min-width:0;width:24rem}.TimelineMenu .timeline-menu-popover-wrap{overflow:hidden;margin-top:.6rem;padding:0 15px 15px}.TimelineMenu .timeline-menu-popover{width:24rem;max-width:100vw;margin:0;font-size:1rem;transform:translateY(-100%);transition:transform .1s}.TimelineMenu .panel:after,.TimelineMenu .timeline-menu-popover{border-top-right-radius:0;border-top-left-radius:0}.TimelineMenu.open .timeline-menu-popover{transform:translateY(0)}.TimelineMenu .timeline-menu-title{margin:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;display:-ms-flexbox;display:flex}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;-ms-flex-positive:1;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.TimelineMenu ul{list-style:none;margin:0;padding:0}.TimelineMenu li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.TimelineMenu li:last-child a{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.TimelineMenu li:last-child{border:none}.TimelineMenu a{display:block;padding:.6em .65em}.TimelineMenu a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.TimelineMenu a.router-link-active,.TimelineMenu a:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.TimelineMenu a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.TimelineMenu a.router-link-active:hover{text-decoration:underline}.TimelineMenu a svg{margin-right:.4em;margin-left:-.2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_quick_settings.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b6e5d822\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineQuickSettings{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.TimelineQuickSettings>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.TimelineQuickSettings .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"87e1cf2e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".notifications:not(.minimal){padding-bottom:15em}.notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.notifications .notification{position:relative}.notifications .notification .notification-overlay{position:absolute;top:0;right:0;left:0;bottom:0;pointer-events:none}.notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-wrap:break-word;word-break:break-word}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification .non-mention{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.6em;min-width:0;--link:var(--faintLink);--text:var(--faint)}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .follow-request-accept{cursor:pointer}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject{cursor:pointer}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{padding:.5em 0;overflow-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{-ms-flex:1;flex:1}.notification time{white-space:nowrap}.notification .notification-right{-ms-flex:1;flex:1;padding-left:.8em;min-width:0}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .emoji-reaction-emoji{font-size:16px}.notification .notification-details{min-width:0;word-wrap:break-word;line-height:18px;position:relative;overflow:hidden;width:100%;-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between}.notification .notification-details .name-and-action{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .username img{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{word-break:break-all;margin:0 0 .3em;padding:0;font-size:1em;line-height:20px}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0;margin-top:0;margin-bottom:.3em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notification.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"41041624\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Notification.-muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Notification.-muted .mute-words,.Notification.-muted .status-username{text-overflow:ellipsis;overflow:hidden}.Notification.-muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Notification.-muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Notification.-muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:\\\" \\\"}.Notification.-muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Notification.-type--follow-request .type-icon,.Notification.-type--follow .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notification.-type--like .type-icon{color:orange;color:var(--cOrange,orange)}.Notification.-type--move .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./notification_filters.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"590c30d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NotificationFilters{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.NotificationFilters>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.NotificationFilters .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3a6f72a2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list{min-height:25em;margin-bottom:0}.emtpy-chat-list-alert{padding:3em;font-size:1.2em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;color:#b9b9ba;color:var(--faint,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list_item.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33c6b65e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list-item{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:.75em;height:5em;overflow:hidden;box-sizing:border-box;cursor:pointer}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{width:100%;box-sizing:border-box;overflow:hidden;word-wrap:break-word}.chat-list-item .heading{width:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:justify;justify-content:space-between;line-height:1em}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-ms-flex-negative:1;flex-shrink:1;line-height:1.4em}.chat-list-item .chat-preview{display:-ms-inline-flexbox;display:inline-flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:.35em 0;color:#b9b9ba;color:var(--faint,#b9b9ba);width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);text-decoration:none;pointer-events:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .StatusContent img.emoji{width:1.4em;height:1.4em}.chat-list-item .time-wrapper{line-height:1.4em}.chat-list-item .single-line{padding-right:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_title.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3dcd538d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-title{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.chat-title,.chat-title .username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-title .username{max-width:100%;display:inline;word-wrap:break-word}.chat-title .username .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.chat-title .Avatar{width:23px;height:23px;margin-right:.5em;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-title .Avatar.animated:before{display:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_new.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ca48b176\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-new .input-wrap{display:-ms-flexbox;display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .basic-user-card:hover{cursor:pointer;background-color:var(--selectedPost,#151e2a)}.chat-new .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./basic_user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"119ab786\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".basic-user-card{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;margin:0;padding:.6em 1em}.basic-user-card-collapsed-content{margin-left:.7em;text-align:left;-ms-flex:1;flex:1;min-width:0}.basic-user-card-user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.basic-user-card-expanded-content{-ms-flex:1;flex:1;margin-left:.7em;min-width:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33745640\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".list-item:not(:last-child){border-bottom:1px solid;border-bottom-color:#222;border-bottom-color:var(--border,#222)}.list-empty-content{text-align:center;padding:10px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0f673926\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-view{display:-ms-flexbox;display:flex;height:calc(100vh - 60px);width:100%}.chat-view .chat-title{height:28px}.chat-view .chat-view-inner{height:auto;margin:.5em .5em 0}.chat-view .chat-view-body,.chat-view .chat-view-inner{width:100%;overflow:visible;display:-ms-flexbox;display:flex}.chat-view .chat-view-body{background-color:var(--chatBg,#121a24);-ms-flex-direction:column;flex-direction:column;min-height:100%;margin:0;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0}.chat-view .chat-view-body:after{border-radius:0}.chat-view .scrollable-message-list{padding:0 .8em;height:100%;overflow-y:scroll;overflow-x:hidden;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:0}.chat-view .chat-view-heading{-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;top:50px;display:-ms-flexbox;display:flex;z-index:2;position:-webkit-sticky;position:sticky;overflow:hidden}.chat-view .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}.chat-view .jump-to-bottom-button{width:2.5em;height:2.5em;border-radius:100%;position:absolute;right:1.3em;top:-3.2em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);z-index:10;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);opacity:0;visibility:hidden;cursor:pointer}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button i{font-size:1em;color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-view .jump-to-bottom-button .unread-message-count{font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;border-radius:50px;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:end;align-items:flex-end;height:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}@media (max-width:800px){.chat-view{height:100%;overflow:hidden}.chat-view .chat-view-inner{overflow:hidden;height:100%;margin-top:0;margin-left:0;margin-right:0}.chat-view .chat-view-body{display:-ms-flexbox;display:flex;min-height:auto;overflow:hidden;height:100%;margin:0;border-radius:0}.chat-view .chat-view-heading{box-sizing:border-box;position:static;z-index:9999;top:0;margin-top:0;border-radius:0;background:linear-gradient(0deg,var(--panel),var(--panel)),linear-gradient(0deg,var(--bg),var(--bg));height:50px}.chat-view .scrollable-message-list{display:unset;overflow-y:scroll;overflow-x:hidden;-webkit-overflow-scrolling:touch}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:auto}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_message.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"20b81e5e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{transition:opacity .1s;opacity:0;position:absolute;top:-.8em}.chat-message-wrapper .chat-message-menu button{padding-top:.2em;padding-bottom:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .menu-icon:hover,.extra-button-popover.open .chat-message-wrapper .menu-icon{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:-ms-flexbox;display:flex;padding-bottom:.5em}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .chat-message-inner{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .chat-message-inner.with-media{width:100%}.chat-message-wrapper .chat-message-inner.with-media .gallery-row{overflow:hidden}.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .status{border-radius:10px;border-radius:var(--chatMessageRadius,10px);display:-ms-flexbox;display:flex;padding:.75em}.chat-message-wrapper .created-at{position:relative;float:right;font-size:.8em;margin:-1em 0 -.5em;font-style:italic;opacity:.8}.chat-message-wrapper .without-attachment .status-content:after{margin-right:5.4em;content:\\\" \\\";display:inline-block}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:red;color:var(--badgeNotification,red)}.chat-message-wrapper .incoming a{color:var(--chatMessageIncomingLink,#d8a070)}.chat-message-wrapper .incoming .status{background-color:var(--chatMessageIncomingBg,#121a24);border:1px solid var(--chatMessageIncomingBorder,--border)}.chat-message-wrapper .incoming .created-at a,.chat-message-wrapper .incoming .status{color:var(--chatMessageIncomingText,#b9b9ba)}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .outgoing{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:end;align-content:end;-ms-flex-pack:end;justify-content:flex-end}.chat-message-wrapper .outgoing a{color:var(--chatMessageOutgoingLink,#d8a070)}.chat-message-wrapper .outgoing .status{color:var(--chatMessageOutgoingText,#b9b9ba);background-color:var(--chatMessageOutgoingBg,#151e2a);border:1px solid var(--chatMessageOutgoingBorder,--lightBg)}.chat-message-wrapper .outgoing .chat-message-inner{-ms-flex-align:end;align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{text-align:center;margin:1.4em 0;font-size:.9em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#b9b9ba;color:var(--faintedText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_profile.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7563b46e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-profile{-ms-flex:2;flex:2;-ms-flex-preferred-size:500px;flex-basis:500px}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-profile .user-profile-fields img.emoji{width:18px;height:18px}.user-profile .user-profile-fields .user-profile-field{display:-ms-flexbox;display:flex;margin:.25em;border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{-ms-flex:0 1 30%;flex:0 1 30%;font-weight:500;text-align:right;color:var(--lightText);min-width:120px;border-right:1px solid var(--border,#222)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{-ms-flex:1 1 70%;flex:1 1 70%;color:var(--text);margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{line-height:18px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:.5em 1.5em;box-sizing:border-box}.user-profile .userlist-placeholder{-ms-flex-align:middle;align-items:middle;padding:2em}.user-profile .timeline-heading,.user-profile .userlist-placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.user-profile .timeline-heading .alert,.user-profile .timeline-heading .loadmore-button{-ms-flex:1;flex:1}.user-profile .timeline-heading .loadmore-button{height:28px;margin:10px .6em}.user-profile .timeline-heading .loadmore-text,.user-profile .timeline-heading .title{display:none}.user-profile-placeholder .panel-body{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:middle;align-items:middle;padding:7em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ae955a70\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-card-content-container{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5em}.follow-card-follow-button{margin-top:.5em;margin-left:auto;width:10em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"354d66d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;-ms-flex-pack:center;justify-content:center;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}}.search-result{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.search-result-footer{border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;background-color:#182230;background-color:var(--panel,#182230)}.search-input-container{padding:.8rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.search-input-container .search-input{width:100%;line-height:1.125rem;font-size:1rem;padding:.5rem;box-sizing:border-box}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.trend .hashtag{-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{-ms-flex:0 0 auto;flex:0 0 auto;width:2rem;font-size:1.5rem;line-height:2.25rem;font-weight:500;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./registration.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"16815f76\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".registration-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:.6em}.registration-form .container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.registration-form .terms-of-service{-ms-flex:0 1 50%;flex:0 1 50%;margin:.8em}.registration-form .text-fields{margin-top:.6em;-ms-flex:1 0;flex:1 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em 0;line-height:24px;margin-bottom:1em}.registration-form .form-group--error{animation-name:shakeError;animation-duration:.6s;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:12px}.registration-form .form-error ul{list-style:none;padding:0 0 0 5px;margin-top:0}.registration-form .form-error ul li:before{content:\\\"\\\\2022 \\\"}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{max-width:350px;margin-bottom:.4em}.registration-form .btn{margin-top:.6em;height:28px}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./password_reset.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1ef4fd93\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".password-reset-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;margin:.6em}.password-reset-form .container{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;-ms-flex-direction:column;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-bottom:1em;padding:.3em 0;line-height:24px}.password-reset-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}.password-reset-form .alert{padding:.5em;margin:.3em 0 1em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_request_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ad510f10\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-request-card-content-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.follow-request-card-content-container button{margin-top:.5em;margin-right:.5em;-ms-flex:1 1;flex:1 1;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./login_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42704024\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".login-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.6em}.login-form .btn{min-height:28px;width:10em}.login-form .register{-ms-flex:1 1;flex:1 1}.login-form .login-bottom{margin-top:1em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.login-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em .5em .6em;line-height:24px}.login-form .form-bottom{display:-ms-flexbox;display:flex;padding:.5em;height:32px}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.login-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0040e1\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".floating-chat{position:fixed;right:0;bottom:0;z-index:1000;max-width:25em}.chat-panel .chat-heading{cursor:pointer}.chat-panel .chat-heading .icon{color:#b9b9ba;color:var(--text,#b9b9ba);margin-right:.5em}.chat-panel .chat-heading .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.chat-panel .chat-window{overflow-y:auto;overflow-x:hidden;max-height:20em}.chat-panel .chat-window-container{height:100%}.chat-panel .chat-message{display:-ms-flexbox;display:flex;padding:.2em .5em}.chat-panel .chat-avatar img{height:24px;width:24px;border-radius:4px;border-radius:var(--avatarRadius,4px);margin-right:.5em;margin-top:.25em}.chat-panel .chat-input{display:-ms-flexbox;display:flex}.chat-panel .chat-input textarea{-ms-flex:1;flex:1;margin:.6em;min-height:3.5em;resize:none}.chat-panel .chat-panel .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c74f4f44\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./about.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7dfaed97\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./features_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55ca8508\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".features-panel li{line-height:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./terms_of_service_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42aabc98\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tos-content{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./staff_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5aa588af\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mrf_transparency_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72647543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mrf-section{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_user_resolver.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"67a8aa3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js?minimize!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../node_modules/sass-loader/lib/loader.js!./App.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c806d03\", content, true, {});","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#app{min-height:100vh;max-width:100%;overflow:hidden}.app-bg-wrapper{position:fixed;z-index:-1;height:100%;left:0;right:-20px;background-size:cover;background-repeat:no-repeat;background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50px}i[class^=icon-]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}h4{margin:0}#content{box-sizing:border-box;padding-top:60px;margin:auto;min-height:100vh;max-width:980px;-ms-flex-line-pack:start;align-content:flex-start}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15))}.text-center{text-align:center}html{font-size:14px}body{overscroll-behavior-y:none;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;color:#b9b9ba;color:var(--text,#b9b9ba);max-width:100vw;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.hidden{display:none}a{text-decoration:none;color:#d8a070;color:var(--link,#d8a070)}.button-default{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);cursor:pointer;box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);font-size:14px;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif)}.button-default,.button-default .svg-inline--fa,.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.button-default::-moz-focus-inner{border:none}.button-default:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}.button-default:active{box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow);background-color:#182230;background-color:var(--btnPressed,#182230)}.button-default:active,.button-default:active i,.button-default:active svg{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}.button-default:disabled{cursor:not-allowed;background-color:#182230;background-color:var(--btnDisabled,#182230)}.button-default:disabled,.button-default:disabled i,.button-default:disabled svg{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.button-default.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default.toggled,.button-default.toggled i,.button-default.toggled svg{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.button-default.danger{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba);background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5))}.button-unstyled{background:none;border:none;outline:none;display:inline;text-align:initial;font-size:100%;font-family:inherit;padding:0;line-height:unset;cursor:pointer;box-sizing:content-box;color:inherit}.button-unstyled.-link{color:#d8a070;color:var(--link,#d8a070)}.button-unstyled.-fullwidth{width:100%}.button-unstyled.-hover-highlight:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.input,.select,input,textarea{border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);color:#b9b9ba;color:var(--inputText,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;margin:0;box-sizing:border-box;display:inline-block;position:relative;height:28px;line-height:16px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;padding:8px .5em}.input.unstyled,.select.unstyled,input.unstyled,textarea.unstyled{border-radius:0;background:none;box-shadow:none;height:unset}.input.select,.select.select,input.select,textarea.select{padding:0}.input:disabled,.input[disabled=disabled],.select:disabled,.select[disabled=disabled],input:disabled,input[disabled=disabled],textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input .select-down-icon,.select .select-down-icon,input .select-down-icon,textarea .select-down-icon{position:absolute;top:0;bottom:0;right:5px;height:100%;color:#b9b9ba;color:var(--inputText,#b9b9ba);line-height:28px;z-index:0;pointer-events:none}.input select,.select select,input select,textarea select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);margin:0;padding:0 2em 0 .2em;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;width:100%;z-index:1;height:28px;line-height:16px}.input[type=range],.select[type=range],input[type=range],textarea[type=range]{background:none;border:none;margin:0;box-shadow:none;-ms-flex:1;flex:1}.input[type=radio],.select[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,.select[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset;background-color:var(--accent,#d8a070)}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,.select[type=radio]:disabled,.select[type=radio]:disabled+label,.select[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,.select[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\";transition:box-shadow .2s;width:1.1em;height:1.1em;border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input[type=checkbox],.select[type=checkbox],input[type=checkbox],textarea[type=checkbox]{display:none}.input[type=checkbox]:checked+label:before,.select[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,.select[type=checkbox]:disabled,.select[type=checkbox]:disabled+label,.select[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,.select[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input.resize-height,.select.resize-height,input.resize-height,textarea.resize-height{resize:vertical}option{color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.hide-number-spinner{-moz-appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{opacity:0;display:none}.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.btn-block{display:block;width:100%}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group button{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.auto-size,main-router{-ms-flex:1;flex:1}.status.compact{color:rgba(0,0,0,.42);font-weight:300}.status.compact p{margin:0;font-size:.8em}.panel{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:column;flex-direction:column;margin:.5em;background-color:#121a24;background-color:var(--bg,#121a24)}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{content:\\\"\\\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow)}.panel-body:empty:before{content:\\\"\\\\AF\\\\\\\\_(\\\\30C4)_/\\\\AF\\\";display:block;margin:1em;text-align:center}.panel-heading{display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;background-size:cover;padding:.6em;text-align:left;line-height:28px;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230);-ms-flex-align:baseline;align-items:baseline;box-shadow:var(--panelHeaderShadow)}.panel-heading .title{-ms-flex:1 0 auto;flex:1 0 auto;font-size:1.3em}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading .alert{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.panel-heading .alert,.panel-heading .button-default{line-height:21px;min-height:0;box-sizing:border-box;margin:0;margin-left:.5em;min-width:1px;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.panel-heading .button-default{-ms-flex-negative:0;flex-shrink:0}.panel-heading .button-default,.panel-heading .button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading .button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading .button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer{border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}.panel-footer .faint{color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-footer .-link,.panel-footer a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-body>p{line-height:18px;padding:1em;margin:0}.container>*{min-width:0}.fa{color:grey}nav{z-index:1000;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);box-sizing:border-box}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.main{-ms-flex-preferred-size:50%;flex-basis:50%;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.sidebar-bounds{-ms-flex:0;flex:0;-ms-flex-preferred-size:35%;flex-basis:35%}.sidebar-flexer{-ms-flex:1;flex:1;-ms-flex-preferred-size:345px;flex-basis:345px;width:365px}.mobile-shown{display:none}@media (min-width:800px){body{overflow-y:scroll}.sidebar-bounds{overflow:hidden;max-height:100vh;width:345px;position:fixed;margin-top:-10px}.sidebar-bounds .sidebar-scroller{height:96vh;width:365px;padding-top:10px;padding-right:50px;overflow-x:hidden;overflow-y:scroll}.sidebar-bounds .sidebar{width:345px}.sidebar-flexer{max-height:96vh;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}}.badge{box-sizing:border-box;display:inline-block;border-radius:99px;max-width:10em;min-width:1.7em;height:1.3em;padding:.15em;vertical-align:middle;font-weight:400;font-style:normal;font-size:.9em;line-height:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{margin:.35em;padding:.25em;border-radius:5px;border-radius:var(--tooltipRadius,5px);min-height:28px;line-height:28px}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.alert.success{background-color:var(--alertSuccess,rgba(111,111,20,.5));color:var(--alertSuccessText,#b9b9ba)}.panel-heading .alert.success{color:var(--alertSuccessPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{padding:.5em;border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px)}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{position:absolute;top:0;right:0;padding:.5em;color:inherit}.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding.svg-inline--fa{padding:0 .3em}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}@media (max-width:800px){.mobile-hidden{display:none}.panel-switcher{display:-ms-flexbox;display:flex}.container{padding:0}.panel{margin:.5em 0}.menu-button{display:block;margin-right:.8em}.main{margin-bottom:7em}}.select-multiple{display:-ms-flexbox;display:flex}.select-multiple .option-list{margin:0;padding-left:.5em}.option-list,.setting-list{list-style-type:none;padding-left:2em}.option-list li,.setting-list li{margin-bottom:.5em}.option-list .suboptions,.setting-list .suboptions{margin-top:.3em}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:28px}.animate-spin{animation:spin 2s infinite linear;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.new-status-notification{position:relative;margin-top:-1px;font-size:1.1em;border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;z-index:1;background-color:#182230;background-color:var(--panel,#182230)}.chat-layout{height:100%}.chat-layout,.chat-layout body{overflow:hidden}@media (max-width:800px){.chat-layout body{height:100%}.chat-layout #app{height:100%;overflow:hidden;min-height:auto}.chat-layout #app_bg_wrapper{overflow:hidden}.chat-layout .main{overflow:hidden;height:100%}.chat-layout #content{padding-top:0;height:100%;overflow:visible}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"04d46dee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-panel .signed-in{overflow:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./nav_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b030addc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NavPanel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{position:relative;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.NavPanel li:first-child .menu-item{border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px);border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child .menu-item{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child{border:none}.NavPanel .menu-item{display:block;box-sizing:border-box;height:3.5em;line-height:3.5em;padding:0 1em;width:100%;color:#d8a070;color:var(--link,#d8a070)}.NavPanel .menu-item:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavPanel .menu-item.router-link-active,.NavPanel .menu-item:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.NavPanel .menu-item.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.NavPanel .menu-item.router-link-active:hover{text-decoration:underline}.NavPanel .timelines-chevron{margin-left:.8em;font-size:1.1em}.NavPanel .timelines-background{padding:0 0 0 .6em;background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);border-top:1px solid;border-color:#222;border-color:var(--border,#222)}.NavPanel .timelines{background-color:#121a24;background-color:var(--bg,#121a24)}.NavPanel .fa-scale-110{margin-right:.8em}.NavPanel .badge{position:absolute;right:.6rem;top:1.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f18dd03\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".who-to-follow *{vertical-align:middle}.who-to-follow img{width:32px;height:32px}.who-to-follow{padding:0 1em;margin:0}.who-to-follow-items{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:1em 0}.who-to-follow-more{padding:0;margin:1em 0;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7272e6fe\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".settings-modal{overflow:hidden}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(((100vh - 100%) / 2 + 100%) - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}}.settings-modal .settings-modal-panel{overflow:hidden;transition:transform;transition-timing-function:ease-in-out;transition-duration:.3s;width:1000px;max-width:90vw;height:90vh}@media (max-width:800px){.settings-modal .settings-modal-panel{max-width:100vw;height:100%}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:28px;min-width:10em;padding:0 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"f7395e92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view{z-index:1000;position:fixed;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow:auto;pointer-events:none;animation-duration:.2s;animation-name:modal-background-fadein;opacity:0}.modal-view>*{pointer-events:auto}.modal-view.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5)}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel_loading.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1c82888b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".panel-loading{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:2em;color:#b9b9ba;color:var(--text,#b9b9ba)}.panel-loading .loading-text svg{line-height:0;vertical-align:middle;color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./async_component_error.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2970b266\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".async-component-error{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"23b00cfc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.media-modal-view{z-index:1001}.modal-view.media-modal-view .modal-view-button-arrow{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover{outline:none;box-shadow:none}.modal-view.media-modal-view .modal-view-button-arrow:hover{opacity:1}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image;animation:.1s cubic-bezier(.7,0,1,.6) media-fadein}.modal-view-button-arrow{position:absolute;display:block;top:50%;margin-top:-50px;width:70px;height:100px;border:0;padding:0;opacity:0;box-shadow:none;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:visible;cursor:pointer;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.modal-view-button-arrow .arrow-icon{position:absolute;top:35px;height:30px;width:32px;font-size:14px;line-height:30px;color:#fff;text-align:center;background-color:rgba(0,0,0,.3)}.modal-view-button-arrow--prev{left:0}.modal-view-button-arrow--prev .arrow-icon{left:6px}.modal-view-button-arrow--next{right:0}.modal-view-button-arrow--next .arrow-icon{right:6px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side_drawer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34992fba\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".side-drawer-container{position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;transition-duration:0s;transition-property:transform}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transition-delay:.35s;transform:translate(-100%)}.side-drawer-darken{top:0;left:0;width:100vw;height:100vh;position:fixed;z-index:-1;transition:.35s;transition-property:background-color;background-color:rgba(0,0,0,.5)}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{-ms-flex:1 1 100%;flex:1 1 100%}.side-drawer{overflow-x:hidden;transition-timing-function:cubic-bezier(0,1,.5,1);transition:.35s;transition-property:transform;margin:0 0 0 -100px;padding:0 0 1em 100px;width:80%;max-width:20em;-ms-flex:0 0 80%;flex:0 0 80%;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.side-drawer .badge{position:absolute;right:.7rem;top:1em}.side-drawer-logo-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.85em}.side-drawer-logo-wrapper img{-ms-flex:none;flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{-ms-flex:0 0 0px;flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;padding:0;margin:0}.side-drawer ul{list-style:none;margin:0;padding:0;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_post_status_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f8eca07\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".new-status-button{width:5em;height:5em;border-radius:100%;position:fixed;bottom:1.5em;right:1.5em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);z-index:10;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1)}.new-status-button.hidden{transform:translateY(150%)}.new-status-button svg{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button{display:none}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_nav.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1e0fbcf8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobileNav .mobile-nav{display:-ms-grid;display:grid;line-height:50px;height:50px;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto;grid-template-columns:2fr auto;width:100%;position:fixed;box-sizing:border-box}.MobileNav .mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.MobileNav .mobile-nav-button{display:inline-block;text-align:center;padding:0 1em;position:relative;cursor:pointer}.MobileNav .site-name{padding:0 .3em;display:inline-block}.MobileNav .item{display:-ms-flexbox;display:flex}.MobileNav .alert-dot{border-radius:100%;height:8px;width:8px;position:absolute;left:calc(50% - 4px);top:calc(50% - 4px);margin-left:6px;margin-top:-6px;background-color:red;background-color:var(--badgeNotification,red)}.MobileNav .mobile-notifications-drawer{width:100%;height:100vh;overflow-x:hidden;position:fixed;top:0;left:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);transition-property:transform;transition-duration:.25s;transform:translateX(0);z-index:1001;-webkit-overflow-scrolling:touch}.MobileNav .mobile-notifications-drawer.closed{transform:translateX(100%)}.MobileNav .mobile-notifications-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;z-index:1;width:100%;height:50px;line-height:50px;position:absolute;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .mobile-notifications{margin-top:50px;width:100vw;height:calc(100vh - 50px);overflow-x:hidden;overflow-y:scroll;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.MobileNav .mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"385f563e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DesktopNav{height:50px;width:100%;position:fixed}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{display:-ms-grid;display:grid;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto 2fr;grid-template-columns:2fr auto 2fr;grid-template-areas:\\\"sitename logo actions\\\";box-sizing:border-box;padding:0 1.2em;margin:auto;max-width:980px}.DesktopNav.-logoLeft{-ms-grid-columns:auto 2fr 2fr;grid-template-columns:auto 2fr 2fr;grid-template-areas:\\\"logo sitename actions\\\"}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;background-color:#182230;background-color:var(--topBarText,#182230);position:absolute;top:0;bottom:0;left:0;right:0}.DesktopNav .logo img{display:inline-block;height:50px}.DesktopNav .nav-icon{margin-left:.2em;width:2em;height:100%;text-align:center}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.DesktopNav .item.right{-ms-flex-pack:end;justify-content:flex-end;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search_bar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ea9aafc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchBar{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;vertical-align:baseline;-ms-flex-pack:end;justify-content:flex-end}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{-ms-flex:1 0 auto;flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_reporting_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10c04f96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-reporting-panel{width:90vw;max-width:700px;min-height:20vh;max-height:80vh}.user-reporting-panel .panel-heading .title{text-align:center;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-reporting-panel .panel-body{display:-ms-flexbox;display:flex;-ms-flex-direction:column-reverse;flex-direction:column-reverse;border-top:1px solid;border-color:#222;border-color:var(--border,#222);overflow:hidden}.user-reporting-panel-left{padding:1.1em .7em .7em;line-height:1.4em;box-sizing:border-box}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:44px;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{margin:1em 0 0;line-height:1.3em}.user-reporting-panel-right{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.user-reporting-panel-sitem>.Status{-ms-flex:1;flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{-ms-flex-direction:row;flex-direction:row}.user-reporting-panel-left{width:50%;max-width:320px;border-right:1px solid;border-color:#222;border-color:var(--border,#222);padding:1.1em}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{width:50%;-ms-flex:1 1 auto;flex:1 1 auto;margin-bottom:12px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7628c2ae\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.post-form-modal-view{-ms-flex-align:start;align-items:flex-start}.post-form-modal-panel{-ms-flex-negative:0;flex-shrink:0;margin-top:25%;margin-bottom:2em;width:100%;max-width:700px}@media (orientation:landscape){.post-form-modal-panel{margin-top:8%}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./global_notice_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cdffaf96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".global-notice-list{position:fixed;top:50px;width:100%;pointer-events:none;z-index:1001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.global-notice-list .global-notice{pointer-events:auto;text-align:center;width:40em;max-width:calc(100% - 3em);display:-ms-flexbox;display:flex;padding-left:1.5em;line-height:2em}.global-notice-list .global-notice .notice-message{-ms-flex:1 1 100%;flex:1 1 100%}.global-notice-list .global-notice i{-ms-flex:0 0;flex:0 0;width:1.5em;cursor:pointer}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-success{background-color:var(--alertPopupSuccess,#0fa00f)}.global-notice-list .global-success,.global-notice-list .global-success .svg-inline--fa{color:var(--alertPopupSuccessText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}\", \"\"]);\n\n// exports\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","import { set, delete as del } from 'vue'\n\nconst defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n mobileLayout: false,\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n set(state.settings, 'currentSaveStateNotice', { error: false, data: success })\n set(state.settings, 'noticeClearTimeout',\n setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))\n } else {\n set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setMobileLayout (state, value) {\n state.mobileLayout = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n setMobileLayout ({ commit }, value) {\n commit('setMobileLayout', value)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', notice), timeout)\n }\n commit('pushGlobalNotice', notice)\n return notice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { set } from 'vue'\nimport { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n disableChat: false,\n greentext: false,\n hideFilteredStatuses: false,\n hideMutedPosts: false,\n hidePostStats: false,\n hideSitename: false,\n hideUserStats: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: [],\n emojiFetched: false,\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n\n // Feature-set, apparently, not everything here is reported...\n chatAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n set(state, name, value)\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'chatAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const res = await window.fetch('/static/emoji.json')\n if (res.ok) {\n const values = await res.json()\n const emoji = Object.keys(values).map((key) => {\n return {\n displayText: key,\n imageUrl: false,\n replacement: values[key]\n }\n }).sort((a, b) => a.name > b.name ? 1 : -1)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport { set } from 'vue'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n set(obj, item.id, item)\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n set(conversationsObject, conversationId, [status])\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n set(status, 'emoji_reactions', emojiReactions)\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', [...status.emoji_reactions, newReaction])\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', status.emoji_reactions.filter(r => r.name !== emoji))\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args['until'] = until || timelineData.minId\n } else {\n if (since === undefined) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args['replyVisibility'] = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args['withMuted'] = !hideMutedPosts\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { set } from 'vue'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n set(obj, item.id, item)\n if (item.screen_name && !item.screen_name.includes('@')) {\n set(obj, item.screen_name.toLowerCase(), item)\n }\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n set(user, 'tags', newTags)\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n set(user, 'tags', newTags)\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n let newRights = user.rights\n newRights[right] = value\n set(user, 'rights', newRights)\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n set(user, 'deactivated', deactivated)\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'friendIds', [])\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'followerIds', [])\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n set(state.relationships, user.relationship.id, user.relationship)\n }\n mergeOrAdd(state.users, state.usersObject, user)\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n set(state.relationships, relationship.id, relationship)\n })\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n set(user, 'highlight', highlighted)\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then(({ deactivated }) => commit('updateActivationStatus', { user, deactivated }))\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the chat socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', 'friends', { since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments: attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, timeline, { ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers['followRequests']) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n let requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.chatAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeChat', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","const chat = {\n state: {\n messages: [],\n channel: { state: '' }\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n }\n },\n actions: {\n initializeChat (store, socket) {\n const channel = socket.channel('chat:public')\n\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default chat\n","import { delete as del } from 'vue'\n\nconst oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n del(state, 'token')\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrent (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return type === 'image' || type === 'video' || type === 'audio'\n })\n commit('setMedia', media)\n },\n setCurrent ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrent', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n userId: null,\n statuses: [],\n preTickedIds: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.userId = userId\n state.statuses = statuses\n state.preTickedIds = preTickedIds\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\nimport { set } from 'vue'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n set(state.pollsObject, poll.id, merge(existingPoll, poll))\n } else {\n set(state.pollsObject, poll.id, poll)\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue + 1)\n } else {\n set(state.trackedPolls, pollId, 1)\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue - 1)\n } else {\n set(state.trackedPolls, pollId, 0)\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId: chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage['fakeId']\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage['isTail'] = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object['isTail'] = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object['isHead'] = true\n object['messageChainId'] = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import Vue from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: {},\n openedChatMessageServices: {},\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n Vue.set(state.openedChats, chat.id, chat)\n\n if (!state.openedChatMessageServices[chat.id]) {\n Vue.set(state.openedChatMessageServices, chat.id, chatService.empty(chat.id))\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(state, paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n inserted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n componentUpdated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unbind: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n hideStatus () {\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.virtualHidden && this.$refs.statusComponent[0].suspendable\n } else {\n return this.virtualHidden\n }\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id: id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return this.expanded || this.isPage\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n }\n },\n components: {\n Status\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n focused (id) {\n return (this.isExpanded) && id === this.statusId\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n }\n }\n}\n\nexport default conversation\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./conversation.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./conversation.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-203ee410\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Conversation\",class:{ '-expanded' : _vm.isExpanded, 'panel' : _vm.isExpanded },style:(_vm.hiddenStyle)},[(_vm.isExpanded)?_c('div',{staticClass:\"panel-heading conversation-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('timeline.conversation'))+\" \")]),_vm._v(\" \"),(_vm.collapsable)?_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.collapse'))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,ref:\"statusComponent\",refInFor:true,staticClass:\"conversation-status status-fadein panel-body\",attrs:{\"inline-expanded\":_vm.collapsable && _vm.isExpanded,\"statusoid\":status,\"expandable\":!_vm.isExpanded,\"show-pinned\":_vm.pinnedStatusIdsObject && _vm.pinnedStatusIdsObject[status.id],\"focused\":_vm.focused(status.id),\"in-conversation\":_vm.isExpanded,\"highlight\":_vm.getHighlight(),\"replies\":_vm.getReplies(status.id),\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.profileUserId},on:{\"goto\":_vm.setHighlight,\"toggleExpanded\":_vm.toggleExpanded}})})],2):_c('div',{style:(_vm.hiddenStyle)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n)\n\nconst TimelineMenuContent = {\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default TimelineMenuContent\n","/* script */\nexport * from \"!!babel-loader!./timeline_menu_content.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu_content.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9e3b525a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friends' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(_vm._s(_vm.$t(\"nav.home_timeline\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"users\"}}),_vm._v(_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"globe\"}}),_vm._v(_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'bookmarks'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_vm._v(_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"envelope\"}}),_vm._v(_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")],1)],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n 'friends': 'nav.home_timeline',\n 'bookmarks': 'nav.bookmarks',\n 'dms': 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n TimelineMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_menu.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_menu.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b043d0b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineMenu\",class:{ 'open': _vm.isOpen },attrs:{\"trigger\":\"click\",\"margin\":{ left: -15, right: -200 },\"bound-to\":{ x: 'container' },\"popover-class\":\"timeline-menu-popover-wrap\"},on:{\"show\":_vm.openMenu,\"close\":function () { return _vm.isOpen = false; }}},[_c('div',{staticClass:\"timeline-menu-popover panel panel-default\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('TimelineMenuContent')],1),_vm._v(\" \"),_c('div',{staticClass:\"title timeline-menu-title\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('span',{staticClass:\"timeline-title\"},[_vm._v(_vm._s(_vm.timelineName()))]),_vm._v(\" \"),_c('span',[_c('FAIcon',{attrs:{\"size\":\"sm\",\"icon\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"click-blocker\",on:{\"click\":_vm.blockOpen}})])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter,\n faFont,\n faWrench\n)\n\nconst TimelineQuickSettings = {\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideMutedPosts || this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideMutedPosts', value })\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n }\n }\n}\n\nexport default TimelineQuickSettings\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_quick_settings.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_quick_settings.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_quick_settings.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f245fba\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_quick_settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineQuickSettings\",attrs:{\"trigger\":\"click\",\"bound-to\":{ x: 'container' }}},[_c('div',{staticClass:\"dropdown-menu\",attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.loggedIn)?_c('div',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityAll = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityAll }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_all'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityFollowing = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityFollowing }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_following_short'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilitySelf = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilitySelf }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_self_short'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMedia = !_vm.hideMedia}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMedia }}),_vm._v(_vm._s(_vm.$t('settings.hide_media_previews'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMutedPosts = !_vm.hideMutedPosts}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMutedPosts }}),_vm._v(_vm._s(_vm.$t('settings.hide_all_muted_posts'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('filtering')}}},[_c('FAIcon',{attrs:{\"icon\":\"font\"}}),_vm._v(_vm._s(_vm.$t('settings.word_filter'))+\"\\n \")],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('general')}}},[_c('FAIcon',{attrs:{\"icon\":\"wrench\"}}),_vm._v(_vm._s(_vm.$t('settings.more_settings'))+\"\\n \")],1)]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('FAIcon',{attrs:{\"icon\":\"filter\"}})],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog\n)\n\nexport const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {\n const ids = []\n if (pinnedStatusIds && pinnedStatusIds.length > 0) {\n for (let status of statuses) {\n if (!pinnedStatusIds.includes(status.id)) {\n break\n }\n ids.push(status.id)\n }\n }\n return ids\n}\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile'\n ],\n data () {\n return {\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n TimelineQuickSettings\n },\n computed: {\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : []\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n excludedStatusIdsObject () {\n const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)\n // Convert id array to object\n return keyBy(ids)\n },\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const min = Math.max(0, this.virtualScrollIndex - statusesPerSide)\n const max = Math.min(amount, this.virtualScrollIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ab7ad88c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.classes.root, 'Timeline']},[_c('div',{class:_vm.classes.header},[(!_vm.embedded)?_c('TimelineMenu'):_vm._e(),_vm._v(\" \"),(_vm.showLoadButton)?_c('button',{staticClass:\"button-default loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.loadButtonString)+\"\\n \")]):_c('div',{staticClass:\"loadmore-text faint\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.up_to_date'))+\"\\n \")]),_vm._v(\" \"),(!_vm.embedded)?_c('TimelineQuickSettings'):_vm._e()],1),_vm._v(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{ref:\"timeline\",staticClass:\"timeline\"},[_vm._l((_vm.pinnedStatusIds),function(statusId){return [(_vm.timeline.statusesObject[statusId])?_c('conversation',{key:statusId + '-pinned',staticClass:\"status-fadein\",attrs:{\"status-id\":statusId,\"collapsable\":true,\"pinned-status-ids-object\":_vm.pinnedStatusIdsObject,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]}),_vm._v(\" \"),_vm._l((_vm.timeline.visibleStatuses),function(status){return [(!_vm.excludedStatusIdsObject[status.id])?_c('conversation',{key:status.id,staticClass:\"status-fadein\",attrs:{\"status-id\":status.id,\"collapsable\":true,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId,\"virtual-hidden\":_vm.virtualScrollingEnabled && !_vm.statusesToDisplay.includes(status.id)}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_statuses'))+\"\\n \")]):(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_more_statuses'))+\"\\n \")]):(!_vm.timeline.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f2a502e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.public_tl'),\"timeline\":_vm.timeline,\"timeline-name\":'public'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_and_external_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_and_external_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f6923484\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_and_external_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.twkn'),\"timeline\":_vm.timeline,\"timeline-name\":'publicAndExternal'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","/* script */\nexport * from \"!!babel-loader!./friends_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./friends_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-22490669\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./friends_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.timeline'),\"timeline\":_vm.timeline,\"timeline-name\":'friends'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","/* script */\nexport * from \"!!babel-loader!./tag_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./tag_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-047310d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tag_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.tag,\"timeline\":_vm.timeline,\"timeline-name\":'tag',\"tag\":_vm.tag}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n destroyed () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","/* script */\nexport * from \"!!babel-loader!./bookmark_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./bookmark_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b9c8ba0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./bookmark_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.bookmarks'),\"timeline\":_vm.timeline,\"timeline-name\":'bookmarks'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","/* script */\nexport * from \"!!babel-loader!./conversation-page.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation-page.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46654d24\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('conversation',{attrs:{\"collapsable\":false,\"is-page\":\"true\",\"status-id\":_vm.statusId}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling\n)\n\nconst Notification = {\n data () {\n return {\n userExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false\n }\n },\n props: [ 'notification' ],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notification.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notification.js\"\nimport __vue_script__ from \"!!babel-loader!./notification.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4e559286\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notification.type === 'mention')?_c('Status',{attrs:{\"compact\":true,\"statusoid\":_vm.notification.status}}):_c('div',[(_vm.needMute && !_vm.unmuted)?_c('div',{staticClass:\"Notification container -muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n \")])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled unmute\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)]):_c('div',{staticClass:\"Notification non-mention\",class:[_vm.userClass, { highlighted: _vm.userStyle }, '-type--' + _vm.notification.type],style:([ _vm.userStyle ])},[_c('a',{staticClass:\"avatar-container\",attrs:{\"href\":_vm.notification.from_profile.statusnet_profile_url},on:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.notification.from_profile}})],1),_vm._v(\" \"),_c('div',{staticClass:\"notification-right\"},[(_vm.userExpanded)?_c('UserCard',{attrs:{\"user-id\":_vm.getUser(_vm.notification).id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"notification-details\"},[_c('div',{staticClass:\"name-and-action\"},[(!!_vm.notification.from_profile.name_html)?_c('bdi',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui},domProps:{\"innerHTML\":_vm._s(_vm.notification.from_profile.name_html)}}):_c('span',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui}},[_vm._v(_vm._s(_vm.notification.from_profile.name))]),_vm._v(\" \"),(_vm.notification.type === 'like')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"star\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.favorited_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'repeat')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.repeated_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user-plus\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.followed_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.follow_request')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'move')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"suitcase-rolling\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.migrated_to')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'pleroma:emoji_reaction')?_c('span',[_c('small',[_c('i18n',{attrs:{\"path\":\"notifications.reacted_with\"}},[_c('span',{staticClass:\"emoji-reaction-emoji\"},[_vm._v(_vm._s(_vm.notification.emoji))])])],1)]):_vm._e()]),_vm._v(\" \"),(_vm.isStatusNotification)?_c('div',{staticClass:\"timeago\"},[(_vm.notification.status)?_c('router-link',{staticClass:\"faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.notification.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1):_vm._e()],1):_c('div',{staticClass:\"timeago\"},[_c('span',{staticClass:\"faint\"},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1)]),_vm._v(\" \"),(_vm.needMute)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1):_vm._e()]),_vm._v(\" \"),(_vm.notification.type === 'follow' || _vm.notification.type === 'follow_request')?_c('div',{staticClass:\"follow-text\"},[_c('router-link',{staticClass:\"follow-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-accept\",attrs:{\"icon\":\"check\",\"title\":_vm.$t('tool_tip.accept_follow_request')},on:{\"click\":function($event){return _vm.approveUser()}}}),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-reject\",attrs:{\"icon\":\"times\",\"title\":_vm.$t('tool_tip.reject_follow_request')},on:{\"click\":function($event){return _vm.denyUser()}}})],1):_vm._e()],1):(_vm.notification.type === 'move')?_c('div',{staticClass:\"move-text\"},[_c('router-link',{attrs:{\"to\":_vm.targetUserProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.target.screen_name_ui)+\"\\n \")])],1):[_c('status-content',{staticClass:\"faint\",attrs:{\"status\":_vm.notification.action}})]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <Popover\n trigger=\"click\"\n class=\"NotificationFilters\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template\n v-slot:content\n >\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <FAIcon icon=\"filter\" />\n </template>\n </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter\n)\n\nexport default {\n components: { Popover },\n computed: {\n filters () {\n return this.$store.getters.mergedConfig.notificationVisibility\n }\n },\n methods: {\n toggleNotificationFilter (type) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: {\n ...this.filters,\n [type]: !this.filters[type]\n }\n })\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.NotificationFilters {\n align-self: stretch;\n\n > button {\n font-size: 1.2em;\n padding-left: 0.7em;\n padding-right: 0.2em;\n line-height: 100%;\n height: 100%;\n }\n\n .dropdown-item {\n margin: 0;\n }\n}\n\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./notification_filters.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0c38ea80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification_filters.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import { find } from 'lodash'\n\nconst createFaviconService = () => {\n let favimg, favcanvas, favcontext, favicon\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.getElementsByTagName('link')\n favicon = find(nodes, node => node.rel === 'icon')\n if (favicon) {\n favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n favimg = new Image()\n favimg.src = favicon.href\n favcontext = favcanvas.getContext('2d')\n }\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n }\n\n const drawFaviconBadge = () => {\n if (!favimg || !favcontext || !favcontext) return\n\n clearFaviconBadge()\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"NotificationFilters\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('likes')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.likes }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_likes'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('repeats')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.repeats }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_repeats'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('follows')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.follows }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_follows'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('mentions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.mentions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_mentions'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('emojiReactions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.emojiReactions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_emoji_reactions'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('moves')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.moves }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_moves'))+\"\\n \")])])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('FAIcon',{attrs:{\"icon\":\"filter\"}})]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables display of panel header\n noHeading: Boolean,\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array\n },\n data () {\n return {\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount)\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n ...mapGetters(['unreadChatCount'])\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notifications.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notifications.js\"\nimport __vue_script__ from \"!!babel-loader!./notifications.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f8d3963e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notifications\",class:{ minimal: _vm.minimalMode }},[_c('div',{class:_vm.mainClass},[(!_vm.noHeading)?_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.notifications'))+\"\\n \"),(_vm.unseenCount)?_c('span',{staticClass:\"badge badge-notification unseen-count\"},[_vm._v(_vm._s(_vm.unseenCount))]):_vm._e()]),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"button-default read-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.markAsSeen($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.read'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('NotificationFilters')],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.notificationsToDisplay),function(notification){return _c('div',{key:notification.id,staticClass:\"notification\",class:{\"unseen\": !_vm.minimalMode && !notification.seen}},[_c('div',{staticClass:\"notification-overlay\"}),_vm._v(\" \"),_c('notification',{attrs:{\"notification\":notification}})],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer\"},[(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.no_more_notifications'))+\"\\n \")]):(!_vm.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderNotifications()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.minimalMode ? _vm.$t('interactions.load_older') : _vm.$t('notifications.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notifications from '../notifications/notifications.vue'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications\n }\n}\n\nexport default Interactions\n","/* script */\nexport * from \"!!babel-loader!./interactions.js\"\nimport __vue_script__ from \"!!babel-loader!./interactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-109005c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])]),_vm._v(\" \"),_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onModeSwitch}},[_c('span',{key:\"mentions\",attrs:{\"label\":_vm.$t('nav.mentions')}}),_vm._v(\" \"),_c('span',{key:\"likes+repeats\",attrs:{\"label\":_vm.$t('interactions.favs_repeats')}}),_vm._v(\" \"),_c('span',{key:\"follows\",attrs:{\"label\":_vm.$t('interactions.follows')}}),_vm._v(\" \"),(!_vm.allowFollowingMove)?_c('span',{key:\"moves\",attrs:{\"label\":_vm.$t('interactions.moves')}}):_vm._e()]),_vm._v(\" \"),_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true,\"minimal-mode\":true,\"filter-mode\":_vm.filterMode}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","/* script */\nexport * from \"!!babel-loader!./dm_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./dm_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-294f8b6d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dm_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.dms'),\"timeline\":_vm.timeline,\"timeline-name\":'dms'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\n\nexport default Vue.component('chat-title', {\n name: 'ChatTitle',\n components: {\n UserAvatar\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n },\n methods: {\n getUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name)\n }\n }\n})\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_title.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_title.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_title.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-392970fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_title.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-title\",attrs:{\"title\":_vm.title}},[(_vm.withAvatar && _vm.user)?_c('router-link',{attrs:{\"to\":_vm.getUserProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"user\":_vm.user,\"width\":\"23px\",\"height\":\"23px\"}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"username\",domProps:{\"innerHTML\":_vm._s(_vm.htmlTitle)}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusContent\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n statusnet_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_list_item.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_list_item.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_list_item.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e174c026\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list_item.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-list-item\",on:{\"!click\":function($event){$event.preventDefault();return _vm.openChat($event)}}},[_c('div',{staticClass:\"chat-list-item-left\"},[_c('UserAvatar',{attrs:{\"user\":_vm.chat.account,\"height\":\"48px\",\"width\":\"48px\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chat-list-item-center\"},[_c('div',{staticClass:\"heading\"},[(_vm.chat.account)?_c('span',{staticClass:\"name-and-account-name\"},[_c('ChatTitle',{attrs:{\"user\":_vm.chat.account}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"}),_vm._v(\" \"),_c('div',{staticClass:\"time-wrapper\"},[_c('Timeago',{attrs:{\"time\":_vm.chat.updated_at,\"auto-update\":60}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"chat-preview\"},[_c('StatusContent',{attrs:{\"status\":_vm.messageForStatusContent,\"single-line\":true}}),_vm._v(\" \"),(_vm.chat.unread > 0)?_c('div',{staticClass:\"badge badge-notification unread-chat-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.chat.unread)+\"\\n \")]):_vm._e()],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_new.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_new.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_new.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a93dc9e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_new.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-default panel chat-new\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"input-wrap\"},[_c('div',{staticClass:\"input-search\"},[_c('FAIcon',{staticClass:\"search-icon fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"search\",attrs:{\"placeholder\":\"Search people\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInput]}})]),_vm._v(\" \"),_c('div',{staticClass:\"member-list\"},_vm._l((_vm.availableUsers),function(user){return _c('div',{key:user.id,staticClass:\"member\"},[_c('div',{on:{\"!click\":function($event){$event.preventDefault();return _vm.goToChat(user)}}},[_c('BasicUserCard',{attrs:{\"user\":user}})],1)])}),0)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n components: {\n ChatListItem,\n List,\n ChatNew\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['sortedChatList'])\n },\n data () {\n return {\n isNew: false\n }\n },\n created () {\n this.$store.dispatch('fetchChats', { latest: true })\n },\n methods: {\n cancelNewChat () {\n this.isNew = false\n this.$store.dispatch('fetchChats', { latest: true })\n },\n newChat () {\n this.isNew = true\n }\n }\n}\n\nexport default ChatList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_list.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c48d76e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isNew)?_c('div',[_c('ChatNew',{on:{\"cancel\":_vm.cancelNewChat}})],1):_c('div',{staticClass:\"chat-list panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.chats\"))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default\",on:{\"click\":_vm.newChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.new\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.sortedChatList.length > 0)?_c('div',{staticClass:\"timeline\"},[_c('List',{attrs:{\"items\":_vm.sortedChatList},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('ChatListItem',{key:item.id,attrs:{\"compact\":false,\"chat\":item}})]}}],null,false,1412157271)})],1):_c('div',{staticClass:\"emtpy-chat-list-alert\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chats.empty_chat_list_placeholder')))])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23377998\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message_date.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',[_vm._v(\"\\n \"+_vm._s(_vm.displayDate)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n userProfileLink () {\n return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n statusnet_html: this.message.content,\n text: this.message.content,\n attachments: this.message.attachments\n }\n },\n hasAttachment () {\n return this.message.attachments.length > 0\n },\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser,\n restrictedNicknames: state => state.instance.restrictedNicknames\n }),\n popoverMarginStyle () {\n if (this.isCurrentUser) {\n return {}\n } else {\n return { left: 50 }\n }\n },\n ...mapGetters(['mergedConfig', 'findUser'])\n },\n data () {\n return {\n hovered: false,\n menuOpened: false\n }\n },\n methods: {\n onHover (bool) {\n this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n },\n async deleteMessage () {\n const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n if (confirmed) {\n await this.$store.dispatch('deleteChatMessage', {\n messageId: this.chatViewItem.data.id,\n chatId: this.chatViewItem.data.chat_id\n })\n }\n this.hovered = false\n this.menuOpened = false\n }\n }\n}\n\nexport default ChatMessage\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_message.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_message.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_message.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-691ffb28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMessage)?_c('div',{staticClass:\"chat-message-wrapper\",class:{ 'hovered-message-chain': _vm.hoveredMessageChain },on:{\"mouseover\":function($event){return _vm.onHover(true)},\"mouseleave\":function($event){return _vm.onHover(false)}}},[_c('div',{staticClass:\"chat-message\",class:[{ 'outgoing': _vm.isCurrentUser, 'incoming': !_vm.isCurrentUser }]},[(!_vm.isCurrentUser)?_c('div',{staticClass:\"avatar-wrapper\"},[(_vm.chatViewItem.isHead)?_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.author}})],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chat-message-inner\"},[_c('div',{staticClass:\"status-body\",style:({ 'min-width': _vm.message.attachment ? '80%' : '' })},[_c('div',{staticClass:\"media status\",class:{ 'without-attachment': !_vm.hasAttachment, 'pending': _vm.chatViewItem.data.pending, 'error': _vm.chatViewItem.data.error },staticStyle:{\"position\":\"relative\"},on:{\"mouseenter\":function($event){_vm.hovered = true},\"mouseleave\":function($event){_vm.hovered = false}}},[_c('div',{staticClass:\"chat-message-menu\",class:{ 'visible': _vm.hovered || _vm.menuOpened }},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to-selector\":_vm.isCurrentUser ? '' : '.scrollable-message-list',\"bound-to\":{ x: 'container' },\"margin\":_vm.popoverMarginStyle},on:{\"show\":function($event){_vm.menuOpened = true},\"close\":function($event){_vm.menuOpened = false}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":_vm.deleteMessage}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"chats.delete\"))+\"\\n \")],1)])]),_vm._v(\" \"),_c('button',{staticClass:\"button-default menu-icon\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('chats.more')},slot:\"trigger\"},[_c('FAIcon',{attrs:{\"icon\":\"ellipsis-h\"}})],1)])],1),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.messageForStatusContent,\"full-content\":true}},[_c('span',{staticClass:\"created-at\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.createdAt)+\"\\n \")])])],1)])])])]):_c('div',{staticClass:\"chat-message-date-separator\"},[_c('ChatMessageDate',{attrs:{\"date\":_vm.chatViewItem.date}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// Captures a scroll position\nexport const getScrollPosition = (el) => {\n return {\n scrollTop: el.scrollTop,\n scrollHeight: el.scrollHeight,\n offsetHeight: el.offsetHeight\n }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (el, offset = 0) => {\n if (!el) { return }\n const scrollHeight = el.scrollTop + offset\n const totalHeight = el.scrollHeight - el.offsetHeight\n return totalHeight <= scrollHeight\n}\n\n// Height of the scrollable container. The dynamic height is needed to ensure the mobile browser panel doesn't overlap or hide the posting form.\nexport const scrollableContainerHeight = (inner, header, footer) => {\n return inner.offsetHeight - header.clientHeight - footer.clientHeight\n}\n\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = (el) => {\n if (!el) return\n\n return el.scrollHeight > el.clientHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleLayoutChange)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.handleResize()\n })\n this.setChatLayout()\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleLayoutChange)\n this.unsetChatLayout()\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.mobileLayout,\n layoutHeight: state => state.interface.layoutHeight,\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n '$route': function () {\n this.startFetching()\n },\n layoutHeight () {\n this.handleResize({ expand: true })\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n this.updateScrollableContainerHeight()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n setChatLayout () {\n // This is a hacky way to adjust the global layout to the mobile chat (without modifying the rest of the app).\n // This layout prevents empty spaces from being visible at the bottom\n // of the chat on iOS Safari (`safe-area-inset`) when\n // - the on-screen keyboard appears and the user starts typing\n // - the user selects the text inside the input area\n // - the user selects and deletes the text that is multiple lines long\n // TODO: unify the chat layout with the global layout.\n let html = document.querySelector('html')\n if (html) {\n html.classList.add('chat-layout')\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n })\n },\n unsetChatLayout () {\n let html = document.querySelector('html')\n if (html) {\n html.classList.remove('chat-layout')\n }\n },\n handleLayoutChange () {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.scrollDown()\n })\n },\n // Ensures the proper position of the posting form in the mobile layout (the mobile browser panel does not overlap or hide it)\n updateScrollableContainerHeight () {\n const header = this.$refs.header\n const footer = this.$refs.footer\n const inner = this.mobileLayout ? window.document.body : this.$refs.inner\n this.scrollableContainerHeight = scrollableContainerHeight(inner, header, footer) + 'px'\n },\n // Preserves the scroll position when OSK appears or the posting form changes its height.\n handleResize (opts = {}) {\n const { expand = false, delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n\n const { offsetHeight = undefined } = this.lastScrollPosition\n this.lastScrollPosition = getScrollPosition(this.$refs.scrollable)\n\n const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n if (diff < 0 || (!this.bottomedOut() && expand)) {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.$refs.scrollable.scrollTo({\n top: this.$refs.scrollable.scrollTop - diff,\n left: 0\n })\n })\n }\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n const scrollable = this.$refs.scrollable\n if (!scrollable) { return }\n this.$nextTick(() => {\n scrollable.scrollTo({ top: scrollable.scrollHeight, left: 0, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(this.$refs.scrollable, offset)\n },\n reachedTop () {\n const scrollable = this.$refs.scrollable\n return scrollable && scrollable.scrollTop <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition(this.$refs.scrollable)\n this.$refs.scrollable.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading),\n left: 0\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition(this.$refs.scrollable)\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n if (isFirstFetch) {\n this.updateScrollableContainerHeight()\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable(this.$refs.scrollable) && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n setTimeout(() => {\n this.updateScrollableContainerHeight()\n }, SAFE_RESIZE_TIME_OFFSET)\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat.js\"\nimport __vue_script__ from \"!!babel-loader!./chat.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b3f1f68\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-view\"},[_c('div',{staticClass:\"chat-view-inner\"},[_c('div',{ref:\"inner\",staticClass:\"panel-default panel chat-view-body\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading chat-view-heading mobile-hidden\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"title text-center\"},[_c('ChatTitle',{attrs:{\"user\":_vm.recipient,\"with-avatar\":true}})],1)]),_vm._v(\" \"),[_c('div',{ref:\"scrollable\",staticClass:\"scrollable-message-list\",style:({ height: _vm.scrollableContainerHeight }),on:{\"scroll\":_vm.handleScroll}},[(!_vm.errorLoadingChat)?_vm._l((_vm.chatViewItems),function(chatViewItem){return _c('ChatMessage',{key:chatViewItem.id,attrs:{\"author\":_vm.recipient,\"chat-view-item\":chatViewItem,\"hovered-message-chain\":chatViewItem.messageChainId === _vm.hoveredMessageChainId},on:{\"hover\":_vm.onMessageHover}})}):_c('div',{staticClass:\"chat-loading-error\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('chats.error_loading_chat'))+\"\\n \")])])],2),_vm._v(\" \"),_c('div',{ref:\"footer\",staticClass:\"panel-body footer\"},[_c('div',{staticClass:\"jump-to-bottom-button\",class:{ 'visible': _vm.jumpToBottomButtonVisible },on:{\"click\":function($event){return _vm.scrollDown({ behavior: 'smooth' })}}},[_c('span',[_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}}),_vm._v(\" \"),(_vm.newMessageCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count unread-message-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.newMessageCount)+\"\\n \")]):_vm._e()],1)]),_vm._v(\" \"),_c('PostStatusForm',{attrs:{\"disable-subject\":true,\"disable-scope-selector\":true,\"disable-notice\":true,\"disable-lock-warning\":true,\"disable-polls\":true,\"disable-sensitivity-checkbox\":true,\"disable-submit\":_vm.errorLoadingChat || !_vm.currentChat,\"disable-preview\":true,\"optimistic-posting\":true,\"post-handler\":_vm.sendMessage,\"submit-on-enter\":!_vm.mobileLayout,\"preserve-focus\":!_vm.mobileLayout,\"auto-focus\":!_vm.mobileLayout,\"placeholder\":_vm.formPlaceholder,\"file-limit\":1,\"max-height\":\"160\",\"emoji-picker-placement\":\"top\"},on:{\"resize\":_vm.handleResize}})],1)]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-064803a0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-card-content-container\"},[(_vm.isMe || (!_vm.noFollowsYou && _vm.relationship.followed_by))?_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.isMe ? _vm.$t('user_card.its_you') : _vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn)?[(!_vm.relationship.following)?_c('div',{staticClass:\"follow-card-follow-button\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()]:(!_vm.isMe)?[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]:_vm._e()],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n destroy, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return Vue.component('withLoadMore', {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\n destroy && destroy(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render (h) {\n const props = {\n props: {\n ...this.$props,\n [childPropName]: this.entries\n },\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }\n const children = Object.entries(this.$slots).map(([key, value]) => h('template', { slot: key }, value))\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n })\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.js'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load(routeParams.name || routeParams.id)\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n destroyed () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n }\n },\n methods: {\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n // Check if user data is already loaded in store\n const user = this.$store.getters.findUser(userNameOrId)\n if (user) {\n loadById(user.id)\n } else {\n this.$store.dispatch('fetchUser', userNameOrId)\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation\n }\n}\n\nexport default UserProfile\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_profile.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_profile.js\"\nimport __vue_script__ from \"!!babel-loader!./user_profile.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9dcf5f9e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_profile.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.user)?_c('div',{staticClass:\"user-profile panel panel-default\"},[_c('UserCard',{attrs:{\"user-id\":_vm.userId,\"switcher\":true,\"selected\":_vm.timeline.viewing,\"allow-zooming-avatar\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),(_vm.user.fields_html && _vm.user.fields_html.length > 0)?_c('div',{staticClass:\"user-profile-fields\"},_vm._l((_vm.user.fields_html),function(field,index){return _c('dl',{key:index,staticClass:\"user-profile-field\"},[_c('dt',{staticClass:\"user-profile-field-name\",attrs:{\"title\":_vm.user.fields_text[index].name},domProps:{\"innerHTML\":_vm._s(field.name)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),_c('dd',{staticClass:\"user-profile-field-value\",attrs:{\"title\":_vm.user.fields_text[index].value},domProps:{\"innerHTML\":_vm._s(field.value)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}})])}),0):_vm._e(),_vm._v(\" \"),_c('tab-switcher',{attrs:{\"active-tab\":_vm.tab,\"render-only-focused\":true,\"on-switch\":_vm.onTabSwitch}},[_c('Timeline',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses'),\"count\":_vm.user.statuses_count,\"embedded\":true,\"title\":_vm.$t('user_profile.timeline_title'),\"timeline\":_vm.timeline,\"timeline-name\":\"user\",\"user-id\":_vm.userId,\"pinned-status-ids\":_vm.user.pinnedStatusIds,\"in-profile\":true}}),_vm._v(\" \"),(_vm.followsTabVisible)?_c('div',{key:\"followees\",attrs:{\"label\":_vm.$t('user_card.followees'),\"disabled\":!_vm.user.friends_count}},[_c('FriendList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item}})]}}],null,false,676117295)})],1):_vm._e(),_vm._v(\" \"),(_vm.followersTabVisible)?_c('div',{key:\"followers\",attrs:{\"label\":_vm.$t('user_card.followers'),\"disabled\":!_vm.user.followers_count}},[_c('FollowerList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item,\"no-follows-you\":_vm.isUs}})]}}],null,false,3839341157)})],1):_vm._e(),_vm._v(\" \"),_c('Timeline',{key:\"media\",attrs:{\"label\":_vm.$t('user_card.media'),\"disabled\":!_vm.media.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.media'),\"timeline-name\":\"media\",\"timeline\":_vm.media,\"user-id\":_vm.userId,\"in-profile\":true}}),_vm._v(\" \"),(_vm.isUs)?_c('Timeline',{key:\"favorites\",attrs:{\"label\":_vm.$t('user_card.favorites'),\"disabled\":!_vm.favorites.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.favorites'),\"timeline-name\":\"favorites\",\"timeline\":_vm.favorites,\"in-profile\":true}}):_vm._e()],1)],1):_c('div',{staticClass:\"panel user-profile-placeholder\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.profile_tab'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.error)?_c('span',[_vm._v(_vm._s(_vm.error))]):_c('FAIcon',{attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faSearch\n)\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses'\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.statuses = []\n this.hashtags = []\n this.$refs.searchInput.blur()\n\n this.$store.dispatch('search', { q: query, resolve: true })\n .then(data => {\n this.loading = false\n this.userIds = map(data.accounts, 'id')\n this.statuses = data.statuses\n this.hashtags = data.hashtags\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search.js\"\nimport __vue_script__ from \"!!babel-loader!./search.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52f57ebe\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.search'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"search-input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-input\",attrs:{\"placeholder\":_vm.$t('nav.search')},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.newQuery(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.newQuery(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"icon\":\"search\"}})],1)]),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"text-center loading-icon\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1):(_vm.loaded)?_c('div',[_c('div',{staticClass:\"search-nav-heading\"},[_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onResultTabSwitch,\"active-tab\":_vm.currenResultTab}},[_c('span',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses') + _vm.resultCount('visibleStatuses')}}),_vm._v(\" \"),_c('span',{key:\"people\",attrs:{\"label\":_vm.$t('search.people') + _vm.resultCount('users')}}),_vm._v(\" \"),_c('span',{key:\"hashtags\",attrs:{\"label\":_vm.$t('search.hashtags') + _vm.resultCount('hashtags')}})])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.currenResultTab === 'statuses')?_c('div',[(_vm.visibleStatuses.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.visibleStatuses),function(status){return _c('Status',{key:status.id,staticClass:\"search-result\",attrs:{\"collapsable\":false,\"expandable\":false,\"compact\":false,\"statusoid\":status,\"no-heading\":false}})})],2):(_vm.currenResultTab === 'people')?_c('div',[(_vm.users.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item search-result\",attrs:{\"user\":user}})})],2):(_vm.currenResultTab === 'hashtags')?_c('div',[(_vm.hashtags.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.hashtags),function(hashtag){return _c('div',{key:hashtag.url,staticClass:\"status trend search-result\"},[_c('div',{staticClass:\"hashtag\"},[_c('router-link',{attrs:{\"to\":{ name: 'tag-timeline', params: { tag: hashtag.name } }}},[_vm._v(\"\\n #\"+_vm._s(hashtag.name)+\"\\n \")]),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',[(_vm.lastHistoryRecord(hashtag).accounts == 1)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.person_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.people_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")])]):_vm._e()],1),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',{staticClass:\"count\"},[_vm._v(\"\\n \"+_vm._s(_vm.lastHistoryRecord(hashtag).uses)+\"\\n \")]):_vm._e()])})],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"search-result-footer text-center panel-footer faint\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { validationMixin } from 'vuelidate'\nimport { required, requiredIf, sameAs } from 'vuelidate/lib/validators'\nimport { mapActions, mapState } from 'vuex'\n\nconst registration = {\n mixins: [validationMixin],\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n reason: ''\n },\n captcha: {}\n }),\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAsPassword: sameAs('password')\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) }\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n\n this.$v.$touch()\n\n if (!this.$v.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./registration.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./registration.js\"\nimport __vue_script__ from \"!!babel-loader!./registration.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52163aea\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./registration.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.registration'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"registration-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit(_vm.user)}}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-fields\"},[_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.username.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.username.$model),expression:\"$v.user.username.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-username\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.username_placeholder')},domProps:{\"value\":(_vm.$v.user.username.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.username, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.username.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.username.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.username_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.fullname.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-fullname\"}},[_vm._v(_vm._s(_vm.$t('registration.fullname')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.fullname.$model),expression:\"$v.user.fullname.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-fullname\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.fullname_placeholder')},domProps:{\"value\":(_vm.$v.user.fullname.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.fullname, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.fullname.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.fullname.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.fullname_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.email.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t('registration.email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.$v.user.email.$model),expression:\"$v.user.email.$model\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"disabled\":_vm.isPending,\"type\":\"email\"},domProps:{\"value\":(_vm.$v.user.email.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.email, \"$model\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.email.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.email.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.email_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"bio\"}},[_vm._v(_vm._s(_vm.$t('registration.bio'))+\" (\"+_vm._s(_vm.$t('general.optional'))+\")\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.bio),expression:\"user.bio\"}],staticClass:\"form-control\",attrs:{\"id\":\"bio\",\"disabled\":_vm.isPending,\"placeholder\":_vm.bioPlaceholder},domProps:{\"value\":(_vm.user.bio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"bio\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.password.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.password.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.password.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.confirm.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password-confirmation\"}},[_vm._v(_vm._s(_vm.$t('registration.password_confirm')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.confirm),expression:\"user.confirm\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password-confirmation\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.confirm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"confirm\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.confirm.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.confirm.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_required')))])]):_vm._e(),_vm._v(\" \"),(!_vm.$v.user.confirm.sameAsPassword)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_match')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.accountApprovalRequired)?_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"reason\"}},[_vm._v(_vm._s(_vm.$t('registration.reason')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.reason),expression:\"user.reason\"}],staticClass:\"form-control\",attrs:{\"id\":\"reason\",\"disabled\":_vm.isPending,\"placeholder\":_vm.reasonPlaceholder},domProps:{\"value\":(_vm.user.reason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"reason\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),(_vm.captcha.type != 'none')?_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"captcha-group\"}},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"captcha-label\"}},[_vm._v(_vm._s(_vm.$t('registration.captcha')))]),_vm._v(\" \"),(['kocaptcha', 'native'].includes(_vm.captcha.type))?[_c('img',{attrs:{\"src\":_vm.captcha.url},on:{\"click\":_vm.setCaptcha}}),_vm._v(\" \"),_c('sub',[_vm._v(_vm._s(_vm.$t('registration.new_captcha')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.captcha.solution),expression:\"captcha.solution\"}],staticClass:\"form-control\",attrs:{\"id\":\"captcha-answer\",\"disabled\":_vm.isPending,\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":(_vm.captcha.solution)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.captcha, \"solution\", $event.target.value)}}})]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.token)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"token\"}},[_vm._v(_vm._s(_vm.$t('registration.token')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.token),expression:\"token\"}],staticClass:\"form-control\",attrs:{\"id\":\"token\",\"disabled\":\"true\",\"type\":\"text\"},domProps:{\"value\":(_vm.token)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.token=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.register'))+\"\\n \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"terms-of-service\",domProps:{\"innerHTML\":_vm._s(_vm.termsOfService)}})]),_vm._v(\" \"),(_vm.serverValidationErrors.length)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},_vm._l((_vm.serverValidationErrors),function(error){return _c('span',{key:error},[_vm._v(_vm._s(error))])}),0)]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./password_reset.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./password_reset.js\"\nimport __vue_script__ from \"!!babel-loader!./password_reset.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-63bf2728\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./password_reset.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"password-reset-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"container\"},[(!_vm.mailerEnabled)?_c('div',[(_vm.passwordResetRequested)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required_but_mailer_is_disabled'))+\"\\n \")]):_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_disabled'))+\"\\n \")])]):(_vm.success || _vm.throttled)?_c('div',[(_vm.success)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.check_email'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group text-center\"},[_c('router-link',{attrs:{\"to\":{name: 'root'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.return_home'))+\"\\n \")])],1)]):_c('div',[(_vm.passwordResetRequested)?_c('p',{staticClass:\"password-reset-required error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.instruction'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.email),expression:\"user.email\"}],ref:\"email\",staticClass:\"form-control\",attrs:{\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('password_reset.placeholder'),\"type\":\"input\"},domProps:{\"value\":(_vm.user.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"email\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.save'))+\"\\n \")])])]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"alert error notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.error))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e()])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_request_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_request_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_request_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-84be1288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_request_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-request-card-content-container\"},[_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.denyUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.deny'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!./follow_requests.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_requests.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62e19784\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_requests.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.friend_requests'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.requests),function(request){return _c('FollowRequestCard',{key:request.id,staticClass:\"list-item\",attrs:{\"user\":request}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","/* script */\nexport * from \"!!babel-loader!./oauth_callback.js\"\nimport __vue_script__ from \"!!babel-loader!./oauth_callback.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f514124c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./oauth_callback.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"...\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./login_form.js\"\nimport __vue_script__ from \"!!babel-loader!./login_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d5a53416\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[(_vm.isPasswordAuth)?[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.username),expression:\"user.username\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"disabled\":_vm.loggingIn,\"placeholder\":_vm.$t('login.placeholder')},domProps:{\"value\":(_vm.user.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"username\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],ref:\"passwordInput\",staticClass:\"form-control\",attrs:{\"id\":\"password\",\"disabled\":_vm.loggingIn,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('router-link',{attrs:{\"to\":{name: 'password-reset'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.forgot_password'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.isTokenAuth)?_c('div',{staticClass:\"form-group\"},[_c('p',[_vm._v(_vm._s(_vm.$t('login.description')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[(_vm.registrationOpen)?_c('router-link',{staticClass:\"register\",attrs:{\"to\":{name: 'registration'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.register'))+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.loggingIn,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")])])])],2)]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./recovery_form.js\"\nimport __vue_script__ from \"!!babel-loader!./recovery_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b425343\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./recovery_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.recovery'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(_vm._s(_vm.$t('login.recovery_code')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireTOTP($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_two_factor_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./totp_form.js\"\nimport __vue_script__ from \"!!babel-loader!./totp_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60cb7c28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./totp_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.totp'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.authentication_code'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireRecovery($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_recovery_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"size\":\"lg\",\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render (createElement) {\n return createElement('component', { is: this.authForm })\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst chatPanel = {\n props: [ 'floating' ],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.chat.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.chat.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default chatPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-090bce03\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.collapsed || !_vm.floating)?_c('div',{staticClass:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading timeline-heading\",class:{ 'chat-heading': _vm.floating },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n \"),(_vm.floating)?_c('FAIcon',{staticClass:\"close-icon\",attrs:{\"icon\":\"times\"}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"chat-window\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"chat-message\"},[_c('span',{staticClass:\"chat-avatar\"},[_c('img',{attrs:{\"src\":message.author.avatar}})]),_vm._v(\" \"),_c('div',{staticClass:\"chat-content\"},[_c('router-link',{staticClass:\"chat-name\",attrs:{\"to\":_vm.userProfileLink(message.author)}},[_vm._v(\"\\n \"+_vm._s(message.author.username)+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"chat-text\"},[_vm._v(\"\\n \"+_vm._s(message.text)+\"\\n \")])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"chat-input\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentMessage),expression:\"currentMessage\"}],staticClass:\"chat-input-textarea\",attrs:{\"rows\":\"1\"},domProps:{\"value\":(_vm.currentMessage)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit(_vm.currentMessage)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentMessage=$event.target.value}}})])])]):_c('div',{staticClass:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading stub timeline-heading chat-heading\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"bullhorn\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n \")],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4f8c3288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item\",attrs:{\"user\":user}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","/* script */\nexport * from \"!!babel-loader!./instance_specific_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./instance_specific_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b01187b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./instance_specific_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"instance-specific-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.instanceSpecificPanelContent)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n chat: function () { return this.$store.state.instance.chatAvailable },\n pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit },\n uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./features_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./features_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./features_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d7321f7c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./features_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"features-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body features-panel\"},[_c('ul',[(_vm.chat)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.chat'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.pleromaChatMessages)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.pleroma_chat_messages'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.gopher)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.gopher'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.whoToFollow)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.who_to_follow'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.media_proxy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.scope_options')))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.text_limit'))+\" = \"+_vm._s(_vm.textlimit))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.upload_limit'))+\" = \"+_vm._s(_vm.uploadlimit.num)+\" \"+_vm._s(_vm.$t('upload.file_size_units.' + _vm.uploadlimit.unit)))])])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./terms_of_service_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./terms_of_service_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./terms_of_service_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-687e38f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./terms_of_service_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"tos-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts['admin'] },\n { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUser'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./staff_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./staff_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./staff_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31dce24a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./staff_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"staff-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.staff\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.groupedStaffAccounts),function(group){return _c('div',{key:group.role,staticClass:\"staff-group\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('general.role.' + group.role)))]),_vm._v(\" \"),_vm._l((group.users),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})})],2)}),0)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\nconst MRFTransparencyPanel = {\n computed: {\n ...mapState({\n federationPolicy: state => get(state, 'instance.federationPolicy'),\n mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n quarantineInstances: state => get(state, 'instance.federationPolicy.quarantined_instances', []),\n acceptInstances: state => get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n rejectInstances: state => get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n ftlRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n mediaNsfwInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n mediaRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n }),\n hasInstanceSpecificPolicies () {\n return this.quarantineInstances.length ||\n this.acceptInstances.length ||\n this.rejectInstances.length ||\n this.ftlRemovalInstances.length ||\n this.mediaNsfwInstances.length ||\n this.mediaRemovalInstances.length\n },\n hasKeywordPolicies () {\n return this.keywordsFtlRemoval.length ||\n this.keywordsReject.length ||\n this.keywordsReplace.length\n }\n }\n}\n\nexport default MRFTransparencyPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mrf_transparency_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mrf_transparency_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./mrf_transparency_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3de10442\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mrf_transparency_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n components: {\n InstanceSpecificPanel,\n FeaturesPanel,\n TermsOfServicePanel,\n StaffPanel,\n MRFTransparencyPanel\n },\n computed: {\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default About\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.federationPolicy)?_c('div',{staticClass:\"mrf-transparency-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.federation\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"mrf-section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mrfPolicies),function(policy){return _c('li',{key:policy,domProps:{\"textContent\":_vm._s(policy)}})}),0),_vm._v(\" \"),(_vm.hasInstanceSpecificPolicies)?_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.simple.simple_policies\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.acceptInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.acceptInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.rejectInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.rejectInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.quarantineInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.quarantineInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.ftlRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.ftlRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.mediaNsfwInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mediaNsfwInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.mediaRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mediaRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.hasKeywordPolicies)?_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.keyword.keyword_policies\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.keywordsFtlRemoval.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.ftl_removal\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsFtlRemoval),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReject.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.reject\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReject),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReplace.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.replace\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReplace),function(keyword){return _c('li',{key:keyword},[_vm._v(\"\\n \"+_vm._s(keyword.pattern)+\"\\n \"+_vm._s(_vm.$t(\"about.mrf.keyword.is_replaced_by\"))+\"\\n \"+_vm._s(keyword.replacement)+\"\\n \")])}),0)]):_vm._e()])])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./about.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./about.js\"\nimport __vue_script__ from \"!!babel-loader!./about.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-acd3d67e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./about.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar\"},[(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),_c('staff-panel'),_vm._v(\" \"),_c('terms-of-service-panel'),_vm._v(\" \"),_c('MRFTransparencyPanel'),_vm._v(\" \"),(_vm.showFeaturesPanel)?_c('features-panel'):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_user_resolver.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_user_resolver.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_user_resolver.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-198402c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_user_resolver.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.remote_user_resolver'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.searching_for'))+\" @\"+_vm._s(_vm.$route.params.username)+\"@\"+_vm._s(_vm.$route.params.hostname)+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.error'))+\"\\n \")]):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ChatPanel from 'components/chat_panel/chat_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n { name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n { name: 'remote-user-profile-acct',\n path: '/remote-users/(@?):username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'chat-panel', path: '/chat-panel', component: ChatPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'user-profile', path: '/(users/)?:name', component: UserProfile }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./user_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d2d72c5e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-panel\"},[(_vm.signedIn)?_c('div',{key:\"user-panel\",staticClass:\"panel panel-default signed-in\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"hide-bio\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),_c('PostStatusForm')],1):_c('auth-form',{key:\"user-panel\"})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n)\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: {\n TimelineMenuContent\n },\n data () {\n return {\n showTimelines: false\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n }\n}\n\nexport default NavPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./nav_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./nav_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./nav_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fdfe5e92\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./nav_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavPanel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('button',{staticClass:\"button-unstyled menu-item\",on:{\"click\":_vm.toggleTimelines}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"stream\"}}),_vm._v(_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n \"),_c('FAIcon',{staticClass:\"timelines-chevron\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.showTimelines ? 'chevron-up' : 'chevron-down'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTimelines),expression:\"showTimelines\"}],staticClass:\"timelines-background\"},[_c('TimelineMenuContent',{staticClass:\"timelines\"})],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[(_vm.unreadChatCount)?_c('div',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friend-requests' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'about' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")],1)],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || this.$store.state.instance.defaultAvatar\n let name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n var credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4d31272\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"who-to-follow-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"who-to-follow\"},[_vm._l((_vm.usersToFollow),function(user){return _c('p',{key:user.id,staticClass:\"who-to-follow-items\"},[_c('img',{attrs:{\"src\":user.img}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink(user.id, user.name)}},[_vm._v(\"\\n \"+_vm._s(user.name)+\"\\n \")]),_c('br')],1)}),_vm._v(\" \"),_c('p',{staticClass:\"who-to-follow-more\"},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.more'))+\"\\n \")])],1)],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9413504\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"},{name:\"body-scroll-lock\",rawName:\"v-body-scroll-lock\",value:(_vm.isOpen && !_vm.noBackground),expression:\"isOpen && !noBackground\"}],staticClass:\"modal-view\",class:_vm.classes,on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./panel_loading.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-595215a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./panel_loading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./async_component_error.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6b205c72\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./async_component_error.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import Vue from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => ({\n component: asyncComponent(),\n ...options\n })\n\n const observe = Vue.observable({ c: asyncComponentFactory() })\n\n return {\n functional: true,\n render (createElement, { data, children }) {\n // emit event resetAsyncComponent to reloading\n data.on = {}\n data.on.resetAsyncComponent = () => {\n observe.c = asyncComponentFactory()\n // parent.$forceUpdate()\n }\n return createElement(observe.c, data, children)\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\n\nconst SettingsModal = {\n components: {\n Modal,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loading: PanelLoading,\n error: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n }\n }\n}\n\nexport default SettingsModal\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-loading\"},[_c('span',{staticClass:\"loading-text\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"async-component-error\"},[_c('div',[_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.generic_error'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.error_retry'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.retry'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./settings_modal.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./settings_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./settings_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2777caee\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"settings-modal\",class:{ peek: _vm.modalPeeked },attrs:{\"is-open\":_vm.modalActivated,\"no-background\":_vm.modalPeeked}},[_c('div',{staticClass:\"settings-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.settings'))+\"\\n \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.currentSaveStateNotice)?[(_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_err'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert transparent\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_ok'))+\"\\n \")]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.peekModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.peek'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.closeModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.close'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.modalOpenedOnce)?_c('SettingsModalContent'):_vm._e()],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchEventCoord = e => ([e.touches[0].screenX, e.touches[0].screenY])\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe\n}\n\nexport default GestureService\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n Modal\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? fileTypeService.fileType(this.currentMedia.mimetype) : null\n }\n },\n created () {\n this.mediaSwipeGestureRight = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.goPrev,\n 50\n )\n this.mediaSwipeGestureLeft = GestureService.swipeGesture(\n GestureService.DIRECTION_LEFT,\n this.goNext,\n 50\n )\n },\n methods: {\n mediaTouchStart (e) {\n GestureService.beginSwipe(e, this.mediaSwipeGestureRight)\n GestureService.beginSwipe(e, this.mediaSwipeGestureLeft)\n },\n mediaTouchMove (e) {\n GestureService.updateSwipe(e, this.mediaSwipeGestureRight)\n GestureService.updateSwipe(e, this.mediaSwipeGestureLeft)\n },\n hide () {\n this.$store.dispatch('closeMediaViewer')\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n this.$store.dispatch('setCurrent', this.media[prevIndex])\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n this.$store.dispatch('setCurrent', this.media[nextIndex])\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n destroyed () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./media_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07b118f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showing)?_c('Modal',{staticClass:\"media-modal-view\",on:{\"backdropClicked\":_vm.hide}},[(_vm.type === 'image')?_c('img',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description},on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.mediaTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.mediaTouchMove($event)},\"click\":_vm.hide}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'video')?_c('VideoAttachment',{staticClass:\"modal-image\",attrs:{\"attachment\":_vm.currentMedia,\"controls\":true}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--prev\",attrs:{\"title\":_vm.$t('media_modal.previous')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goPrev($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-left\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--next\",attrs:{\"title\":_vm.$t('media_modal.next')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goNext($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-right\"}})],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n },\n logo () {\n return this.$store.state.instance.logo\n },\n hideSitename () {\n return this.$store.state.instance.hideSitename\n },\n sitename () {\n return this.$store.state.instance.name\n },\n followRequestCount () {\n return this.$store.state.api.followRequests.length\n },\n privateMode () {\n return this.$store.state.instance.private\n },\n federating () {\n return this.$store.state.instance.federating\n },\n timelinesRoute () {\n if (this.$store.state.interface.lastTimeline) {\n return this.$store.state.interface.lastTimeline\n }\n return this.currentUser ? 'friends' : 'public-timeline'\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./side_drawer.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./side_drawer.js\"\nimport __vue_script__ from \"!!babel-loader!./side_drawer.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3a3bcec9\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./side_drawer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"side-drawer-container\",class:{ 'side-drawer-container-closed': _vm.closed, 'side-drawer-container-open': !_vm.closed }},[_c('div',{staticClass:\"side-drawer-darken\",class:{ 'side-drawer-darken-closed': _vm.closed}}),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer\",class:{'side-drawer-closed': _vm.closed},on:{\"touchstart\":_vm.touchStart,\"touchmove\":_vm.touchMove}},[_c('div',{staticClass:\"side-drawer-heading\",on:{\"click\":_vm.toggleDrawer}},[(_vm.currentUser)?_c('UserCard',{attrs:{\"user-id\":_vm.currentUser.id,\"hide-bio\":true}}):_c('div',{staticClass:\"side-drawer-logo-wrapper\"},[_c('img',{attrs:{\"src\":_vm.logo}}),_vm._v(\" \"),(!_vm.hideSitename)?_c('span',[_vm._v(_vm._s(_vm.sitename))]):_vm._e()])],1),_vm._v(\" \"),_c('ul',[(!_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'login' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-in-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: _vm.timelinesRoute }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{staticStyle:{\"position\":\"relative\"},attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \"),(_vm.unreadChatCount)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e()]),_vm._v(\" \"),(_vm.currentUser)?_c('ul',[_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")],1)],1),_vm._v(\" \"),(_vm.currentUser.locked)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/friend-requests\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.chat)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'chat-panel' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bullhorn\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"shoutbox.title\"))+\"\\n \")],1)],1):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'search' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.search\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.who_to_follow\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.openSettingsModal}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n \")],1)]),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")],1)],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.administration\"))+\"\\n \")],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.doLogout}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.logout\"))+\"\\n \")],1)]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer-click-outside\",class:{'side-drawer-click-outside-closed': _vm.closed},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleDrawer($event)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n 'chats',\n 'chat'\n])\n\nconst MobilePostStatusButton = {\n data () {\n return {\n hidden: false,\n scrollingDown: false,\n inputActive: false,\n oldScrollPos: 0,\n amountScrolled: 0\n }\n },\n created () {\n if (this.autohideFloatingPostButton) {\n this.activateFloatingPostButtonAutohide()\n }\n window.addEventListener('resize', this.handleOSK)\n },\n destroyed () {\n if (this.autohideFloatingPostButton) {\n this.deactivateFloatingPostButtonAutohide()\n }\n window.removeEventListener('resize', this.handleOSK)\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isHidden () {\n if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n autohideFloatingPostButton () {\n return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n }\n },\n watch: {\n autohideFloatingPostButton: function (isEnabled) {\n if (isEnabled) {\n this.activateFloatingPostButtonAutohide()\n } else {\n this.deactivateFloatingPostButtonAutohide()\n }\n }\n },\n methods: {\n activateFloatingPostButtonAutohide () {\n window.addEventListener('scroll', this.handleScrollStart)\n window.addEventListener('scroll', this.handleScrollEnd)\n },\n deactivateFloatingPostButtonAutohide () {\n window.removeEventListener('scroll', this.handleScrollStart)\n window.removeEventListener('scroll', this.handleScrollEnd)\n },\n openPostForm () {\n this.$store.dispatch('openPostStatusModal')\n },\n handleOSK () {\n // This is a big hack: we're guessing from changed window sizes if the\n // on-screen keyboard is active or not. This is only really important\n // for phones in portrait mode and it's more important to show the button\n // in normal scenarios on all phones, than it is to hide it when the\n // keyboard is active.\n // Guesswork based on https://www.mydevice.io/#compare-devices\n\n // for example, iphone 4 and android phones from the same time period\n const smallPhone = window.innerWidth < 350\n const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n const biggerPhone = !smallPhone && window.innerWidth < 450\n const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n this.inputActive = true\n } else {\n this.inputActive = false\n }\n },\n handleScrollStart: debounce(function () {\n if (window.scrollY > this.oldScrollPos) {\n this.hidden = true\n } else {\n this.hidden = false\n }\n this.oldScrollPos = window.scrollY\n }, 100, { leading: true, trailing: false }),\n\n handleScrollEnd: debounce(function () {\n this.hidden = false\n this.oldScrollPos = window.scrollY\n }, 100, { leading: false, trailing: true })\n }\n}\n\nexport default MobilePostStatusButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_post_status_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_post_status_button.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_post_status_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-77781f2c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_post_status_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',[_c('button',{staticClass:\"button-default new-status-button\",class:{ 'hidden': _vm.isHidden },on:{\"click\":_vm.openPostForm}},[_c('FAIcon',{attrs:{\"icon\":\"pen\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.closeMobileNotifications,\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications () {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n this.markNotificationsAsSeen()\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n markNotificationsAsSeen () {\n this.$refs.notifications.markAsSeen()\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_nav.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5597b03f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"MobileNav\"},[_c('nav',{staticClass:\"mobile-nav\",class:{ 'mobile-hidden': _vm.isChat },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"item\"},[_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleMobileSidebar()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bars\"}}),_vm._v(\" \"),(_vm.unreadChatCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1),_vm._v(\" \"),(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"item right\"},[(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bell\"}}),_vm._v(\" \"),(_vm.unseenNotificationsCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),(_vm.currentUser)?_c('div',{staticClass:\"mobile-notifications-drawer\",class:{ 'closed': !_vm.notificationsOpen },on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.notificationsTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.notificationsTouchMove($event)}}},[_c('div',{staticClass:\"mobile-notifications-header\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('notifications.notifications')))]),_vm._v(\" \"),_c('a',{staticClass:\"mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.closeMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"mobile-notifications\",on:{\"scroll\":_vm.onScroll}},[_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true}})],1)]):_vm._e(),_vm._v(\" \"),_c('SideDrawer',{ref:\"sideDrawer\",attrs:{\"logout\":_vm.logout}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faSearch\n)\n\nconst SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false\n }),\n watch: {\n '$route': function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search_bar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search_bar.js\"\nimport __vue_script__ from \"!!babel-loader!./search_bar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-105122b7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search_bar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"SearchBar\",class:{ '-expanded': !_vm.hidden }},[(_vm.hidden)?_c('button',{staticClass:\"button-unstyled nav-icon\",attrs:{\"title\":_vm.$t('nav.search'),\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1):[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-bar-input\",attrs:{\"id\":\"search-bar-input\",\"placeholder\":_vm.$t('nav.search'),\"type\":\"text\"},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.find(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.find(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled cancel-search\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"cancel-icon fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}})],1)]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n )\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n 'visibility': this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n } : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n 'margin': `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask ? {} : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./desktop_nav.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./desktop_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./desktop_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e4bf6fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./desktop_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"DesktopNav\",class:{ '-logoLeft': _vm.logoLeft },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"inner-nav\"},[_c('div',{staticClass:\"item sitename\"},[(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('router-link',{staticClass:\"logo\",style:(_vm.logoBgStyle),attrs:{\"to\":{ name: 'root' }}},[_c('div',{staticClass:\"mask\",style:(_vm.logoMaskStyle)}),_vm._v(\" \"),_c('img',{style:(_vm.logoStyle),attrs:{\"src\":_vm.logo}})]),_vm._v(\" \"),_c('div',{staticClass:\"item right actions\"},[(_vm.currentUser || !_vm.privateMode)?_c('search-bar',{on:{\"toggled\":_vm.onSearchBarToggled},nativeOn:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openSettingsModal($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\",\"title\":_vm.$t('nav.preferences')}})],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('a',{staticClass:\"nav-icon\",attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\",\"title\":_vm.$t('nav.administration')}})],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.logout($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\",\"title\":_vm.$t('login.logout')}})],1):_vm._e()],1)],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.$store.state.reports.modalActivated\n },\n userId () {\n return this.$store.state.reports.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.$store.state.reports.statuses\n },\n preTickedIds () {\n return this.$store.state.reports.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_reporting_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_reporting_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./user_reporting_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-02c4a7f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_reporting_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isOpen)?_c('Modal',{on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"user-reporting-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.title', [_vm.user.screen_name_ui]))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"user-reporting-panel-left\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.add_comment_description')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.comment),expression:\"comment\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.$t('user_reporting.additional_comments'),\"rows\":\"1\"},domProps:{\"value\":(_vm.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.comment=$event.target.value},_vm.resize]}})]),_vm._v(\" \"),(!_vm.user.is_local)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.forward_description')))]),_vm._v(\" \"),_c('Checkbox',{model:{value:(_vm.forward),callback:function ($$v) {_vm.forward=$$v},expression:\"forward\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.forward_to', [_vm.remoteInstance]))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.processing},on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.generic_error'))+\"\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"user-reporting-panel-right\"},[_c('List',{attrs:{\"items\":_vm.statuses},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"status-fadein user-reporting-panel-sitem\"},[_c('Status',{attrs:{\"in-conversation\":false,\"focused\":false,\"statusoid\":item}}),_vm._v(\" \"),_c('Checkbox',{attrs:{\"checked\":_vm.isChecked(item.id)},on:{\"change\":function (checked) { return _vm.toggleStatus(checked, item.id); }}})],1)]}}],null,false,2514683306)})],1)])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6b8d3a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn && !_vm.resettingForm)?_c('Modal',{staticClass:\"post-form-modal-view\",attrs:{\"is-open\":_vm.modalActivated},on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"post-form-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.new_status'))+\"\\n \")]),_vm._v(\" \"),_c('PostStatusForm',_vm._b({staticClass:\"panel-body\",on:{\"posted\":_vm.closeModal}},'PostStatusForm',_vm.params,false))],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./global_notice_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./global_notice_list.js\"\nimport __vue_script__ from \"!!babel-loader!./global_notice_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-022f2108\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./global_notice_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"global-notice-list\"},_vm._l((_vm.notices),function(notice,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"alert global-notice\",class:( _obj = {}, _obj['global-' + notice.level] = true, _obj )},[_c('div',{staticClass:\"notice-message\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(notice.messageKey, notice.messageArgs))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled close-notice\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport Notifications from './components/notifications/notifications.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ChatPanel from './components/chat_panel/chat_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications,\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ChatPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n destroyed () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n isMobileLayout () { return this.$store.state.interface.mobileLayout },\n privateMode () { return this.$store.state.instance.private },\n sidebarAlign () {\n return {\n 'order': this.$store.state.instance.sidebarRight ? 99 : 0\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n const mobileLayout = windowWidth() <= 800\n const layoutHeight = windowHeight()\n const changed = mobileLayout !== this.isMobileLayout\n if (changed) {\n this.$store.dispatch('setMobileLayout', mobileLayout)\n }\n this.$store.dispatch('setLayoutHeight', layoutHeight)\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./App.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./App.js\"\nimport __vue_script__ from \"!!babel-loader!./App.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-17632d2b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.bgStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('DesktopNav'),_vm._v(\" \"),_c('div',{staticClass:\"app-bg-wrapper app-container-wrapper\"}),_vm._v(\" \"),_c('div',{staticClass:\"container underlay\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"sidebar-flexer mobile-hidden\",style:(_vm.sidebarAlign)},[_c('div',{staticClass:\"sidebar-bounds\"},[_c('div',{staticClass:\"sidebar-scroller\"},[_c('div',{staticClass:\"sidebar\"},[_c('user-panel'),_vm._v(\" \"),(!_vm.isMobileLayout)?_c('div',[_c('nav-panel'),_vm._v(\" \"),(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),(!_vm.currentUser && _vm.showFeaturesPanel)?_c('features-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('who-to-follow-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('notifications'):_vm._e()],1):_vm._e()],1)])])]),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[(!_vm.currentUser)?_c('div',{staticClass:\"login-hint panel panel-default\"},[_c('router-link',{staticClass:\"panel-body\",attrs:{\"to\":{ name: 'login' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"login.hint\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('router-view')],1),_vm._v(\" \"),_c('media-modal')],1),_vm._v(\" \"),(_vm.currentUser && _vm.chat)?_c('chat-panel',{staticClass:\"floating-chat mobile-hidden\",attrs:{\"floating\":true}}):_vm._e(),_vm._v(\" \"),_c('MobilePostStatusButton'),_vm._v(\" \"),_c('UserReportingModal'),_vm._v(\" \"),_c('PostStatusModal'),_vm._v(\" \"),_c('SettingsModal'),_vm._v(\" \"),_c('portal-target',{attrs:{\"name\":\"modal\"}}),_vm._v(\" \"),_c('GlobalNoticeList')],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport routes from './routes'\nimport App from '../App.vue'\nimport { windowWidth } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'chatAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n const width = windowWidth()\n store.dispatch('setMobileLayout', width <= 800)\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = new VueRouter({\n mode: 'history',\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { x: 0, y: 0 }\n }\n })\n\n /* eslint-disable no-new */\n return new Vue({\n router,\n store,\n i18n,\n el: '#app',\n render: h => h(App)\n })\n}\n\nexport default afterStoreSetup\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Vuex from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport chatModule from './modules/chat.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport VueI18n from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport VueClickOutside from 'v-click-outside'\nimport PortalVue from 'portal-vue'\nimport VBodyScrollLock from './directives/body_scroll_lock'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nVue.use(Vuex)\nVue.use(VueRouter)\nVue.use(VueI18n)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\n\nVue.component('FAIcon', FontAwesomeIcon)\nVue.component('FALayers', FontAwesomeLayers)\n\nconst i18n = new VueI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = new Vuex.Store({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n statuses: statusesModule,\n users: usersModule,\n api: apiModule,\n config: configModule,\n chat: chatModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n chats: chatsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}