Showing preview only (2,790K chars total). Download the full file or copy to clipboard to get everything.
Repository: xiaoyaocz/dart_simple_live
Branch: master
Commit: ba828e6783b1
Files: 436
Total size: 2.6 MB
Directory structure:
gitextract_y43zef6r/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yml
│ │ ├── config.yml
│ │ └── feature.yml
│ └── workflows/
│ ├── publish_app_dev.yaml
│ ├── publish_app_release.yml
│ ├── publish_tv_app_dev.yaml
│ └── publish_tv_app_release.yaml
├── .gitignore
├── .vscode/
│ └── settings.json
├── LICENSE
├── README.md
├── assets/
│ ├── app_version.json
│ ├── play_config.json
│ └── tv_app_version.json
├── simple_live_app/
│ ├── .fvmrc
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android/
│ │ ├── .gitignore
│ │ ├── app/
│ │ │ ├── build.gradle.kts
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ ├── debug/
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── kotlin/
│ │ │ │ │ └── com/
│ │ │ │ │ └── xycz/
│ │ │ │ │ └── simple_live/
│ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v21/
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── values/
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── values-night/
│ │ │ │ │ └── styles.xml
│ │ │ │ └── xml/
│ │ │ │ └── network_security_config.xml
│ │ │ └── profile/
│ │ │ └── AndroidManifest.xml
│ │ ├── build/
│ │ │ └── reports/
│ │ │ └── problems/
│ │ │ └── problems-report.html
│ │ ├── build.gradle.kts
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ └── settings.gradle.kts
│ ├── assets/
│ │ ├── lotties/
│ │ │ ├── empty.json
│ │ │ ├── error.json
│ │ │ └── loadding.json
│ │ └── statement.txt
│ ├── distribute_options.yaml
│ ├── ios/
│ │ ├── .gitignore
│ │ ├── Flutter/
│ │ │ ├── AppFrameworkInfo.plist
│ │ │ ├── Debug.xcconfig
│ │ │ └── Release.xcconfig
│ │ ├── Podfile
│ │ ├── Runner/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── LaunchImage.imageset/
│ │ │ │ ├── Contents.json
│ │ │ │ └── README.md
│ │ │ ├── Base.lproj/
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── Runner-Bridging-Header.h
│ │ ├── Runner.xcodeproj/
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ └── xcshareddata/
│ │ │ └── xcschemes/
│ │ │ └── Runner.xcscheme
│ │ └── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ ├── lib/
│ │ ├── app/
│ │ │ ├── app_style.dart
│ │ │ ├── constant.dart
│ │ │ ├── controller/
│ │ │ │ ├── app_settings_controller.dart
│ │ │ │ └── base_controller.dart
│ │ │ ├── custom_throttle.dart
│ │ │ ├── event_bus.dart
│ │ │ ├── log.dart
│ │ │ ├── sites.dart
│ │ │ ├── utils/
│ │ │ │ ├── archive.dart
│ │ │ │ ├── document.dart
│ │ │ │ └── listen_fourth_button.dart
│ │ │ └── utils.dart
│ │ ├── main.dart
│ │ ├── models/
│ │ │ ├── account/
│ │ │ │ └── bilibili_user_info_page.dart
│ │ │ ├── db/
│ │ │ │ ├── follow_user.dart
│ │ │ │ ├── follow_user.g.dart
│ │ │ │ ├── follow_user_tag.dart
│ │ │ │ ├── follow_user_tag.g.dart
│ │ │ │ ├── history.dart
│ │ │ │ └── history.g.dart
│ │ │ ├── follow_user_item.dart
│ │ │ ├── sync_client_info_model.dart
│ │ │ └── version_model.dart
│ │ ├── modules/
│ │ │ ├── category/
│ │ │ │ ├── category_controller.dart
│ │ │ │ ├── category_list_controller.dart
│ │ │ │ ├── category_list_view.dart
│ │ │ │ ├── category_page.dart
│ │ │ │ └── detail/
│ │ │ │ ├── category_detail_controller.dart
│ │ │ │ └── category_detail_page.dart
│ │ │ ├── follow_user/
│ │ │ │ ├── follow_user_controller.dart
│ │ │ │ └── follow_user_page.dart
│ │ │ ├── home/
│ │ │ │ ├── home_controller.dart
│ │ │ │ ├── home_list_controller.dart
│ │ │ │ ├── home_list_view.dart
│ │ │ │ └── home_page.dart
│ │ │ ├── indexed/
│ │ │ │ ├── indexed_controller.dart
│ │ │ │ └── indexed_page.dart
│ │ │ ├── live_room/
│ │ │ │ ├── live_room_controller.dart
│ │ │ │ ├── live_room_page.dart
│ │ │ │ └── player/
│ │ │ │ ├── player_controller.dart
│ │ │ │ └── player_controls.dart
│ │ │ ├── mine/
│ │ │ │ ├── account/
│ │ │ │ │ ├── account_controller.dart
│ │ │ │ │ ├── account_page.dart
│ │ │ │ │ └── bilibili/
│ │ │ │ │ ├── qr_login_controller.dart
│ │ │ │ │ ├── qr_login_page.dart
│ │ │ │ │ ├── web_login_controller.dart
│ │ │ │ │ └── web_login_page.dart
│ │ │ │ ├── history/
│ │ │ │ │ ├── history_controller.dart
│ │ │ │ │ └── history_page.dart
│ │ │ │ ├── mine_page.dart
│ │ │ │ └── parse/
│ │ │ │ ├── parse_controller.dart
│ │ │ │ └── parse_page.dart
│ │ │ ├── other/
│ │ │ │ └── debug_log_page.dart
│ │ │ ├── search/
│ │ │ │ ├── douyin/
│ │ │ │ │ ├── douyin_search_controller.dart
│ │ │ │ │ └── douyin_search_view.dart
│ │ │ │ ├── search_controller.dart
│ │ │ │ ├── search_list_controller.dart
│ │ │ │ ├── search_list_view.dart
│ │ │ │ └── search_page.dart
│ │ │ ├── settings/
│ │ │ │ ├── appstyle_setting_page.dart
│ │ │ │ ├── auto_exit_settings_page.dart
│ │ │ │ ├── danmu_settings_page.dart
│ │ │ │ ├── danmu_shield/
│ │ │ │ │ ├── danmu_shield_controller.dart
│ │ │ │ │ └── danmu_shield_page.dart
│ │ │ │ ├── follow_settings_page.dart
│ │ │ │ ├── indexed_settings/
│ │ │ │ │ ├── indexed_settings_controller.dart
│ │ │ │ │ └── indexed_settings_page.dart
│ │ │ │ ├── other/
│ │ │ │ │ ├── other_settings_controller.dart
│ │ │ │ │ └── other_settings_page.dart
│ │ │ │ └── play_settings_page.dart
│ │ │ └── sync/
│ │ │ ├── local_sync/
│ │ │ │ ├── device/
│ │ │ │ │ ├── sync_device_controller.dart
│ │ │ │ │ └── sync_device_page.dart
│ │ │ │ ├── local_sync_controller.dart
│ │ │ │ ├── local_sync_page.dart
│ │ │ │ └── scan_qr/
│ │ │ │ ├── sync_scan_qr_controller.dart
│ │ │ │ └── sync_scan_qr_page.dart
│ │ │ ├── remote_sync/
│ │ │ │ ├── room/
│ │ │ │ │ ├── remote_sync_room_controller.dart
│ │ │ │ │ └── remote_sync_room_page.dart
│ │ │ │ └── webdav/
│ │ │ │ ├── remote_sync_webdav_config_page.dart
│ │ │ │ ├── remote_sync_webdav_controller.dart
│ │ │ │ ├── remote_sync_webdav_page.dart
│ │ │ │ └── webdav_client.dart
│ │ │ └── sync_page.dart
│ │ ├── requests/
│ │ │ ├── custom_log_interceptor.dart
│ │ │ ├── http_client.dart
│ │ │ ├── http_error.dart
│ │ │ └── sync_client_request.dart
│ │ ├── routes/
│ │ │ ├── app_navigation.dart
│ │ │ ├── app_pages.dart
│ │ │ └── route_path.dart
│ │ ├── services/
│ │ │ ├── bilibili_account_service.dart
│ │ │ ├── db_service.dart
│ │ │ ├── douyin_account_service.dart
│ │ │ ├── follow_service.dart
│ │ │ ├── local_storage_service.dart
│ │ │ ├── signalr_service.dart
│ │ │ └── sync_service.dart
│ │ └── widgets/
│ │ ├── desktop_refresh_button.dart
│ │ ├── filter_button.dart
│ │ ├── follow_user_item.dart
│ │ ├── keep_alive_wrapper.dart
│ │ ├── live_room_card.dart
│ │ ├── net_image.dart
│ │ ├── none_border_circular_textfield.dart
│ │ ├── page_grid_view.dart
│ │ ├── page_list_view.dart
│ │ ├── rectangular_indicator.dart
│ │ ├── settings/
│ │ │ ├── settings_action.dart
│ │ │ ├── settings_card.dart
│ │ │ ├── settings_menu.dart
│ │ │ ├── settings_number.dart
│ │ │ └── settings_switch.dart
│ │ ├── shadow_card.dart
│ │ ├── status/
│ │ │ ├── app_empty_widget.dart
│ │ │ ├── app_error_widget.dart
│ │ │ └── app_loadding_widget.dart
│ │ └── superchat_card.dart
│ ├── linux/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── flutter/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── generated_plugin_registrant.cc
│ │ │ ├── generated_plugin_registrant.h
│ │ │ └── generated_plugins.cmake
│ │ ├── packaging/
│ │ │ └── deb/
│ │ │ └── make_config.yaml
│ │ └── runner/
│ │ ├── CMakeLists.txt
│ │ ├── main.cc
│ │ ├── my_application.cc
│ │ └── my_application.h
│ ├── macos/
│ │ ├── .gitignore
│ │ ├── Flutter/
│ │ │ ├── Flutter-Debug.xcconfig
│ │ │ ├── Flutter-Release.xcconfig
│ │ │ └── GeneratedPluginRegistrant.swift
│ │ ├── Podfile
│ │ ├── Runner/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj/
│ │ │ │ └── MainMenu.xib
│ │ │ ├── Configs/
│ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ ├── Release.xcconfig
│ │ │ │ └── Warnings.xcconfig
│ │ │ ├── DebugProfile.entitlements
│ │ │ ├── Info.plist
│ │ │ ├── MainFlutterWindow.swift
│ │ │ └── Release.entitlements
│ │ ├── Runner.xcodeproj/
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace/
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcshareddata/
│ │ │ └── xcschemes/
│ │ │ └── Runner.xcscheme
│ │ ├── Runner.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── RunnerTests/
│ │ │ └── RunnerTests.swift
│ │ └── packaging/
│ │ └── dmg/
│ │ └── make_config.yaml
│ ├── pubspec.yaml
│ ├── test/
│ │ └── widget_test.dart
│ └── windows/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── packaging/
│ │ └── msix/
│ │ └── make_config.yaml
│ └── runner/
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── simple_live_console/
│ ├── .gitignore
│ ├── .vscode/
│ │ └── launch.json
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── bin/
│ │ └── simple_live_console.dart
│ ├── pubspec.yaml
│ └── test/
│ └── all_live_console_test.dart
├── simple_live_core/
│ ├── .gitignore
│ ├── .vscode/
│ │ └── launch.json
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example/
│ │ └── simple_live_core_example.dart
│ ├── lib/
│ │ ├── simple_live_core.dart
│ │ └── src/
│ │ ├── bilibili_site.dart
│ │ ├── common/
│ │ │ ├── binary_writer.dart
│ │ │ ├── convert_helper.dart
│ │ │ ├── core_error.dart
│ │ │ ├── core_log.dart
│ │ │ ├── custom_interceptor.dart
│ │ │ ├── http_client.dart
│ │ │ └── web_socket_util.dart
│ │ ├── danmaku/
│ │ │ ├── bilibili_danmaku.dart
│ │ │ ├── douyin_danmaku.dart
│ │ │ ├── douyu_danmaku.dart
│ │ │ ├── huya_danmaku.dart
│ │ │ └── proto/
│ │ │ ├── douyin.pb.dart
│ │ │ ├── douyin.pbenum.dart
│ │ │ ├── douyin.pbjson.dart
│ │ │ └── douyin.proto
│ │ ├── douyin_site.dart
│ │ ├── douyu_site.dart
│ │ ├── huya_site.dart
│ │ ├── interface/
│ │ │ ├── live_danmaku.dart
│ │ │ └── live_site.dart
│ │ ├── model/
│ │ │ ├── live_anchor_item.dart
│ │ │ ├── live_category.dart
│ │ │ ├── live_category_result.dart
│ │ │ ├── live_message.dart
│ │ │ ├── live_play_quality.dart
│ │ │ ├── live_play_url.dart
│ │ │ ├── live_room_detail.dart
│ │ │ ├── live_room_item.dart
│ │ │ ├── live_search_result.dart
│ │ │ └── tars/
│ │ │ ├── get_cdn_token_ex_req.dart
│ │ │ ├── get_cdn_token_ex_resp.dart
│ │ │ ├── get_cdn_token_req.dart
│ │ │ ├── get_cdn_token_resp.dart
│ │ │ ├── huya_danmaku.dart
│ │ │ ├── huya_user_id.dart
│ │ │ └── tar2dart.dart
│ │ └── scripts/
│ │ ├── douyin_sign.dart
│ │ └── douyu_sign.dart
│ ├── packages/
│ │ └── tars_dart/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ └── tars/
│ │ │ ├── codec/
│ │ │ │ ├── tars_decode_exception.dart
│ │ │ │ ├── tars_deep_copyable.dart
│ │ │ │ ├── tars_displayer.dart
│ │ │ │ ├── tars_encode_exception.dart
│ │ │ │ ├── tars_input_stream.dart
│ │ │ │ ├── tars_output_stream.dart
│ │ │ │ └── tars_struct.dart
│ │ │ ├── net/
│ │ │ │ └── base_tars_http.dart
│ │ │ └── tup/
│ │ │ ├── basic_class_type_util.dart
│ │ │ ├── const.dart
│ │ │ ├── object_create_exception.dart
│ │ │ ├── request_packet.dart
│ │ │ ├── tars_uni_packet.dart
│ │ │ ├── tup_response.dart
│ │ │ ├── tup_result_exception.dart
│ │ │ ├── uni_attribute.dart
│ │ │ ├── uni_packet.dart
│ │ │ └── write_buffer.dart
│ │ └── pubspec.yaml
│ ├── pubspec.yaml
│ └── test/
│ └── simple_live_core_test.dart
└── simple_live_tv_app/
├── .fvmrc
├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle.kts
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── xycz/
│ │ │ │ └── simple_live_tv/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_banner.xml
│ │ │ ├── values/
│ │ │ │ ├── ic_banner_background.xml
│ │ │ │ └── styles.xml
│ │ │ ├── values-night/
│ │ │ │ └── styles.xml
│ │ │ └── xml/
│ │ │ └── network_security_config.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle.kts
├── assets/
│ ├── lotties/
│ │ ├── empty.json
│ │ ├── error.json
│ │ └── loadding.json
│ └── statement.txt
├── lib/
│ ├── app/
│ │ ├── app_error.dart
│ │ ├── app_focus_node.dart
│ │ ├── app_style.dart
│ │ ├── base_focus_model.dart
│ │ ├── constant.dart
│ │ ├── controller/
│ │ │ ├── app_settings_controller.dart
│ │ │ └── base_controller.dart
│ │ ├── event_bus.dart
│ │ ├── log.dart
│ │ ├── sites.dart
│ │ └── utils.dart
│ ├── main.dart
│ ├── models/
│ │ ├── account/
│ │ │ └── bilibili_user_info_page.dart
│ │ ├── db/
│ │ │ ├── follow_user.dart
│ │ │ ├── follow_user.g.dart
│ │ │ ├── history.dart
│ │ │ └── history.g.dart
│ │ ├── follow_user_item.dart
│ │ └── version_model.dart
│ ├── modules/
│ │ ├── account/
│ │ │ └── bilibili/
│ │ │ ├── qr_login_controller.dart
│ │ │ └── qr_login_page.dart
│ │ ├── agreement/
│ │ │ └── agreement_page.dart
│ │ ├── category/
│ │ │ ├── category_controller.dart
│ │ │ ├── category_page.dart
│ │ │ └── detail/
│ │ │ ├── category_detail_controller.dart
│ │ │ └── category_detail_page.dart
│ │ ├── follow_user/
│ │ │ └── follow_user_page.dart
│ │ ├── history/
│ │ │ ├── history_controller.dart
│ │ │ └── history_page.dart
│ │ ├── home/
│ │ │ ├── home_controller.dart
│ │ │ └── home_page.dart
│ │ ├── hot_live/
│ │ │ ├── hot_live_controller.dart
│ │ │ └── hot_live_page.dart
│ │ ├── live_room/
│ │ │ ├── live_room_controller.dart
│ │ │ ├── live_room_page.dart
│ │ │ └── player/
│ │ │ ├── player_controller.dart
│ │ │ └── player_controls.dart
│ │ ├── search/
│ │ │ ├── anchor/
│ │ │ │ ├── search_anchor_controller.dart
│ │ │ │ └── search_anchor_page.dart
│ │ │ └── room/
│ │ │ ├── search_room_controller.dart
│ │ │ └── search_room_page.dart
│ │ ├── settings/
│ │ │ ├── settings_controller.dart
│ │ │ └── settings_page.dart
│ │ └── sync/
│ │ ├── sync_controller.dart
│ │ └── sync_page.dart
│ ├── requests/
│ │ ├── common_request.dart
│ │ ├── custom_log_interceptor.dart
│ │ ├── http_client.dart
│ │ └── http_error.dart
│ ├── routes/
│ │ ├── app_navigation.dart
│ │ ├── app_pages.dart
│ │ └── route_path.dart
│ ├── services/
│ │ ├── bilibili_account_service.dart
│ │ ├── db_service.dart
│ │ ├── follow_user_service.dart
│ │ ├── local_storage_service.dart
│ │ ├── signalr_service.dart
│ │ └── sync_service.dart
│ └── widgets/
│ ├── app_scaffold.dart
│ ├── button/
│ │ ├── highlight_button.dart
│ │ ├── highlight_list_tile.dart
│ │ └── home_big_button.dart
│ ├── card/
│ │ ├── anchor_card.dart
│ │ └── live_room_card.dart
│ ├── highlight_widget.dart
│ ├── keep_alive_wrapper.dart
│ ├── net_image.dart
│ ├── page_grid_view.dart
│ ├── rectangular_indicator.dart
│ ├── settings_item_widget.dart
│ └── status/
│ ├── app_empty_widget.dart
│ ├── app_error_widget.dart
│ └── app_loadding_widget.dart
├── pubspec.yaml
├── test/
│ └── widget_test.dart
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: BUG报告
title: "[BUG] 请填写简短易读的标题"
description: "使用过程中遇到了BUG"
assignees: xiaoyaocz
labels:
- "bug"
body:
- type: checkboxes
id: terms
attributes:
label: 非重复的Issue
description: 先去Issues列表中查找下是否存在相似的Issue,如果有了就不要重复发了
options:
- label: 已确认没有相似的Issue
required: true
- type: textarea
id: description
validations:
required: true
attributes:
label: BUG内容
description: 请详细描述你遇到的问题
- type: textarea
id: steps
validations:
required: true
attributes:
label: 重现步骤
render: plain text
description: 请详细描述重现步骤
placeholder: |
1. xxxx
2. xxxx
3. xxxx
- type: textarea
id: screenshots
attributes:
label: 截图或视频
description: 请上传BUG截图、或视频
- type: textarea
id: logs
attributes:
label: 日志
description: 请上传日志文件
placeholder: |
可以在[其他设置]-[开启日志记录]后获取日志文件
- type: input
id: version
attributes:
label: 版本号
description: 请填写你使用的APP版本号
placeholder: ex. 1.0.1
validations:
required: true
- type: dropdown
id: release-type
validations:
required: true
attributes:
label: 使用版本
description: 使用的是什么版本,从哪里下载的
options:
- 正式版(Releases)
- 开发版(Actions)
default: 0
- type: dropdown
id: platform
validations:
required: true
attributes:
label: 运行平台
description: 选择你当前运行应用的平台
multiple: false
options:
- Windows
- macOS
- Linux
- Android
- iOS
- Android TV
- type: input
id: os-version
attributes:
label: 操作系统信息
description: 请填写你的操作系统信息版本
placeholder: ex. Windows 10 21H1 / MIUI 15 Android 12
validations:
required: true
- type: input
id: device
attributes:
label: 设备信息
description: 请填写你的设备信息
placeholder: ex. PC / iPhone 12 Pro Max
validations:
required: true
- type: textarea
id: remark
attributes:
label: 备注
description: 其他信息
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature.yml
================================================
name: 功能请求
title: "[Feature] 请填写简短易读的标题"
description: "请求开发新的功能/优化某项功能"
assignees: xiaoyaocz
labels:
- "enhancement"
body:
- type: markdown
attributes:
value: |
你的Issue大概率会搁置很久,除非是那种我能随手解决的。
暂时不会添加新的平台支持(因为我自己用不上)。如果你有开发能力,建议的自行开发后提交个PR。
- type: checkboxes
id: terms
attributes:
label: 非重复的Issue
description: 先去Issues列表中查找下是否存在相似的Issue,如果有了就不要重复发了
options:
- label: 已确认没有相似的Issue
required: true
- type: textarea
id: description
validations:
required: true
attributes:
label: 功能描述
description: 请填写功能描述,如果你有多个建议、请求,请分开提交Issue
- type: checkboxes
id: platform
attributes:
label: 平台
description: 这个功能针对什么平台
options:
- label: Android
- label: iOS
- label: MacOS
- label: Windows
- label: Linux
- label: Android TV
- type: textarea
id: additional
attributes:
label: 附加信息
description: 可以附加相关截图、视频或链接(好让我知道要我抄哪个APP)
================================================
FILE: .github/workflows/publish_app_dev.yaml
================================================
name: app-build-action-dev
on:
workflow_dispatch:
push:
tags:
- "dev_v*"
jobs:
# 打包Android、iOS、Mac
build-mac-ios-android:
runs-on: macos-latest
permissions:
contents: write
steps:
# 签出代码
- uses: actions/checkout@v4
with:
ref: dev
# APK签名设置
- name: Download Android keystore
id: android_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: keystore.jks
encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Create key.properties
run: |
echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > simple_live_app/android/key.properties
echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> simple_live_app/android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> simple_live_app/android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> simple_live_app/android/key.properties
# 设置JAVA环境
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: "gradle"
# 设置Flutter
- name: Flutter action
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
# 打开MAC Desktop支持
- name: Enable Flutter Desktop
run: flutter config --enable-macos-desktop
# 更新Flutter的packages
- name: Restore packages
run: |
cd simple_live_app
flutter pub get
# 安装appdmg npm install -g appdmg
- name: Install appdmg
run: npm install -g appdmg
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
# 打包APK
- name: Build APK
run: |
cd simple_live_app
flutter build apk --release --split-per-abi
#上传Artifacts
- name: Upload APK to Artifacts
uses: actions/upload-artifact@v4
with:
name: android
path: |
simple_live_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
#打包iOS
- name: Build IPA
run: |
cd simple_live_app
flutter build ios --release --no-codesign
#创建未签名ipa
- name: Create IPA
run: |
cd simple_live_app
mkdir build/ios/iphoneos/Payload
cp -R build/ios/iphoneos/Runner.app build/ios/iphoneos/Payload/Runner.app
cd build/ios/iphoneos/
zip -q -r ios_no_sign.ipa Payload
cd ../../..
# 上传IPA至Artifacts
- name: Upload IPA to Artifacts
uses: actions/upload-artifact@v4
with:
name: ios
path: |
simple_live_app/build/ios/iphoneos/ios_no_sign.ipa
# 打包MAC
- name: Build MacOS
run: |
cd simple_live_app
flutter_distributor package --platform macos --targets dmg,zip --skip-clean
# 上传MAC至Artifacts
- name: Upload MacOS to Artifacts
uses: actions/upload-artifact@v4
with:
name: mac
path: |
simple_live_app/build/dist/*/*.dmg
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 This job's status is ${{ job.status }}."
# 打包Linux
build-linux:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
# 签出代码
- uses: actions/checkout@v4
with:
ref: dev
# 设置Flutter环境
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
# 安装依赖
- name: Update apt-get
run: sudo apt-get update
- name: Install Dependencies
run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libasound2-dev libmpv-dev mpv
# 打开Linux Desktop支持
- name: Enable Flutter Desktop
run: flutter config --enable-linux-desktop
# 更新Flutter的packages
- name: Restore Packages
run: |
cd simple_live_app
flutter pub get
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
# build Linux ZIP\DMG
- name: Build Linux
run: |
cd simple_live_app
flutter_distributor package --platform linux --targets deb,zip --skip-clean
# 上传Linux包至Artifacts
- name: Upload Linux APP to Artifacts
uses: actions/upload-artifact@v4
with:
name: linux
path: |
simple_live_app/build/dist/*/*.deb
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 Linux job's status is ${{ job.status }}."
# 打包Windows
build-windows:
runs-on: windows-latest
permissions:
contents: write
steps:
# 签出代码
- uses: actions/checkout@v4
with:
ref: dev
# 设置Flutter环境
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
- name: Enable Flutter Desktop
run: flutter config --enable-windows-desktop
- name: Restore Packages
run: |
cd simple_live_app
flutter pub get
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
# build Windows ZIP\MSIX
- name: Build Windows
run: |
cd simple_live_app
flutter_distributor package --platform windows --targets msix,zip --skip-clean
# 上传Windows至Artifacts
- name: Upload Windows APP to Artifacts
uses: actions/upload-artifact@v4
with:
name: windows
path: |
simple_live_app/build/dist/*/*.msix
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 Windows job's status is ${{ job.status }}."
================================================
FILE: .github/workflows/publish_app_release.yml
================================================
name: app-build-action
#推送Tag时触发
on:
push:
tags:
- "v*"
jobs:
build-mac-ios-android:
runs-on: macos-latest
permissions:
contents: write
steps:
#签出代码
- uses: actions/checkout@v4
with:
ref: master
#APK签名设置
- name: Download Android keystore
id: android_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: keystore.jks
encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Create key.properties
run: |
echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > simple_live_app/android/key.properties
echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> simple_live_app/android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> simple_live_app/android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> simple_live_app/android/key.properties
#设置JAVA环境
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: "gradle"
#设置Flutter
- name: Flutter action
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
# 打开MAC Desktop支持
- name: Enable Flutter Desktop
run: flutter config --enable-macos-desktop
#更新Flutter的packages
- name: Restore packages
run: |
cd simple_live_app
flutter pub get
# 安装appdmg npm install -g appdmg
- name: Install appdmg
run: npm install -g appdmg
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
#打包APK
- name: Build APK
run: |
cd simple_live_app
flutter build apk --release --split-per-abi
#上传APK至Artifacts
- name: Upload APK to Artifacts
uses: actions/upload-artifact@v4
with:
name: android
path: |
simple_live_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
#打包iOS
- name: Build IPA
run: |
cd simple_live_app
flutter build ios --release --no-codesign
#创建未签名ipa
- name: Create IPA
run: |
cd simple_live_app
mkdir build/ios/iphoneos/Payload
cp -R build/ios/iphoneos/Runner.app build/ios/iphoneos/Payload/Runner.app
cd build/ios/iphoneos/
zip -q -r ios_no_sign.ipa Payload
cd ../../..
#上传IPA至Artifacts
- name: Upload IPA to Artifacts
uses: actions/upload-artifact@v4
with:
name: ios
path: |
simple_live_app/build/ios/iphoneos/ios_no_sign.ipa
# 打包MAC
- name: Build MacOS
run: |
cd simple_live_app
flutter_distributor package --platform macos --targets dmg,zip --skip-clean
# 上传MAC至Artifacts
- name: Upload MacOS to Artifacts
uses: actions/upload-artifact@v4
with:
name: mac
path: |
simple_live_app/build/dist/*/*.dmg
simple_live_app/build/dist/*/*.zip
#获取版本信息(自动从 Git Tag 提取)
- name: Get version from tag
id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Echo version
run: echo "${{ steps.version.outputs.VERSION }}"
#上传至Release
- name: Upload Release
uses: softprops/action-gh-release@v1
with:
name: "${{ steps.version.outputs.VERSION }}"
generate_release_notes: true
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
token: ${{ secrets.TOKEN }}
files: |
simple_live_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
simple_live_app/build/ios/iphoneos/ios_no_sign.ipa
simple_live_app/build/dist/*/*.dmg
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 This job's status is ${{ job.status }}."
# 打包Linux
build-linux:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
# 签出代码
- uses: actions/checkout@v4
with:
ref: master
# 设置Flutter环境
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
# 安装依赖
- name: Update apt-get
run: sudo apt-get update
- name: Install Dependencies
run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libasound2-dev libmpv-dev mpv
# 打开Linux Desktop支持
- name: Enable Flutter Desktop
run: flutter config --enable-linux-desktop
# 更新Flutter的packages
- name: Restore Packages
run: |
cd simple_live_app
flutter pub get
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
# build Linux ZIP\DMG
- name: Build Linux
run: |
cd simple_live_app
flutter_distributor package --platform linux --targets deb,zip --skip-clean
# 上传Linux包至Artifacts
- name: Upload Linux APP to Artifacts
uses: actions/upload-artifact@v4
with:
name: linux
path: |
simple_live_app/build/dist/*/*.deb
simple_live_app/build/dist/*/*.zip
#获取版本信息(自动从 Git Tag 提取)
- name: Get version from tag
id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Echo version
run: echo "${{ steps.version.outputs.VERSION }}"
#上传至Release
- name: Upload Release
uses: softprops/action-gh-release@v1
with:
name: "${{ steps.version.outputs.VERSION }}"
generate_release_notes: true
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
token: ${{ secrets.TOKEN }}
files: |
simple_live_app/build/dist/*/*.deb
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 Linux job's status is ${{ job.status }}."
# 打包Windows
build-windows:
runs-on: windows-latest
permissions:
contents: write
steps:
# 签出代码
- uses: actions/checkout@v4
with:
ref: master
# 设置Flutter环境
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
- name: Enable Flutter Desktop
run: flutter config --enable-windows-desktop
- name: Restore Packages
run: |
cd simple_live_app
flutter pub get
# 设置flutter_distributor环境
- name: Install flutter_distributor
run: dart pub global activate flutter_distributor
# build Windows ZIP\MSIX
- name: Build Windows
run: |
cd simple_live_app
flutter_distributor package --platform windows --targets msix,zip --skip-clean
# 上传Windows至Artifacts
- name: Upload Windows APP to Artifacts
uses: actions/upload-artifact@v4
with:
name: windows
path: |
simple_live_app/build/dist/*/*.msix
simple_live_app/build/dist/*/*.zip
#获取版本信息(自动从 Git Tag 提取)
- name: Get version from tag
id: version
shell: bash
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Echo version
run: echo "${{ steps.version.outputs.VERSION }}"
#上传至Release
- name: Upload Release
uses: softprops/action-gh-release@v1
with:
name: "${{ steps.version.outputs.VERSION }}"
generate_release_notes: true
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
token: ${{ secrets.TOKEN }}
files: |
simple_live_app/build/dist/*/*.msix
simple_live_app/build/dist/*/*.zip
#完成
- run: echo "🍏 Windows job's status is ${{ job.status }}."
================================================
FILE: .github/workflows/publish_tv_app_dev.yaml
================================================
name: app-build-action
#推送Tag时触发
on:
push:
tags:
- "dev_tv_v*"
jobs:
build-tv:
runs-on: macos-latest
permissions:
contents: write
steps:
#签出代码
- uses: actions/checkout@v4
with:
ref: dev
#APK签名设置
- name: Download Android keystore
id: android_tv_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: keystore.jks
encodedString: ${{ secrets.TV_KEYSTORE_BASE64 }}
- name: Create key.properties
run: |
echo "storeFile=${{ steps.android_tv_keystore.outputs.filePath }}" > simple_live_tv_app/android/key.properties
echo "storePassword=${{ secrets.TV_STORE_PASSWORD }}" >> simple_live_tv_app/android/key.properties
echo "keyPassword=${{ secrets.TV_KEY_PASSWORD }}" >> simple_live_tv_app/android/key.properties
echo "keyAlias=${{ secrets.TV_KEY_ALIAS }}" >> simple_live_tv_app/android/key.properties
# 设置JAVA环境
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: "gradle"
#设置Flutter
- name: Flutter action
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
#更新Flutter的packages
- name: Restore packages
run: |
cd simple_live_tv_app
flutter pub get
#打包APK
- name: Build APK
run: |
cd simple_live_tv_app
flutter build apk --release --split-per-abi
#上传APK至Artifacts
- name: Upload APK to Artifacts
uses: actions/upload-artifact@v4
with:
name: android_tv
path: |
simple_live_tv_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
#完成
- run: echo "🍏 This job's status is ${{ job.status }}."
================================================
FILE: .github/workflows/publish_tv_app_release.yaml
================================================
name: app-build-action
#推送Tag时触发
on:
push:
tags:
- "tv_*"
jobs:
build-tv:
runs-on: macos-latest
permissions:
contents: write
steps:
#签出代码
- uses: actions/checkout@v4
with:
ref: master
#APK签名设置
- name: Download Android keystore
id: android_tv_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: keystore.jks
encodedString: ${{ secrets.TV_KEYSTORE_BASE64 }}
- name: Create key.properties
run: |
echo "storeFile=${{ steps.android_tv_keystore.outputs.filePath }}" > simple_live_tv_app/android/key.properties
echo "storePassword=${{ secrets.TV_STORE_PASSWORD }}" >> simple_live_tv_app/android/key.properties
echo "keyPassword=${{ secrets.TV_KEY_PASSWORD }}" >> simple_live_tv_app/android/key.properties
echo "keyAlias=${{ secrets.TV_KEY_ALIAS }}" >> simple_live_tv_app/android/key.properties
# 设置JAVA环境
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: "gradle"
#设置Flutter
- name: Flutter action
uses: subosito/flutter-action@v2
with:
flutter-version: "3.38.x"
cache: true
#更新Flutter的packages
- name: Restore packages
run: |
cd simple_live_tv_app
flutter pub get
#打包APK
- name: Build APK
run: |
cd simple_live_tv_app
flutter build apk --release --split-per-abi
#上传APK至Artifacts
- name: Upload APK to Artifacts
uses: actions/upload-artifact@v4
with:
name: android_tv
path: |
simple_live_tv_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
#读取版本信息
- name: Read version
id: version
uses: juliangruber/read-file-action@v1
with:
path: assets/tv_app_version.json
- name: Echo version
run: echo "${{ fromJson(steps.version.outputs.content).version }}"
- name: Echo version content
run: echo "${{ fromJson(steps.version.outputs.content).version_desc }}"
#上传至Release
- name: Upload Release
uses: softprops/action-gh-release@v1
with:
name: "${{ fromJson(steps.version.outputs.content).version }}"
body: "# Android TV \n${{ fromJson(steps.version.outputs.content).version_desc }}"
prerelease: ${{ fromJson(steps.version.outputs.content).prerelease }}
token: ${{ secrets.TOKEN }}
files: |
simple_live_tv_app/build/app/outputs/flutter-apk/app-x86_64-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
simple_live_tv_app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
#完成
- run: echo "🍏 This job's status is ${{ job.status }}."
================================================
FILE: .gitignore
================================================
simple_live_app/.vscode/settings.json
simple_live_tv_app/.vscode/settings.json
# macOS Spotlight Search index file
*.DS_Store
================================================
FILE: .vscode/settings.json
================================================
{
"cmake.ignoreCMakeListsMissing": true
}
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 2023-2025 xiaoyaocz
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Simple Live Copyright (C) 2023-2025 xiaoyaocz
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
> ### ⚠ 本项目不提供Release安装包,请自行编译后运行测试。
<p align="center">
<img width="128" src="/assets/logo.png" alt="Simple Live logo">
</p>
<h2 align="center">Simple Live</h2>
<p align="center">
简简单单的看直播
</p>


## 支持直播平台:
- 虎牙直播
- 斗鱼直播
- 哔哩哔哩直播
- 抖音直播
## APP支持平台
- [x] Android
- [x] iOS
- [x] Windows `BETA`
- [x] MacOS `BETA`
- [x] Linux `BETA`
- [x] Android TV `BETA`
## 项目结构
- `simple_live_core` 项目核心库,实现获取各个网站的信息及弹幕。
- `simple_live_console` 基于simple_live_core的控制台程序。
- `simple_live_app` 基于核心库实现的Flutter APP客户端。
- `simple_live_tv_app` 基于核心库实现的Flutter Android TV客户端。
## 环境
Flutter : `3.38`
## 参考及引用
[AllLive](https://github.com/xiaoyaocz/AllLive) `本项目的C#版,有兴趣可以看看`
[dart_tars_protocol](https://github.com/xiaoyaocz/dart_tars_protocol.git)
[wbt5/real-url](https://github.com/wbt5/real-url)
[lovelyyoshino/Bilibili-Live-API](https://github.com/lovelyyoshino/Bilibili-Live-API/blob/master/API.WebSocket.md)
[IsoaSFlus/danmaku](https://github.com/IsoaSFlus/danmaku)
[BacooTang/huya-danmu](https://github.com/BacooTang/huya-danmu)
[TarsCloud/Tars](https://github.com/TarsCloud/Tars)
[YunzhiYike/douyin-live](https://github.com/YunzhiYike/douyin-live)
[5ime/Tiktok_Signature](https://github.com/5ime/Tiktok_Signature)
## 声明
本项目的所有功能都是基于互联网上公开的资料开发,无任何破解、逆向工程等行为。
本项目仅用于学习交流编程技术,严禁将本项目用于商业目的。如有任何商业行为,均与本项目无关。
如果本项目存在侵犯您的合法权益的情况,请及时与开发者联系,开发者将会及时删除有关内容。
## Star History
<a href="https://www.star-history.com/#xiaoyaocz/dart_simple_live&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=xiaoyaocz/dart_simple_live&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=xiaoyaocz/dart_simple_live&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=xiaoyaocz/dart_simple_live&type=Date" />
</picture>
</a>
================================================
FILE: assets/app_version.json
================================================
{
"version": "1.11.1",
"version_num": 11101,
"version_desc": "- 版本更新",
"prerelease": false,
"download_url": "https://github.com/xiaoyaocz/dart_simple_live/releases"
}
================================================
FILE: assets/play_config.json
================================================
{
"huya": {
"user_agent": "HYSDK(Windows, 30000002)_APP(pc_exe&6080100&official)_SDK(trans&2.23.0.4969)"
}
}
================================================
FILE: assets/tv_app_version.json
================================================
{
"version": "1.3.5",
"version_num": 10305,
"version_desc": "- 修复虎牙播放中断 #723 @SlotSun\n- 修复哔哩哔哩加载失败",
"prerelease":true,
"download_url": "https://github.com/xiaoyaocz/dart_simple_live/releases"
}
================================================
FILE: simple_live_app/.fvmrc
================================================
{
"flutter": "3.38.3"
}
================================================
FILE: simple_live_app/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
/ios/Podfile.lock
pubspec.lock
.fvm/
/android/app/.cxx
================================================
FILE: simple_live_app/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "19074d12f7eaf6a8180cd4036a430c1d76de904e"
channel: "stable"
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 19074d12f7eaf6a8180cd4036a430c1d76de904e
base_revision: 19074d12f7eaf6a8180cd4036a430c1d76de904e
- platform: linux
create_revision: 19074d12f7eaf6a8180cd4036a430c1d76de904e
base_revision: 19074d12f7eaf6a8180cd4036a430c1d76de904e
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
================================================
FILE: simple_live_app/README.md
================================================
# simple_live_app
基于核心库实现的Flutter APP客户端。
## TODO
- [ ] 支持桌面平台
- [ ] iOS播放问题
- [ ] 全屏、非全屏弹幕样式分离
- [ ] 重写直播间
================================================
FILE: simple_live_app/analysis_options.yaml
================================================
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
================================================
FILE: simple_live_app/android/.gitignore
================================================
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
.cxx/
# Remember to never publicly share your keystore.
# See https://flutter.dev/to/reference-keystore
key.properties
**/*.keystore
**/*.jks
================================================
FILE: simple_live_app/android/app/build.gradle.kts
================================================
import java.util.Properties
import java.io.FileInputStream
plugins {
id("com.android.application")
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
namespace = "com.xycz.simple_live"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.xycz.simple_live"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
create("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = keystoreProperties["storeFile"]?.let { file(it) }
storePassword = keystoreProperties["storePassword"] as String
isV1SigningEnabled = true
isV2SigningEnabled = true
}
}
buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
// Default file with automatically generated optimization rules.
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
flutter {
source = "../.."
}
================================================
FILE: simple_live_app/android/app/proguard-rules.pro
================================================
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class de.prosiebensat1digital.** { *; }
-dontwarn io.flutter.embedding.**
-ignorewarnings
================================================
FILE: simple_live_app/android/app/src/debug/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
================================================
FILE: simple_live_app/android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xycz.simple_live">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<application
android:label="Simple Live"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity"
android:supportsPictureInPicture="true"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
================================================
FILE: simple_live_app/android/app/src/main/kotlin/com/xycz/simple_live/MainActivity.kt
================================================
package com.xycz.simple_live
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()
================================================
FILE: simple_live_app/android/app/src/main/res/drawable/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: simple_live_app/android/app/src/main/res/drawable-v21/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: simple_live_app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
================================================
FILE: simple_live_app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
================================================
FILE: simple_live_app/android/app/src/main/res/values/ic_launcher_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>
================================================
FILE: simple_live_app/android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
</resources>
================================================
FILE: simple_live_app/android/app/src/main/res/values-night/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
</resources>
================================================
FILE: simple_live_app/android/app/src/main/res/xml/network_security_config.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
================================================
FILE: simple_live_app/android/app/src/profile/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
================================================
FILE: simple_live_app/android/build/reports/problems/problems-report.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<style type="text/css">
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
html {
line-height: 1.15;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%
}
body {
margin: 0
}
article, aside, footer, header, nav, section {
display: block
}
h1 {
font-size: 2em;
margin: .67em 0
}
figcaption, figure, main {
display: block
}
figure {
margin: 1em 40px
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible
}
pre {
font-family: monospace, monospace;
font-size: 1em
}
a {
background-color: transparent;
-webkit-text-decoration-skip: objects
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted
}
b, strong {
font-weight: inherit
}
b, strong {
font-weight: bolder
}
code, kbd, samp {
font-family: monospace, monospace;
font-size: 1em
}
dfn {
font-style: italic
}
mark {
background-color: #ff0;
color: #000
}
small {
font-size: 80%
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
}
sub {
bottom: -.25em
}
sup {
top: -.5em
}
audio, video {
display: inline-block
}
audio:not([controls]) {
display: none;
height: 0
}
img {
border-style: none
}
svg:not(:root) {
overflow: hidden
}
button, input, optgroup, select, textarea {
font-family: sans-serif;
font-size: 100%;
line-height: 1.15;
margin: 0
}
button, input {
overflow: visible
}
button, select {
text-transform: none
}
[type=reset], [type=submit], button, html [type=button] {
-webkit-appearance: button
}
[type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
border-style: none;
padding: 0
}
[type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring, button:-moz-focusring {
outline: 1px dotted ButtonText
}
fieldset {
padding: .35em .75em .625em
}
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal
}
progress {
display: inline-block;
vertical-align: baseline
}
textarea {
overflow: auto
}
[type=checkbox], [type=radio] {
box-sizing: border-box;
padding: 0
}
[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
height: auto
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
details, menu {
display: block
}
summary {
display: list-item
}
canvas {
display: inline-block
}
template {
display: none
}
[hidden] {
display: none
}
/* configuration cache styles */
.report-wrapper {
margin: 0;
padding: 0 24px;
}
.gradle-logo {
width: 32px;
height: 24px;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAGAAAAAA915G0AAAD5klEQVRIDbVWC0xTZxT+emmhVUEeA1/ROh/tFAFFGK7oJisIKsNVoOwBbJPowEWHzikRxeiMRpwwjDWRBHQLIzOmiRhe22BT40TitiyaMBQFfMEeLMIEaSmk+/+rvd7be4no6Elu7n++c/5zzv845/wyOyG4iGyDgzCdNOPLM9W41n4bnmNUiHo5DNsz0hGsmcV6lbkyAOOWXJjrz4qWp1C4o3z/LqzWL4VcJB1FIHmZHn/f78a6pDcxbeIEfNvQiPwTZbDZBpC24zOEaGfDpTsgtZby6u+QlrubFWUY3nh6AH39/ahr/Bn1jZfxW3ML2js60dtvgbtcQVblj8CZM7A0PBSrol6Ft+c4KZ8iTB1nwN0//8IEP9/hA2i924Gir0/iq8oa/NvbJzLiDKiUSqTE6pGVbEBY4BxnsYAPSnwXTa3tLCZ5BF3dPdAkGNHzoFcwcaRMnC4CeZkZiAgKFE252nITC1Pew9Dj5GNEGgS4Rbb5eZ1Te7UXG6FLX4cV6zeh5kIDaDpSunL9Boyf5nLOpwT4Sx+BxWrFK8QAnTAapPRQwofcj86uLoG59cbVEOzA0NAQNh38Atn5RSjY8rFAmc/I3dyQvOx1PsSNVy7Roa3ajHDePbBYLSLn1MaGd5KFAXy07xAOl59C6elK+I73hIHcbGd6wXs8qkyH8FZcjLOI5X/9/TrOnLsAldJDUu4As1NToFFPe3IEpm/M2HigwCFnU6t4Zw6Ck1JhGRhgcXq5juXloKyqFnlHirmz5CaNcEAv59kSE9wVikcB3O78A/MSU0Fznk/H9+yAetJEnPr+B8RFLsLcGS8ia28+qQuX+WrPNNZOV+Nc6VH4+3iz89g0pEaLzRUiQ3LGDWsM8Qidq2WL0PGKKlgf74ZIeQTAfFJ6a44WIsDXh9OW/dPdY58aawC9KK6kpOgolO7JxViVSuBGXnvxksudZ5F0O5yzGYxMJnBOGaau4fnPU2RNAtCFBKFoa7akczaAptY2iWmjB33+yQa4kZwfjpi2ex3Dyf43vuAljWQ/4Btmei1WPj+q45hF4U+1J4fEizCEvNf0EWHoIW244sfzoN1RipaT2kDfdjfv3MNpojdISjmfIheE8Fnp8WR9vJ2Zr+O+bYUmO+kJ9KnIUtf9bnvY2x9wcqrrvnCJvfL8Tw4V9v9LU7PdKzJaoNdy645AR4ph1JMncZHRKrVvYyYY5kmP8iO1v2T3dk6HDtYmrgJtOnwKnaPFrg8z+BBX7QSgEyOPJfX9Qd9DFs40GgTOHbrBs2ch4bXFuEG2mmFkeD9hpUMk+NMXEe0TNtsg/Ly94DVurEAuxfwHC1WiVbe0U7MAAAAASUVORK5CYII=");
background-size: contain;
}
.header {
display: flex;
flex-wrap: wrap;
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 24px 24px 0 24px;
background-color: white;
z-index: 1;
}
.learn-more {
margin-left: auto;
align-self: center;
font-size: 0.875rem;
font-weight: normal;
}
.title {
display: flex;
align-items: center;
padding: 18px 0 24px 0;
flex: 1 0 100%;
}
.content {
font-size: 0.875rem;
padding: 240px 0 48px;
overflow-x: auto;
white-space: nowrap;
}
.content ol:first-of-type {
margin: 0;
}
.tree-btn {
cursor: pointer;
display: inline-block;
width: 16px;
height: 16px;
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-top: -0.2em;
}
.tree-btn.collapsed {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 512"><path d="M166.9 264.5l-117.8 116c-4.7 4.7-12.3 4.7-17 0l-7.1-7.1c-4.7-4.7-4.7-12.3 0-17L127.3 256 25.1 155.6c-4.7-4.7-4.7-12.3 0-17l7.1-7.1c4.7-4.7 12.3-4.7 17 0l117.8 116c4.6 4.7 4.6 12.3-.1 17z" fill="%23999999" stroke="%23999999"/></svg>');
}
.tree-btn.expanded {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path d="M119.5 326.9L3.5 209.1c-4.7-4.7-4.7-12.3 0-17l7.1-7.1c4.7-4.7 12.3-4.7 17 0L128 287.3l100.4-102.2c4.7-4.7 12.3-4.7 17 0l7.1 7.1c4.7 4.7 4.7 12.3 0 17L136.5 327c-4.7 4.6-12.3 4.6-17-.1z" fill="%23999999" stroke="%23999999"/></svg>');
}
ul .tree-btn {
margin-right: 3px;
}
.leaf-icon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path d="M32 256 H224" stroke="%23999999" stroke-width="48" stroke-linecap="round"/></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-top: -0.2em;
}
.invisible-text {
user-select: all; /* Allow the text to be selectable */
color: transparent; /* Hide the text */
text-indent: -9999px; /* Move the text out of view */
position: relative;
white-space: pre; /* Preserve meaningful whitespace in the invisible text for copying */
}
.text-for-copy {
display: inline-block;
}
.enum-icon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="200" /></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.5ex;
margin-inline-end: 0.5ex;
margin-top: -0.2em;
}
.error-icon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M193.94 256L296.5 153.44l21.15-21.15c3.12-3.12 3.12-8.19 0-11.31l-22.63-22.63c-3.12-3.12-8.19-3.12-11.31 0L160 222.06 36.29 98.34c-3.12-3.12-8.19-3.12-11.31 0L2.34 120.97c-3.12 3.12-3.12 8.19 0 11.31L126.06 256 2.34 379.71c-3.12 3.12-3.12 8.19 0 11.31l22.63 22.63c3.12 3.12 8.19 3.12 11.31 0L160 289.94 262.56 392.5l21.15 21.15c3.12 3.12 8.19 3.12 11.31 0l22.63-22.63c3.12-3.12 3.12-8.19 0-11.31L193.94 256z" fill="%23FC461E" stroke="%23FC461E"/></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.5ex;
margin-inline-end: 0.5ex;
margin-top: -0.2em;
}
.advice-icon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url('data:image/svg+xml;utf8,<svg width="800px" height="800px" viewBox="-4.93 0 122.88 122.88" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="enable-background:new 0 0 113.01 122.88" xml:space="preserve"><g><path d="M44.13,102.06c-1.14,0.03-2.14-0.81-2.3-1.96c-0.17-1.2,0.64-2.31,1.82-2.54c-1.3-7.37-4.85-11.43-8.6-15.72 c-2.92-3.34-5.95-6.81-8.34-11.92c-2.35-5.03-3.64-10.23-3.6-15.63c0.05-5.4,1.42-10.96,4.4-16.71c0.02-0.04,0.04-0.07,0.06-0.11 l0,0c3.91-6.62,9.38-11.04,15.47-13.52c5.11-2.09,10.66-2.8,16.1-2.3c5.42,0.5,10.73,2.2,15.37,4.94 c5.9,3.49,10.75,8.67,13.42,15.21c1.44,3.54,2.42,7.49,2.54,11.82c0.12,4.31-0.62,8.96-2.61,13.88 c-2.66,6.59-6.18,10.68-9.47,14.51c-3.03,3.53-5.85,6.81-7.42,11.84c0.89,0.21,1.59,0.94,1.73,1.9c0.17,1.24-0.7,2.39-1.94,2.56 l-0.77,0.11c-0.14,1.09-0.23,2.26-0.27,3.51l0.25-0.04c1.24-0.17,2.39,0.7,2.56,1.94c0.17,1.24-0.7,2.39-1.94,2.56l-0.78,0.11 c0.01,0.15,0.02,0.3,0.03,0.45l0,0c0.07,0.88,0.08,1.73,0.03,2.54l0.13-0.02c1.25-0.15,2.38,0.74,2.54,1.98 c0.15,1.25-0.74,2.38-1.98,2.54l-1.68,0.21c-1.2,3.11-3.34,5.48-5.87,6.94c-1.74,1.01-3.67,1.59-5.61,1.71 c-1.97,0.12-3.96-0.25-5.78-1.13c-2.08-1.02-3.94-2.71-5.29-5.14c-0.65-0.33-1.13-0.97-1.23-1.75c-0.04-0.31-0.01-0.61,0.07-0.89 c-0.39-1.16-0.68-2.43-0.87-3.83l-0.07,0.01c-1.24,0.17-2.39-0.7-2.56-1.94c-0.17-1.24,0.7-2.39,1.94-2.56l0.54-0.08 C44.19,104.32,44.18,103.16,44.13,102.06L44.13,102.06z M2.18,58.86C1.01,58.89,0.04,57.98,0,56.81c-0.04-1.17,0.88-2.14,2.05-2.18 l8.7-0.3c1.17-0.04,2.14,0.88,2.18,2.05c0.04,1.17-0.88,2.14-2.05,2.18L2.18,58.86L2.18,58.86z M110.68,50.25 c1.16-0.12,2.2,0.73,2.32,1.89c0.12,1.16-0.73,2.2-1.89,2.32l-8.66,0.91c-1.16,0.12-2.2-0.73-2.32-1.89 c-0.12-1.16,0.73-2.2,1.89-2.32L110.68,50.25L110.68,50.25z M94.91,14.78c0.65-0.97,1.96-1.23,2.93-0.58 c0.97,0.65,1.23,1.96,0.58,2.93l-4.84,7.24c-0.65,0.97-1.96,1.23-2.93,0.58c-0.97-0.65-1.23-1.96-0.58-2.93L94.91,14.78 L94.91,14.78z M57.63,2.06c0.03-1.17,1-2.09,2.16-2.06c1.17,0.03,2.09,1,2.06,2.16l-0.22,8.7c-0.03,1.17-1,2.09-2.16,2.06 c-1.17-0.03-2.09-1-2.06-2.16L57.63,2.06L57.63,2.06z M13.88,15.53c-0.86-0.8-0.9-2.14-0.11-2.99c0.8-0.86,2.14-0.9,2.99-0.11 l6.37,5.94c0.86,0.8,0.9,2.14,0.11,2.99c-0.8,0.86-2.14,0.9-2.99,0.11L13.88,15.53L13.88,15.53z M47.88,96.95l18.49-2.63 c1.59-6.7,5.05-10.73,8.8-15.08c3.08-3.58,6.36-7.4,8.76-13.34c1.76-4.35,2.41-8.43,2.31-12.19c-0.1-3.75-0.96-7.21-2.24-10.34 c-2.3-5.63-6.51-10.11-11.65-13.15c-4.11-2.43-8.8-3.94-13.59-4.37c-4.77-0.44-9.64,0.19-14.13,2.02 c-5.26,2.15-9.99,5.97-13.39,11.72c-2.64,5.12-3.86,10.02-3.9,14.73c-0.04,4.74,1.11,9.33,3.2,13.8c2.13,4.56,4.97,7.8,7.69,10.92 C42.47,83.9,46.48,88.49,47.88,96.95L47.88,96.95z M65.62,99.02l-17.27,2.45c0.05,1.1,0.07,2.25,0.05,3.47l17.05-2.42 C65.47,101.29,65.52,100.12,65.62,99.02L65.62,99.02z M48.49,109.52c0.12,0.92,0.3,1.76,0.53,2.54l16.55-2.04 c0.11-0.86,0.13-1.77,0.05-2.74l0,0l0-0.02l-0.01-0.17L48.49,109.52L48.49,109.52z M51.37,116.36c0.64,0.67,1.35,1.19,2.1,1.55 c1.15,0.56,2.42,0.79,3.67,0.72c1.29-0.08,2.57-0.47,3.74-1.15c1.1-0.64,2.09-1.53,2.88-2.65L51.37,116.36L51.37,116.36z"/></g></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.5ex;
margin-inline-end: 0.5ex;
margin-top: -0.2em;
}
.warning-icon {
display: inline-block;
width: 13px;
height: 13px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M270.2 160h35.5c3.4 0 6.1 2.8 6 6.2l-7.5 196c-.1 3.2-2.8 5.8-6 5.8h-20.5c-3.2 0-5.9-2.5-6-5.8l-7.5-196c-.1-3.4 2.6-6.2 6-6.2zM288 388c-15.5 0-28 12.5-28 28s12.5 28 28 28 28-12.5 28-28-12.5-28-28-28zm281.5 52L329.6 24c-18.4-32-64.7-32-83.2 0L6.5 440c-18.4 31.9 4.6 72 41.6 72H528c36.8 0 60-40 41.5-72zM528 480H48c-12.3 0-20-13.3-13.9-24l240-416c6.1-10.6 21.6-10.7 27.7 0l240 416c6.2 10.6-1.5 24-13.8 24z" fill="%23DEAD22" stroke="%23DEAD22"/></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.3ex;
margin-inline-end: 1.1ex;
margin-top: -0.1em;
}
.documentation-button {
cursor: pointer;
display: inline-block;
width: 13px;
height: 13px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 340c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28zm7.67-24h-16c-6.627 0-12-5.373-12-12v-.381c0-70.343 77.44-63.619 77.44-107.408 0-20.016-17.761-40.211-57.44-40.211-29.144 0-44.265 9.649-59.211 28.692-3.908 4.98-11.054 5.995-16.248 2.376l-13.134-9.15c-5.625-3.919-6.86-11.771-2.645-17.177C185.658 133.514 210.842 116 255.67 116c52.32 0 97.44 29.751 97.44 80.211 0 67.414-77.44 63.849-77.44 107.408V304c0 6.627-5.373 12-12 12zM256 40c118.621 0 216 96.075 216 216 0 119.291-96.61 216-216 216-119.244 0-216-96.562-216-216 0-119.203 96.602-216 216-216m0-32C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8z" fill="%23999999" stroke="%23999999"/></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.5ex;
margin-inline-end: 0.5ex;
margin-top: -0.2em;
}
.documentation-button::selection {
color: transparent;
}
.documentation-button:hover {
color: transparent;
}
.copy-button {
cursor: pointer;
display: inline-block;
width: 12px;
height: 12px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M433.941 193.941l-51.882-51.882A48 48 0 0 0 348.118 128H320V80c0-26.51-21.49-48-48-48h-66.752C198.643 13.377 180.858 0 160 0s-38.643 13.377-45.248 32H48C21.49 32 0 53.49 0 80v288c0 26.51 21.49 48 48 48h80v48c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V227.882a48 48 0 0 0-14.059-33.941zm-22.627 22.627a15.888 15.888 0 0 1 4.195 7.432H352v-63.509a15.88 15.88 0 0 1 7.431 4.195l51.883 51.882zM160 30c9.941 0 18 8.059 18 18s-8.059 18-18 18-18-8.059-18-18 8.059-18 18-18zM48 384c-8.822 0-16-7.178-16-16V80c0-8.822 7.178-16 16-16h66.752c6.605 18.623 24.389 32 45.248 32s38.643-13.377 45.248-32H272c8.822 0 16 7.178 16 16v48H176c-26.51 0-48 21.49-48 48v208H48zm352 96H176c-8.822 0-16-7.178-16-16V176c0-8.822 7.178-16 16-16h144v72c0 13.2 10.8 24 24 24h72v208c0 8.822-7.178 16-16 16z" fill="%23999999" stroke="%23999999"/></svg>');
background-size: contain;
background-repeat: no-repeat;
vertical-align: middle;
margin-inline-start: 0.5ex;
margin-top: -0.2em;
}
.groups{
display: flex;
border-bottom: 1px solid #EDEEEF;
flex: 1 0 100%;
}
.uncategorized {
display: flex;
border-top: 4px solid #EDEEEF;
flex: 1 0 100%;
}
.group-selector {
padding: 0 52px 24px 0;
font-size: 0.9rem;
font-weight: bold;
color: #999999;
cursor: pointer;
}
.group-selector__count {
margin: 0 8px;
border-radius: 8px;
background-color: #999;
color: #fff;
padding: 1px 8px 2px;
font-size: 0.75rem;
}
.group-selector--active {
color: #02303A;
cursor: auto;
}
.group-selector--active .group-selector__count {
background-color: #686868;
}
.group-selector--disabled {
cursor: not-allowed;
}
.accordion-header {
cursor: pointer;
}
.container {
padding-left: 0.5em;
padding-right: 0.5em;
}
.stacktrace {
border-radius: 4px;
overflow-x: auto;
padding: 0.5rem;
margin-bottom: 0;
min-width: 1000px;
}
/* Lato (bold, regular) */
@font-face {
font-display: swap;
font-family: Lato;
font-weight: 500;
font-style: normal;
src: url("https://assets.gradle.com/lato/fonts/lato-semibold/lato-semibold.woff2") format("woff2"),
url("https://assets.gradle.com/lato/fonts/lato-semibold/lato-semibold.woff") format("woff");
}
@font-face {
font-display: swap;
font-family: Lato;
font-weight: bold;
font-style: normal;
src: url("https://assets.gradle.com/lato/fonts/lato-bold/lato-bold.woff2") format("woff2"),
url("https://assets.gradle.com/lato/fonts/lato-bold/lato-bold.woff") format("woff");
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
}
html {
font-family: "Lato", "Helvetica Neue", Arial, sans-serif;
font-size: 16px;
font-weight: 400;
line-height: 1.5;
}
body {
color: #02303A;
background-color: #ffffff;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
}
/* typography */
h1, h2, h3, h4, h5, h6 {
color: #02303A;
text-rendering: optimizeLegibility;
margin: 0;
}
h1 {
font-size: 1rem;
}
h2 {
font-size: 0.9rem;
}
h3 {
font-size: 1.125rem;
}
h4, h5, h6 {
font-size: 0.875rem;
}
h1 code {
font-weight: bold;
}
ul, ol, dl {
list-style-position: outside;
line-height: 1.6;
padding: 0;
margin: 0 0 0 20px;
list-style-type: none;
}
li {
line-height: 2;
}
a {
color: #1DA2BD;
text-decoration: none;
transition: all 0.3s ease, visibility 0s;
}
a:hover {
color: #35c1e4;
}
/* code */
code, pre {
font-family: Inconsolata, Monaco, "Courier New", monospace;
font-style: normal;
font-variant-ligatures: normal;
font-variant-caps: normal;
font-variant-numeric: normal;
font-variant-east-asian: normal;
font-weight: normal;
font-stretch: normal;
color: #686868;
}
*:not(pre) > code {
letter-spacing: 0;
padding: 0.1em 0.5ex;
text-rendering: optimizeSpeed;
word-spacing: -0.15em;
word-wrap: break-word;
}
pre {
font-size: 0.75rem;
line-height: 1.8;
margin-top: 0;
margin-bottom: 1.5em;
padding: 1rem;
}
pre code {
background-color: transparent;
color: inherit;
line-height: 1.8;
font-size: 100%;
padding: 0;
}
a code {
color: #1BA8CB;
}
pre.code, pre.programlisting, pre.screen, pre.tt {
background-color: #f7f7f8;
border-radius: 4px;
font-size: 1em;
line-height: 1.45;
margin-bottom: 1.25em;
overflow-x: auto;
padding: 1rem;
}
li em, p em {
padding: 0 1px;
}
code em, tt em {
text-decoration: none;
}
code + .copy-button {
margin-inline-start: 0.2ex;
}
.java-exception {
font-size: 0.75rem;
padding-left: 24px;
}
.java-exception ul {
margin: 0;
line-height: inherit;
}
.java-exception code {
white-space: pre;
}
.java-exception-part-toggle {
user-select: none;
cursor: pointer;
border-radius: 2px;
padding: 0.1em 0.2em;
background: azure;
color: #686868;
}
</style>
<!-- Inconsolata is used as a default monospace font in the report. -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inconsolata:400,700" />
<title>Gradle Configuration Cache</title>
</head>
<body>
<div id="playground"></div>
<div class="report" id="report">
Loading...
</div>
<script type="text/javascript">
function configurationCacheProblems() { return (
// begin-report-data
{"diagnostics":[{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\auto_orientation_v2-2.3.6\\android\\build.gradle'","line":1},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\auto_orientation_v2-2.3.6\\android\\build.gradle'","line":1}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('group = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\auto_orientation_v2-2.3.6\\android\\build.gradle'","line":2},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\auto_orientation_v2-2.3.6\\android\\build.gradle'","line":2}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('version = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus-7.0.0\\android\\build.gradle'","line":1},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus-7.0.0\\android\\build.gradle'","line":1}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('group = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus-7.0.0\\android\\build.gradle'","line":2},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus-7.0.0\\android\\build.gradle'","line":2}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('version = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('minSdk = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-12.2.0\\android\\build.gradle'","line":1},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-12.2.0\\android\\build.gradle'","line":1}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('group = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-12.2.0\\android\\build.gradle'","line":2},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-12.2.0\\android\\build.gradle'","line":2}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('version = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('minSdk = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\dynamic_color-1.8.1\\android\\build.gradle'","line":1},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\dynamic_color-1.8.1\\android\\build.gradle'","line":1}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('group = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\dynamic_color-1.8.1\\android\\build.gradle'","line":2},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\dynamic_color-1.8.1\\android\\build.gradle'","line":2}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('version = <value>') instead."}]]},{"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"locations":[{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_picker-10.3.6\\android\\build.gradle'","line":1},{"path":"build file 'C:\\Users\\xiaoyaocz\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_picker-10.3.6\\android\\build.gradle'","line":1}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('group = <value>') instead."}]]}],"problemsReport":{"totalProblemCount":15,"buildName":"android","requestedTasks":"assembleDebug","documentationLink":"https://docs.gradle.org/8.12/userguide/problems-report.html","documentationLinkCaption":"Problem report","summaries":[{"problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"count":6}]}}
// end-report-data
);}
</script>
<script type="text/javascript">
!function(n,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["configuration-cache-report"]=t():n["configuration-cache-report"]=t()}(this,(()=>(({70:function(){void 0===ArrayBuffer.isView&&(ArrayBuffer.isView=function(n){return null!=n&&null!=n.__proto__&&n.__proto__.__proto__===Int8Array.prototype.__proto__}),void 0===Math.imul&&(Math.imul=function(n,t){return(4294901760&n)*(65535&t)+(65535&n)*(0|t)|0}),this["configuration-cache-report"]=function(n){"use strict";var t,r,i,e,u,o,f,s,c,a,h,l,_,v,d,g,w,b,p,m,k,y,q,B,C,x,j,P,I,S,z,E,T,L,N,A,M,F,D,O,R,H,$,G,U,V,Q,Z,Y,W,K,X,J,nn,tn,rn,en,un,on,fn,sn,cn,an,hn,ln,_n,vn,dn,gn,wn,bn,pn,mn,kn,yn,qn,Bn,Cn,xn,jn,Pn,In,Sn,zn=Math.imul,En=ArrayBuffer.isView;function Tn(n,t){if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));return function(n,t){if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));if(0===t)return pt();if(t>=n.length)return function(n){switch(n.length){case 0:return pt();case 1:return gr(n[0]);default:return function(n){return Ar(function(n){return new qt(n,!1)}(n))}(n)}}(n);if(1===t)return gr(n[0]);var r=0,i=Nr(),e=0,u=n.length;n:for(;e<u;){var o=n[e];if(e=e+1|0,i.d(o),(r=r+1|0)===t)break n}return i}(n,Wn(n.length-t|0,0))}function Ln(n,t,r,i,e,u,o){return t=t===A?", ":t,r=r===A?"":r,i=i===A?"":i,e=e===A?-1:e,u=u===A?"...":u,o=o===A?null:o,function(n,t,r,i,e,u,o,f){r=r===A?", ":r,i=i===A?"":i,e=e===A?"":e,u=u===A?-1:u,o=o===A?"...":o,f=f===A?null:f,t.e(i);var s=0,c=0,a=n.length;n:for(;c<a;){var h=n[c];if(c=c+1|0,(s=s+1|0)>1&&t.e(r),!(u<0||s<=u))break n;Qt(t,h,f)}return u>=0&&s>u&&t.e(o),t.e(e),t}(n,bi(),t,r,i,e,u,o).toString()}function Nn(n){return n.length-1|0}function An(n,t){if(null==t){var r=0,i=n.length-1|0;if(r<=i)do{var e=r;if(r=r+1|0,null==n[e])return e}while(r<=i)}else{var u=0,o=n.length-1|0;if(u<=o)do{var f=u;if(u=u+1|0,oe(t,n[f]))return f}while(u<=o)}return-1}function Mn(n,t,r,i,e,u,o){return t=t===A?", ":t,r=r===A?"":r,i=i===A?"":i,e=e===A?-1:e,u=u===A?"...":u,o=o===A?null:o,Fn(n,bi(),t,r,i,e,u,o).toString()}function Fn(n,t,r,i,e,u,o,f){r=r===A?", ":r,i=i===A?"":i,e=e===A?"":e,u=u===A?-1:u,o=o===A?"...":o,f=f===A?null:f,t.e(i);var s=0,c=n.f();n:for(;c.g();){var a=c.h();if((s=s+1|0)>1&&t.e(r),!(u<0||s<=u))break n;Qt(t,a,f)}return u>=0&&s>u&&t.e(o),t.e(e),t}function Dn(n){if(n.i())throw mu("List is empty.");return n.j(0)}function On(n){return new Yn(n)}function Rn(n){if(Ue(n,Ti)){var t;switch(n.k()){case 0:t=pt();break;case 1:t=gr(Ue(n,Ei)?n.j(0):n.f().h());break;default:t=Hn(n)}return t}return mt(Vn(n))}function Hn(n){return Ar(n)}function $n(n){if(Ue(n,Ti)&&n.k()<=1)return Rn(n);var t=Vn(n);return function(n){var t=(n.k()/2|0)-1|0;if(t<0)return lr();var r=kt(n),i=0;if(i<=t)do{var e=i;i=i+1|0;var u=n.j(e);n.f4(e,n.j(r)),n.f4(r,u),r=r-1|0}while(e!==t)}(t),t}function Gn(n,t){if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));return function(n,t){if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));if(0===t)return pt();if(Ue(n,Ti)){if(t>=n.k())return Rn(n);if(1===t)return gr(function(n){if(Ue(n,Ei))return Dn(n);var t=n.f();if(!t.g())throw mu("Collection is empty.");return t.h()}(n))}var r=0,i=Nr(),e=n.f();n:for(;e.g();){var u=e.h();if(i.d(u),(r=r+1|0)===t)break n}return mt(i)}(n,Wn(n.k()-t|0,0))}function Un(n,t){if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));if(0===t)return pt();var r=n.k();if(t>=r)return Rn(n);if(1===t)return gr(Qn(n));var i=Nr();if(Ue(n,li)){var e=r-t|0;if(e<r)do{var u=e;e=e+1|0,i.d(n.j(u))}while(e<r)}else for(var o=n.l(r-t|0);o.g();){var f=o.h();i.d(f)}return i}function Vn(n){return Ue(n,Ti)?Hn(n):Zn(n,Lr())}function Qn(n){if(n.i())throw mu("List is empty.");return n.j(kt(n))}function Zn(n,t){for(var r=n.f();r.g();){var i=r.h();t.d(i)}return t}function Yn(n){this.n_1=n}function Wn(n,t){return n<t?t:n}function Kn(n,t){return n>t?t:n}function Xn(n,t){return Ut().q(n,t,-1)}function Jn(n,t){return new Et(n,t)}function nt(n){var t=n.f();if(!t.g())return pt();var r=t.h();if(!t.g())return gr(r);var i=Lr();for(i.d(r);t.g();)i.d(t.h());return i}function tt(n){this.r_1=n}function rt(n,t){this.s_1=n,this.t_1=t}function it(){}function et(n){this.x_1=n,this.w_1=0}function ut(n,t){this.a1_1=n,et.call(this,n),ft().b1(t,this.a1_1.k()),this.w_1=t}function ot(){t=this}function ft(){return null==t&&new ot,t}function st(){ft(),it.call(this)}function ct(n){this.h1_1=n}function at(n,t){return t===n?"(this Map)":Oi(t)}function ht(n,t){var r;n:{for(var i=n.o().f();i.g();){var e=i.h();if(oe(e.j1(),t)){r=e;break n}}r=null}return r}function lt(){r=this}function _t(){return null==r&&new lt,r}function vt(n){this.q1_1=n,it.call(this)}function dt(){_t(),this.n1_1=null,this.o1_1=null}function gt(){i=this}function wt(){return null==i&&new gt,i}function bt(n){return n.length>0?nu(n):pt()}function pt(){return null==e&&new yt,e}function mt(n){switch(n.k()){case 0:return pt();case 1:return gr(n.j(0));default:return n}}function kt(n){return n.k()-1|0}function yt(){e=this,this.z1_1=new de(-1478467534,-1720727600)}function qt(n,t){this.b2_1=n,this.c2_1=t}function Bt(){u=this}function Ct(){return null==u&&new Bt,u}function xt(n,t){return Ue(n,Ti)?n.k():t}function jt(n,t){if(Ue(t,Ti))return n.m(t);for(var r=!1,i=t.f();i.g();){var e=i.h();n.d(e)&&(r=!0)}return r}function Pt(){}function It(n,t){this.h2_1=n,this.g2_1=n.i2_1.l(function(n,t){if(!(0<=t&&t<=n.k()))throw cu("Position index "+t+" must be in range ["+Oe(0,n.k())+"].");return n.k()-t|0}(n,t))}function St(n){st.call(this),this.i2_1=n}function zt(n){this.k2_1=n,this.j2_1=n.l2_1.f()}function Et(n,t){this.l2_1=n,this.m2_1=t}function Tt(n){for(;n.n2_1.g();){var t=n.n2_1.h();if(n.q2_1.t2_1(t)===n.q2_1.s2_1)return n.p2_1=t,n.o2_1=1,lr()}n.o2_1=0}function Lt(n){this.q2_1=n,this.n2_1=n.r2_1.f(),this.o2_1=-1,this.p2_1=null}function Nt(n,t,r){t=t===A||t,this.r2_1=n,this.s2_1=t,this.t2_1=r}function At(){return null==o&&new Mt,o}function Mt(){o=this,this.u2_1=new de(1993859828,793161749)}function Ft(n,t,r){return Dt(Dt(n,r)-Dt(t,r)|0,r)}function Dt(n,t){var r=n%t|0;return r>=0?r:r+t|0}function Ot(){f=this,this.p_1=new Ht(1,0)}function Rt(){return null==f&&new Ot,f}function Ht(n,t){Rt(),Vt.call(this,n,t,1)}function $t(n,t,r){Pt.call(this),this.d3_1=r,this.e3_1=t,this.f3_1=this.d3_1>0?n<=t:n>=t,this.g3_1=this.f3_1?n:this.e3_1}function Gt(){s=this}function Ut(){return null==s&&new Gt,s}function Vt(n,t,r){if(Ut(),0===r)throw fu("Step must be non-zero.");if(r===vr().MIN_VALUE)throw fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.z2_1=n,this.a3_1=function(n,t,r){var i;if(r>0)i=n>=t?t:t-Ft(t,n,r)|0;else{if(!(r<0))throw fu("Step is zero.");i=n<=t?t:t+Ft(n,t,0|-r)|0}return i}(n,t,r),this.b3_1=r}function Qt(n,t,r){null!=r?n.e(r(t)):null==t||Ze(t)?n.e(t):t instanceof zi?n.i3(t.h3_1):n.e(Oi(t))}function Zt(n,t,r){if(n===t)return!0;if(!(r=r!==A&&r))return!1;var i=mi(n),e=mi(t);return i===e||oe(new zi(Zi(Pi(i).toLowerCase(),0)),new zi(Zi(Pi(e).toLowerCase(),0)))}function Yt(n){return Wi(n)-1|0}function Wt(n,t,r,i){return r=r===A?0:r,(i=i!==A&&i)||"string"!=typeof n?Kt(n,t,r,Wi(n),i):n.indexOf(t,r)}function Kt(n,t,r,i,e,u){var o=(u=u!==A&&u)?Xn(Kn(r,Yt(n)),Wn(i,0)):Oe(Wn(r,0),Kn(i,Wi(n)));if("string"==typeof n&&"string"==typeof t){var f=o.z2_1,s=o.a3_1,c=o.b3_1;if(c>0&&f<=s||c<0&&s<=f)do{var a=f;if(f=f+c|0,xi(t,0,n,a,Wi(t),e))return a}while(a!==s)}else{var h=o.z2_1,l=o.a3_1,_=o.b3_1;if(_>0&&h<=l||_<0&&l<=h)do{var v=h;if(h=h+_|0,tr(t,0,n,v,Wi(t),e))return v}while(v!==l)}return-1}function Xt(n){var t=0,r=Wi(n)-1|0,i=!1;n:for(;t<=r;){var e=ki(Zi(n,i?r:t));if(i){if(!e)break n;r=r-1|0}else e?t=t+1|0:i=!0}return Ki(n,t,r+1|0)}function Jt(n,t){return ie(Ki(n,t.y2(),t.c3()+1|0))}function nr(n,t,r,i,e){r=r===A?0:r,i=i!==A&&i,rr(e=e===A?0:e);var u,o,f=nu(t);return new ur(n,r,e,(u=f,o=i,function(n,t){var r=function(n,t,r,i){if(!i&&1===t.k()){var e=function(n){if(Ue(n,Ei))return function(n){var t;switch(n.k()){case 0:throw mu("List is empty.");case 1:t=n.j(0);break;default:throw fu("List has more than one element.")}return t}(n);var t=n.f();if(!t.g())throw mu("Collection is empty.");var r=t.h();if(t.g())throw fu("Collection has more than one element.");return r}(t),u=Wt(n,e,r);return u<0?null:fr(u,e)}var o=Oe(Wn(r,0),Wi(n));if("string"==typeof n){var f=o.z2_1,s=o.a3_1,c=o.b3_1;if(c>0&&f<=s||c<0&&s<=f)do{var a,h=f;f=f+c|0;n:{for(var l=t.f();l.g();){var _=l.h();if(xi(_,0,n,h,_.length,i)){a=_;break n}}a=null}if(null!=a)return fr(h,a)}while(h!==s)}else{var v=o.z2_1,d=o.a3_1,g=o.b3_1;if(g>0&&v<=d||g<0&&d<=v)do{var w,b=v;v=v+g|0;n:{for(var p=t.f();p.g();){var m=p.h();if(tr(m,0,n,b,m.length,i)){w=m;break n}}w=null}if(null!=w)return fr(b,w)}while(b!==d)}return null}(n,u,t,o);return null==r?null:fr(r.t3_1,r.u3_1.length)}))}function tr(n,t,r,i,e,u){if(i<0||t<0||t>(Wi(n)-e|0)||i>(Wi(r)-e|0))return!1;var o=0;if(o<e)do{var f=o;if(o=o+1|0,!Zt(Zi(n,t+f|0),Zi(r,i+f|0),u))return!1}while(o<e);return!0}function rr(n){if(!(n>=0))throw fu(ie("Limit must be non-negative, but was "+n))}function ir(n){if(n.l3_1<0)n.j3_1=0,n.m3_1=null;else{var t;if(n.o3_1.r3_1>0?(n.n3_1=n.n3_1+1|0,t=n.n3_1>=n.o3_1.r3_1):t=!1,t||n.l3_1>Wi(n.o3_1.p3_1))n.m3_1=Oe(n.k3_1,Yt(n.o3_1.p3_1)),n.l3_1=-1;else{var r=n.o3_1.s3_1(n.o3_1.p3_1,n.l3_1);if(null==r)n.m3_1=Oe(n.k3_1,Yt(n.o3_1.p3_1)),n.l3_1=-1;else{var i=r.v3(),e=r.w3();n.m3_1=function(n,t){return t<=vr().MIN_VALUE?Rt().p_1:Oe(n,t-1|0)}(n.k3_1,i),n.k3_1=i+e|0,n.l3_1=n.k3_1+(0===e?1:0)|0}}n.j3_1=1}}function er(n){this.o3_1=n,this.j3_1=-1,this.k3_1=function(n,t,r){if(0>r)throw fu("Cannot coerce value to an empty range: maximum "+r+" is less than minimum 0.");return n<0?0:n>r?r:n}(n.q3_1,0,Wi(n.p3_1)),this.l3_1=this.k3_1,this.m3_1=null,this.n3_1=0}function ur(n,t,r,i){this.p3_1=n,this.q3_1=t,this.r3_1=r,this.s3_1=i}function or(n,t){this.t3_1=n,this.u3_1=t}function fr(n,t){return new or(n,t)}function sr(){}function cr(){}function ar(){}function hr(){c=this}function lr(){return null==c&&new hr,c}function _r(){a=this,this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function vr(){return null==a&&new _r,a}function dr(n){for(var t=[],r=n.f();r.g();)t.push(r.h());return t}function gr(n){return 0===(t=[n]).length?Lr():Ar(new qt(t,!0));var t}function wr(n){return n<0&&function(){throw yu("Index overflow has happened.")}(),n}function br(n){return void 0!==n.toArray?n.toArray():dr(n)}function pr(n){return function(n,t){for(var r=0,i=n.length;r<i;){var e=n[r];r=r+1|0,t.d(e)}return t}(t=[n],(r=t.length,i=ce(se(Zr)),function(n,t,r){zr.call(r),Zr.call(r),r.y5_1=function(n){return Ur(n,0,ce(se(Vr)))}(n)}(r,0,i),i));var t,r,i}function mr(){it.call(this)}function kr(n){this.j4_1=n,this.h4_1=0,this.i4_1=-1}function yr(n,t){this.n4_1=n,kr.call(this,n),ft().b1(t,this.n4_1.k()),this.h4_1=t}function qr(){mr.call(this),this.o4_1=0}function Br(n){this.r4_1=n}function Cr(n){this.s4_1=n}function xr(n,t){this.t4_1=n,this.u4_1=t}function jr(){zr.call(this)}function Pr(n){this.x4_1=n,zr.call(this)}function Ir(n){this.e5_1=n,mr.call(this)}function Sr(){dt.call(this),this.c5_1=null,this.d5_1=null}function zr(){mr.call(this)}function Er(){h=this;var n=Nr();n.c_1=!0,this.i5_1=n}function Tr(){return null==h&&new Er,h}function Lr(){return n=ce(se(Fr)),t=[],Fr.call(n,t),n;var n,t}function Nr(n){return t=ce(se(Fr)),r=[],Fr.call(t,r),t;var t,r}function Ar(n){return function(n,t){var r;return r=br(n),Fr.call(t,r),t}(n,ce(se(Fr)))}function Mr(n,t){return ft().e1(t,n.k()),t}function Fr(n){Tr(),qr.call(this),this.b_1=n,this.c_1=!1}function Dr(n,t,r,i,e){if(r===i)return n;var u=(r+i|0)/2|0,o=Dr(n,t,r,u,e),f=Dr(n,t,u+1|0,i,e),s=o===t?n:t,c=r,a=u+1|0,h=r;if(h<=i)do{var l=h;if(h=h+1|0,c<=u&&a<=i){var _=o[c],v=f[a];e.compare(_,v)<=0?(s[l]=_,c=c+1|0):(s[l]=v,a=a+1|0)}else c<=u?(s[l]=o[c],c=c+1|0):(s[l]=f[a],a=a+1|0)}while(l!==i);return s}function Or(n,t){return(3&n)-(3&t)|0}function Rr(){_=this}function Hr(n){this.n5_1=n,jr.call(this)}function $r(n){return function(n,t){Sr.call(t),Vr.call(t),t.t5_1=n,t.u5_1=n.w5()}(new Jr((null==_&&new Rr,_)),n),n}function Gr(){return $r(ce(se(Vr)))}function Ur(n,t,r){if($r(r),!(n>=0))throw fu(ie("Negative initial capacity: "+n));if(!(t>=0))throw fu(ie("Non-positive load factor: "+t));return r}function Vr(){this.v5_1=null}function Qr(n,t){return zr.call(t),Zr.call(t),t.y5_1=n,t}function Zr(){}function Yr(n,t){var r=Kr(n,n.h6_1.m5(t));if(null==r)return null;var i=r;if(null!=i&&Ve(i))return Wr(i,n,t);var e=i;return n.h6_1.l5(e.j1(),t)?e:null}function Wr(n,t,r){var i;n:{for(var e=0,u=n.length;e<u;){var o=n[e];if(e=e+1|0,t.h6_1.l5(o.j1(),r)){i=o;break n}}i=null}return i}function Kr(n,t){var r=n.i6_1[t];return void 0===r?null:r}function Xr(n){this.g6_1=n,this.z5_1=-1,this.a6_1=Object.keys(n.i6_1),this.b6_1=-1,this.c6_1=null,this.d6_1=!1,this.e6_1=-1,this.f6_1=null}function Jr(n){this.h6_1=n,this.i6_1=this.k6(),this.j6_1=0}function ni(){}function ti(n){this.n6_1=n,this.l6_1=null,this.m6_1=null,this.m6_1=this.n6_1.y6_1.v6_1}function ri(){v=this;var n,t=(fi(0,0,n=ce(se(si))),n);t.x6_1=!0,this.e7_1=t}function ii(){return null==v&&new ri,v}function ei(n,t,r){this.d7_1=n,xr.call(this,t,r),this.b7_1=null,this.c7_1=null}function ui(n){this.y6_1=n,jr.call(this)}function oi(){return $r(n=ce(se(si))),si.call(n),n.w6_1=Gr(),n;var n}function fi(n,t,r){return Ur(n,t,r),si.call(r),r.w6_1=Gr(),r}function si(){ii(),this.v6_1=null,this.x6_1=!1}function ci(){d=this;var n=ai(0),t=n.y5_1;(t instanceof si?t:_e()).j5(),this.f7_1=n}function ai(n){return function(n,t){return function(n,t,r){Qr(function(n,t){return fi(n,t,ce(se(si)))}(n,t),r),hi.call(r)}(n,0,t),t}(n,ce(se(hi)))}function hi(){null==d&&new ci}function li(){}function _i(){}function vi(n){_i.call(this),this.k7_1=n}function di(){gi.call(this)}function gi(){_i.call(this),this.m7_1=""}function wi(){if(!w){w=!0;var n="undefined"!=typeof process&&process.versions&&!!process.versions.node;g=n?new vi(process.stdout):new di}}function bi(){return n=ce(se(pi)),pi.call(n,""),n;var n}function pi(n){this.o7_1=void 0!==n?n:""}function mi(n){var t=Pi(n).toUpperCase();return t.length>1?n:Zi(t,0)}function ki(n){return function(n){return 9<=n&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(n)}function yi(){b=this,this.q7_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.r7_1=new RegExp("[\\\\$]","g"),this.s7_1=new RegExp("\\$","g")}function qi(){return null==b&&new yi,b}function Bi(n,t){qi(),this.v7_1=n,this.w7_1=function(n){if(Ue(n,Ti)){var t;switch(n.k()){case 0:t=At();break;case 1:t=pr(Ue(n,Ei)?n.j(0):n.f().h());break;default:t=Zn(n,ai(n.k()))}return t}return function(n){switch(n.k()){case 0:return At();case 1:return pr(n.f().h());default:return n}}(Zn(n,(r=ce(se(hi)),Qr(oi(),r),hi.call(r),r)));var r}(t),this.x7_1=new RegExp(n,Mn(t,"","gu",A,A,A,Ci)),this.y7_1=null,this.z7_1=null}function Ci(n){return n.d8_1}function xi(n,t,r,i,e,u){return tr(n,t,r,i,e,u=u!==A&&u)}function ji(n,t){return n-t|0}function Pi(n){return String.fromCharCode(n)}function Ii(){p=this,this.e8_1=0,this.f8_1=65535,this.g8_1=55296,this.h8_1=56319,this.i8_1=56320,this.j8_1=57343,this.k8_1=55296,this.l8_1=57343,this.m8_1=2,this.n8_1=16}function Si(){return null==p&&new Ii,p}function zi(n){Si(),this.h3_1=n}function Ei(){}function Ti(){}function Li(){}function Ni(){}function Ai(){}function Mi(){}function Fi(){m=this}function Di(n,t){null==m&&new Fi,this.p8_1=n,this.q8_1=t}function Oi(n){var t=null==n?null:ie(n);return null==t?"null":t}function Ri(n){return new Hi(n)}function Hi(n){this.t8_1=n,this.s8_1=0}function $i(){return Qi(),k}function Gi(){return Qi(),y}function Ui(){return Qi(),q}function Vi(){return Qi(),B}function Qi(){x||(x=!0,k=new ArrayBuffer(8),y=new Float64Array($i()),new Float32Array($i()),q=new Int32Array($i()),Gi()[0]=-1,B=0!==Ui()[0]?1:0,C=1-Vi()|0)}function Zi(n,t){var r;if(Yi(n)){var i,e=n.charCodeAt(t);if(Si(),e<0?i=!0:(Si(),i=e>65535),i)throw fu("Invalid Char code: "+e);r=De(e)}else r=n.y3(t);return r}function Yi(n){return"string"==typeof n}function Wi(n){return Yi(n)?n.length:n.x3()}function Ki(n,t,r){return Yi(n)?n.substring(t,r):n.z3(t,r)}function Xi(n){return ie(n)}function Ji(n,t){var r;switch(typeof n){case"number":r="number"==typeof t?ne(n,t):t instanceof de?ne(n,t.w8()):te(n,t);break;case"string":case"boolean":r=te(n,t);break;default:r=function(n,t){return n.a4(t)}(n,t)}return r}function ne(n,t){var r;if(n<t)r=-1;else if(n>t)r=1;else if(n===t){var i;if(0!==n)i=0;else{var e=1/n;i=e===1/t?0:e<0?-1:1}r=i}else r=n!=n?t!=t?0:1:-1;return r}function te(n,t){return n<t?-1:n>t?1:0}function re(n){if(!("kotlinHashCodeValue$"in n)){var t=4294967296*Math.random()|0,r=new Object;r.value=t,r.enumerable=!1,Object.defineProperty(n,"kotlinHashCodeValue$",r)}return n.kotlinHashCodeValue$}function ie(n){return null==n?"null":function(n){return!!$e(n)||En(n)}(n)?"[...]":n.toString()}function ee(n){if(null==n)return 0;var t;switch(typeof n){case"object":t="function"==typeof n.hashCode?n.hashCode():re(n);break;case"function":t=re(n);break;case"number":t=function(n){return Qi(),(0|n)===n?Fe(n):(Gi()[0]=n,zn(Ui()[(Qi(),C)],31)+Ui()[Vi()]|0)}(n);break;case"boolean":t=n?1:0;break;default:t=ue(String(n))}return t}function ue(n){var t=0,r=0,i=n.length-1|0;if(r<=i)do{var e=r;r=r+1|0;var u=n.charCodeAt(e);t=zn(t,31)+u|0}while(e!==i);return t}function oe(n,t){return null==n?null==t:null!=t&&("object"==typeof n&&"function"==typeof n.equals?n.equals(t):n!=n?t!=t:"number"==typeof n&&"number"==typeof t?n===t&&(0!==n||1/n==1/t):n===t)}function fe(n,t){null!=Error.captureStackTrace?Error.captureStackTrace(n,t):n.stack=(new Error).stack}function se(n){return n.prototype}function ce(n){return Object.create(n)}function ae(n,t,r){Error.call(n),function(n,t,r){var i=Xe(Object.getPrototypeOf(n));if(!(1&i)){var e;if(null==t){var u;if(null!==t){var o=null==r?null:r.toString();u=null==o?A:o}else u=A;e=u}else e=t;n.message=e}2&i||(n.cause=r),n.name=Object.getPrototypeOf(n).constructor.name}(n,t,r)}function he(n){var t;return null==n?function(){throw ju()}():t=n,t}function le(){throw Iu()}function _e(){throw zu()}function ve(){j=this,this.x8_1=new de(0,-2147483648),this.y8_1=new de(-1,2147483647),this.z8_1=8,this.a9_1=64}function de(n,t){null==j&&new ve,ar.call(this),this.u8_1=n,this.v8_1=t}function ge(){return Me(),P}function we(){return Me(),I}function be(){return Me(),S}function pe(){return Me(),E}function me(){return Me(),T}function ke(n,t){if(Me(),xe(n,t))return 0;var r=Ie(n),i=Ie(t);return r&&!i?-1:!r&&i?1:Ie(qe(n,t))?-1:1}function ye(n,t){Me();var r=n.v8_1>>>16|0,i=65535&n.v8_1,e=n.u8_1>>>16|0,u=65535&n.u8_1,o=t.v8_1>>>16|0,f=65535&t.v8_1,s=t.u8_1>>>16|0,c=0,a=0,h=0,l=0;return c=(c=c+((a=(a=a+((h=(h=h+((l=l+(u+(65535&t.u8_1)|0)|0)>>>16|0)|0)+(e+s|0)|0)>>>16|0)|0)+(i+f|0)|0)>>>16|0)|0)+(r+o|0)|0,new de((h&=65535)<<16|(l&=65535),(c&=65535)<<16|(a&=65535))}function qe(n,t){return Me(),ye(n,t.e9())}function Be(n,t){if(Me(),Se(n))return ge();if(Se(t))return ge();if(xe(n,pe()))return ze(t)?pe():ge();if(xe(t,pe()))return ze(n)?pe():ge();if(Ie(n))return Ie(t)?Be(Ee(n),Ee(t)):Ee(Be(Ee(n),t));if(Ie(t))return Ee(Be(n,Ee(t)));if(Te(n,me())&&Te(t,me()))return Le(Ce(n)*Ce(t));var r=n.v8_1>>>16|0,i=65535&n.v8_1,e=n.u8_1>>>16|0,u=65535&n.u8_1,o=t.v8_1>>>16|0,f=65535&t.v8_1,s=t.u8_1>>>16|0,c=65535&t.u8_1,a=0,h=0,l=0,_=0;return l=l+((_=_+zn(u,c)|0)>>>16|0)|0,_&=65535,h=(h=h+((l=l+zn(e,c)|0)>>>16|0)|0)+((l=(l&=65535)+zn(u,s)|0)>>>16|0)|0,l&=65535,a=(a=(a=a+((h=h+zn(i,c)|0)>>>16|0)|0)+((h=(h&=65535)+zn(e,s)|0)>>>16|0)|0)+((h=(h&=65535)+zn(u,f)|0)>>>16|0)|0,h&=65535,a=a+(((zn(r,c)+zn(i,s)|0)+zn(e,f)|0)+zn(u,o)|0)|0,new de(l<<16|_,(a&=65535)<<16|h)}function Ce(n){return Me(),4294967296*n.v8_1+function(n){return Me(),n.u8_1>=0?n.u8_1:4294967296+n.u8_1}(n)}function xe(n,t){return Me(),n.v8_1===t.v8_1&&n.u8_1===t.u8_1}function je(n,t){if(Me(),t<2||36<t)throw vu("radix out of range: "+t);if(Se(n))return"0";if(Ie(n)){if(xe(n,pe())){var r=Pe(t),i=n.d9(r),e=qe(Be(i,r),n).g9();return je(i,t)+e.toString(t)}return"-"+je(Ee(n),t)}for(var u=2===t?31:t<=10?9:t<=21?7:t<=35?6:5,o=Le(Math.pow(t,u)),f=n,s="";;){var c=f.d9(o),a=qe(f,Be(c,o)).g9().toString(t);if(Se(f=c))return a+s;for(;a.length<u;)a="0"+a;s=a+s}}function Pe(n){return Me(),new de(n,n<0?-1:0)}function Ie(n){return Me(),n.v8_1<0}function Se(n){return Me(),0===n.v8_1&&0===n.u8_1}function ze(n){return Me(),!(1&~n.u8_1)}function Ee(n){return Me(),n.e9()}function Te(n,t){return Me(),ke(n,t)<0}function Le(n){if(Me(),(t=n)!=t)return ge();if(n<=-0x8000000000000000)return pe();if(n+1>=0x8000000000000000)return Me(),z;if(n<0)return Ee(Le(-n));var t,r=4294967296;return new de(n%r|0,n/r|0)}function Ne(n,t){return Me(),ke(n,t)>0}function Ae(n,t){return Me(),ke(n,t)>=0}function Me(){L||(L=!0,P=Pe(0),I=Pe(1),S=Pe(-1),z=new de(-1,2147483647),E=new de(0,-2147483648),T=Pe(16777216))}function Fe(n){return n instanceof de?n.g9():function(n){return n>2147483647?2147483647:n<-2147483648?-2147483648:0|n}(n)}function De(n){var t;return t=function(n){return n<<16>>16}(Fe(n)),function(n){return 65535&n}(t)}function Oe(n,t){return new Ht(n,t)}function Re(n,t,r,i){return He("class",n,t,r,i,null)}function He(n,t,r,i,e,u){return{kind:n,simpleName:t,associatedObjectKey:r,associatedObjects:i,suspendArity:e,$kClass$:A,iid:u}}function $e(n){return Array.isArray(n)}function Ge(n,t,r,i,e,u,o,f){null!=i&&(n.prototype=Object.create(i.prototype),n.prototype.constructor=n);var s=r(t,u,o,null==f?[]:f);n.$metadata$=s,null!=e&&((null!=s.iid?n:n.prototype).$imask$=function(n){for(var t=1,r=[],i=0,e=n.length;i<e;){var u=n[i];i=i+1|0;var o=t,f=u.prototype.$imask$,s=null==f?u.$imask$:f;null!=s&&(r.push(s),o=s.length);var c=u.$metadata$.iid,a=null==c?null:(l=void 0,v=1<<(31&(h=c)),(l=new Int32Array(1+(h>>5)|0))[_=h>>5]=l[_]|v,l);null!=a&&(r.push(a),o=Math.max(o,a.length)),o>t&&(t=o)}var h,l,_,v;return function(n,t){for(var r=0,i=new Int32Array(n);r<n;){for(var e=r,u=0,o=0,f=t.length;o<f;){var s=t[o];o=o+1|0,e<s.length&&(u|=s[e])}i[e]=u,r=r+1|0}return i}(t,r)}(e))}function Ue(n,t){return function(n,t){var r=n.$imask$;return null!=r&&function(n,t){var r=t>>5;if(r>n.length)return!1;var i=1<<(31&t);return!!(n[r]&i)}(r,t)}(n,t.$metadata$.iid)}function Ve(n){return!!$e(n)&&!n.$type$}function Qe(n){var t;switch(typeof n){case"string":case"number":case"boolean":case"function":t=!0;break;default:t=n instanceof Object}return t}function Ze(n){return"string"==typeof n||Ue(n,sr)}function Ye(n,t,r,i){return He("interface",n,t,r,i,(null==N&&(N=0),N=We()+1|0,We()))}function We(){if(null!=N)return N;!function(){throw Tu("lateinit property iid has not been initialized")}()}function Ke(n,t,r,i){return He("object",n,t,r,i,null)}function Xe(n){var t=n.constructor,r=null==t?null:t.$metadata$,i=null==r?null:r.errorInfo;if(null!=i)return i;var e,u=0;if(Je(n,"message")&&(u|=1),Je(n,"cause")&&(u|=2),3!==u){var o=(e=n,Object.getPrototypeOf(e));o!=Error.prototype&&(u|=Xe(o))}return null!=r&&(r.errorInfo=u),u}function Je(n,t){return n.hasOwnProperty(t)}function nu(n){return new Fr(n)}function tu(n,t,r){for(var i=new Int32Array(r),e=0,u=0,o=0,f=0,s=n.length;f<s;){var c=Zi(n,f);f=f+1|0;var a=t[c];if(u|=(31&a)<<o,a<32){var h=e;e=h+1|0,i[h]=u,u=0,o=0}else o=o+5|0}return i}function ru(n,t){for(var r=0,i=n.length-1|0,e=-1,u=0;r<=i;)if(t>(u=n[e=(r+i|0)/2|0]))r=e+1|0;else{if(t===u)return e;i=e-1|0}return e-(t<u?1:0)|0}function iu(){M=this;var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=new Int32Array(128),r=0,i=Wi(n)-1|0;if(r<=i)do{var e=r;r=r+1|0,t[Zi(n,e)]=e}while(r<=i);var u=tu("hCgBpCQGYHZH5BRpBPPPPPPRMP5BPPlCPP6BkEPPPPcPXPzBvBrB3BOiDoBHwD+E3DauCnFmBmB2D6E1BlBTiBmBlBP5BhBiBrBvBjBqBnBPRtBiCmCtBlB0BmB5BiB7BmBgEmChBZgCoEoGVpBSfRhBPqKQ2BwBYoFgB4CJuTiEvBuCuDrF5DgEgFlJ1DgFmBQtBsBRGsB+BPiBlD1EIjDPRPPPQPPPPPGQSQS/DxENVNU+B9zCwBwBPPCkDPNnBPqDYY1R8B7FkFgTgwGgwUwmBgKwBuBScmEP/BPPPPPPrBP8B7F1B/ErBqC6B7BiBmBfQsBUwCw/KwqIwLwETPcPjQgJxFgBlBsD",t,222),o=new Int32Array(u.length),f=0,s=u.length-1|0;if(f<=s)do{var c=f;f=f+1|0,o[c]=0===c?u[c]:o[c-1|0]+u[c]|0}while(f<=s);this.h9_1=o,this.i9_1=tu("aaMBXHYH5BRpBPPPPPPRMP5BPPlCPPzBDOOPPcPXPzBvBjB3BOhDmBBpB7DoDYxB+EiBP1DoExBkBQhBekBPmBgBhBctBiBMWOOXhCsBpBkBUV3Ba4BkB0DlCgBXgBtD4FSdBfPhBPpKP0BvBXjEQ2CGsT8DhBtCqDpFvD1D3E0IrD2EkBJrBDOBsB+BPiBlB1EIjDPPPPPPPPPPPGPPMNLsBNPNPKCvBvBPPCkDPBmBPhDXXgD4B6FzEgDguG9vUtkB9JcuBSckEP/BPPPPPPBPf4FrBjEhBpC3B5BKaWPrBOwCk/KsCuLqDHPbPxPsFtEaaqDL",t,222),this.j9_1=tu("GFjgggUHGGFFZZZmzpz5qB6s6020B60ptltB6smt2sB60mz22B1+vv+8BZZ5s2850BW5q1ymtB506smzBF3q1q1qB1q1q1+Bgii4wDTm74g3KiggxqM60q1q1Bq1o1q1BF1qlrqrBZ2q5wprBGFZWWZGHFsjiooLowgmOowjkwCkgoiIk7ligGogiioBkwkiYkzj2oNoi+sbkwj04DghhkQ8wgiYkgoioDsgnkwC4gikQ//v+85BkwvoIsgoyI4yguI0whiwEowri4CoghsJowgqYowgm4DkwgsY/nwnzPowhmYkg6wI8yggZswikwHgxgmIoxgqYkwgk4DkxgmIkgoioBsgssoBgzgyI8g9gL8g9kI0wgwJoxgkoC0wgioFkw/wI0w53iF4gioYowjmgBHGq1qkgwBF1q1q8qBHwghuIwghyKk0goQkwgoQk3goQHGFHkyg0pBgxj6IoinkxDswno7Ikwhz9Bo0gioB8z48Rwli0xN0mpjoX8w78pDwltoqKHFGGwwgsIHFH3q1q16BFHWFZ1q10q1B2qlwq1B1q10q1B2q1yq1B6q1gq1Biq1qhxBir1qp1Bqt1q1qB1g1q1+B//3q16B///q1qBH/qlqq9Bholqq9B1i00a1q10qD1op1HkwmigEigiy6Cptogq1Bixo1kDq7/j00B2qgoBWGFm1lz50B6s5q1+BGWhggzhwBFFhgk4//Bo2jigE8wguI8wguI8wgugUog1qoB4qjmIwwi2KgkYHHH4lBgiFWkgIWoghssMmz5smrBZ3q1y50B5sm7gzBtz1smzB5smz50BqzqtmzB5sgzqzBF2/9//5BowgoIwmnkzPkwgk4C8ys65BkgoqI0wgy6FghquZo2giY0ghiIsgh24B4ghsQ8QF/v1q1OFs0O8iCHHF1qggz/B8wg6Iznv+//B08QgohsjK0QGFk7hsQ4gB",t,222)}function eu(){return null==M&&new iu,M}function uu(){F=this,this.k9_1=new Int32Array([170,186,688,704,736,837,890,7468,7544,7579,8305,8319,8336,8560,9424,11388,42652,42864,43e3,43868]),this.l9_1=new Int32Array([1,1,9,2,5,1,1,63,1,37,1,1,13,16,26,2,2,1,2,4])}function ou(){return null==F&&new uu,F}function fu(n){var t=function(n,t){return wu(n,t),su.call(t),t}(n,ce(se(su)));return fe(t,fu),t}function su(){fe(this,su)}function cu(n){var t=function(n,t){return wu(n,t),au.call(t),t}(n,ce(se(au)));return fe(t,cu),t}function au(){fe(this,au)}function hu(n){var t=function(n,t){return wu(n,t),lu.call(t),t}(n,ce(se(lu)));return fe(t,hu),t}function lu(){fe(this,lu)}function _u(n,t){return ae(t,n),du.call(t),t}function vu(n){var t=_u(n,ce(se(du)));return fe(t,vu),t}function du(){fe(this,du)}function gu(n){return function(n){ae(n),du.call(n)}(n),bu.call(n),n}function wu(n,t){return _u(n,t),bu.call(t),t}function bu(){fe(this,bu)}function pu(){var n,t=(gu(n=ce(se(ku))),ku.call(n),n);return fe(t,pu),t}function mu(n){var t=function(n,t){return wu(n,t),ku.call(t),t}(n,ce(se(ku)));return fe(t,mu),t}function ku(){fe(this,ku)}function yu(n){var t=function(n,t){return wu(n,t),qu.call(t),t}(n,ce(se(qu)));return fe(t,yu),t}function qu(){fe(this,qu)}function Bu(){var n,t=(gu(n=ce(se(xu))),xu.call(n),n);return fe(t,Bu),t}function Cu(n){var t=function(n,t){return wu(n,t),xu.call(t),t}(n,ce(se(xu)));return fe(t,Cu),t}function xu(){fe(this,xu)}function ju(){var n,t=(gu(n=ce(se(Pu))),Pu.call(n),n);return fe(t,ju),t}function Pu(){fe(this,Pu)}function Iu(){var n,t=(gu(n=ce(se(Su))),Su.call(n),n);return fe(t,Iu),t}function Su(){fe(this,Su)}function zu(){var n,t=(gu(n=ce(se(Eu))),Eu.call(n),n);return fe(t,zu),t}function Eu(){fe(this,Eu)}function Tu(n){var t=function(n,t){return wu(n,t),Lu.call(t),t}(n,ce(se(Lu)));return fe(t,Tu),t}function Lu(){fe(this,Lu)}function Nu(n,t){var r,i=n.className;return(r="(^|.*\\s+)"+t+"($|\\s+.*)",function(n,t){return Bi.call(t,n,At()),t}(r,ce(se(Bi)))).a8(i)}function Au(n,t){this.o9_1=n,this.p9_1=t}function Mu(n){this.q9_1=n}function Fu(n,t,r){var i,e=Ff(),u=Wu(),o=Mf().ga(t),f=Wu();if(0===Wi(r))i=Lf();else{var s=n.ia_1,c=null==s?null:new Mu(s).v9(r,"Copy reference to the clipboard");i=null==c?Lf():c}return e.ja([u,o,f,i])}function Du(n){n=n===A?null:n,this.ia_1=n}function Ou(n,t,r){Yu.call(this),this.ma_1=n,this.na_1=t,this.oa_1=r}function Ru(n,t){this.ra_1=n,this.sa_1=t}function Hu(n,t){Yu.call(this),this.va_1=n,this.wa_1=t}function $u(n,t){Yu.call(this),this.xa_1=n,this.ya_1=t}function Gu(n){Yu.call(this),this.za_1=n}function Uu(n){Yu.call(this),this.ab_1=n}function Vu(n){Yu.call(this),this.bb_1=n}function Qu(n,t){Yu.call(this),this.cb_1=n,this.db_1=t}function Zu(n){Yu.call(this),this.eb_1=n}function Yu(){}function Wu(){return ro(),D}function Ku(){return ro(),O}function Xu(){return ro(),R}function Ju(){return ro(),H}function no(n){return ro(),Ff().fb(Jf(to),n)}function to(n){return ro(),n.gb(["invisible-text","text-for-copy"]),lr()}function ro(){$||($=!0,D=no("`"),O=no(" "),R=no("("),H=no(")"))}function io(n,t){Yu.call(this),this.hb_1=n,this.ib_1=t}function eo(n){Yu.call(this),this.jb_1=n}function uo(n,t){Yu.call(this),this.kb_1=n,this.lb_1=t}function oo(n){Yu.call(this),this.mb_1=n}function fo(n){Yu.call(this),this.nb_1=n}function so(n){Yu.call(this),this.ob_1=n}function co(n,t,r){Yu.call(this),this.pb_1=n,this.qb_1=t,this.rb_1=r}function ao(n){Yu.call(this),this.sb_1=n}function ho(n){Yu.call(this),this.tb_1=n}function lo(n){return n.xb_1.vb_1.k()}function _o(){if(Z)return lr();Z=!0,G=new ko("Inputs",0,"Build configuration inputs"),U=new ko("ByMessage",1,"Problems grouped by message"),V=new ko("ByLocation",2,"Problems grouped by location"),Q=new ko("IncompatibleTasks",3,"Incompatible tasks")}function vo(n){yc.call(this),this.yb_1=n}function go(n){yc.call(this),this.ac_1=n}function wo(n){yc.call(this),this.bc_1=n}function bo(n){yc.call(this),this.cc_1=n}function po(n){yo.call(this),this.dc_1=n}function mo(n,t,r,i,e,u,o,f){this.ec_1=n,this.fc_1=t,this.gc_1=r,this.hc_1=i,this.ic_1=e,this.jc_1=u,this.kc_1=o,this.lc_1=f}function ko(n,t,r){Di.call(this,n,t),this.qc_1=r}function yo(){Bc.call(this)}function qo(n,t){var r=Af(),i=Jf(Lo),e=Af().y9(Jf(No),[]),u=function(n,t){var r,i=Af(),e=Jf(Oo),u=Ff().ga("Learn more about the "),o=$f();return i.y9(e,[u,o.fb(Jf((r=t,function(n){return n.bd(r.tc_1),lr()})),t.sc_1),Ff().ga(".")])}(0,t.gc_1),o=Af().y9(Jf(Ao),[Co(0,t)]),f=Af();return r.y9(i,[e,u,o,f.y9(Jf(Mo),[Io(0,Ro(),t.lc_1,lo(t.jc_1)),Io(0,Ho(),t.lc_1,lo(t.hc_1)),Io(0,$o(),t.lc_1,lo(t.ic_1)),Io(0,Go(),t.lc_1,lo(t.kc_1))])])}function Bo(n,t){var r,i,e=Af(),u=Jf(Fo);switch(t.lc_1.q8_1){case 0:r=zo(0,t.jc_1,((i=function(n){return new wo(n)}).callableName="<init>",i));break;case 3:r=zo(0,t.kc_1,function(){var n=function(n){return new bo(n)};return n.callableName="<init>",n}());break;case 1:r=zo(0,t.hc_1,function(){var n=function(n){return new go(n)};return n.callableName="<init>",n}());break;case 2:r=zo(0,t.ic_1,function(){var n=function(n){return new vo(n)};return n.callableName="<init>",n}());break;default:le()}return e.y9(u,[r])}function Co(n,t){return Af().ja([Po(0,t),xo(0,t)])}function xo(n,t){for(var r=Af(),i=t.fc_1,e=Lr(),u=0,o=i.f();o.g();){var f=o.h(),s=u;u=s+1|0,jt(e,0===wr(s)?gr(jo(Vo(),f)):bt([Gf().ja([]),jo(Vo(),f)]))}return r.ha(e)}function jo(n,t){return Df().ja([Ic(t)])}function Po(n,t){return Nf().ja([jc().ka(t.ec_1)])}function Io(n,t,r,i){var e,u,o;return Af().y9(Jf((e=i,u=t,o=r,function(n){return n.t9("group-selector"),0===e?(n.t9("group-selector--disabled"),lr()):u.equals(o)?(n.t9("group-selector--active"),lr()):(n.u9(function(n){return function(t){return new po(n)}}(u)),lr()),lr()})),[Ff().rc(t.qc_1,[So(0,i)])])}function So(n,t){return Ff().y9(Jf(Do),[Ku(),Xu(),Ff().ga(""+t),Ju()])}function zo(n,t,r){return function(n,t,r){var i,e=Af(),u=Of();return e.ja([u.ha(ys(t,(i=r,function(n){var t,r=n.cd().ub_1;return r instanceof Hu?Nc(i,(Vo(),(t=function(n){return Eo(0,n)}).callableName="viewNode",t),n,r.va_1,r.wa_1,Cc()):r instanceof $u?Nc(i,function(){var n=function(n){return Eo(0,n)};return n.callableName="viewNode",n}(Vo()),n,r.xa_1,r.ya_1,xc()):r instanceof io?Nc(i,function(){var n=function(n){return Eo(0,n)};return n.callableName="viewNode",n}(Vo()),n,r.hb_1,r.ib_1,A,So(Vo(),n.cd().vb_1.k())):r instanceof Ou?Lc(i,n,r):Nc(i,function(){var n=function(n){return Eo(0,n)};return n.callableName="viewNode",n}(Vo()),n,r)})))])}(0,t.xb_1.uc().vc(),r)}function Eo(n,t){var r;return t instanceof eo?Sc((r=t,function(n){return n.ed("project "),n.fd(r.jb_1),lr()})):t instanceof co?Sc(function(n){return function(t){return t.ed(n.pb_1+" "),t.fd(n.qb_1),t.ed(" of "),t.fd(n.rb_1),lr()}}(t)):t instanceof so?Sc(function(n){return function(t){return t.ed("system property "),t.fd(n.ob_1),lr()}}(t)):t instanceof uo?Sc(function(n){return function(t){return t.ed("task "),t.fd(n.kb_1),t.ed(" of type "),t.fd(n.lb_1),lr()}}(t)):t instanceof fo?Sc(function(n){return function(t){return t.ed("bean of type "),t.fd(n.nb_1),lr()}}(t)):t instanceof ao?Sc(function(n){return function(t){return t.ed(n.sb_1),lr()}}(t)):t instanceof ho?Sc(function(n){return function(t){return t.ed("class "),t.fd(n.tb_1),lr()}}(t)):t instanceof Zu?Sc(function(n){return function(t){return t.ed(n.eb_1),lr()}}(t)):t instanceof Gu?Ic(t.za_1):t instanceof Qu?Qo(t):Ff().ga(ie(t))}function To(n){return n.t9("report-wrapper"),lr()}function Lo(n){return n.t9("header"),lr()}function No(n){return n.t9("gradle-logo"),lr()}function Ao(n){return n.t9("title"),lr()}function Mo(n){return n.t9("groups"),lr()}function Fo(n){return n.t9("content"),lr()}function Do(n){return n.t9("group-selector__count"),lr()}function Oo(n){return n.t9("learn-more"),lr()}function Ro(){return _o(),G}function Ho(){return _o(),U}function $o(){return _o(),V}function Go(){return _o(),Q}function Uo(){Y=this}function Vo(){return null==Y&&new Uo,Y}function Qo(n){var t;return $f().fb(Jf((t=n,function(n){return n.t9("documentation-button"),n.bd(t.cb_1),lr()})),n.db_1)}function Zo(n,t,r){this.kd_1=n,this.ld_1=t,this.md_1=r}function Yo(n,t,r){this.nd_1=n,this.od_1=t,this.pd_1=r}function Wo(n,t){for(var r=vf(n),i=t.trace,e=Nr(i.length),u=0,o=i.length;u<o;){var f,s=i[u];u=u+1|0,f=Jo(s),e.d(f)}return new Zo(t,r,e)}function Ko(n,t){var r,i=null==(r=t.kd_1.error)?null:nf(r);null==i||n.d(i)}function Xo(n){return function(n,t,r){var i=null==n.error?null:new Hu(t,r);return null==i?new $u(t,r):i}(n.kd_1,new Gu(n.ld_1),ef(n.kd_1))}function Jo(n){var t;switch(n.kind){case"Project":t=new eo(n.path);break;case"Task":t=new uo(n.path,n.type);break;case"TaskPath":t=new oo(n.path);break;case"Bean":t=new fo(n.type);break;case"Field":t=new co("field",n.name,n.declaringType);break;case"InputProperty":t=new co("input property",n.name,n.task);break;case"OutputProperty":t=new co("output property",n.name,n.task);break;case"SystemProperty":t=new so(n.name);break;case"PropertyUsage":t=new co("property",n.name,n.from);break;case"BuildLogic":t=new ao(n.location);break;case"BuildLogicClass":t=new ho(n.type);break;default:t=new Zu("Gradle runtime")}return t}function nf(n){var t=n.parts;if(null==t){var r=n.summary;return null==r?null:new Gu(vf(r))}for(var i=n.summary,e=null==i?null:vf(i),u=Lr(),o=Ri(t);o.g();){var f=rf(o.h());null==f||u.d(f)}for(var s=Mn(u,"\n"),c=Lr(),a=Ri(t);a.g();){var h=tf(a.h());null==h||c.d(h)}return new Ou(e,s,c)}function tf(n){var t=rf(n);if(null==t)return null;var r,i,e=nt(new Nt(function(n,t,r,i){var e;return Jn(nr(n,["\r\n","\n","\r"],A,r=r!==A&&r,i=i===A?0:i),(e=n,function(n){return Jt(e,n)}))}(t),!0,lf));return new Ru(e,(r=!(null==n.internalText),i=e.k(),r&&i>1?ps():null))}function rf(n){var t=n.text;return null==t?n.internalText:t}function ef(n){var t=n.documentationLink;return null==t?null:new Qu(t,"")}function uf(n,t){return new cs(of(n,jf().sd(t),ps()))}function of(n,t,r){return new ks(n,function(n,t){var r,i=Jn(On(n.o()),If);return nt(Jn(new rt(i,new ff(_f)),(r=t,function(n){return of(n.v3(),n.w3().wd_1,r)})))}(t,1===Pf(t)?ms():ps()),0===Pf(t)?ps():r)}function ff(n){this.td_1=n}function sf(n){var t=Lr(),r=n.ld_1,i=Dn(r.ca_1).fa_1,e=ie(Xt(Ze(i)?i:_e())),u=r.vd(function(n,t){var r;if(!(t>=0))throw fu(ie("Requested element count "+t+" is less than zero."));if(0===t)return Rn(n);if(Ue(n,Ti)){var i=n.k()-t|0;if(i<=0)return pt();if(1===i)return gr(function(n){if(Ue(n,Ei))return Qn(n);var t=n.f();if(!t.g())throw mu("Collection is empty.");for(var r=t.h();t.g();)r=t.h();return r}(n));if(r=Nr(),Ue(n,Ei)){if(Ue(n,li)){var e=t,u=n.k();if(e<u)do{var o=e;e=e+1|0,r.d(n.j(o))}while(e<u)}else for(var f=n.l(t);f.g();){var s=f.h();r.d(s)}return r}}else r=Lr();for(var c=0,a=n.f();a.g();){var h=a.h();c>=t?r.d(h):c=c+1|0}return mt(r)}(r.ca_1,1));return t.d(new io(new Zu(e),ef(n.kd_1))),t.d(new Gu(u)),t.m(n.md_1),t.j5()}function cf(n){var t=Lr(),r=n.ld_1,i=r.vd(r.ca_1);return t.d(new $u(new Gu(i),ef(n.kd_1))),t.j5()}function af(n){var t=Lr();return t.d(Xo(n)),t.m(n.md_1),Ko(t,n),t.j5()}function hf(n){var t=Lr();return t.m(new St(n.md_1)),t.d(Xo(n)),Ko(t,n),t.j5()}function lf(n){return Wi(n)>0}function _f(n,t){return function(n,t){return n===t?0:null==n?-1:null==t?1:Ji(null!=n&&("string"==(i=typeof(r=n))||"boolean"===i||function(n){return"number"==typeof n||n instanceof de}(r)||Ue(r,cr))?n:_e(),t);var r,i}(Oi(n.v3()),Oi(t.v3()))}function vf(n){var t;return Bf().qd((t=n,function(n){for(var r=t,i=0,e=r.length;i<e;){var u=r[i];i=i+1|0;var o=u.text;null==o||n.ed(o);var f=u.name;null==f||(n.fd(f),lr())}return lr()}))}function df(n,t){return(0!==(r=n)?r.toString():"No")+" "+gf(t,n)+" "+wf(n)+" found";var r}function gf(n,t){return t<2?n:n+"s"}function wf(n){return n<=1?"was":"were"}function bf(n,t){this.sc_1=n,this.tc_1=t}function pf(n){kf.call(this),this.fa_1=n}function mf(n,t){kf.call(this),this.da_1=n,this.ea_1=t}function kf(){}function yf(){this.dd_1=Lr()}function qf(){W=this}function Bf(){return null==W&&new qf,W}function Cf(n){Bf(),this.ca_1=n}function xf(){K=this}function jf(){return null==K&&new xf,K}function Pf(n){return n.k()}function If(n){var t=n.j1(),r=n.i1();return fr(t,new Sf(Ue(r,Ni)?r:_e()))}function Sf(n){jf(),this.wd_1=n}function zf(n,t,r){var i;Tf(t,n,r),i="Component mounted at #"+n.id+".",wi(),(wi(),g).j7(i)}function Ef(n){var t=document.getElementById(n);if(null==t)throw hu("'"+n+"' element missing");return t}function Tf(n,t,r){var i,e,u;i=n.z9(r),e=t,u=function(n,t,r){return function(i){return Tf(n,r,n.ba(i,t)),lr()}}(n,r,t),fs(),e.innerHTML="",us(e,i,u)}function Lf(){return fs(),X}function Nf(){return fs(),J}function Af(){return fs(),nn}function Mf(){return fs(),tn}function Ff(){return fs(),rn}function Df(){return fs(),en}function Of(){return fs(),un}function Rf(){return fs(),on}function Hf(){return fs(),fn}function $f(){return fs(),sn}function Gf(){return fs(),cn}function Uf(n){this.x9_1=n}function Vf(){an=this}function Qf(){return null==an&&new Vf,an}function Zf(){hn=this,Xf.call(this)}function Yf(){return null==hn&&new Zf,hn}function Wf(n,t,r,i){t=t===A?pt():t,r=r===A?null:r,i=i===A?pt():i,Xf.call(this),this.be_1=n,this.ce_1=t,this.de_1=r,this.ee_1=i}function Kf(){}function Xf(){Qf()}function Jf(n){fs();var t,r=Lr();return n(new ns((t=r,function(n){return t.d(n),lr()}))),r}function ns(n){this.r9_1=n}function ts(n,t){es.call(this),this.fe_1=n,this.ge_1=t}function rs(n){es.call(this),this.he_1=n}function is(n,t){es.call(this),this.ie_1=n,this.je_1=t}function es(){}function us(n,t,r){if(fs(),t instanceof Wf)!function(n,t,r){var i=function(n,t,r){var i=n.createElement(t);return r(i),i}(he(n.ownerDocument),t,r);n.appendChild(i)}(n,t.be_1,(e=t,u=r,function(n){for(var t=e.ce_1.f();t.g();)os(n,t.h(),u);var r=e.de_1;null==r||function(n,t){n.appendChild(he(n.ownerDocument).createTextNode(t))}(n,r);for(var i=e.ee_1.f();i.g();)us(n,i.h(),u);return lr()}));else if(t instanceof Kf){var i=t instanceof Kf?t:_e();us(n,i.ke_1,function(n,t){return function(r){return n(t.le_1(r)),lr()}}(r,i))}else if(oe(t,Yf()))return lr();var e,u}function os(n,t,r){var i,e;fs(),t instanceof is?n.setAttribute(t.ie_1,t.je_1):t instanceof rs?function(n,t){for(var r=Lr(),i=0,e=t.length;i<e;){var u=t[i];i=i+1|0,Nu(n,u)||r.d(u)}var o=r;if(!o.i()){var f=n.className,s=ie(Xt(Ze(f)?f:_e())),c=bi();c.p7(s),0!==Wi(s)&&c.p7(" "),Fn(o,c," "),n.className=c.toString()}}(n,[t.he_1]):t instanceof ts&&n.addEventListener(t.fe_1,(i=r,e=t,function(n){return n.stopPropagation(),i(e.ge_1(n)),lr()}))}function fs(){ln||(ln=!0,X=Yf(),new Uf("hr"),J=new Uf("h1"),new Uf("h2"),nn=new Uf("div"),new Uf("pre"),tn=new Uf("code"),rn=new Uf("span"),en=new Uf("small"),un=new Uf("ol"),on=new Uf("ul"),fn=new Uf("li"),sn=new Uf("a"),cn=new Uf("br"),new Uf("p"))}function ss(n){as.call(this),this.ne_1=n}function cs(n){this.xb_1=n}function as(){}function hs(n){return n.me(A,A,n.wb_1.ad())}function ls(){_n=this}function _s(){return null==_n&&new ls,_n}function vs(){if(gn)return lr();gn=!0,vn=new ws("Collapsed",0),dn=new ws("Expanded",1)}function ds(n){bs.call(this),this.ve_1=n}function gs(n,t,r){bs.call(this),this.se_1=n,this.te_1=t,this.ue_1=r}function ws(n,t){Di.call(this,n,t)}function bs(){}function ps(){return vs(),vn}function ms(){return vs(),dn}function ks(n,t,r){t=t===A?pt():t,r=r===A?ps():r,this.ub_1=n,this.vb_1=t,this.wb_1=r}function ys(n,t){return nt(Jn(n,(r=t,function(n){return function(n,t){var r,i=n.cd(),e=Hf(),u=t(n),o=i.vb_1;r=null==(i.wb_1.equals(ms())&&!o.i()?o:null)?null:function(n,t){return Rf().ha(function(n,t){return ys(n.vc(),t)}(n,t))}(n,t);var f=r;return e.ja([u,null==f?Lf():f])}(n,r)})));var r}function qs(){if(kn)return lr();kn=!0,bn=new Bs("ByMessage",0,"Messages"),pn=new Bs("ByGroup",1,"Group"),mn=new Bs("ByFileLocation",2,"Locations")}function Bs(n,t,r){Di.call(this,n,t),this.cf_1=r}function Cs(n,t){this.df_1=n,this.ef_1=t}function xs(n,t){this.ff_1=n,this.gf_1=t}function js(n){return new ks(new Gu(Bf().rd(n+" more problem"+(n>1?"s have":" has")+" been skipped")))}function Ps(n,t,r,i){var e,u,o=n.v1(t);if(null==o){var f=Lr(),s=fr(new ks(new Vs(Bf().qd((u=t,function(n){return n.fd(u),lr()}))),f,ms()),f);n.h5(t,s),e=s}else e=o;e.u3_1.d(Es(r,i))}function Is(n,t,r,i){var e;if(t=t===A?Lr():t,r=r===A?oi():r,i===A){var u=wn;wn=u+1|0,e=u}else e=i;i=e,this.hf_1=n,this.if_1=t,this.jf_1=r,this.kf_1=i}function Ss(n,t){if(t.i())return null;for(var r,i=n,e=null,u=t.f();u.g();){var o=u.h();r=e;var f,s=i,c=o.ef_1+" ("+o.df_1+")",a=s.v1(c);if(null==a){var h=Lr(),l=new Is(new ks(new Vs(Bf().qd(Fs(o))),h,ms()),h);s.h5(c,l),f=l}else f=a;e=f,null==r||he(r).if_1.u(he(e).hf_1)||he(r).if_1.d(he(e).hf_1),i=he(e).jf_1}return e}function zs(n,t){if(n.k()===t.length){var r;n:{var i=function(n,t){var r=t.length,i=xt(n,10),e=Nr(Math.min(i,r)),u=0,o=n.f();t:for(;o.g();){var f,s=o.h();if(u>=r)break t;var c=u;u=c+1|0,f=fr(s,t[c]),e.d(f)}return e}(n,t);if(Ue(i,Ti)&&i.i())r=!0;else{for(var e=i.f();e.g();){var u=e.h();if(u.t3_1.df_1!==u.u3_1.name||u.t3_1.ef_1!==u.u3_1.displayName){r=!1;break n}}r=!0}}return r}return!1}function Es(n,t,r){var i=function(n,t,r){t=t===A?null:t;var i=Ns(function(n,t){return n&&null!=t.contextualLabel?he(t.contextualLabel):Ts(t)}(r=r!==A&&r,n),t).j5();return Ls(n,new Gu(i))}(n,t=t===A?null:t,r=r!==A&&r),e=function(n,t,r){r=r!==A&&r;var i,e=n.problemDetails;if(null==e)i=null;else{var u,o=e[0].text,f=null==o?null:function(n,t,r,i){if(r=r!==A&&r,i=i===A?0:i,1===t.length){var e=t[0];if(0!==Wi(e))return function(n,t,r,i){rr(i);var e=0,u=Wt(n,t,e,r);if(-1===u||1===i)return gr(ie(n));var o,f=i>0,s=Nr(f&&Kn(i,10));n:do{var c;if(c=ie(Ki(n,e,u)),s.d(c),e=u+t.length|0,f&&s.k()===(i-1|0))break n;u=Wt(n,t,e,r)}while(-1!==u);return o=ie(Ki(n,e,Wi(n))),s.d(o),s}(n,e,r,i)}for(var u=function(n){return new tt(n)}(nr(n,t,A,r,i)),o=Nr(xt(u,10)),f=u.f();f.g();){var s;s=Jt(n,f.h()),o.d(s)}return o}(o,["\n"]);if(null==f)u=null;else{for(var s=Nr(xt(f,10)),c=f.f();c.g();){var a,h=c.h();a=Ms(n)?Bf().qd(Os(h)):Bf().rd(h),s.d(a)}u=s}var l,_=u;if(null==_)l=null;else{for(var v=Nr(xt(_,10)),d=_.f();d.g();){var g;g=new ks(new Gu(d.h())),v.d(g)}l=v}var w=null==l?null:Hn(l);i=null==w?Lr():w}var b=i,p=null==b?Lr():b;r||null==n.contextualLabel||p.d(new ks(new Gu(Bf().rd(he(n.contextualLabel)))));var m=function(n){var t=n.solutions;if(null==t||0===t.length)return null;for(var r=new Vu(Bf().rd("Solutions")),i=he(n.solutions),e=Nr(i.length),u=0,o=i.length;u<o;){var f,s=i[u];u=u+1|0,f=new ks(new Uu(vf(s))),e.d(f)}return new ks(r,e)}(n);null==m||p.d(m);var k,y=n.error,q=null==y?null:nf(y);if(null==q||p.d(new ks(q)),t){var B=n.locations;k=!(null==B||0===B.length)}else k=!1;return k&&p.d(function(n){var t,r=n.locations;if(null==r)t=null;else{for(var i=Nr(r.length),e=Ri(r);e.g();){var u,o=e.h();u=new ks(new Gu(Bf().qd(Rs(o)))),i.d(u)}t=i}var f=t;return new ks(new Zu("Locations"),null==f?pt():f)}(n)),p}(n,null==t,r);return new ks(i,e)}function Ts(n){return function(n){if(0===n.length)throw mu("Array is empty.");return n[Nn(n)]}(n.problemId).displayName}function Ls(n,t){var r;switch(n.severity){case"WARNING":var i=n.documentationLink;r=new $u(t,null==i?null:new Qu(i,""));break;case"ERROR":var e=n.documentationLink;r=new Hu(t,null==e?null:new Qu(e,""));break;case"ADVICE":var u=n.documentationLink;r=new Qs(t,null==u?null:new Qu(u,""));break;default:console.error("no severity "+n.severity),r=t}return r}function Ns(n,t){t=t===A?null:t;var r,i=new yf;if(i.ed(n),null==t);else{if(null!=t.line){var e=As(t);i.xd(e+(null==(r=t).line||null==r.length?"":"-"+r.length),""+t.path+e)}var u=t.taskPath;null==u||i.fd(u);var o=t.pluginId;null!=o&&i.fd(o)}return i}function As(n){var t;if(null==n.line)t=null;else{var r,i=":"+n.line,e=n.column;t=i+(null==(r=null==e?null:":"+e)?"":r)}return null==t?"":t}function Ms(n){var t,r,i=n.problemId;n:{for(var e=0,u=i.length;e<u;){var o=i[e];if(e=e+1|0,"compilation"===o.name){r=o;break n}}r=null}if(null!=r){var f,s=n.problemId;n:{for(var c=0,a=s.length;c<a;){var h=s[c];if(c=c+1|0,"java"===h.name){f=h;break n}}f=null}t=!(null==f)}else t=!1;return t}function Fs(n){return function(t){return t.ed(n.ef_1),t.fd(n.df_1),lr()}}function Ds(n){return n.name}function Os(n){return function(t){return t.xd(function(n,t,r,i){i=i!==A&&i;var e=new RegExp(qi().t7(" "),i?"gui":"gu"),u=qi().u7(" ");return n.replace(e,u)}(n),""),lr()}}function Rs(n){return function(t){return t.ed("- "),t.fd(""+n.path+As(n)),lr()}}function Hs(){return qs(),bn}function $s(){return qs(),pn}function Gs(){return qs(),mn}function Us(n){Zs.call(this),this.lf_1=n}function Vs(n,t){t=t!==A&&t,Zs.call(this),this.mf_1=n,this.nf_1=t}function Qs(n,t){t=t===A?null:t,Yu.call(this),this.of_1=n,this.pf_1=t}function Zs(){Yu.call(this)}function Ys(n){yc.call(this),this.qf_1=n}function Ws(n){yc.call(this),this.rf_1=n}function Ks(n){yc.call(this),this.sf_1=n}function Xs(n){nc.call(this),this.tf_1=n}function Js(n,t,r,i,e,u,o,f){this.uf_1=n,this.vf_1=t,this.wf_1=r,this.xf_1=i,this.yf_1=e,this.zf_1=u,this.ag_1=o,this.bg_1=f}function nc(){Bc.call(this)}function tc(n,t){var r=Lr();lo(t.xf_1)>0&&r.d(fc(0,Hs(),t.bg_1,t.ag_1)),lo(t.yf_1)>0&&r.d(fc(0,$s(),t.bg_1,t.ag_1)),lo(t.zf_1)>0&&r.d(fc(0,Gs(),t.bg_1,t.ag_1));var i=Af(),e=Jf(hc),u=Af().y9(Jf(lc),[]),o=function(n,t){var r,i=Af(),e=Jf(wc),u=Ff().ga("Learn more about "),o=$f();return i.y9(e,[u,o.fb(Jf((r=t,function(n){return n.bd(r.tc_1),lr()})),t.sc_1),Ff().ga(".")])}(0,t.wf_1),f=Af().y9(Jf(_c),[ic(0,t)]),s=Af();return i.y9(e,[u,o,f,s.zd(Jf(vc),r)])}function rc(n,t){var r,i,e=Af(),u=Jf(dc);switch(t.bg_1.q8_1){case 0:r=sc(0,t.xf_1,((i=function(n){return new Ys(n)}).callableName="<init>",i));break;case 1:r=sc(0,t.yf_1,function(){var n=function(n){return new Ws(n)};return n.callableName="<init>",n}());break;case 2:r=sc(0,t.zf_1,function(){var n=function(n){return new Ks(n)};return n.callableName="<init>",n}());break;default:le()}return e.y9(u,[r])}function ic(n,t){return Af().ja([oc(0,t),ec(0,t)])}function ec(n,t){for(var r=Af(),i=t.vf_1,e=Lr(),u=0,o=i.f();o.g();){var f=o.h(),s=u;u=s+1|0,jt(e,0===wr(s)?gr(uc(pc(),f)):bt([Gf().ja([]),uc(pc(),f)]))}return r.ha(e)}function uc(n,t){return Df().ja([Ic(t)])}function oc(n,t){return Nf().ja([jc().ka(t.uf_1)])}function fc(n,t,r,i){var e,u,o,f;return Af().y9(Jf((e=i,u=t,o=r,function(n){return n.t9("group-selector"),0===e?(n.t9("group-selector--disabled"),lr()):u.equals(o)?(n.t9("group-selector--active"),lr()):(n.u9(function(n){return function(t){return new Xs(n)}}(u)),lr()),lr()})),[Ff().rc(t.cf_1,[(f=i,Ff().y9(Jf(gc),[Ku(),Xu(),Ff().ga(""+f),Ju()]))])])}function sc(n,t,r){return function(n,t,r){var i,e=Af(),u=Of();return e.ja([u.ha(ys(t,(i=r,function(n){return function(n,t,r,i){var e,u;return t instanceof Us?Ic(Bf().rd(t.lf_1)):t instanceof Vs?Af().y9(Jf((u=t,function(n){return u.nf_1&&(n.t9("uncategorized"),lr()),lr()})),[Af().ja([zc(r,i),Ic(t.mf_1)])]):t instanceof Ou?Lc(i,r,t):t instanceof Gu?Ic(t.za_1):t instanceof Uu?Af().ja([(Vc(),xn),Ic(t.ab_1)]):t instanceof Vu?Af().ja([zc(r,i),Ic(t.bb_1)]):t instanceof Hu?Nc(i,((e=function(n){return cc(0,n)}).callableName="viewIt",e),r,t.va_1,t.wa_1,Cc()):t instanceof Qs?Nc(i,function(){var n=function(n){return cc(0,n)};return n.callableName="viewIt",n}(),r,t.of_1,t.pf_1,(Vc(),Bn)):t instanceof $u?Nc(i,function(){var n=function(n){return cc(0,n)};return n.callableName="viewIt",n}(),r,t.xa_1,t.ya_1,xc()):t instanceof Zu?Af().ja([zc(r,i),Ic(Bf().rd(t.eb_1))]):Ff().ga("Unknown node type viewNode: "+t)}(pc(),n.cd().ub_1,n,i)})))])}(0,t.xb_1.uc().vc(),r)}function cc(n,t){var r;if(t instanceof Qu)r=Qo(t);else if(t instanceof Zu)r=Ic(Bf().rd(t.eb_1));else if(t instanceof Gu)r=Ic(t.za_1);else{var i="Unknown node type viewIt: "+t;console.error(i),r=Ff().ga(i)}return r}function ac(n){return n.t9("report-wrapper"),lr()}function hc(n){return n.t9("header"),lr()}function lc(n){return n.t9("gradle-logo"),lr()}function _c(n){return n.t9("title"),lr()}function vc(n){return n.t9("groups"),lr()}function dc(n){return n.t9("content"),lr()}function gc(n){return n.t9("group-selector__count"),lr()}function wc(n){return n.t9("learn-more"),lr()}function bc(){yn=this,document.title="Gradle Problem Report"}function pc(){return null==yn&&new bc,yn}function mc(n,t,r){return n.pe(t.zb().oe(),r)}function kc(n){Bc.call(this),this.hd_1=n}function yc(){Bc.call(this)}function qc(n,t){Bc.call(this),this.wc_1=n,this.xc_1=t}function Bc(){}function Cc(){return Vc(),qn}function xc(){return Vc(),Cn}function jc(){return Vc(),jn}function Pc(){return Vc(),Pn}function Ic(n){return Vc(),Pc().ka(n)}function Sc(n){return Vc(),Pc().ka(Bf().qd(n))}function zc(n,t){return Vc(),n.cd().ye()?Ac(n,t):function(n){return Vc(),Ff().fb(Jf(Gc),Mc(n))}(n)}function Ec(n,t,r,i){var e,u,o;return Vc(),Ff().fb(Jf((e=r,u=t,o=i,function(n){return n.t9("java-exception-part-toggle"),n.u9(function(n,t){return function(r){return new qc(n,t())}}(u,o)),n.s9("Click to "+function(n){var t;switch(Vc(),n.q8_1){case 0:t="show";break;case 1:t="hide";break;default:le()}return t}(e)),lr()})),"("+n+" internal "+gf("line",n)+" "+function(n){var t;switch(Vc(),n.q8_1){case 0:t="hidden";break;case 1:t="shown";break;default:le()}return t}(r)+")")}function Tc(n,t){t=t===A?Lf():t,Vc();for(var r=Rf(),i=Nr(xt(n,10)),e=0,u=n.f();u.g();){var o,f=e;e=f+1|0,s=u.h(),c=(c=0===wr(f)?t:Lf())===A?Lf():c,Vc(),o=Hf().ja([Mf().ga(s),c]),i.d(o)}var s,c;return r.ha(i)}function Lc(n,t,r){Vc();var i,e,u,o=Af(),f=Ac(t,n),s=Ff().ga("Exception"),c=Ff().ja([(Vc(),In).v9(r.na_1,"Copy exception to the clipboard")]),a=null==r.ma_1?null:Ff().ga(" "),h=null==a?Lf():a,l=r.ma_1,_=null==l?null:Ic(l),v=null==_?Lf():_;switch(t.cd().wb_1.q8_1){case 0:i=Lf();break;case 1:i=function(n,t){Vc();for(var r=Af(),i=Jf(Uc),e=n.oa_1,u=Nr(xt(e,10)),o=0,f=e.f();f.g();){var s,c=f.h(),a=o;o=a+1|0;var h,l=wr(a);if(null!=c.sa_1){var _,v=Ec(c.ra_1.k(),l,c.sa_1,t),d=c.sa_1;switch(null==d?-1:d.q8_1){case 0:_=Tc(Un(c.ra_1,1),v);break;case 1:_=Tc(c.ra_1,v);break;default:le()}h=_}else h=Tc(c.ra_1);s=h,u.d(s)}return r.zd(i,u)}(r,(e=n,u=t,function(){return e(new ss(u))}));break;default:le()}return o.ja([f,s,c,h,v,i])}function Nc(n,t,r,i,e,u,o){e=e===A?null:e,u=u===A?Lf():u,o=o===A?Lf():o,Vc();var f=Af(),s=zc(r,n),c=t(i),a=null==e?null:t(e);return f.ja([s,u,c,null==a?Lf():a,o])}function Ac(n,t){var r,i;return Vc(),Ff().fb(Jf((r=n,i=t,function(n){return n.gb(["invisible-text","tree-btn"]),r.cd().wb_1===ps()&&(n.t9("collapsed"),lr()),r.cd().wb_1===ms()&&(n.t9("expanded"),lr()),n.s9("Click to "+function(n){var t;switch(Vc(),n.q8_1){case 0:t="expand";break;case 1:t="collapse";break;default:le()}return t}(r.cd().wb_1)),n.u9(function(n,t){return function(r){return n(new ss(t))}}(i,r)),lr()})),Mc(n))}function Mc(n){return Vc(),function(n,t){var r;if(!(t>=0))throw fu(ie("Count 'n' must be non-negative, but was "+t+"."));switch(t){case 0:r="";break;case 1:r=ie(n);break;default:var i="";if(0!==Wi(n))for(var e=ie(n),u=t;1&~u||(i+=e),0!=(u=u>>>1|0);)e+=e;return i}return r}(" ",n.we()-1|0)+"- "}function Fc(n){return Vc(),n.gb(["invisible-text","error-icon"]),lr()}function Dc(n){return Vc(),n.gb(["invisible-text","advice-icon"]),lr()}function Oc(n){return Vc(),n.gb(["invisible-text","warning-icon"]),lr()}function Rc(n){return Vc(),n.gb(["invisible-text","enum-icon"]),lr()}function Hc(n){return Vc(),new kc(n)}function $c(n){return Vc(),new kc(n)}function Gc(n){return Vc(),n.gb(["invisible-text","leaf-icon"]),lr()}function Uc(n){return Vc(),n.t9("java-exception"),lr()}function Vc(){if(!Sn){Sn=!0;var n=Ff();qn=n.fb(Jf(Fc),"[error] ");var t=Ff();Bn=t.fb(Jf(Dc),"[advice] ");var r=Ff();Cn=r.fb(Jf(Oc),"[warn] ");var i=Ff();xn=i.fb(Jf(Rc),"[enum] "),jn=new Du,Pn=new Du(Hc),In=new Mu($c)}}return Ge(Yn,A,Re),Ge(tt,A,Re),Ge(rt,A,Re),Ge(Ti,"Collection",Ye),Ge(it,"AbstractCollection",Re,A,[Ti]),Ge(et,"IteratorImpl",Re),Ge(ut,"ListIteratorImpl",Re,et),Ge(ot,"Companion",Ke),Ge(Ei,"List",Ye,A,[Ti]),Ge(st,"AbstractList",Re,it,[it,Ei]),Ge(ct,A,Re),Ge(lt,"Companion",Ke),Ge(vt,A,Re,it),Ge(Ni,"Map",Ye),Ge(dt,"AbstractMap",Re,A,[Ni]),Ge(gt,"Companion",Ke),Ge(li,"RandomAccess",Ye),Ge(yt,"EmptyList",Ke,A,[Ei,li]),Ge(qt,"ArrayAsCollection",Re,A,[Ti]),Ge(Bt,"EmptyIterator",Ke),Ge(Pt,"IntIterator",Re),Ge(It,A,Re),Ge(St,"ReversedListReadOnly",Re,st),Ge(zt,A,Re),Ge(Et,"TransformingSequence",Re),Ge(Lt,A,Re),Ge(Nt,"FilteringSequence",Re),Ge(Mi,"Set",Ye,A,[Ti]),Ge(Mt,"EmptySet",Ke,A,[Mi]),Ge(Ot,"Companion",Ke),Ge(Vt,"IntProgression",Re),Ge(Ht,"IntRange",Re,Vt),Ge($t,"IntProgressionIterator",Re,Pt),Ge(Gt,"Companion",Ke),Ge(er,A,Re),Ge(ur,"DelimitedRangesSequence",Re),Ge(or,"Pair",Re),Ge(sr,"CharSequence",Ye),Ge(cr,"Comparable",Ye),Ge(ar,"Number",Re),Ge(hr,"Unit",Ke),Ge(_r,"IntCompanionObject",Ke),Ge(mr,"AbstractMutableCollection",Re,it,[it,Ti]),Ge(kr,"IteratorImpl",Re),Ge(yr,"ListIteratorImpl",Re,kr),Ge(qr,"AbstractMutableList",Re,mr,[mr,Ei,Ti]),Ge(Br,A,Re),Ge(Cr,A,Re),Ge(Li,"Entry",Ye),Ge(Ai,"MutableEntry",Ye,A,[Li]),Ge(xr,"SimpleEntry",Re,A,[Ai]),Ge(zr,"AbstractMutableSet",Re,mr,[mr,Ti,Mi]),Ge(jr,"AbstractEntrySet",Re,zr),Ge(Pr,A,Re,zr),Ge(Ir,A,Re,mr),Ge(Sr,"AbstractMutableMap",Re,dt,[dt,Ni]),Ge(Er,"Companion",Ke),Ge(Fr,"ArrayList",Re,qr,[qr,Ei,Ti,li]),Ge(Rr,"HashCode",Ke),Ge(Hr,"EntrySet",Re,jr),Ge(Vr,"HashMap",Re,Sr,[Sr,Ni]),Ge(Zr,"HashSet",Re,zr,[zr,Ti,Mi]),Ge(Xr,A,Re),Ge(ni,"InternalMap",Ye),Ge(Jr,"InternalHashCodeMap",Re,A,[ni]),Ge(ti,"EntryIterator",Re),Ge(ri,"Companion",Ke),Ge(ei,"ChainEntry",Re,xr),Ge(ui,"EntrySet",Re,jr),Ge(si,"LinkedHashMap",Re,Vr,[Vr,Ni]),Ge(ci,"Companion",Ke),Ge(hi,"LinkedHashSet",Re,Zr,[Zr,Ti,Mi]),Ge(_i,"BaseOutput",Re),Ge(vi,"NodeJsOutput",Re,_i),Ge(gi,"BufferedOutput",Re,_i),Ge(di,"BufferedOutputToConsoleLog",Re,gi),Ge(pi,"StringBuilder",Re,A,[sr]),Ge(yi,"Companion",Ke),Ge(Bi,"Regex",Re),Ge(Ii,"Companion",Ke),Ge(zi,"Char",Re,A,[cr]),Ge(Fi,"Companion",Ke),Ge(Di,"Enum",Re,A,[cr]),Ge(Hi,A,Re),Ge(ve,"Companion",Ke),Ge(de,"Long",Re,ar,[ar,cr]),Ge(iu,"Letter",Ke),Ge(uu,"OtherLowercase",Ke),Ge(du,"Exception",Re,Error),Ge(bu,"RuntimeException",Re,du),Ge(su,"IllegalArgumentException",Re,bu),Ge(au,"IndexOutOfBoundsException",Re,bu),Ge(lu,"IllegalStateException",Re,bu),Ge(ku,"NoSuchElementException",Re,bu),Ge(qu,"ArithmeticException",Re,bu),Ge(xu,"UnsupportedOperationException",Re,bu),Ge(Pu,"NullPointerException",Re,bu),Ge(Su,"NoWhenBranchMatchedException",Re,bu),Ge(Eu,"ClassCastException",Re,bu),Ge(Lu,"UninitializedPropertyAccessException",Re,bu),Ge(Au,"Model",Re),Ge(Mu,"CopyButtonComponent",Re),Ge(Du,"PrettyTextComponent",Re),Ge(Yu,"ProblemNode",Re),Ge(Ou,"Exception",Re,Yu),Ge(Ru,"StackTracePart",Re),Ge(Hu,"Error",Re,Yu),Ge($u,"Warning",Re,Yu),Ge(Gu,"Message",Re,Yu),Ge(Uu,"ListElement",Re,Yu),Ge(Vu,"TreeNode",Re,Yu),Ge(Qu,"Link",Re,Yu),Ge(Zu,"Label",Re,Yu),Ge(io,"Info",Re,Yu),Ge(eo,"Project",Re,Yu),Ge(uo,"Task",Re,Yu),Ge(oo,"TaskPath",Re,Yu),Ge(fo,"Bean",Re,Yu),Ge(so,"SystemProperty",Re,Yu),Ge(co,"Property",Re,Yu),Ge(ao,"BuildLogic",Re,Yu),Ge(ho,"BuildLogicClass",Re,Yu),Ge(Bc,"BaseIntent",Re),Ge(yc,"TreeIntent",Re,Bc),Ge(vo,"TaskTreeIntent",Re,yc),Ge(go,"MessageTreeIntent",Re,yc),Ge(wo,"InputTreeIntent",Re,yc),Ge(bo,"IncompatibleTaskTreeIntent",Re,yc),Ge(yo,"Intent",Re,Bc),Ge(po,"SetTab",Re,yo),Ge(mo,"Model",Re),Ge(ko,"Tab",Re,Di),Ge(Uo,"ConfigurationCacheReportPage",Ke),Ge(Zo,"ImportedProblem",Re),Ge(Yo,"ImportedDiagnostics",Re),Ge(ff,"sam$kotlin_Comparator$0",Re),Ge(bf,"LearnMore",Re),Ge(kf,"Fragment",Re),Ge(pf,"Text",Re,kf),Ge(mf,"Reference",Re,kf),Ge(yf,"Builder",Re),Ge(qf,"Companion",Ke),Ge(Cf,"PrettyText",Re),Ge(xf,"Companion",Ke),Ge(Sf,"Trie",Re),Ge(Uf,"ViewFactory",Re),Ge(Vf,"Companion",Ke),Ge(Xf,"View",Re),Ge(Zf,"Empty",Ke,Xf),Ge(Wf,"Element",Re,Xf),Ge(Kf,"MappedView",Re,Xf),Ge(ns,"Attributes",Re),Ge(es,"Attribute",Re),Ge(ts,"OnEvent",Re,es),Ge(rs,"ClassName",Re,es),Ge(is,"Named",Re,es),Ge(as,"Intent",Re),Ge(ss,"Toggle",Re,as),Ge(cs,"Model",Re),Ge(ls,"TreeView",Ke),Ge(bs,"Focus",Re),Ge(ds,"Original",Re,bs),Ge(gs,"Child",Re,bs),Ge(ws,"ViewState",Re,Di),Ge(ks,"Tree",Re),Ge(Bs,"Tab",Re,Di),Ge(Cs,"ProblemIdElement",Re),Ge(xs,"ProblemSummary",Re),Ge(Is,"ProblemNodeGroup",Re),Ge(Zs,"ProblemApiNode",Re,Yu),Ge(Us,"Text",Re,Zs),Ge(Vs,"ProblemIdNode",Re,Zs),Ge(Qs,"Advice",Re,Yu),Ge(Ys,"MessageTreeIntent",Re,yc),Ge(Ws,"ProblemIdTreeIntent",Re,yc),Ge(Ks,"FileLocationTreeIntent",Re,yc),Ge(nc,"Intent",Re,Bc),Ge(Xs,"SetTab",Re,nc),Ge(Js,"Model",Re),Ge(bc,"ProblemsReportPage",Ke),Ge(kc,"Copy",Re,Bc),Ge(qc,"ToggleStackTracePart",Re,Bc),se(Yn).f=function(){return this.n_1.f()},se(tt).f=function(){return this.r_1.f()},se(rt).f=function(){var n,t,r=function(n,t){for(var r=n.f();r.g();){var i=r.h();t.d(i)}return t}(this.s_1,Lr());return n=r,t=this.t_1,function(n,t){if(n.k()<=1)return lr();var r=br(n);!function(n,t){if(function(){if(null!=l)return l;l=!1;var n=[],t=0;if(t<600)do{var r=t;t=t+1|0,n.push(r)}while(t<600);var i=Or;n.sort(i);var e=1,u=n.length;if(e<u)do{var o=e;e=e+1|0;var f=n[o-1|0],s=n[o];if((3&f)==(3&s)&&f>=s)return!1}while(e<u);return l=!0,!0}()){var r=(i=t,function(n,t){return i.compare(n,t)});n.sort(r)}else!function(n,t,r,i){var e=n.length,u=function(n){var t=0,r=n.length-1|0;if(t<=r)do{var i=t;t=t+1|0,n[i]=null}while(i!==r);return n}(Array(e)),o=Dr(n,u,0,r,i);if(o!==n){var f=0;if(f<=r)do{var s=f;f=f+1|0,n[s]=o[s]}while(s!==r)}}(n,0,Nn(n),t);var i}(r,t);var i=0,e=r.length;if(i<e)do{var u=i;i=i+1|0,n.f4(u,r[u])}while(i<e)}(n,t),r.f()},se(it).u=function(n){var t;n:if(Ue(this,Ti)&&this.i())t=!1;else{for(var r=this.f();r.g();)if(oe(r.h(),n)){t=!0;break n}t=!1}return t},se(it).v=function(n){var t;n:if(Ue(n,Ti)&&n.i())t=!0;else{for(var r=n.f();r.g();){var i=r.h();if(!this.u(i)){t=!1;break n}}t=!0}return t},se(it).i=function(){return 0===this.k()},se(it).toString=function(){return Mn(this,", ","[","]",A,A,(n=this,function(t){return t===n?"(this Collection)":Oi(t)}));var n},se(it).toArray=function(){return dr(this)},se(et).g=function(){return this.w_1<this.x_1.k()},se(et).h=function(){if(!this.g())throw pu();var n=this.w_1;return this.w_1=n+1|0,this.x_1.j(n)},se(ut).c1=function(){return this.w_1>0},se(ut).d1=function(){if(!this.c1())throw pu();return this.w_1=this.w_1-1|0,this.a1_1.j(this.w_1)},se(ot).e1=function(n,t){if(n<0||n>=t)throw cu("index: "+n+", size: "+t)},se(ot).b1=function(n,t){if(n<0||n>t)throw cu("index: "+n+", size: "+t)},se(ot).f1=function(n){for(var t=1,r=n.f();r.g();){var i=r.h(),e=zn(31,t),u=null==i?null:ee(i);t=e+(null==u?0:u)|0}return t},se(ot).g1=function(n,t){if(n.k()!==t.k())return!1;for(var r=t.f(),i=n.f();i.g();)if(!oe(i.h(),r.h()))return!1;return!0},se(st).f=function(){return new et(this)},se(st).l=function(n){return new ut(this,n)},se(st).equals=function(n){return n===this||!(null==n||!Ue(n,Ei))&&ft().g1(this,n)},se(st).hashCode=function(){return ft().f1(this)},se(ct).g=function(){return this.h1_1.g()},se(ct).h=function(){return this.h1_1.h().i1()},se(lt).k1=function(n){var t=n.j1(),r=null==t?null:ee(t),i=null==r?0:r,e=n.i1(),u=null==e?null:ee(e);return i^(null==u?0:u)},se(lt).l1=function(n){return Oi(n.j1())+"="+Oi(n.i1())},se(lt).m1=function(n,t){return!(null==t||!Ue(t,Li))&&!!oe(n.j1(),t.j1())&&oe(n.i1(),t.i1())},se(vt).r1=function(n){return this.q1_1.s1(n)},se(vt).u=function(n){return!(null!=n&&!Qe(n))&&this.r1(null==n||Qe(n)?n:_e())},se(vt).f=function(){return new ct(this.q1_1.o().f())},se(vt).k=function(){return this.q1_1.k()},se(dt).t1=function(n){return!(null==ht(this,n))},se(dt).s1=function(n){var t;n:{var r=this.o();if(Ue(r,Ti)&&r.i())t=!1;else{for(var i=r.f();i.g();)if(oe(i.h().i1(),n)){t=!0;break n}t=!1}}return t},se(dt).u1=function(n){if(null==n||!Ue(n,Li))return!1;var t=n.j1(),r=n.i1(),i=(Ue(this,Ni)?this:_e()).v1(t);return!(!oe(r,i)||null==i&&!(Ue(this,Ni)?this:_e()).t1(t))},se(dt).equals=function(n){if(n===this)return!0;if(null==n||!Ue(n,Ni))return!1;if(this.k()!==n.k())return!1;var t;n:{var r=n.o();if(Ue(r,Ti)&&r.i())t=!0;else{for(var i=r.f();i.g();){var e=i.h();if(!this.u1(e)){t=!1;break n}}t=!0}}return t},se(dt).v1=function(n){var t=ht(this,n);return null==t?null:t.i1()},se(dt).hashCode=function(){return ee(this.o())},se(dt).i=function(){return 0===this.k()},se(dt).k=function(){return this.o().k()},se(dt).toString=function(){var n;return Mn(this.o(),", ","{","}",A,A,(n=this,function(t){return n.p1(t)}))},se(dt).p1=function(n){return at(this,n.j1())+"="+at(this,n.i1())},se(dt).w1=function(){return null==this.o1_1&&(this.o1_1=new vt(this)),he(this.o1_1)},se(gt).x1=function(n){for(var t=0,r=n.f();r.g();){var i=r.h(),e=t,u=null==i?null:ee(i);t=e+(null==u?0:u)|0}return t},se(gt).y1=function(n,t){return n.k()===t.k()&&n.v(t)},se(yt).equals=function(n){return!(null==n||!Ue(n,Ei))&&n.i()},se(yt).hashCode=function(){return 1},se(yt).toString=function(){return"[]"},se(yt).k=function(){return 0},se(yt).i=function(){return!0},se(yt).a2=function(n){return n.i()},se(yt).v=function(n){return this.a2(n)},se(yt).j=function(n){throw cu("Empty list doesn't contain element at index "+n+".")},se(yt).f=function(){return Ct()},se(yt).l=function(n){if(0!==n)throw cu("Index: "+n);return Ct()},se(qt).k=function(){return this.b2_1.length},se(qt).i=function(){return 0===this.b2_1.length},se(qt).d2=function(n){return function(n,t){return An(n,t)>=0}(this.b2_1,n)},se(qt).e2=function(n){var t;n:if(Ue(n,Ti)&&n.i())t=!0;else{for(var r=n.f();r.g();){var i=r.h();if(!this.d2(i)){t=!1;break n}}t=!0}return t},se(qt).v=function(n){return this.e2(n)},se(qt).f=function(){return Ri(this.b2_1)},se(Bt).g=function(){return!1},se(Bt).c1=function(){return!1},se(Bt).h=function(){throw pu()},se(Bt).d1=function(){throw pu()},se(Pt).h=function(){return this.f2()},se(It).g=function(){return this.g2_1.c1()},se(It).c1=function(){return this.g2_1.g()},se(It).h=function(){return this.g2_1.d1()},se(It).d1=function(){return this.g2_1.h()},se(St).k=function(){return this.i2_1.k()},se(St).j=function(n){return this.i2_1.j(function(n,t){if(!(0<=t&&t<=kt(n)))throw cu("Element index "+t+" must be in range ["+Oe(0,kt(n))+"].");return kt(n)-t|0}(this,n))},se(St).f=function(){return this.l(0)},se(St).l=function(n){return new It(this,n)},se(zt).h=function(){return this.k2_1.m2_1(this.j2_1.h())},se(zt).g=function(){return this.j2_1.g()},se(Et).f=function(){return new zt(this)},se(Lt).h=function(){if(-1===this.o2_1&&Tt(this),0===this.o2_1)throw pu();var n=this.p2_1;return this.p2_1=null,this.o2_1=-1,null==n||Qe(n)?n:_e()},se(Lt).g=function(){return-1===this.o2_1&&Tt(this),1===this.o2_1},se(Nt).f=function(){return new Lt(this)},se(Mt).equals=function(n){return!(null==n||!Ue(n,Mi))&&n.i()},se(Mt).hashCode=function(){return 0},se(Mt).toString=function(){return"[]"},se(Mt).k=function(){return 0},se(Mt).i=function(){return!0},se(Mt).a2=function(n){return n.i()},se(Mt).v=function(n){return this.a2(n)},se(Mt).f=function(){return Ct()},se(Ht).y2=function(){return this.z2_1},se(Ht).c3=function(){return this.a3_1},se(Ht).i=function(){return this.z2_1>this.a3_1},se(Ht).equals=function(n){return n instanceof Ht&&(!(!this.i()||!n.i())||this.z2_1===n.z2_1&&this.a3_1===n.a3_1)},se(Ht).hashCode=function(){return this.i()?-1:zn(31,this.z2_1)+this.a3_1|0},se(Ht).toString=function(){return this.z2_1+".."+this.a3_1},se($t).g=function(){return this.f3_1},se($t).f2=function(){var n=this.g3_1;if(n===this.e3_1){if(!this.f3_1)throw pu();this.f3_1=!1}else this.g3_1=this.g3_1+this.d3_1|0;return n},se(Gt).q=function(n,t,r){return new Vt(n,t,r)},se(Vt).f=function(){return new $t(this.z2_1,this.a3_1,this.b3_1)},se(Vt).i=function(){return this.b3_1>0?this.z2_1>this.a3_1:this.z2_1<this.a3_1},se(Vt).equals=function(n){return n instanceof Vt&&(!(!this.i()||!n.i())||this.z2_1===n.z2_1&&this.a3_1===n.a3_1&&this.b3_1===n.b3_1)},se(Vt).hashCode=function(){return this.i()?-1:zn(31,zn(31,this.z2_1)+this.a3_1|0)+this.b3_1|0},se(Vt).toString=function(){return this.b3_1>0?this.z2_1+".."+this.a3_1+" step "+this.b3_1:this.z2_1+" downTo "+this.a3_1+" step "+(0|-this.b3_1)},se(er).h=function(){if(-1===this.j3_1&&ir(this),0===this.j3_1)throw pu();var n=this.m3_1,t=n instanceof Ht?n:_e();return this.m3_1=null,this.j3_1=-1,t},se(er).g=function(){return-1===this.j3_1&&ir(this),1===this.j3_1},se(ur).f=function(){return new er(this)},se(or).toString=function(){return"("+this.t3_1+", "+this.u3_1+")"},se(or).v3=function(){return this.t3_1},se(or).w3=function(){return this.u3_1},se(or).hashCode=function(){var n=null==this.t3_1?0:ee(this.t3_1);return zn(n,31)+(null==this.u3_1?0:ee(this.u3_1))|0},se(or).equals=function(n){if(this===n)return!0;if(!(n instanceof or))return!1;var t=n instanceof or?n:_e();return!!oe(this.t3_1,t.t3_1)&&!!oe(this.u3_1,t.u3_1)},se(hr).toString=function(){return"kotlin.Unit"},se(_r).b4=function(){return this.MIN_VALUE},se(_r).c4=function(){return this.MAX_VALUE},se(_r).d4=function(){return this.SIZE_BYTES},se(_r).e4=function(){return this.SIZE_BITS},se(mr).m=function(n){this.g4();for(var t=!1,r=n.f();r.g();){var i=r.h();this.d(i)&&(t=!0)}return t},se(mr).toJSON=function(){return this.toArray()},se(mr).g4=function(){},se(kr).g=function(){return this.h4_1<this.j4_1.k()},se(kr).h=function(){if(!this.g())throw pu();var n=this.h4_1;return this.h4_1=n+1|0,this.i4_1=n,this.j4_1.j(this.i4_1)},se(yr).c1=function(){return this.h4_1>0},se(yr).d1=function(){if(!this.c1())throw pu();return this.h4_1=this.h4_1-1|0,this.i4_1=this.h4_1,this.n4_1.j(this.i4_1)},se(qr).d=function(n){return this.g4(),this.p4(this.k(),n),!0},se(qr).f=function(){return new kr(this)},se(qr).u=function(n){return this.q4(n)>=0},se(qr).q4=function(n){var t=0,r=kt(this);if(t<=r)do{var i=t;if(t=t+1|0,oe(this.j(i),n))return i}while(i!==r);return-1},se(qr).l=function(n){return new yr(this,n)},se(qr).equals=function(n){return n===this||!(null==n||!Ue(n,Ei))&&ft().g1(this,n)},se(qr).hashCode=function(){return ft().f1(this)},se(Br).g=function(){return this.r4_1.g()},se(Br).h=function(){return this.r4_1.h().j1()},se(Cr).g=function(){return this.s4_1.g()},se(Cr).h=function(){return this.s4_1.h().i1()},se(xr).j1=function(){return this.t4_1},se(xr).i1=function(){return this.u4_1},se(xr).v4=function(n){var t=this.u4_1;return this.u4_1=n,t},se(xr).hashCode=function(){return _t().k1(this)},se(xr).toString=function(){return _t().l1(this)},se(xr).equals=function(n){return _t().m1(this,n)},se(jr).u=function(n){return this.w4(n)},se(Pr).y4=function(n){throw Cu("Add is not supported on keys")},se(Pr).d=function(n){return this.y4(null==n||Qe(n)?n:_e())},se(Pr).z4=function(n){return this.x4_1.t1(n)},se(Pr).u=function(n){return!(null!=n&&!Qe(n))&&this.z4(null==n||Qe(n)?n:_e())},se(Pr).f=function(){return new Br(this.x4_1.o().f())},se(Pr).k=function(){return this.x4_1.k()},se(Pr).g4=function(){return this.x4_1.g4()},se(Ir).f5=function(n){throw Cu("Add is not supported on values")},se(Ir).d=function(n){return this.f5(null==n||Qe(n)?n:_e())},se(Ir).r1=function(n){return this.e5_1.s1(n)},se(Ir).u=function(n){return!(null!=n&&!Qe(n))&&this.r1(null==n||Qe(n)?n:_e())},se(Ir).f=function(){return new Cr(this.e5_1.o().f())},se(Ir).k=function(){return this.e5_1.k()},se(Ir).g4=function(){return this.e5_1.g4()},se(Sr).g5=function(){return null==this.c5_1&&(this.c5_1=new Pr(this)),he(this.c5_1)},se(Sr).w1=function(){return null==this.d5_1&&(this.d5_1=new Ir(this)),he(this.d5_1)},se(Sr).g4=function(){},se(zr).equals=function(n){return n===this||!(null==n||!Ue(n,Mi))&&wt().y1(this,n)},se(zr).hashCode=function(){return wt().x1(this)},se(Fr).j5=function(){return this.g4(),this.c_1=!0,this.k()>0?this:Tr().i5_1},se(Fr).k=function(){return this.b_1.length},se(Fr).j=function(n){var t=this.b_1[Mr(this,n)];return null==t||Qe(t)?t:_e()},se(Fr).f4=function(n,t){this.g4(),Mr(this,n);var r=this.b_1[n];this.b_1[n]=t;var i=r;return null==i||Qe(i)?i:_e()},se(Fr).d=function(n){return this.g4(),this.b_1.push(n),this.o4_1=this.o4_1+1|0,!0},se(Fr).p4=function(n,t){this.g4(),this.b_1.splice(function(n,t){return ft().b1(t,n.k()),t}(this,n),0,t),this.o4_1=this.o4_1+1|0},se(Fr).m=function(n){if(this.g4(),n.i())return!1;for(var t,r,i,e=(t=this,r=n.k(),i=t.k(),t.b_1.length=t.k()+r|0,i),u=0,o=n.f();o.g();){var f=o.h(),s=u;u=s+1|0;var c=wr(s);this.b_1[e+c|0]=f}return this.o4_1=this.o4_1+1|0,!0},se(Fr).q4=function(n){return An(this.b_1,n)},se(Fr).toString=function(){return Ln(this.b_1,", ","[","]",A,A,Xi)},se(Fr).k5=function(){return[].slice.call(this.b_1)},se(Fr).toArray=function(){return this.k5()},se(Fr).g4=function(){if(this.c_1)throw Bu()},se(Rr).l5=function(n,t){return oe(n,t)},se(Rr).m5=function(n){var t=null==n?null:ee(n);return null==t?0:t},se(Hr).o5=function(n){throw Cu("Add is not supported on entries")},se(Hr).d=function(n){return this.o5(null!=n&&Ue(n,Ai)?n:_e())},se(Hr).w4=function(n){return this.n5_1.u1(n)},se(Hr).f=function(){return this.n5_1.t5_1.f()},se(Hr).k=function(){return this.n5_1.k()},se(Vr).t1=function(n){return this.t5_1.z4(n)},se(Vr).s1=function(n){var t;n:{var r=this.t5_1;if(Ue(r,Ti)&&r.i())t=!1;else{for(var i=r.f();i.g();){var e=i.h();if(this.u5_1.l5(e.i1(),n)){t=!0;break n}}t=!1}}return t},se(Vr).o=function(){return null==this.v5_1&&(this.v5_1=this.x5()),he(this.v5_1)},se(Vr).x5=function(){return new Hr(this)},se(Vr).v1=function(n){return this.t5_1.v1(n)},se(Vr).h5=function(n,t){return this.t5_1.h5(n,t)},se(Vr).k=function(){return this.t5_1.k()},se(Zr).d=function(n){return null==this.y5_1.h5(n,this)},se(Zr).u=function(n){return this.y5_1.t1(n)},se(Zr).i=function(){return this.y5_1.i()},se(Zr).f=function(){return this.y5_1.g5().f()},se(Zr).k=function(){return this.y5_1.k()},se(Xr).g=function(){return-1===this.z5_1&&(this.z5_1=function(n){if(null!=n.c6_1&&n.d6_1){var t=n.c6_1.length;if(n.e6_1=n.e6_1+1|0,n.e6_1<t)return 0}if(n.b6_1=n.b6_1+1|0,n.b6_1<n.a6_1.length){n.c6_1=n.g6_1.i6_1[n.a6_1[n.b6_1]];var r=n,i=n.c6_1;return r.d6_1=null!=i&&Ve(i),n.e6_1=0,0}return n.c6_1=null,1}(this)),0===this.z5_1},se(Xr).h=function(){if(!this.g())throw pu();var n=this.d6_1?this.c6_1[this.e6_1]:this.c6_1;return this.f6_1=n,this.z5_1=-1,n},se(Jr).w5=function(){return this.h6_1},se(Jr).k=function(){return this.j6_1},se(Jr).h5=function(n,t){var r=this.h6_1.m5(n),i=Kr(this,r);if(null==i)this.i6_1[r]=new xr(n,t);else{if(null==i||!Ve(i)){var e,u=i;return this.h6_1.l5(u.j1(),n)?u.v4(t):(e=[u,new xr(n,t)],this.i6_1[r]=e,this.j6_1=this.j6_1+1|0,null)}var o=i,f=Wr(o,this,n);if(null!=f)return f.v4(t);o.push(new xr(n,t))}return this.j6_1=this.j6_1+1|0,null},se(Jr).z4=function(n){return!(null==Yr(this,n))},se(Jr).v1=function(n){var t=Yr(this,n);return null==t?null:t.i1()},se(Jr).f=function(){return new Xr(this)},se(ti).g=function(){return!(null===this.m6_1)},se(ti).h=function(){if(!this.g())throw pu();var n=he(this.m6_1);this.l6_1=n;var t,r=n.b7_1;return t=r!==this.n6_1.y6_1.v6_1?r:null,this.m6_1=t,n},se(ei).v4=function(n){return this.d7_1.g4(),se(xr).v4.call(this,n)},se(ui).o5=function(n){throw Cu("Add is not supported on entries")},se(ui).d=function(n){return this.o5(null!=n&&Ue(n,Ai)?n:_e())},se(ui).w4=function(n){return this.y6_1.u1(n)},se(ui).f=function(){return new ti(this)},se(ui).k=function(){return this.y6_1.k()},se(ui).g4=function(){return this.y6_1.g4()},se(si).j5=function(){var n;if(this.g4(),this.x6_1=!0,this.k()>0)n=this;else{var t=ii().e7_1;n=Ue(t,Ni)?t:_e()}return n},se(si).t1=function(n){return this.w6_1.t1(n)},se(si).s1=function(n){var t=this.v6_1;if(null==t)return!1;var r=t;do{if(oe(r.i1(),n))return!0;r=he(r.b7_1)}while(r!==this.v6_1);return!1},se(si).x5=function(){return new ui(this)},se(si).v1=function(n){var t=this.w6_1.v1(n);return null==t?null:t.i1()},se(si).h5=function(n,t){this.g4();var r=this.w6_1.v1(n);if(null==r){var i=new ei(this,n,t);return this.w6_1.h5(n,i),function(n,t){if(null!=n.b7_1||null!=n.c7_1)throw hu(ie("Check failed."));var r=t.v6_1;if(null==r)t.v6_1=n,n.b7_1=n,n.c7_1=n;else{var i=r.c7_1;if(null==i)throw hu(ie("Required value was null."));var e=i;n.c7_1=e,n.b7_1=r,r.c7_1=n,e.b7_1=n}}(i,this),null}return r.v4(t)},se(si).k=function(){return this.w6_1.k()},se(si).g4=function(){if(this.x6_1)throw Bu()},se(hi).g4=function(){return this.y5_1.g4()},se(_i).h7=function(){this.i7("\n")},se(_i).j7=function(n){this.i7(n),this.h7()},se(vi).i7=function(n){var t=String(n);this.k7_1.write(t)},se(di).i7=function(n){var t=String(n),r=t.lastIndexOf("\n",0);if(r>=0){var i=this.m7_1;this.m7_1=i+t.substring(0,r),this.n7();var e=r+1|0;t=t.substring(e)}this.m7_1=this.m7_1+t},se(di).n7=function(){console.log(this.m7_1),this.m7_1=""},se(gi).i7=function(n){var t=this.m7_1;this.m7_1=t+String(n)},se(pi).x3=function(){return this.o7_1.length},se(pi).y3=function(n){var t=this.o7_1;if(!(n>=0&&n<=Yt(t)))throw cu("index: "+n+", length: "+this.x3()+"}");return Zi(t,n)},se(pi).z3=function(n,t){return this.o7_1.substring(n,t)},se(pi).i3=function(n){return this.o7_1=this.o7_1+new zi(n),this},se(pi).e=function(n){return this.o7_1=this.o7_1+Oi(n),this},se(pi).p7=function(n){var t=this.o7_1;return this.o7_1=t+(null==n?"null":n),this},se(pi).toString=function(){return this.o7_1},se(yi).t7=function(n){var t=this.q7_1;return n.replace(t,"\\$&")},se(yi).u7=function(n){var t=this.s7_1;return n.replace(t,"$$$$")},se(Bi).a8=function(n){this.x7_1.lastIndex=0;var t=this.x7_1.exec(ie(n));return null!=t&&0===t.index&&this.x7_1.lastIndex===Wi(n)},se(Bi).toString=function(){return this.x7_1.toString()},se(zi).o8=function(n){return ji(this.h3_1,n)},se(zi).a4=function(n){return function(n,t){return ji(n.h3_1,t instanceof zi?t.h3_1:_e())}(this,n)},se(zi).equals=function(n){return function(n,t){return t instanceof zi&&n===t.h3_1}(this.h3_1,n)},se(zi).hashCode=function(){return this.h3_1},se(zi).toString=function(){return Pi(this.h3_1)},se(Di).r8=function(n){return Ji(this.q8_1,n.q8_1)},se(Di).a4=function(n){return this.r8(n instanceof Di?n:_e())},se(Di).equals=function(n){return this===n},se(Di).hashCode=function(){return re(this)},se(Di).toString=function(){return this.p8_1},se(Hi).g=function(){return!(this.s8_1===this.t8_1.length)},se(Hi).h=function(){if(this.s8_1===this.t8_1.length)throw mu(""+this.s8_1);var n=this.s8_1;return this.s8_1=n+1|0,this.t8_1[n]},se(de).b9=function(n){return ke(this,n)},se(de).a4=function(n){return this.b9(n instanceof de?n:_e())},se(de).c9=function(n){return ye(this,n)},se(de).d9=function(n){return function(n,t){if(Me(),Se(t))throw vu("division by zero");if(Se(n))return ge();if(xe(n,pe())){if(xe(t,we())||xe(t,be()))return pe();if(xe(t,pe()))return we();var r=function(n){Me();return new de(n.u8_1>>>1|n.v8_1<<31,n.v8_1>>1)}(n),i=function(n){Me();return new de(n.u8_1<<1,n.v8_1<<1|n.u8_1>>>31)}(r.d9(t));return xe(i,ge())?Ie(t)?we():be():ye(i,qe(n,Be(t,i)).d9(t))}if(xe(t,pe()))return ge();if(Ie(n))return Ie(t)?Ee(n).d9(Ee(t)):Ee(Ee(n).d9(t));if(Ie(t))return Ee(n.d9(Ee(t)));for(var e=ge(),u=n;Ae(u,t);){for(var o=Ce(u)/Ce(t),f=Math.max(1,Math.floor(o)),s=Math.ceil(Math.log(f)/Math.LN2),c=s<=48?1:Math.pow(2,s-48),a=Le(f),h=Be(a,t);Ie(h)||Ne(h,u);)h=Be(a=Le(f-=c),t);Se(a)&&(a=we()),e=ye(e,a),u=qe(u,h)}return e}(this,n)},se(de).e9=function(){return this.f9().c9(new de(1,0))},se(de).f9=function(){return new de(~this.u8_1,~this.v8_1)},se(de).g9=function(){return this.u8_1},se(de).w8=function(){return Ce(this)},se(de).valueOf=function(){return this.w8()},se(de).equals=function(n){return n instanceof de&&xe(this,n)},se(de).hashCode=function(){return Me(),this.u8_1^this.v8_1},se(de).toString=function(){return je(this,10)},se(Au).toString=function(){return"Model(text="+this.o9_1+", tooltip="+this.p9_1+")"},se(Au).hashCode=function(){var n=ue(this.o9_1);return zn(n,31)+ue(this.p9_1)|0},se(Au).equals=function(n){if(this===n)return!0;if(!(n instanceof Au))return!1;var t=n instanceof Au?n:_e();return this.o9_1===t.o9_1&&this.p9_1===t.p9_1},se(Mu).v9=function(n,t){return this.w9(new Au(n,t))},se(Mu).w9=function(n){var t,r;return Df().y9(Jf((t=n,r=this,function(n){return n.s9(t.p9_1),n.t9("copy-button"),n.u9(function(n,t){return function(r){return n.q9_1(t.o9_1)}}(r,t)),lr()})),[])},se(Mu).z9=function(n){return this.w9(n instanceof Au?n:_e())},se(Mu).aa=function(n,t){return t},se(Mu).ba=function(n,t){var r=null==n||Qe(n)?n:_e();return this.aa(r,t instanceof Au?t:_e())},se(Du).ka=function(n){return function(n,t){for(var r=Ff(),i=t.ca_1,e=Nr(xt(i,10)),u=i.f();u.g();){var o,f,s=u.h();s instanceof pf?f=Ff().ga(s.fa_1):s instanceof mf?f=Fu(n,s.da_1,s.ea_1):le(),o=f,e.d(o)}return r.ha(e)}(this,n)},se(Du).z9=function(n){return this.ka(n instanceof Cf?n:_e())},se(Du).la=function(n,t){return t},se(Du).ba=function(n,t){var r=null==n||Qe(n)?n:_e();return this.la(r,t instanceof Cf?t:_e())},se(Ou).pa=function(n,t,r){return new Ou(n,t,r)},se(Ou).qa=function(n,t,r,i){return n=n===A?this.ma_1:n,t=t===A?this.na_1:t,r=r===A?this.oa_1:r,i===A?this.pa(n,t,r):i.pa.call(this,n,t,r)},se(Ou).toString=function(){return"Exception(summary="+this.ma_1+", fullText="+this.na_1+", parts="+this.oa_1+")"},se(Ou).hashCode=function(){var n=null==this.ma_1?0:this.ma_1.hashCode();return n=zn(n,31)+ue(this.na_1)|0,zn(n,31)+ee(this.oa_1)|0},se(Ou).equals=function(n){if(this===n)return!0;if(!(n instanceof Ou))return!1;var t=n instanceof Ou?n:_e();return!!oe(this.ma_1,t.ma_1)&&this.na_1===t.na_1&&!!oe(this.oa_1,t.oa_1)},se(Ru).ta=function(n,t){return new Ru(n,t)},se(Ru).ua=function(n,t,r){return n=n===A?this.ra_1:n,t=t===A?this.sa_1:t,r===A?this.ta(n,t):r.ta.call(this,n,t)},se(Ru).toString=function(){return"StackTracePart(lines="+this.ra_1+", state="+this.sa_1+")"},se(Ru).hashCode=function(){var n=ee(this.ra_1);return zn(n,31)+(null==this.sa_1?0:this.sa_1.hashCode())|0},se(Ru).equals=function(n){if(this===n)return!0;if(!(n instanceof Ru))return!1;var t=n instanceof Ru?n:_e();return!!oe(this.ra_1,t.ra_1)&&!!oe(this.sa_1,t.sa_1)},se(Hu).toString=function(){return"Error(label="+this.va_1+", docLink="+this.wa_1+")"},se(Hu).hashCode=function(){var n=ee(this.va_1);return zn(n,31)+(null==this.wa_1?0:ee(this.wa_1))|0},se(Hu).equals=function(n){if(this===n)return!0;if(!(n instanceof Hu))return!1;var t=n instanceof Hu?n:_e();return!!oe(this.va_1,t.va_1)&&!!oe(this.wa_1,t.wa_1)},se($u).toString=function(){return"Warning(label="+this.xa_1+", docLink="+this.ya_1+")"},se($u).hashCode=function(){var n=ee(this.xa_1);return zn(n,31)+(null==this.ya_1?0:ee(this.ya_1))|0},se($u).equals=function(n){if(this===n)return!0;if(!(n instanceof $u))return!1;var t=n instanceof $u?n:_e();return!!oe(this.xa_1,t.xa_1)&&!!oe(this.ya_1,t.ya_1)},se(Gu).toString=function(){return"Message(prettyText="+this.za_1+")"},se(Gu).hashCode=function(){return this.za_1.hashCode()},se(Gu).equals=function(n){if(this===n)return!0;if(!(n instanceof Gu))return!1;var t=n instanceof Gu?n:_e();return!!this.za_1.equals(t.za_1)},se(Uu).toString=function(){return"ListElement(prettyText="+this.ab_1+")"},se(Uu).hashCode=function(){return this.ab_1.hashCode()},se(Uu).equals=function(n){if(this===n)return!0;if(!(n instanceof Uu))return!1;var t=n instanceof Uu?n:_e();return!!this.ab_1.equals(t.ab_1)},se(Vu).toString=function(){return"TreeNode(prettyText="+this.bb_1+")"},se(Vu).hashCode=function(){return this.bb_1.hashCode()},se(Vu).equals=function(n){if(this===n)return!0;if(!(n instanceof Vu))return!1;var t=n instanceof Vu?n:_e();return!!this.bb_1.equals(t.bb_1)},se(Qu).toString=function(){return"Link(href="+this.cb_1+", label="+this.db_1+")"},se(Qu).hashCode=function(){var n=ue(this.cb_1);return zn(n,31)+ue(this.db_1)|0},se(Qu).equals=function(n){if(this===n)return!0;if(!(n instanceof Qu))return!1;var t=n instanceof Qu?n:_e();return this.cb_1===t.cb_1&&this.db_1===t.db_1},se(Zu).toString=function(){return"Label(text="+this.eb_1+")"},se(Zu).hashCode=function(){return ue(this.eb_1)},se(Zu).equals=function(n){if(this===n)return!0;if(!(n instanceof Zu))return!1;var t=n instanceof Zu?n:_e();return this.eb_1===t.eb_1},se(io).toString=function(){return"Info(label="+this.hb_1+", docLink="+this.ib_1+")"},se(io).hashCode=function(){var n=ee(this.hb_1);return zn(n,31)+(null==this.ib_1?0:ee(this.ib_1))|0},se(io).equals=function(n){if(this===n)return!0;if(!(n instanceof io))return!1;var t=n instanceof io?n:_e();return!!oe(this.hb_1,t.hb_1)&&!!oe(this.ib_1,t.ib_1)},se(eo).toString=function(){return"Project(path="+this.jb_1+")"},se(eo).hashCode=function(){return ue(this.jb_1)},se(eo).equals=function(n){if(this===n)return!0;if(!(n instanceof eo))return!1;var t=n instanceof eo?n:_e();return this.jb_1===t.jb_1},se(uo).toString=function(){return"Task(path="+this.kb_1+", type="+this.lb_1+")"},se(uo).hashCode=function(){var n=ue(this.kb_1);return zn(n,31)+ue(this.lb_1)|0},se(uo).equals=function(n){if(this===n)return!0;if(!(n instanceof uo))return!1;var t=n instanceof uo?n:_e();return this.kb_1===t.kb_1&&this.lb_1===t.lb_1},se(oo).toString=function(){return"TaskPath(path="+this.mb_1+")"},se(oo).hashCode=function(){return ue(this.mb_1)},se(oo).equals=function(n){if(this===n)return!0;if(!(n instanceof oo))return!1;var t=n instanceof oo?n:_e();return this.mb_1===t.mb_1},se(fo).toString=function(){return"Bean(type="+this.nb_1+")"},se(fo).hashCode=function(){return ue(this.nb_1)},se(fo).equals=function(n){if(this===n)return!0;if(!(n instanceof fo))return!1;var t=n instanceof fo?n:_e();return this.nb_1===t.nb_1},se(so).toString=function(){return"SystemProperty(name="+this.ob_1+")"},se(so).hashCode=function(){return ue(this.ob_1)},se(so).equals=function(n){if(this===n)return!0;if(!(n instanceof so))return!1;var t=n instanceof so?n:_e();return this.ob_1===t.ob_1},se(co).toString=function(){return"Property(kind="+this.pb_1+", name="+this.qb_1+", owner="+this.rb_1+")"},se(co).hashCode=function(){var n=ue(this.pb_1);return n=zn(n,31)+ue(this.qb_1)|0,zn(n,31)+ue(this.rb_1)|0},se(co).equals=function(n){if(this===n)return!0;if(!(n instanceof co))return!1;var t=n instanceof co?n:_e();return this.pb_1===t.pb_1&&this.qb_1===t.qb_1&&this.rb_1===t.rb_1},se(ao).toString=function(){return"BuildLogic(location="+this.sb_1+")"},se(ao).hashCode=function(){return ue(this.sb_1)},se(ao).equals=function(n){if(this===n)return!0;if(!(n instanceof ao))return!1;var t=n instanceof ao?n:_e();return this.sb_1===t.sb_1},se(ho).toString=function(){return"BuildLogicClass(type="+this.tb_1+")"},se(ho).hashCode=function(){return ue(this.tb_1)},se(ho).equals=function(n){if(this===n)return!0;if(!(n instanceof ho))return!1;var t=n instanceof ho?n:_e();return this.tb_1===t.tb_1},se(vo).zb=function(){return this.yb_1},se(vo).toString=function(){return"TaskTreeIntent(delegate="+this.yb_1+")"},se(vo).hashCode=function(){return ee(this.yb_1)},se(vo).equals=function(n){if(this===n)return!0;if(!(n instanceof vo))return!1;var t=n instanceof vo?n:_e();return!!oe(this.yb_1,t.yb_1)},se(go).zb=function(){return this.ac_1},se(go).toString=function(){return"MessageTreeIntent(delegate="+this.ac_1+")"},se(go).hashCode=function(){return ee(this.ac_1)},se(go).equals=function(n){if(this===n)return!0;if(!(n instanceof go))return!1;var t=n instanceof go?n:_e();return!!oe(this.ac_1,t.ac_1)},se(wo).zb=function(){return this.bc_1},se(wo).toString=function(){return"InputTreeIntent(delegate="+this.bc_1+")"},se(wo).hashCode=function(){return ee(this.bc_1)},se(wo).equals=function(n){if(this===n)return!0;if(!(n instanceof wo))return!1;var t=n instanceof wo?n:_e();return!!oe(this.bc_1,t.bc_1)},se(bo).zb=function(){return this.cc_1},se(bo).toString=function(){return"IncompatibleTaskTreeIntent(delegate="+this.cc_1+")"},se(bo).hashCode=function(){return ee(this.cc_1)},se(bo).equals=function(n){if(this===n)return!0;if(!(n instanceof bo))return!1;var t=n instanceof bo?n:_e();return!!oe(this.cc_1,t.cc_1)},se(po).toString=function(){return"SetTab(tab="+this.dc_1+")"},se(po).hashCode=function(){return this.dc_1.hashCode()},se(po).equals=function(n){if(this===n)return!0;if(!(n instanceof po))return!1;var t=n instanceof po?n:_e();return!!this.dc_1.equals(t.dc_1)},se(mo).mc=function(n,t,r,i,e,u,o,f){return new mo(n,t,r,i,e,u,o,f)},se(mo).nc=function(n,t,r,i,e,u,o,f,s){return n=n===A?this.ec_1:n,t=t===A?this.fc_1:t,r=r===A?this.gc_1:r,i=i===A?this.hc_1:i,e=e===A?this.ic_1:e,u=u===A?this.jc_1:u,o=o===A?this.kc_1:o,f=f===A?this.lc_1:f,s===A?this.mc(n,t,r,i,e,u,o,f):s.mc.call(this,n,t,r,i,e,u,o,f)},se(mo).toString=function(){return"Model(heading="+this.ec_1+", summary="+this.fc_1+", learnMore="+this.gc_1+", messageTree="+this.hc_1+", locationTree="+this.ic_1+", inputTree="+this.jc_1+", incompatibleTaskTree="+this.kc_1+", tab="+this.lc_1+")"},se(mo).hashCode=function(){var n=this.ec_1.hashCode();return n=zn(n,31)+ee(this.fc_1)|0,n=zn(n,31)+this.gc_1.hashCode()|0,n=zn(n,31)+this.hc_1.hashCode()|0,n=zn(n,31)+this.ic_1.hashCode()|0,n=zn(n,31)+this.jc_1.hashCode()|0,n=zn(n,31)+this.kc_1.hashCode()|0,zn(n,31)+this.lc_1.hashCode()|0},se(mo).equals=function(n){if(this===n)return!0;if(!(n instanceof mo))return!1;var t=n instanceof mo?n:_e();return!!(this.ec_1.equals(t.ec_1)&&oe(this.fc_1,t.fc_1)&&this.gc_1.equals(t.gc_1)&&this.hc_1.equals(t.hc_1)&&this.ic_1.equals(t.ic_1)&&this.jc_1.equals(t.jc_1)&&this.kc_1.equals(t.kc_1)&&this.lc_1.equals(t.lc_1))},se(Uo).gd=function(n,t){var r,i;return n instanceof vo?r=t.nc(A,A,A,A,_s().id(n.yb_1,t.ic_1)):n instanceof go?r=t.nc(A,A,A,_s().id(n.ac_1,t.hc_1)):n instanceof wo?r=t.nc(A,A,A,A,A,_s().id(n.bc_1,t.jc_1)):n instanceof bo?r=t.nc(A,A,A,A,A,A,_s().id(n.cc_1,t.kc_1)):n instanceof qc?r=function(n,t,r,i){var e;return r instanceof go?e=n.nc(A,A,A,mc(n.hc_1,r,i)):r instanceof vo?e=n.nc(A,A,A,A,mc(n.ic_1,r,i)):r instanceof wo?e=n.nc(A,A,A,A,A,mc(n.jc_1,r,i)):r instanceof bo?e=n.nc(A,A,A,A,A,A,mc(n.kc_1,r,i)):(console.error("Unhandled tree intent: "+r),e=n),e}(t,0,n.xc_1,(i=n,function(n){var t;if(!(n instanceof Ou))throw fu(ie("Failed requirement."));for(var r=n.oa_1,e=i.wc_1,u=Nr(xt(r,10)),o=0,f=r.f();f.g();){var s,c,a=f.h(),h=o;if(o=h+1|0,e===wr(h)){var l=a.sa_1;c=a.ua(A,null==l?null:l.ad())}else c=a;s=c,u.d(s)}return t=u,n.qa(A,A,t)})):n instanceof kc?
gitextract_y43zef6r/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yml
│ │ ├── config.yml
│ │ └── feature.yml
│ └── workflows/
│ ├── publish_app_dev.yaml
│ ├── publish_app_release.yml
│ ├── publish_tv_app_dev.yaml
│ └── publish_tv_app_release.yaml
├── .gitignore
├── .vscode/
│ └── settings.json
├── LICENSE
├── README.md
├── assets/
│ ├── app_version.json
│ ├── play_config.json
│ └── tv_app_version.json
├── simple_live_app/
│ ├── .fvmrc
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android/
│ │ ├── .gitignore
│ │ ├── app/
│ │ │ ├── build.gradle.kts
│ │ │ ├── proguard-rules.pro
│ │ │ └── src/
│ │ │ ├── debug/
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── kotlin/
│ │ │ │ │ └── com/
│ │ │ │ │ └── xycz/
│ │ │ │ │ └── simple_live/
│ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── res/
│ │ │ │ ├── drawable/
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v21/
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── values/
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── values-night/
│ │ │ │ │ └── styles.xml
│ │ │ │ └── xml/
│ │ │ │ └── network_security_config.xml
│ │ │ └── profile/
│ │ │ └── AndroidManifest.xml
│ │ ├── build/
│ │ │ └── reports/
│ │ │ └── problems/
│ │ │ └── problems-report.html
│ │ ├── build.gradle.kts
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ └── settings.gradle.kts
│ ├── assets/
│ │ ├── lotties/
│ │ │ ├── empty.json
│ │ │ ├── error.json
│ │ │ └── loadding.json
│ │ └── statement.txt
│ ├── distribute_options.yaml
│ ├── ios/
│ │ ├── .gitignore
│ │ ├── Flutter/
│ │ │ ├── AppFrameworkInfo.plist
│ │ │ ├── Debug.xcconfig
│ │ │ └── Release.xcconfig
│ │ ├── Podfile
│ │ ├── Runner/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── LaunchImage.imageset/
│ │ │ │ ├── Contents.json
│ │ │ │ └── README.md
│ │ │ ├── Base.lproj/
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── Runner-Bridging-Header.h
│ │ ├── Runner.xcodeproj/
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ └── xcshareddata/
│ │ │ └── xcschemes/
│ │ │ └── Runner.xcscheme
│ │ └── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ ├── lib/
│ │ ├── app/
│ │ │ ├── app_style.dart
│ │ │ ├── constant.dart
│ │ │ ├── controller/
│ │ │ │ ├── app_settings_controller.dart
│ │ │ │ └── base_controller.dart
│ │ │ ├── custom_throttle.dart
│ │ │ ├── event_bus.dart
│ │ │ ├── log.dart
│ │ │ ├── sites.dart
│ │ │ ├── utils/
│ │ │ │ ├── archive.dart
│ │ │ │ ├── document.dart
│ │ │ │ └── listen_fourth_button.dart
│ │ │ └── utils.dart
│ │ ├── main.dart
│ │ ├── models/
│ │ │ ├── account/
│ │ │ │ └── bilibili_user_info_page.dart
│ │ │ ├── db/
│ │ │ │ ├── follow_user.dart
│ │ │ │ ├── follow_user.g.dart
│ │ │ │ ├── follow_user_tag.dart
│ │ │ │ ├── follow_user_tag.g.dart
│ │ │ │ ├── history.dart
│ │ │ │ └── history.g.dart
│ │ │ ├── follow_user_item.dart
│ │ │ ├── sync_client_info_model.dart
│ │ │ └── version_model.dart
│ │ ├── modules/
│ │ │ ├── category/
│ │ │ │ ├── category_controller.dart
│ │ │ │ ├── category_list_controller.dart
│ │ │ │ ├── category_list_view.dart
│ │ │ │ ├── category_page.dart
│ │ │ │ └── detail/
│ │ │ │ ├── category_detail_controller.dart
│ │ │ │ └── category_detail_page.dart
│ │ │ ├── follow_user/
│ │ │ │ ├── follow_user_controller.dart
│ │ │ │ └── follow_user_page.dart
│ │ │ ├── home/
│ │ │ │ ├── home_controller.dart
│ │ │ │ ├── home_list_controller.dart
│ │ │ │ ├── home_list_view.dart
│ │ │ │ └── home_page.dart
│ │ │ ├── indexed/
│ │ │ │ ├── indexed_controller.dart
│ │ │ │ └── indexed_page.dart
│ │ │ ├── live_room/
│ │ │ │ ├── live_room_controller.dart
│ │ │ │ ├── live_room_page.dart
│ │ │ │ └── player/
│ │ │ │ ├── player_controller.dart
│ │ │ │ └── player_controls.dart
│ │ │ ├── mine/
│ │ │ │ ├── account/
│ │ │ │ │ ├── account_controller.dart
│ │ │ │ │ ├── account_page.dart
│ │ │ │ │ └── bilibili/
│ │ │ │ │ ├── qr_login_controller.dart
│ │ │ │ │ ├── qr_login_page.dart
│ │ │ │ │ ├── web_login_controller.dart
│ │ │ │ │ └── web_login_page.dart
│ │ │ │ ├── history/
│ │ │ │ │ ├── history_controller.dart
│ │ │ │ │ └── history_page.dart
│ │ │ │ ├── mine_page.dart
│ │ │ │ └── parse/
│ │ │ │ ├── parse_controller.dart
│ │ │ │ └── parse_page.dart
│ │ │ ├── other/
│ │ │ │ └── debug_log_page.dart
│ │ │ ├── search/
│ │ │ │ ├── douyin/
│ │ │ │ │ ├── douyin_search_controller.dart
│ │ │ │ │ └── douyin_search_view.dart
│ │ │ │ ├── search_controller.dart
│ │ │ │ ├── search_list_controller.dart
│ │ │ │ ├── search_list_view.dart
│ │ │ │ └── search_page.dart
│ │ │ ├── settings/
│ │ │ │ ├── appstyle_setting_page.dart
│ │ │ │ ├── auto_exit_settings_page.dart
│ │ │ │ ├── danmu_settings_page.dart
│ │ │ │ ├── danmu_shield/
│ │ │ │ │ ├── danmu_shield_controller.dart
│ │ │ │ │ └── danmu_shield_page.dart
│ │ │ │ ├── follow_settings_page.dart
│ │ │ │ ├── indexed_settings/
│ │ │ │ │ ├── indexed_settings_controller.dart
│ │ │ │ │ └── indexed_settings_page.dart
│ │ │ │ ├── other/
│ │ │ │ │ ├── other_settings_controller.dart
│ │ │ │ │ └── other_settings_page.dart
│ │ │ │ └── play_settings_page.dart
│ │ │ └── sync/
│ │ │ ├── local_sync/
│ │ │ │ ├── device/
│ │ │ │ │ ├── sync_device_controller.dart
│ │ │ │ │ └── sync_device_page.dart
│ │ │ │ ├── local_sync_controller.dart
│ │ │ │ ├── local_sync_page.dart
│ │ │ │ └── scan_qr/
│ │ │ │ ├── sync_scan_qr_controller.dart
│ │ │ │ └── sync_scan_qr_page.dart
│ │ │ ├── remote_sync/
│ │ │ │ ├── room/
│ │ │ │ │ ├── remote_sync_room_controller.dart
│ │ │ │ │ └── remote_sync_room_page.dart
│ │ │ │ └── webdav/
│ │ │ │ ├── remote_sync_webdav_config_page.dart
│ │ │ │ ├── remote_sync_webdav_controller.dart
│ │ │ │ ├── remote_sync_webdav_page.dart
│ │ │ │ └── webdav_client.dart
│ │ │ └── sync_page.dart
│ │ ├── requests/
│ │ │ ├── custom_log_interceptor.dart
│ │ │ ├── http_client.dart
│ │ │ ├── http_error.dart
│ │ │ └── sync_client_request.dart
│ │ ├── routes/
│ │ │ ├── app_navigation.dart
│ │ │ ├── app_pages.dart
│ │ │ └── route_path.dart
│ │ ├── services/
│ │ │ ├── bilibili_account_service.dart
│ │ │ ├── db_service.dart
│ │ │ ├── douyin_account_service.dart
│ │ │ ├── follow_service.dart
│ │ │ ├── local_storage_service.dart
│ │ │ ├── signalr_service.dart
│ │ │ └── sync_service.dart
│ │ └── widgets/
│ │ ├── desktop_refresh_button.dart
│ │ ├── filter_button.dart
│ │ ├── follow_user_item.dart
│ │ ├── keep_alive_wrapper.dart
│ │ ├── live_room_card.dart
│ │ ├── net_image.dart
│ │ ├── none_border_circular_textfield.dart
│ │ ├── page_grid_view.dart
│ │ ├── page_list_view.dart
│ │ ├── rectangular_indicator.dart
│ │ ├── settings/
│ │ │ ├── settings_action.dart
│ │ │ ├── settings_card.dart
│ │ │ ├── settings_menu.dart
│ │ │ ├── settings_number.dart
│ │ │ └── settings_switch.dart
│ │ ├── shadow_card.dart
│ │ ├── status/
│ │ │ ├── app_empty_widget.dart
│ │ │ ├── app_error_widget.dart
│ │ │ └── app_loadding_widget.dart
│ │ └── superchat_card.dart
│ ├── linux/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── flutter/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── generated_plugin_registrant.cc
│ │ │ ├── generated_plugin_registrant.h
│ │ │ └── generated_plugins.cmake
│ │ ├── packaging/
│ │ │ └── deb/
│ │ │ └── make_config.yaml
│ │ └── runner/
│ │ ├── CMakeLists.txt
│ │ ├── main.cc
│ │ ├── my_application.cc
│ │ └── my_application.h
│ ├── macos/
│ │ ├── .gitignore
│ │ ├── Flutter/
│ │ │ ├── Flutter-Debug.xcconfig
│ │ │ ├── Flutter-Release.xcconfig
│ │ │ └── GeneratedPluginRegistrant.swift
│ │ ├── Podfile
│ │ ├── Runner/
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets/
│ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj/
│ │ │ │ └── MainMenu.xib
│ │ │ ├── Configs/
│ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ ├── Release.xcconfig
│ │ │ │ └── Warnings.xcconfig
│ │ │ ├── DebugProfile.entitlements
│ │ │ ├── Info.plist
│ │ │ ├── MainFlutterWindow.swift
│ │ │ └── Release.entitlements
│ │ ├── Runner.xcodeproj/
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace/
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcshareddata/
│ │ │ └── xcschemes/
│ │ │ └── Runner.xcscheme
│ │ ├── Runner.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── RunnerTests/
│ │ │ └── RunnerTests.swift
│ │ └── packaging/
│ │ └── dmg/
│ │ └── make_config.yaml
│ ├── pubspec.yaml
│ ├── test/
│ │ └── widget_test.dart
│ └── windows/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── packaging/
│ │ └── msix/
│ │ └── make_config.yaml
│ └── runner/
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── simple_live_console/
│ ├── .gitignore
│ ├── .vscode/
│ │ └── launch.json
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── bin/
│ │ └── simple_live_console.dart
│ ├── pubspec.yaml
│ └── test/
│ └── all_live_console_test.dart
├── simple_live_core/
│ ├── .gitignore
│ ├── .vscode/
│ │ └── launch.json
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example/
│ │ └── simple_live_core_example.dart
│ ├── lib/
│ │ ├── simple_live_core.dart
│ │ └── src/
│ │ ├── bilibili_site.dart
│ │ ├── common/
│ │ │ ├── binary_writer.dart
│ │ │ ├── convert_helper.dart
│ │ │ ├── core_error.dart
│ │ │ ├── core_log.dart
│ │ │ ├── custom_interceptor.dart
│ │ │ ├── http_client.dart
│ │ │ └── web_socket_util.dart
│ │ ├── danmaku/
│ │ │ ├── bilibili_danmaku.dart
│ │ │ ├── douyin_danmaku.dart
│ │ │ ├── douyu_danmaku.dart
│ │ │ ├── huya_danmaku.dart
│ │ │ └── proto/
│ │ │ ├── douyin.pb.dart
│ │ │ ├── douyin.pbenum.dart
│ │ │ ├── douyin.pbjson.dart
│ │ │ └── douyin.proto
│ │ ├── douyin_site.dart
│ │ ├── douyu_site.dart
│ │ ├── huya_site.dart
│ │ ├── interface/
│ │ │ ├── live_danmaku.dart
│ │ │ └── live_site.dart
│ │ ├── model/
│ │ │ ├── live_anchor_item.dart
│ │ │ ├── live_category.dart
│ │ │ ├── live_category_result.dart
│ │ │ ├── live_message.dart
│ │ │ ├── live_play_quality.dart
│ │ │ ├── live_play_url.dart
│ │ │ ├── live_room_detail.dart
│ │ │ ├── live_room_item.dart
│ │ │ ├── live_search_result.dart
│ │ │ └── tars/
│ │ │ ├── get_cdn_token_ex_req.dart
│ │ │ ├── get_cdn_token_ex_resp.dart
│ │ │ ├── get_cdn_token_req.dart
│ │ │ ├── get_cdn_token_resp.dart
│ │ │ ├── huya_danmaku.dart
│ │ │ ├── huya_user_id.dart
│ │ │ └── tar2dart.dart
│ │ └── scripts/
│ │ ├── douyin_sign.dart
│ │ └── douyu_sign.dart
│ ├── packages/
│ │ └── tars_dart/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ └── tars/
│ │ │ ├── codec/
│ │ │ │ ├── tars_decode_exception.dart
│ │ │ │ ├── tars_deep_copyable.dart
│ │ │ │ ├── tars_displayer.dart
│ │ │ │ ├── tars_encode_exception.dart
│ │ │ │ ├── tars_input_stream.dart
│ │ │ │ ├── tars_output_stream.dart
│ │ │ │ └── tars_struct.dart
│ │ │ ├── net/
│ │ │ │ └── base_tars_http.dart
│ │ │ └── tup/
│ │ │ ├── basic_class_type_util.dart
│ │ │ ├── const.dart
│ │ │ ├── object_create_exception.dart
│ │ │ ├── request_packet.dart
│ │ │ ├── tars_uni_packet.dart
│ │ │ ├── tup_response.dart
│ │ │ ├── tup_result_exception.dart
│ │ │ ├── uni_attribute.dart
│ │ │ ├── uni_packet.dart
│ │ │ └── write_buffer.dart
│ │ └── pubspec.yaml
│ ├── pubspec.yaml
│ └── test/
│ └── simple_live_core_test.dart
└── simple_live_tv_app/
├── .fvmrc
├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle.kts
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── xycz/
│ │ │ │ └── simple_live_tv/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_banner.xml
│ │ │ ├── values/
│ │ │ │ ├── ic_banner_background.xml
│ │ │ │ └── styles.xml
│ │ │ ├── values-night/
│ │ │ │ └── styles.xml
│ │ │ └── xml/
│ │ │ └── network_security_config.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle.kts
├── assets/
│ ├── lotties/
│ │ ├── empty.json
│ │ ├── error.json
│ │ └── loadding.json
│ └── statement.txt
├── lib/
│ ├── app/
│ │ ├── app_error.dart
│ │ ├── app_focus_node.dart
│ │ ├── app_style.dart
│ │ ├── base_focus_model.dart
│ │ ├── constant.dart
│ │ ├── controller/
│ │ │ ├── app_settings_controller.dart
│ │ │ └── base_controller.dart
│ │ ├── event_bus.dart
│ │ ├── log.dart
│ │ ├── sites.dart
│ │ └── utils.dart
│ ├── main.dart
│ ├── models/
│ │ ├── account/
│ │ │ └── bilibili_user_info_page.dart
│ │ ├── db/
│ │ │ ├── follow_user.dart
│ │ │ ├── follow_user.g.dart
│ │ │ ├── history.dart
│ │ │ └── history.g.dart
│ │ ├── follow_user_item.dart
│ │ └── version_model.dart
│ ├── modules/
│ │ ├── account/
│ │ │ └── bilibili/
│ │ │ ├── qr_login_controller.dart
│ │ │ └── qr_login_page.dart
│ │ ├── agreement/
│ │ │ └── agreement_page.dart
│ │ ├── category/
│ │ │ ├── category_controller.dart
│ │ │ ├── category_page.dart
│ │ │ └── detail/
│ │ │ ├── category_detail_controller.dart
│ │ │ └── category_detail_page.dart
│ │ ├── follow_user/
│ │ │ └── follow_user_page.dart
│ │ ├── history/
│ │ │ ├── history_controller.dart
│ │ │ └── history_page.dart
│ │ ├── home/
│ │ │ ├── home_controller.dart
│ │ │ └── home_page.dart
│ │ ├── hot_live/
│ │ │ ├── hot_live_controller.dart
│ │ │ └── hot_live_page.dart
│ │ ├── live_room/
│ │ │ ├── live_room_controller.dart
│ │ │ ├── live_room_page.dart
│ │ │ └── player/
│ │ │ ├── player_controller.dart
│ │ │ └── player_controls.dart
│ │ ├── search/
│ │ │ ├── anchor/
│ │ │ │ ├── search_anchor_controller.dart
│ │ │ │ └── search_anchor_page.dart
│ │ │ └── room/
│ │ │ ├── search_room_controller.dart
│ │ │ └── search_room_page.dart
│ │ ├── settings/
│ │ │ ├── settings_controller.dart
│ │ │ └── settings_page.dart
│ │ └── sync/
│ │ ├── sync_controller.dart
│ │ └── sync_page.dart
│ ├── requests/
│ │ ├── common_request.dart
│ │ ├── custom_log_interceptor.dart
│ │ ├── http_client.dart
│ │ └── http_error.dart
│ ├── routes/
│ │ ├── app_navigation.dart
│ │ ├── app_pages.dart
│ │ └── route_path.dart
│ ├── services/
│ │ ├── bilibili_account_service.dart
│ │ ├── db_service.dart
│ │ ├── follow_user_service.dart
│ │ ├── local_storage_service.dart
│ │ ├── signalr_service.dart
│ │ └── sync_service.dart
│ └── widgets/
│ ├── app_scaffold.dart
│ ├── button/
│ │ ├── highlight_button.dart
│ │ ├── highlight_list_tile.dart
│ │ └── home_big_button.dart
│ ├── card/
│ │ ├── anchor_card.dart
│ │ └── live_room_card.dart
│ ├── highlight_widget.dart
│ ├── keep_alive_wrapper.dart
│ ├── net_image.dart
│ ├── page_grid_view.dart
│ ├── rectangular_indicator.dart
│ ├── settings_item_widget.dart
│ └── status/
│ ├── app_empty_widget.dart
│ ├── app_error_widget.dart
│ └── app_loadding_widget.dart
├── pubspec.yaml
├── test/
│ └── widget_test.dart
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
Showing preview only (205K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2735 symbols across 266 files)
FILE: simple_live_app/lib/app/app_style.dart
class AppColors (line 7) | class AppColors {
class AppStyle (line 21) | class AppStyle {
FILE: simple_live_app/lib/app/constant.dart
class Constant (line 4) | class Constant {
class HomePageItem (line 37) | class HomePageItem {
FILE: simple_live_app/lib/app/controller/app_settings_controller.dart
class AppSettingsController (line 11) | class AppSettingsController extends GetxController {
method onInit (line 23) | void onInit()
method initSiteSort (line 162) | void initSiteSort()
method initHomeSort (line 182) | void initHomeSort()
method setNoFirstRun (line 202) | void setNoFirstRun()
method changeTheme (line 206) | void changeTheme()
method setTheme (line 235) | void setTheme(int i)
method setHardwareDecode (line 244) | void setHardwareDecode(bool e)
method setChatTextSize (line 251) | void setChatTextSize(double e)
method setChatTextGap (line 257) | void setChatTextGap(double e)
method setChatBubbleStyle (line 263) | void setChatBubbleStyle(bool e)
method setDanmuSize (line 270) | void setDanmuSize(double e)
method setDanmuSpeed (line 276) | void setDanmuSpeed(double e)
method setDanmuArea (line 282) | void setDanmuArea(double e)
method setDanmuOpacity (line 288) | void setDanmuOpacity(double e)
method setDanmuEnable (line 294) | void setDanmuEnable(bool e)
method setDanmuStrokeWidth (line 300) | void setDanmuStrokeWidth(double e)
method setDanmuFontWeight (line 307) | void setDanmuFontWeight(int e)
method setQualityLevel (line 314) | void setQualityLevel(int level)
method setQualityLevelCellular (line 321) | void setQualityLevelCellular(int level)
method setAutoExitEnable (line 328) | void setAutoExitEnable(bool e)
method setAutoExitDuration (line 335) | void setAutoExitDuration(int e)
method setRoomAutoExitDuration (line 342) | void setRoomAutoExitDuration(int e)
method setPlayerCompatMode (line 349) | void setPlayerCompatMode(bool e)
method setPlayerBufferSize (line 356) | void setPlayerBufferSize(int e)
method setPlayerAutoPause (line 363) | void setPlayerAutoPause(bool e)
method setAutoFullScreen (line 370) | void setAutoFullScreen(bool e)
method setPlayerShowSuperChat (line 377) | void setPlayerShowSuperChat(bool e)
method addShieldList (line 384) | void addShieldList(String e)
method removeShieldList (line 389) | void removeShieldList(String e)
method clearShieldList (line 394) | Future clearShieldList()
method setScaleMode (line 399) | void setScaleMode(int value)
method setSiteSort (line 408) | void setSiteSort(List<String> e)
method setHomeSort (line 417) | void setHomeSort(List<String> e)
method setPlayerVolume (line 426) | void setPlayerVolume(double value)
method setPIPHideDanmu (line 435) | void setPIPHideDanmu(bool e)
method setStyleColor (line 441) | void setStyleColor(int e)
method setIsDynamic (line 447) | void setIsDynamic(bool e)
method setDanmuTopMargin (line 453) | void setDanmuTopMargin(double e)
method setDanmuBottomMargin (line 460) | void setDanmuBottomMargin(double e)
method setBiliBiliLoginTip (line 467) | void setBiliBiliLoginTip(bool e)
method setLogEnable (line 474) | void setLogEnable(bool e)
method setCustomPlayerOutput (line 480) | void setCustomPlayerOutput(bool e)
method setVideoOutputDriver (line 487) | void setVideoOutputDriver(String e)
method setAudioOutputDriver (line 494) | void setAudioOutputDriver(String e)
method setVideoHardwareDecoder (line 501) | void setVideoHardwareDecoder(String e)
method setAutoUpdateFollowEnable (line 508) | void setAutoUpdateFollowEnable(bool e)
method setAutoUpdateFollowDuration (line 515) | void setAutoUpdateFollowDuration(int e)
method setUpdateFollowThreadCount (line 522) | void setUpdateFollowThreadCount(int e)
method setPlayerForceHttps (line 529) | void setPlayerForceHttps(bool e)
FILE: simple_live_app/lib/app/controller/base_controller.dart
class BaseController (line 11) | class BaseController extends GetxController {
method handleError (line 34) | void handleError(Object exception, {bool showPageError = false})
method exceptionToString (line 46) | String exceptionToString(Object exception)
method onLogin (line 50) | void onLogin()
method onLogout (line 51) | void onLogout()
class BasePageController (line 54) | class BasePageController<T> extends BaseController {
method refreshData (line 64) | Future refreshData()
method loadData (line 70) | Future loadData()
method getData (line 105) | Future<List<T>> getData(int page, int pageSize)
method scrollToTopOrRefresh (line 109) | void scrollToTopOrRefresh()
FILE: simple_live_app/lib/app/custom_throttle.dart
class DelayedThrottle (line 5) | class DelayedThrottle {
method invoke (line 12) | void invoke(Future Function() longCostFunc)
FILE: simple_live_app/lib/app/event_bus.dart
class EventBus (line 6) | class EventBus {
method emit (line 20) | void emit<T>(String name, T data)
method listen (line 30) | StreamSubscription<dynamic> listen(String name, Function(dynamic)? onD...
FILE: simple_live_app/lib/app/log.dart
class Log (line 12) | class Log {
method initWriter (line 14) | void initWriter()
method disposeWriter (line 18) | void disposeWriter()
method writeLog (line 23) | void writeLog(content, [Level level = Level.info])
method addDebugLog (line 30) | void addDebugLog(String content, Color? color)
method d (line 57) | void d(String message, [bool writeFile = true])
method i (line 65) | void i(String message, [bool writeFile = true])
method e (line 74) | void e(String message, StackTrace stackTrace,
method w (line 83) | void w(String message, [bool writeFile = true])
method logPrint (line 91) | void logPrint(dynamic obj, [bool writeFile = true])
class LogFileWriter (line 105) | class LogFileWriter {
method initFile (line 113) | void initFile()
method write (line 124) | void write(String content)
method close (line 129) | Future close()
method writeSystemInfo (line 133) | void writeSystemInfo()
class DebugLogModel (line 157) | class DebugLogModel {
FILE: simple_live_app/lib/app/sites.dart
class Sites (line 5) | class Sites {
class Site (line 40) | class Site {
FILE: simple_live_app/lib/app/utils.dart
type TextValidate (line 16) | typedef TextValidate = bool Function(String text);
class Utils (line 18) | class Utils {
method parseTime (line 25) | String parseTime(DateTime? dt)
method showAlertDialog (line 49) | Future<bool> showAlertDialog(
method showMessageDialog (line 91) | Future<bool> showMessageDialog(String content,
method showRightDialog (line 111) | void showRightDialog({
method hideRightDialog (line 181) | void hideRightDialog()
method showBottomSheet (line 185) | Future showBottomSheet({
method showEditTextDialog (line 227) | Future<String?> showEditTextDialog(
method showOptionDialog (line 279) | Future<T?> showOptionDialog<T>(
method showInformationHelpDialog (line 310) | Future<T?> showInformationHelpDialog<T>({
method showStatement (line 332) | Future showStatement()
method showMapOptionDialog (line 347) | Future<T?> showMapOptionDialog<T>(
method parseVersion (line 374) | int parseVersion(String version)
method onlineToString (line 383) | String onlineToString(int num)
method checkPhotoPermission (line 391) | Future<bool> checkPhotoPermission()
method checkStorgePermission (line 417) | Future<bool> checkStorgePermission()
method convertHexColor (line 447) | Color convertHexColor(String hexColor)
method copyToClipboard (line 472) | void copyToClipboard(String text)
method getClipboard (line 483) | Future<String?> getClipboard()
method isRegexFormat (line 498) | bool isRegexFormat(String keyword)
method removeRegexFormat (line 504) | String removeRegexFormat(String keyword)
method parseFileSize (line 508) | String parseFileSize(int size)
FILE: simple_live_app/lib/app/utils/archive.dart
function add (line 22) | add<T>(String name, T raw)
FILE: simple_live_app/lib/app/utils/document.dart
function clear (line 7) | Future<void> clear()
function clearSync (line 30) | void clearSync()
FILE: simple_live_app/lib/app/utils/listen_fourth_button.dart
class FourthButtonTapGestureRecognizer (line 6) | class FourthButtonTapGestureRecognizer extends BaseTapGestureRecognizer {
method handleTapDown (line 10) | void handleTapDown({required PointerDownEvent down})
method handleTapCancel (line 27) | void handleTapCancel(
method handleTapUp (line 33) | void handleTapUp(
FILE: simple_live_app/lib/main.dart
function main (line 39) | void main()
function migrateData (line 63) | Future migrateData()
function initWindow (line 103) | Future initWindow()
function initServices (line 119) | Future initServices()
function initCoreLog (line 144) | void initCoreLog()
class MyApp (line 169) | class MyApp extends StatelessWidget {
method build (line 173) | Widget build(BuildContext context)
FILE: simple_live_app/lib/models/account/bilibili_user_info_page.dart
function asT (line 3) | T? asT<T>(dynamic value)
class BiliBiliUserInfoModel (line 10) | class BiliBiliUserInfoModel {
method toString (line 44) | String toString()
method toJson (line 48) | Map<String, dynamic> toJson()
FILE: simple_live_app/lib/models/db/follow_user.dart
class FollowUser (line 6) | @HiveType(typeId: 1)
method toJson (line 57) | Map<String, dynamic> toJson()
FILE: simple_live_app/lib/models/db/follow_user.g.dart
class FollowUserAdapter (line 9) | class FollowUserAdapter extends TypeAdapter<FollowUser> {
method read (line 14) | FollowUser read(BinaryReader reader)
method write (line 31) | void write(BinaryWriter writer, FollowUser obj)
FILE: simple_live_app/lib/models/db/follow_user_tag.dart
class FollowUserTag (line 5) | @HiveType(typeId: 3)
method toJson (line 32) | Map<String, dynamic> toJson()
method copyWith (line 40) | FollowUserTag copyWith({
FILE: simple_live_app/lib/models/db/follow_user_tag.g.dart
class FollowUserTagAdapter (line 9) | class FollowUserTagAdapter extends TypeAdapter<FollowUserTag> {
method read (line 14) | FollowUserTag read(BinaryReader reader)
method write (line 27) | void write(BinaryWriter writer, FollowUserTag obj)
FILE: simple_live_app/lib/models/db/history.dart
class History (line 5) | @HiveType(typeId: 2)
method toJson (line 44) | Map<String, dynamic> toJson()
FILE: simple_live_app/lib/models/db/history.g.dart
class HistoryAdapter (line 9) | class HistoryAdapter extends TypeAdapter<History> {
method read (line 14) | History read(BinaryReader reader)
method write (line 30) | void write(BinaryWriter writer, History obj)
FILE: simple_live_app/lib/models/sync_client_info_model.dart
function asT (line 3) | T? asT<T>(dynamic value)
class SyncClientInfoModel (line 10) | class SyncClientInfoModel {
method toString (line 34) | String toString()
method toJson (line 38) | Map<String, dynamic> toJson()
FILE: simple_live_app/lib/models/version_model.dart
function asT (line 3) | T? asT<T>(dynamic value)
class VersionModel (line 10) | class VersionModel {
method toString (line 31) | String toString()
method toJson (line 35) | Map<String, dynamic> toJson()
FILE: simple_live_app/lib/modules/category/category_controller.dart
class CategoryController (line 11) | class CategoryController extends GetxController
method onInit (line 20) | void onInit()
method refreshOrScrollTop (line 36) | void refreshOrScrollTop()
method onClose (line 45) | void onClose()
FILE: simple_live_app/lib/modules/category/category_list_controller.dart
class CategoryListController (line 6) | class CategoryListController extends BasePageController<AppLiveCategory> {
method getData (line 11) | Future<List<AppLiveCategory>> getData(int page, int pageSize)
class AppLiveCategory (line 18) | class AppLiveCategory extends LiveCategory {
FILE: simple_live_app/lib/modules/category/category_list_view.dart
class CategoryListView (line 14) | class CategoryListView extends StatelessWidget {
method build (line 20) | Widget build(BuildContext context)
method buildSubCategory (line 81) | Widget buildSubCategory(LiveSubCategory item)
method buildShowMore (line 107) | Widget buildShowMore(AppLiveCategory item)
FILE: simple_live_app/lib/modules/category/category_page.dart
class CategoryPage (line 8) | class CategoryPage extends GetView<CategoryController> {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/category/detail/category_detail_controller.dart
class CategoryDetailController (line 5) | class CategoryDetailController extends BasePageController<LiveRoomItem> {
method getData (line 14) | Future<List<LiveRoomItem>> getData(int page, int pageSize)
FILE: simple_live_app/lib/modules/category/detail/category_detail_page.dart
class CategoryDetailPage (line 10) | class CategoryDetailPage extends GetView<CategoryDetailController> {
method build (line 14) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/follow_user/follow_user_controller.dart
class FollowUserController (line 15) | class FollowUserController extends BasePageController<FollowUser> {
method onInit (line 31) | void onInit()
method refreshData (line 48) | Future refreshData()
method getData (line 55) | Future<List<FollowUser>> getData(int page, int pageSize)
method updateTagList (line 71) | void updateTagList()
method filterData (line 81) | void filterData()
method setFilterMode (line 94) | void setFilterMode(FollowUserTag tag)
method removeItem (line 99) | void removeItem(FollowUser item)
method updateItem (line 115) | void updateItem(FollowUser item)
method setItemTag (line 119) | void setItemTag(FollowUser item, FollowUserTag targetTag)
method removeTag (line 134) | Future<void> removeTag(FollowUserTag tag)
method addTag (line 148) | void addTag(String tag)
method updateTag (line 154) | void updateTag(FollowUserTag followUserTag)
method updateTagName (line 161) | void updateTagName(FollowUserTag followUserTag, String newTagName)
method updateTagOrder (line 186) | void updateTagOrder(int oldIndex, int newIndex)
method onClose (line 196) | void onClose()
FILE: simple_live_app/lib/modules/follow_user/follow_user_page.dart
class FollowUserPage (line 16) | class FollowUserPage extends GetView<FollowUserController> {
method build (line 20) | Widget build(BuildContext context)
method setFollowTagDialog (line 181) | void setFollowTagDialog(FollowUser item)
method showTagsManager (line 272) | void showTagsManager()
method editTagDialog (line 324) | void editTagDialog(String title, {FollowUserTag? followUserTag})
FILE: simple_live_app/lib/modules/home/home_controller.dart
class HomeController (line 12) | class HomeController extends GetxController
method onInit (line 23) | void onInit()
method refreshOrScrollTop (line 39) | void refreshOrScrollTop()
method toSearch (line 47) | void toSearch()
method onClose (line 52) | void onClose()
FILE: simple_live_app/lib/modules/home/home_list_controller.dart
class HomeListController (line 5) | class HomeListController extends BasePageController<LiveRoomItem> {
method getData (line 10) | Future<List<LiveRoomItem>> getData(int page, int pageSize)
FILE: simple_live_app/lib/modules/home/home_list_view.dart
class HomeListView (line 10) | class HomeListView extends StatelessWidget {
method build (line 15) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/home/home_page.dart
class HomePage (line 8) | class HomePage extends GetView<HomeController> {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/indexed/indexed_controller.dart
class IndexedController (line 16) | class IndexedController extends GetxController {
method setIndex (line 27) | void setIndex(int i)
method onInit (line 58) | void onInit()
method showFirstRun (line 67) | void showFirstRun()
FILE: simple_live_app/lib/modules/indexed/indexed_page.dart
class IndexedPage (line 7) | class IndexedPage extends GetView<IndexedController> {
method build (line 11) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/live_room/live_room_controller.dart
class LiveRoomController (line 31) | class LiveRoomController extends PlayerController with WidgetsBindingObs...
method onInit (line 111) | void onInit()
method scrollListener (line 126) | void scrollListener()
method initAutoExit (line 134) | void initAutoExit()
method setAutoExit (line 146) | void setAutoExit()
method refreshRoom (line 178) | void refreshRoom()
method chatScrollToBottom (line 187) | void chatScrollToBottom()
method initDanmau (line 198) | void initDanmau()
method onWSMessage (line 205) | void onWSMessage(LiveMessage msg)
method addSysMsg (line 259) | void addSysMsg(String msg)
method onWSClose (line 271) | void onWSClose(String msg)
method onWSReady (line 276) | void onWSReady()
method loadData (line 281) | void loadData()
method getPlayQualites (line 345) | void getPlayQualites()
method getQualityLevel (line 378) | Future<int> getQualityLevel()
method getPlayUrl (line 392) | void getPlayUrl()
method changePlayLine (line 412) | void changePlayLine(int index)
method initPlaylist (line 419) | void initPlaylist()
method setPlayer (line 437) | void setPlayer()
method mediaEnd (line 445) | void mediaEnd()
method mediaError (line 472) | void mediaError(String error)
method getSuperChatMessage (line 497) | void getSuperChatMessage()
method removeSuperChats (line 509) | void removeSuperChats()
method addHistory (line 517) | void addHistory()
method followUser (line 539) | void followUser()
method removeFollowUser (line 559) | void removeFollowUser()
method share (line 573) | void share()
method copyUrl (line 580) | void copyUrl()
method copyPlayUrl (line 589) | void copyPlayUrl()
method showDanmuSettingsSheet (line 605) | void showDanmuSettingsSheet()
method showVolumeSlider (line 623) | void showVolumeSlider(BuildContext targetContext)
method showQualitySheet (line 655) | void showQualitySheet()
method showPlayUrlsSheet (line 679) | void showPlayUrlsSheet()
method showPlayerSettingsSheet (line 706) | void showPlayerSettingsSheet()
method showDanmuShield (line 751) | void showDanmuShield()
method addKeyword (line 754) | void addKeyword()
method showFollowUserSheet (line 829) | void showFollowUserSheet()
method showAutoExitSheet (line 875) | void showAutoExitSheet()
method openNaviteAPP (line 943) | void openNaviteAPP()
method resetRoom (line 972) | void resetRoom(Site site, String roomId)
method copyErrorDetail (line 996) | void copyErrorDetail()
method didChangeAppLifecycleState (line 1007) | void didChangeAppLifecycleState(AppLifecycleState state)
method startLiveDurationTimer (line 1024) | void startLiveDurationTimer()
method onClose (line 1055) | void onClose()
FILE: simple_live_app/lib/modules/live_room/live_room_page.dart
class LiveRoomPage (line 28) | class LiveRoomPage extends GetView<LiveRoomController> {
method build (line 32) | Widget build(BuildContext context)
method buildPageUI (line 114) | Widget buildPageUI()
method buildPhoneUI (line 132) | Widget buildPhoneUI(BuildContext context)
method buildTabletUI (line 146) | Widget buildTabletUI(BuildContext context)
method buildMediaPlayer (line 241) | Widget buildMediaPlayer()
method buildUserProfile (line 289) | Widget buildUserProfile(BuildContext context)
method buildBottomActions (line 376) | Widget buildBottomActions(BuildContext context)
method buildMessageArea (line 435) | Widget buildMessageArea()
method buildMessageItem (line 521) | Widget buildMessageItem(LiveMessage message)
method buildSuperChats (line 597) | Widget buildSuperChats()
method buildSettings (line 618) | Widget buildSettings()
method buildFollowList (line 730) | Widget buildFollowList()
method buildAppbarActions (line 772) | List<Widget> buildAppbarActions(BuildContext context)
method showMore (line 783) | void showMore()
method parseDuration (line 903) | String parseDuration(int sec)
FILE: simple_live_app/lib/modules/live_room/player/player_controller.dart
function initializePlayer (line 40) | Future<void> initializePlayer()
function hideControls (line 130) | void hideControls()
function setLockState (line 135) | void setLockState()
function showControls (line 145) | void showControls()
function resetHideControlsTimer (line 152) | void resetHideControlsTimer()
function updateScaleMode (line 163) | void updateScaleMode()
function initDanmakuController (line 193) | void initDanmakuController(DanmakuController e)
function updateDanmuOption (line 208) | void updateDanmuOption(DanmakuOption? option)
function disposeDanmakuController (line 213) | void disposeDanmakuController()
function addDanmaku (line 217) | void addDanmaku(List<DanmakuContentItem> items)
function initSystem (line 235) | void initSystem()
function resetSystem (line 253) | Future resetSystem()
function enterFullScreen (line 275) | void enterFullScreen()
function exitFull (line 291) | void exitFull()
function enterSmallWindow (line 308) | void enterSmallWindow()
function exitSmallWindow (line 336) | void exitSmallWindow()
function setLandscapeOrientation (line 349) | Future setLandscapeOrientation()
function setPortraitOrientation (line 361) | Future setPortraitOrientation()
function beforeIOS16 (line 370) | Future<bool> beforeIOS16()
function saveScreenshot (line 381) | Future saveScreenshot()
function enablePIP (line 431) | Future enablePIP()
function onTap (line 476) | void onTap()
function onEnter (line 485) | void onEnter(PointerEnterEvent event)
function onExit (line 491) | void onExit(PointerExitEvent event)
function onHover (line 497) | void onHover(PointerHoverEvent event, BuildContext context)
function onDoubleTap (line 509) | void onDoubleTap(TapDownDetails details)
function onVerticalDragStart (line 529) | void onVerticalDragStart(DragStartDetails details)
function onVerticalDragUpdate (line 558) | void onVerticalDragUpdate(DragUpdateDetails e)
function setGestureVolume (line 580) | void setGestureVolume(double dy)
function _convertVolume (line 608) | int _convertVolume(int volume)
function _realSetVolume (line 612) | Future _realSetVolume(int volume)
function setGestureBrightness (line 617) | void setGestureBrightness(double dy)
function onVerticalDragEnd (line 644) | void onVerticalDragEnd(DragEndDetails details)
class PlayerController (line 655) | class PlayerController extends BaseController
method onInit (line 663) | void onInit()
method initStream (line 678) | void initStream()
method disposeStream (line 719) | void disposeStream()
method mediaEnd (line 729) | void mediaEnd()
method mediaError (line 733) | void mediaError(String error)
method showDebugInfo (line 737) | void showDebugInfo()
method onClose (line 837) | void onClose()
FILE: simple_live_app/lib/modules/live_room/player/player_controls.dart
function playerControls (line 22) | Widget playerControls(
function buildFullControls (line 41) | Widget buildFullControls(
function buildLockButton (line 401) | Widget buildLockButton(LiveRoomController controller)
function buildControls (line 428) | Widget buildControls(
function buildDanmuView (line 648) | Widget buildDanmuView(VideoState videoState, LiveRoomController controller)
function showLinesInfo (line 683) | void showLinesInfo(LiveRoomController controller)
function showQualitesInfo (line 735) | void showQualitesInfo(LiveRoomController controller)
function showDanmakuSettings (line 766) | void showDanmakuSettings(LiveRoomController controller)
function showPlayerSettings (line 786) | void showPlayerSettings(LiveRoomController controller)
function showFollowUser (line 849) | void showFollowUser(LiveRoomController controller)
class PlayerSuperChatCard (line 902) | class PlayerSuperChatCard extends StatefulWidget {
method createState (line 913) | State<PlayerSuperChatCard> createState()
class _PlayerSuperChatCardState (line 916) | class _PlayerSuperChatCardState extends State<PlayerSuperChatCard> {
method initState (line 920) | void initState()
method dispose (line 936) | void dispose()
method build (line 942) | Widget build(BuildContext context)
class LocalDisplaySC (line 954) | class LocalDisplaySC {
class PlayerSuperChatOverlay (line 961) | class PlayerSuperChatOverlay extends StatefulWidget {
method createState (line 966) | State<PlayerSuperChatOverlay> createState()
class _PlayerSuperChatOverlayState (line 969) | class _PlayerSuperChatOverlayState extends State<PlayerSuperChatOverlay> {
method _addSC (line 974) | void _addSC(LiveSuperChatMessage sc, {int? customSeconds})
method initState (line 990) | void initState()
method dispose (line 1016) | void dispose()
method build (line 1025) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/mine/account/account_controller.dart
class AccountController (line 12) | class AccountController extends GetxController {
method bilibiliTap (line 13) | void bilibiliTap()
method bilibiliLogin (line 25) | void bilibiliLogin()
method doBiliBiliCookieLogin (line 69) | void doBiliBiliCookieLogin()
method douyinTap (line 82) | void douyinTap()
method doDouyinCookieConfig (line 94) | void doDouyinCookieConfig()
FILE: simple_live_app/lib/modules/mine/account/account_page.dart
class AccountPage (line 8) | class AccountPage extends GetView<AccountController> {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/mine/account/bilibili/qr_login_controller.dart
type QRStatus (line 9) | enum QRStatus {
class BiliBiliQRLoginController (line 17) | class BiliBiliQRLoginController extends GetxController {
method onInit (line 19) | void onInit()
method loadQRCode (line 37) | void loadQRCode()
method startPoll (line 58) | void startPoll()
method pollQRStatus (line 67) | void pollQRStatus()
method onClose (line 107) | void onClose()
FILE: simple_live_app/lib/modules/mine/account/bilibili/qr_login_page.dart
class BiliBiliQRLoginPage (line 7) | class BiliBiliQRLoginPage extends GetView<BiliBiliQRLoginController> {
method build (line 11) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/mine/account/bilibili/web_login_controller.dart
class BiliBiliWebLoginController (line 8) | class BiliBiliWebLoginController extends BaseController {
method onWebViewCreated (line 11) | void onWebViewCreated(InAppWebViewController controller)
method toQRLogin (line 20) | void toQRLogin()
method onLoadStop (line 25) | void onLoadStop(InAppWebViewController controller, Uri? uri)
method logined (line 34) | Future<bool> logined()
FILE: simple_live_app/lib/modules/mine/account/bilibili/web_login_page.dart
class BiliBiliWebLoginPage (line 6) | class BiliBiliWebLoginPage extends GetView<BiliBiliWebLoginController> {
method build (line 10) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/mine/history/history_controller.dart
class HistoryController (line 6) | class HistoryController extends BasePageController<History> {
method getData (line 8) | Future<List<History>> getData(int page, int pageSize)
method clean (line 15) | void clean()
method removeItem (line 24) | void removeItem(History item)
FILE: simple_live_app/lib/modules/mine/history/history_page.dart
class HistoryPage (line 11) | class HistoryPage extends GetView<HistoryController> {
method build (line 15) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/mine/mine_page.dart
class MinePage (line 13) | class MinePage extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
method _buildCard (line 267) | Widget _buildCard(BuildContext context, {required List<Widget> children})
FILE: simple_live_app/lib/modules/mine/parse/parse_controller.dart
class ParseController (line 11) | class ParseController extends GetxController {
method jumpToRoom (line 15) | void jumpToRoom(String e)
method getPlayUrl (line 36) | void getPlayUrl(String e)
method parse (line 109) | Future<List> parse(String url)
method getLocation (line 162) | Future<String> getLocation(String url)
FILE: simple_live_app/lib/modules/mine/parse/parse_page.dart
class ParsePage (line 7) | class ParsePage extends GetView<ParseController> {
method build (line 11) | Widget build(BuildContext context)
method buildCard (line 118) | Widget buildCard({required BuildContext context, required Widget child})
FILE: simple_live_app/lib/modules/other/debug_log_page.dart
class DebugLogPage (line 10) | class DebugLogPage extends StatelessWidget {
method build (line 14) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/search/douyin/douyin_search_controller.dart
class DouyinSearchController (line 12) | class DouyinSearchController extends BaseController {
method onWebViewCreated (line 15) | void onWebViewCreated(InAppWebViewController controller)
method reloadWebView (line 32) | void reloadWebView()
method onLoadStop (line 47) | void onLoadStop(InAppWebViewController controller, Uri? uri)
method onLoadStart (line 51) | void onLoadStart(InAppWebViewController controller, Uri? uri)
method onCreateWindow (line 55) | Future<bool?> onCreateWindow(InAppWebViewController controller,
method openBrowser (line 73) | void openBrowser()
FILE: simple_live_app/lib/modules/search/douyin/douyin_search_view.dart
class DouyinSearchView (line 13) | class DouyinSearchView extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/search/search_controller.dart
class AppSearchController (line 9) | class AppSearchController extends GetxController
method onInit (line 46) | void onInit()
method doSearch (line 61) | void doSearch()
method onClose (line 86) | void onClose()
FILE: simple_live_app/lib/modules/search/search_list_controller.dart
class SearchListController (line 5) | class SearchListController extends BasePageController {
method refreshData (line 16) | Future refreshData()
method getData (line 24) | Future<List> getData(int page, int pageSize)
method clear (line 38) | void clear()
FILE: simple_live_app/lib/modules/search/search_list_view.dart
class SearchListView (line 13) | class SearchListView extends StatelessWidget {
method build (line 19) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/search/search_page.dart
class SearchPage (line 8) | class SearchPage extends GetView<AppSearchController> {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/settings/appstyle_setting_page.dart
class AppstyleSettingPage (line 8) | class AppstyleSettingPage extends GetView<AppSettingsController> {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/settings/auto_exit_settings_page.dart
class AutoExitSettingsPage (line 9) | class AutoExitSettingsPage extends GetView<AppSettingsController> {
method build (line 13) | Widget build(BuildContext context)
method setTimer (line 61) | void setTimer(BuildContext context)
FILE: simple_live_app/lib/modules/settings/danmu_settings_page.dart
class DanmuSettingsPage (line 12) | class DanmuSettingsPage extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
class DanmuSettingsView (line 31) | class DanmuSettingsView extends GetView<AppSettingsController> {
method build (line 41) | Widget build(BuildContext context)
method updateDanmuOption (line 232) | void updateDanmuOption(DanmakuOption? option)
FILE: simple_live_app/lib/modules/settings/danmu_shield/danmu_shield_controller.dart
class DanmuShieldController (line 7) | class DanmuShieldController extends BaseController {
method add (line 11) | void add()
method remove (line 21) | void remove(String item)
FILE: simple_live_app/lib/modules/settings/danmu_shield/danmu_shield_page.dart
class DanmuShieldPage (line 6) | class DanmuShieldPage extends GetView<DanmuShieldController> {
method build (line 10) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/settings/follow_settings_page.dart
class FollowSettingsPage (line 11) | class FollowSettingsPage extends GetView<AppSettingsController> {
method build (line 15) | Widget build(BuildContext context)
method setTimer (line 81) | void setTimer(BuildContext context)
method showConcurrencyDialog (line 106) | void showConcurrencyDialog()
method _buildQuickOption (line 174) | Widget _buildQuickOption(int value, String label, int currentValue)
FILE: simple_live_app/lib/modules/settings/indexed_settings/indexed_settings_controller.dart
class IndexedSettingsController (line 4) | class IndexedSettingsController extends GetxController {
method onInit (line 8) | void onInit()
method updateSiteSort (line 14) | void updateSiteSort(int oldIndex, int newIndex)
method updateHomeSort (line 24) | void updateHomeSort(int oldIndex, int newIndex)
FILE: simple_live_app/lib/modules/settings/indexed_settings/indexed_settings_page.dart
class IndexedSettingsPage (line 9) | class IndexedSettingsPage extends GetView<IndexedSettingsController> {
method build (line 13) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/settings/other/other_settings_controller.dart
class OtherSettingsController (line 16) | class OtherSettingsController extends BaseController {
method onInit (line 87) | void onInit()
method setLogEnable (line 92) | void setLogEnable(e)
method loadLogFiles (line 104) | void loadLogFiles()
method cleanLog (line 122) | void cleanLog()
method shareLogFile (line 136) | void shareLogFile(LogFileModel item)
method saveLogFile (line 142) | void saveLogFile(LogFileModel item)
method exportConfig (line 156) | void exportConfig()
method importConfig (line 197) | void importConfig()
method resetDefaultConfig (line 229) | void resetDefaultConfig()
class LogFileModel (line 240) | class LogFileModel {
FILE: simple_live_app/lib/modules/settings/other/other_settings_page.dart
class OtherSettingsPage (line 15) | class OtherSettingsPage extends GetView<OtherSettingsController> {
method build (line 19) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/settings/play_settings_page.dart
class PlaySettingsPage (line 12) | class PlaySettingsPage extends GetView<AppSettingsController> {
method build (line 16) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/sync/local_sync/device/sync_device_controller.dart
class SyncDeviceController (line 14) | class SyncDeviceController extends BaseController {
method showOverlayDialog (line 20) | Future<bool> showOverlayDialog()
method syncFollowAndTag (line 30) | void syncFollowAndTag()
method syncHistory (line 50) | void syncHistory()
method syncBlockedWord (line 66) | void syncBlockedWord()
method syncBiliAccount (line 82) | void syncBiliAccount()
FILE: simple_live_app/lib/modules/sync/local_sync/device/sync_device_page.dart
class SyncDevicePage (line 8) | class SyncDevicePage extends GetView<SyncDeviceController> {
method build (line 12) | Widget build(BuildContext context)
method buildIcon (line 75) | Widget buildIcon()
FILE: simple_live_app/lib/modules/sync/local_sync/local_sync_controller.dart
class LocalSyncController (line 17) | class LocalSyncController extends BaseController {
method onInit (line 22) | void onInit()
method initConnect (line 28) | void initConnect()
method connect (line 38) | void connect()
method connectClient (line 64) | void connectClient(SyncClinet client)
method toScanQr (line 76) | void toScanQr()
method showPickerAddress (line 91) | void showPickerAddress(List<String> addressList)
method showInfo (line 111) | void showInfo()
FILE: simple_live_app/lib/modules/sync/local_sync/local_sync_page.dart
class LocalSyncPage (line 11) | class LocalSyncPage extends GetView<LocalSyncController> {
method build (line 15) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/sync/local_sync/scan_qr/sync_scan_qr_controller.dart
class SyncScanQRControlelr (line 12) | class SyncScanQRControlelr extends BaseController {
method onQRViewCreated (line 17) | void onQRViewCreated(QRViewController controller)
method showPickerAddress (line 52) | void showPickerAddress(List<String> addressList)
method onClose (line 74) | void onClose()
FILE: simple_live_app/lib/modules/sync/local_sync/scan_qr/sync_scan_qr_page.dart
class SyncScanQRPage (line 6) | class SyncScanQRPage extends GetView<SyncScanQRControlelr> {
method build (line 10) | Widget build(BuildContext context)
class ScanRectangle (line 43) | class ScanRectangle extends StatefulWidget {
method createState (line 47) | State<ScanRectangle> createState()
class _ScanRectangleState (line 50) | class _ScanRectangleState extends State<ScanRectangle>
method initState (line 56) | void initState()
method build (line 75) | Widget build(BuildContext context)
method dispose (line 106) | void dispose()
FILE: simple_live_app/lib/modules/sync/remote_sync/room/remote_sync_room_controller.dart
class RemoteSyncRoomController (line 21) | class RemoteSyncRoomController extends BaseController {
method onInit (line 42) | void onInit()
method connect (line 47) | void connect()
method createRoom (line 59) | void createRoom()
method _startTimer (line 75) | void _startTimer()
method joinRoom (line 87) | void joinRoom(String roomId)
method listenSignalR (line 100) | void listenSignalR()
method onReceiveFavorite (line 124) | void onReceiveFavorite(bool overlay, String data)
method onReceiveHistory (line 143) | void onReceiveHistory(bool overlay, String data)
method onReceiveShieldWord (line 168) | void onReceiveShieldWord(bool overlay, String data)
method onReceiveBiliAccount (line 185) | void onReceiveBiliAccount(bool overlay, String data)
method showOverlayDialog (line 198) | Future<bool> showOverlayDialog()
method syncFollow (line 208) | void syncFollow()
method syncHistory (line 239) | void syncHistory()
method syncBlockedWord (line 268) | void syncBlockedWord()
method syncBiliAccount (line 298) | void syncBiliAccount()
method showQRInfo (line 331) | void showQRInfo()
method onClose (line 359) | void onClose()
FILE: simple_live_app/lib/modules/sync/remote_sync/room/remote_sync_room_page.dart
class RemoteSyncRoomPage (line 10) | class RemoteSyncRoomPage extends GetView<RemoteSyncRoomController> {
method build (line 14) | Widget build(BuildContext context)
method buildIcon (line 273) | Widget buildIcon(String platform)
FILE: simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_config_page.dart
class RemoteSyncWebDAVConfigPage (line 10) | class RemoteSyncWebDAVConfigPage extends StatefulWidget {
method createState (line 14) | State<RemoteSyncWebDAVConfigPage> createState()
class _RemoteSyncWebDAVConfigPageState (line 18) | class _RemoteSyncWebDAVConfigPageState
method initState (line 25) | void initState()
method dispose (line 33) | void dispose()
method build (line 41) | Widget build(BuildContext context)
FILE: simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_controller.dart
class RemoteSyncWebDAVController (line 27) | class RemoteSyncWebDAVController extends BaseController {
method onInit (line 49) | void onInit()
method doWebDAVInit (line 56) | void doWebDAVInit()
method checkIsLogin (line 89) | Future<void> checkIsLogin()
method doWebDAVLogin (line 101) | void doWebDAVLogin(
method onLogout (line 124) | Future<void> onLogout()
method doWebDAVUpload (line 138) | Future<void> doWebDAVUpload()
method _backupData (line 162) | Future<List<int>> _backupData()
method doWebDAVRecovery (line 229) | void doWebDAVRecovery()
method _recovery (line 248) | Future<void> _recovery(ArchiveFile file)
method changePasswordVisible (line 337) | void changePasswordVisible()
method changeIsSyncFollows (line 341) | void changeIsSyncFollows()
method changeIsSyncHistories (line 345) | void changeIsSyncHistories()
method changeIsSyncBlockWord (line 349) | void changeIsSyncBlockWord()
method changeIsSyncBilibiliAccount (line 353) | void changeIsSyncBilibiliAccount()
FILE: simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_page.dart
class RemoteSyncWebDAVPage (line 10) | class RemoteSyncWebDAVPage extends GetView<RemoteSyncWebDAVController> {
method build (line 14) | Widget build(BuildContext context)
method showSetting (line 86) | void showSetting()
FILE: simple_live_app/lib/modules/sync/remote_sync/webdav/webdav_client.dart
class DAVClient (line 6) | class DAVClient {
method _ping (line 32) | Future<bool> _ping()
method recovery (line 51) | Future<List<int>> recovery()
FILE: simple_live_app/lib/modules/sync/sync_page.dart
class SyncPage (line 10) | class SyncPage extends StatelessWidget {
method build (line 14) | Widget build(BuildContext context)
FILE: simple_live_app/lib/requests/custom_log_interceptor.dart
class CustomLogInterceptor (line 6) | class CustomLogInterceptor extends Interceptor {
method onRequest (line 8) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
method onError (line 15) | void onError(DioException err, ErrorInterceptorHandler handler)
method onResponse (line 48) | void onResponse(Response response, ResponseInterceptorHandler handler)
method _maskHeader (line 72) | String _maskHeader(Map<String, dynamic> header)
FILE: simple_live_app/lib/requests/http_client.dart
class HttpClient (line 5) | class HttpClient {
method getText (line 29) | Future<String> getText(
method getJson (line 62) | Future<dynamic> getJson(
method get (line 95) | Future<Response<dynamic>> get(
method postJson (line 129) | Future<dynamic> postJson(
method head (line 168) | Future<Response> head(
FILE: simple_live_app/lib/requests/http_error.dart
class HttpError (line 1) | class HttpError extends Error {
method toString (line 13) | String toString()
method statusCodeToString (line 21) | String statusCodeToString(int statusCode)
FILE: simple_live_app/lib/requests/sync_client_request.dart
class SyncClientRequest (line 5) | class SyncClientRequest {
method getClientInfo (line 6) | Future<SyncClientInfoModel> getClientInfo(SyncClinet client)
method syncFollow (line 13) | Future<bool> syncFollow(
method syncTag (line 34) | Future<bool> syncTag(
method syncHistory (line 55) | Future<bool> syncHistory(
method syncBlockedWord (line 76) | Future<bool> syncBlockedWord(
method syncBiliAccount (line 97) | Future<bool> syncBiliAccount(SyncClinet client, String cookie)
FILE: simple_live_app/lib/routes/app_navigation.dart
class AppNavigator (line 19) | class AppNavigator {
method toCategoryDetail (line 21) | void toCategoryDetail(
method toLiveRoomDetail (line 27) | void toLiveRoomDetail(
method toBiliBiliLogin (line 59) | Future toBiliBiliLogin()
method toSyncDevice (line 68) | Future toSyncDevice(
FILE: simple_live_app/lib/routes/app_pages.dart
class AppPages (line 50) | class AppPages {
FILE: simple_live_app/lib/routes/route_path.dart
class RoutePath (line 2) | class RoutePath {
FILE: simple_live_app/lib/services/bilibili_account_service.dart
class BiliBiliAccountService (line 13) | class BiliBiliAccountService extends GetxService {
method onInit (line 24) | void onInit()
method loadUserInfo (line 32) | Future loadUserInfo()
method setSite (line 57) | void setSite()
method setCookie (line 63) | void setCookie(String cookie)
method logout (line 70) | void logout()
FILE: simple_live_app/lib/services/db_service.dart
class DBService (line 9) | class DBService extends GetxService {
method init (line 16) | Future init()
method getFollowTagExist (line 23) | bool getFollowTagExist(String id)
method deleteFollowTag (line 28) | Future deleteFollowTag(String id)
method getFollowTag (line 32) | FollowUserTag? getFollowTag(String tag)
method getFollowTagExistByTag (line 37) | bool getFollowTagExistByTag(String tag)
method getFollowTagList (line 42) | List<FollowUserTag> getFollowTagList()
method updateFollowTag (line 47) | Future updateFollowTag(FollowUserTag followTag)
method addFollowTag (line 52) | Future<FollowUserTag> addFollowTag(String tag)
method updateFollowTagOrder (line 64) | Future updateFollowTagOrder(List<FollowUserTag> userTagList)
method getFollowExist (line 72) | bool getFollowExist(String id)
method getFollowList (line 76) | List<FollowUser> getFollowList()
method addFollow (line 80) | Future addFollow(FollowUser follow)
method deleteFollow (line 84) | Future deleteFollow(String id)
method getHistory (line 88) | History? getHistory(String id)
method addOrUpdateHistory (line 95) | Future addOrUpdateHistory(History history)
method getHistores (line 99) | List<History> getHistores()
FILE: simple_live_app/lib/services/douyin_account_service.dart
class DouyinAccountService (line 7) | class DouyinAccountService extends GetxService {
method onInit (line 15) | void onInit()
method setSite (line 23) | void setSite()
method setCookie (line 28) | void setCookie(String cookie)
method clearCookie (line 36) | void clearCookie()
FILE: simple_live_app/lib/services/follow_service.dart
class FollowService (line 21) | class FollowService extends GetxService {
method onInit (line 52) | void onInit()
method addFollowUserTag (line 61) | Future<void> addFollowUserTag(String tag)
method delFollowUserTag (line 72) | Future<void> delFollowUserTag(FollowUserTag tag)
method getAllTagList (line 78) | void getAllTagList()
method updateFollowUserTag (line 84) | void updateFollowUserTag(FollowUserTag tag)
method filterDataByTag (line 92) | void filterDataByTag(FollowUserTag tag)
method addFollow (line 119) | Future<void> addFollow(FollowUser follow)
method initTimer (line 123) | void initTimer()
method loadData (line 140) | Future<void> loadData({bool updateStatus = true})
method getOptimalConcurrency (line 156) | int getOptimalConcurrency()
method interleaveByPlatform (line 172) | List<FollowUser> interleaveByPlatform(List<FollowUser> list)
method startUpdateStatus (line 192) | void startUpdateStatus()
method worker (line 207) | Future<void> worker(int workerId)
method updateLiveStatus (line 225) | Future updateLiveStatus(FollowUser item)
method filterData (line 251) | void filterData()
method exportFile (line 258) | void exportFile()
method inputFile (line 292) | void inputFile()
method exportText (line 317) | void exportText()
method inputText (line 353) | void inputText()
method generateJson (line 405) | String generateJson()
method inputJson (line 422) | Future inputJson(String content)
method onClose (line 440) | void onClose()
FILE: simple_live_app/lib/services/local_storage_service.dart
class LocalStorageService (line 5) | class LocalStorageService extends GetxService {
method init (line 174) | Future init()
method getValue (line 183) | T getValue<T>(dynamic key, T defaultValue)
method setValue (line 194) | Future setValue<T>(dynamic key, T value)
method removeValue (line 199) | Future removeValue<T>(dynamic key)
FILE: simple_live_app/lib/services/signalr_service.dart
type SignalRConnectionState (line 8) | enum SignalRConnectionState {
class SignalRService (line 14) | class SignalRService {
method connect (line 54) | Future<void> connect()
method _listen (line 71) | void _listen()
method disconnect (line 93) | Future<void> disconnect()
method createRoom (line 99) | Future<Resp<String>> createRoom()
method joinRoom (line 111) | Future<Resp> joinRoom(String roomId)
method sendContent (line 123) | Future<Resp> sendContent({
method dispose (line 137) | void dispose()
class Resp (line 150) | class Resp<T> {
class RoomUser (line 172) | class RoomUser {
FILE: simple_live_app/lib/services/sync_service.dart
class SyncService (line 24) | class SyncService extends GetxService {
method onInit (line 41) | void onInit()
method listenUDP (line 50) | void listenUDP()
method listenUdp (line 55) | void listenUdp(Datagram? datagram)
method sendHello (line 93) | void sendHello()
method sendInfo (line 107) | void sendInfo()
method getDeviceName (line 130) | Future<String> getDeviceName()
method refreshClients (line 151) | void refreshClients()
method getLocalIP (line 159) | Future<String> getLocalIP()
method initServer (line 190) | void initServer()
method _helloRequest (line 223) | shelf.Response _helloRequest(shelf.Request request)
method _infoRequest (line 233) | Future<shelf.Response> _infoRequest(shelf.Request request)
method _syncFollowUserReuqest (line 246) | Future<shelf.Response> _syncFollowUserReuqest(shelf.Request request)
method _syncFollowUserTagRequest (line 277) | Future<shelf.Response> _syncFollowUserTagRequest(shelf.Request request)
method _syncHistoryReuqest (line 308) | Future<shelf.Response> _syncHistoryReuqest(shelf.Request request)
method _syncBlockedWordReuqest (line 345) | Future<shelf.Response> _syncBlockedWordReuqest(shelf.Request request)
method _syncBiliAccountReuqest (line 372) | Future<shelf.Response> _syncBiliAccountReuqest(shelf.Request request)
method toJsonResponse (line 393) | shelf.Response toJsonResponse(Map<String, dynamic> data)
method onClose (line 404) | void onClose()
class SyncClinet (line 412) | class SyncClinet {
FILE: simple_live_app/lib/widgets/desktop_refresh_button.dart
class DesktopRefreshButton (line 4) | class DesktopRefreshButton extends StatelessWidget {
method build (line 11) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/filter_button.dart
class FilterButton (line 4) | class FilterButton extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/follow_user_item.dart
class FollowUserItem (line 11) | class FollowUserItem extends StatelessWidget {
method build (line 27) | Widget build(BuildContext context)
method getStatus (line 141) | String getStatus(int status)
method formatLiveDuration (line 151) | String formatLiveDuration(String? startTimeStampString)
FILE: simple_live_app/lib/widgets/keep_alive_wrapper.dart
class KeepAliveWrapper (line 3) | class KeepAliveWrapper extends StatefulWidget {
method createState (line 9) | State<KeepAliveWrapper> createState()
class _KeepAliveWrapperState (line 12) | class _KeepAliveWrapperState extends State<KeepAliveWrapper>
method build (line 15) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/live_room_card.dart
class LiveRoomCard (line 11) | class LiveRoomCard extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/net_image.dart
class NetImage (line 4) | class NetImage extends StatelessWidget {
method build (line 19) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/none_border_circular_textfield.dart
class NoneBorderCircularTextField (line 3) | class NoneBorderCircularTextField extends StatelessWidget {
method build (line 49) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/page_grid_view.dart
class PageGridView (line 12) | class PageGridView extends StatelessWidget {
method build (line 37) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/page_list_view.dart
type IndexedWidgetBuilder (line 12) | typedef IndexedWidgetBuilder = Widget Function(BuildContext context, int...
class PageListView (line 14) | class PageListView extends StatelessWidget {
method build (line 36) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/rectangular_indicator.dart
class RectangularIndicator (line 5) | class RectangularIndicator extends Decoration {
method createBoxPainter (line 45) | MyCustomPainter createBoxPainter([VoidCallback? onChanged])
class MyCustomPainter (line 62) | class MyCustomPainter extends BoxPainter {
method paint (line 89) | void paint(Canvas canvas, Offset offset, ImageConfiguration configurat...
FILE: simple_live_app/lib/widgets/settings/settings_action.dart
class SettingsAction (line 5) | class SettingsAction extends StatelessWidget {
method build (line 22) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/settings/settings_card.dart
class SettingsCard (line 4) | class SettingsCard extends StatelessWidget {
method build (line 9) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/settings/settings_menu.dart
class SettingsMenu (line 5) | class SettingsMenu<T> extends StatelessWidget {
method build (line 22) | Widget build(BuildContext context)
method openMenu (line 60) | void openMenu(BuildContext context)
FILE: simple_live_app/lib/widgets/settings/settings_number.dart
class SettingsNumber (line 5) | class SettingsNumber extends StatelessWidget {
method build (line 29) | Widget build(BuildContext context)
method openSilder (line 104) | void openSilder(BuildContext context)
FILE: simple_live_app/lib/widgets/settings/settings_switch.dart
class SettingsSwitch (line 4) | class SettingsSwitch extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/shadow_card.dart
class ShadowCard (line 5) | class ShadowCard extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/status/app_empty_widget.dart
class AppEmptyWidget (line 5) | class AppEmptyWidget extends StatelessWidget {
method build (line 10) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/status/app_error_widget.dart
class AppErrorWidget (line 5) | class AppErrorWidget extends StatelessWidget {
method build (line 12) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/status/app_loadding_widget.dart
class AppLoaddingWidget (line 6) | class AppLoaddingWidget extends StatelessWidget {
method build (line 10) | Widget build(BuildContext context)
FILE: simple_live_app/lib/widgets/superchat_card.dart
class SuperChatCard (line 9) | class SuperChatCard extends StatefulWidget {
method createState (line 21) | State<SuperChatCard> createState()
class _SuperChatCardState (line 24) | class _SuperChatCardState extends State<SuperChatCard> {
method initState (line 30) | void initState()
method timerCallback (line 41) | void timerCallback(e)
method build (line 54) | Widget build(BuildContext context)
method dispose (line 125) | void dispose()
FILE: simple_live_app/linux/flutter/generated_plugin_registrant.cc
function fl_register_plugins (line 17) | void fl_register_plugins(FlPluginRegistry* registry) {
FILE: simple_live_app/linux/runner/main.cc
function main (line 3) | int main(int argc, char** argv) {
FILE: simple_live_app/linux/runner/my_application.cc
type _MyApplication (line 10) | struct _MyApplication {
function first_frame_cb (line 18) | static void first_frame_cb(MyApplication* self, FlView* view) {
function my_application_activate (line 23) | static void my_application_activate(GApplication* application) {
function gboolean (line 82) | static gboolean my_application_local_command_line(GApplication* applicat...
function my_application_startup (line 103) | static void my_application_startup(GApplication* application) {
function my_application_shutdown (line 112) | static void my_application_shutdown(GApplication* application) {
function my_application_dispose (line 121) | static void my_application_dispose(GObject* object) {
function my_application_class_init (line 127) | static void my_application_class_init(MyApplicationClass* klass) {
function my_application_init (line 136) | static void my_application_init(MyApplication* self) {}
function MyApplication (line 138) | MyApplication* my_application_new() {
FILE: simple_live_app/test/widget_test.dart
function main (line 13) | void main()
FILE: simple_live_app/windows/flutter/generated_plugin_registrant.cc
function RegisterPlugins (line 22) | void RegisterPlugins(flutter::PluginRegistry* registry) {
FILE: simple_live_app/windows/runner/flutter_window.cpp
function LRESULT (line 50) | LRESULT
FILE: simple_live_app/windows/runner/flutter_window.h
function class (line 12) | class FlutterWindow : public Win32Window {
FILE: simple_live_app/windows/runner/main.cpp
function wWinMain (line 8) | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
FILE: simple_live_app/windows/runner/utils.cpp
function CreateAndAttachConsole (line 10) | void CreateAndAttachConsole() {
function GetCommandLineArguments (line 24) | std::vector<std::string> GetCommandLineArguments() {
function Utf8FromUtf16 (line 44) | std::string Utf8FromUtf16(const wchar_t* utf16_string) {
FILE: simple_live_app/windows/runner/win32_window.cpp
function Scale (line 36) | int Scale(int source, double scale_factor) {
function EnableFullDpiSupportIfAvailable (line 42) | void EnableFullDpiSupportIfAvailable(HWND hwnd) {
class WindowClassRegistrar (line 59) | class WindowClassRegistrar {
method WindowClassRegistrar (line 64) | static WindowClassRegistrar* GetInstance() {
method WindowClassRegistrar (line 80) | WindowClassRegistrar() = default;
function wchar_t (line 89) | const wchar_t* WindowClassRegistrar::GetWindowClass() {
function LRESULT (line 157) | LRESULT CALLBACK Win32Window::WndProc(HWND const window,
function LRESULT (line 176) | LRESULT
function Win32Window (line 236) | Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
function RECT (line 252) | RECT Win32Window::GetClientArea() {
function HWND (line 258) | HWND Win32Window::GetHandle() {
FILE: simple_live_app/windows/runner/win32_window.h
type Size (line 21) | struct Size {
FILE: simple_live_console/bin/simple_live_console.dart
function main (line 5) | void main(List<String> arguments)
function printHelp (line 36) | void printHelp()
function printInfo (line 41) | Future printInfo(String url)
function printDanmaku (line 73) | Future printDanmaku(String url)
function parseUrl (line 100) | List parseUrl(String url)
FILE: simple_live_console/test/all_live_console_test.dart
function main (line 3) | void main()
FILE: simple_live_core/example/simple_live_core_example.dart
function main (line 1) | void main()
FILE: simple_live_core/lib/src/bilibili_site.dart
class BiliBiliSite (line 19) | class BiliBiliSite implements LiveSite {
method getDanmaku (line 30) | LiveDanmaku getDanmaku()
method getHeader (line 39) | Future<Map<String, String>> getHeader()
method getCategores (line 61) | Future<List<LiveCategory>> getCategores()
method getCategoryRooms (line 93) | Future<LiveCategoryResult> getCategoryRooms(LiveSubCategory category,
method getPlayQualites (line 125) | Future<List<LivePlayQuality>> getPlayQualites(
method getPlayUrls (line 157) | Future<LivePlayUrl> getPlayUrls(
method getRecommendRooms (line 208) | Future<LiveCategoryResult> getRecommendRooms({int page = 1})
method getRoomDetail (line 237) | Future<LiveRoomDetail> getRoomDetail({required String roomId})
method getRoomInfo (line 306) | Future<Map<String, dynamic>> getRoomInfo({required String roomId})
method searchRooms (line 320) | Future<LiveSearchRoomResult> searchRooms(String keyword,
method searchAnchors (line 355) | Future<LiveSearchAnchorResult> searchAnchors(String keyword,
method getLiveStatus (line 389) | Future<bool> getLiveStatus({required String roomId})
method getSuperChatMessage (line 401) | Future<List<LiveSuperChatMessage>> getSuperChatMessage(
method getBuvid (line 439) | Future<Map> getBuvid()
method getWbiKeys (line 534) | Future<(String, String)> getWbiKeys()
method getMixinKey (line 555) | String getMixinKey(String origin)
method getWbiSign (line 560) | Future<Map<String, String>> getWbiSign(String url)
method getAccessId (line 592) | Future<String> getAccessId()
FILE: simple_live_core/lib/src/common/binary_writer.dart
class BinaryWriter (line 3) | class BinaryWriter {
method writeBytes (line 9) | void writeBytes(List<int> list)
method writeInt (line 14) | void writeInt(int value, int len, {Endian endian = Endian.big})
method writeDouble (line 35) | void writeDouble(double value, int len, {Endian endian = Endian.big})
class BinaryReader (line 51) | class BinaryReader {
method read (line 59) | int read()
method readInt (line 69) | int readInt(int len, {Endian endian = Endian.big})
method readByte (line 98) | int readByte({Endian endian = Endian.big})
method readShort (line 104) | int readShort({Endian endian = Endian.big})
method readInt32 (line 110) | int readInt32({Endian endian = Endian.big})
method readLong (line 116) | int readLong({Endian endian = Endian.big})
method readBytes (line 123) | Uint8List readBytes(int len)
method readFloat (line 134) | double readFloat(int len, {Endian endian = Endian.big})
FILE: simple_live_core/lib/src/common/convert_helper.dart
function asT (line 1) | T? asT<T>(dynamic value)
FILE: simple_live_core/lib/src/common/core_error.dart
class CoreError (line 1) | class CoreError extends Error {
method toString (line 13) | String toString()
method statusCodeToString (line 21) | String statusCodeToString(int statusCode)
FILE: simple_live_core/lib/src/common/core_log.dart
type RequestLogType (line 3) | enum RequestLogType {
class CoreLog (line 16) | class CoreLog {
method d (line 34) | void d(String message)
method i (line 44) | void i(String message)
method e (line 54) | void e(String message, StackTrace stackTrace)
method error (line 65) | void error(e)
method w (line 79) | void w(String message)
FILE: simple_live_core/lib/src/common/custom_interceptor.dart
class CustomInterceptor (line 5) | class CustomInterceptor extends Interceptor {
method onRequest (line 7) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
method onError (line 25) | void onError(DioException err, ErrorInterceptorHandler handler)
method onResponse (line 51) | void onResponse(Response response, ResponseInterceptorHandler handler)
FILE: simple_live_core/lib/src/common/http_client.dart
class HttpClient (line 6) | class HttpClient {
method getText (line 30) | Future<String> getText(
method getJson (line 63) | Future<dynamic> getJson(
method postJson (line 97) | Future<dynamic> postJson(
method head (line 136) | Future<Response> head(
FILE: simple_live_core/lib/src/common/web_socket_util.dart
type SocketStatus (line 5) | enum SocketStatus {
class WebScoketUtils (line 11) | class WebScoketUtils {
method connect (line 63) | void connect({bool retry = false})
method ready (line 88) | void ready()
method initHeartBeat (line 101) | void initHeartBeat()
method receiveMessage (line 110) | void receiveMessage(dynamic data)
method onError (line 116) | void onError(e, s)
method onDone (line 121) | void onDone()
method sendMessage (line 129) | void sendMessage(dynamic message)
method close (line 135) | void close()
method reconnect (line 149) | void reconnect()
FILE: simple_live_core/lib/src/danmaku/bilibili_danmaku.dart
class BiliBiliDanmakuArgs (line 13) | class BiliBiliDanmakuArgs {
method toString (line 29) | String toString()
class BiliBiliDanmaku (line 41) | class BiliBiliDanmaku implements LiveDanmaku {
method start (line 57) | Future start(dynamic args)
method joinRoom (line 87) | void joinRoom(BiliBiliDanmakuArgs args)
method heartbeat (line 104) | void heartbeat()
method stop (line 112) | Future stop()
method encodeData (line 118) | List<int> encodeData(String msg, int action)
method decodeMessage (line 146) | void decodeMessage(List<int> data)
method parseMessage (line 187) | void parseMessage(String jsonMessage)
method readInt (line 241) | int readInt(List<int> buffer, int start, int len)
FILE: simple_live_core/lib/src/danmaku/douyin_danmaku.dart
class DouyinDanmakuArgs (line 10) | class DouyinDanmakuArgs {
method toString (line 22) | String toString()
class DouyinDanmaku (line 32) | class DouyinDanmaku implements LiveDanmaku {
method start (line 47) | Future start(dynamic args)
method heartbeat (line 126) | void heartbeat()
method decodeMessage (line 132) | void decodeMessage(args)
method unPackWebcastChatMessage (line 153) | void unPackWebcastChatMessage(List<int> payload)
method unPackWebcastRoomUserSeqMessage (line 169) | void unPackWebcastRoomUserSeqMessage(List<int> payload)
method sendAck (line 183) | void sendAck(var logId, String internalExt)
method joinRoom (line 191) | void joinRoom(args)
method stop (line 198) | Future stop()
FILE: simple_live_core/lib/src/danmaku/douyu_danmaku.dart
class DouyuDanmaku (line 10) | class DouyuDanmaku implements LiveDanmaku {
method start (line 25) | Future start(dynamic args)
method joinRoom (line 49) | void joinRoom(roomId)
method heartbeat (line 57) | void heartbeat()
method stop (line 63) | Future stop()
method decodeMessage (line 69) | void decodeMessage(List<int> data)
method serializeDouyu (line 99) | List<int> serializeDouyu(String body)
method deserializeDouyu (line 122) | String? deserializeDouyu(List<int> buffer)
method sttToJObject (line 144) | dynamic sttToJObject(String str)
method unscapeSlashAt (line 174) | String unscapeSlashAt(String str)
method getColor (line 178) | LiveMessageColor getColor(int type)
FILE: simple_live_core/lib/src/danmaku/huya_danmaku.dart
class HuyaDanmakuArgs (line 11) | class HuyaDanmakuArgs {
method toString (line 21) | String toString()
class HuyaDanmaku (line 30) | class HuyaDanmaku implements LiveDanmaku {
method start (line 49) | Future start(dynamic args)
method joinRoom (line 74) | void joinRoom()
method getJoinData (line 80) | List<int> getJoinData(int ayyuid, int tid, int sid)
method heartbeat (line 103) | void heartbeat()
method stop (line 108) | Future stop()
method decodeMessage (line 114) | void decodeMessage(List<int> data)
FILE: simple_live_core/lib/src/danmaku/proto/douyin.pb.dart
class Response (line 21) | class Response extends $pb.GeneratedMessage {
method clone (line 47) | Response clone()
method copyWith (line 52) | Response copyWith(void Function(Response) updates)
method create (line 57) | Response create()
method createEmptyInstance (line 58) | Response createEmptyInstance()
method createRepeated (line 59) | $pb.PbList<Response> createRepeated()
method getDefault (line 61) | Response getDefault()
method hasCursor (line 72) | $core.bool hasCursor()
method clearCursor (line 74) | void clearCursor()
method hasFetchInterval (line 81) | $core.bool hasFetchInterval()
method clearFetchInterval (line 83) | void clearFetchInterval()
method hasNow (line 90) | $core.bool hasNow()
method clearNow (line 92) | void clearNow()
method hasInternalExt (line 99) | $core.bool hasInternalExt()
method clearInternalExt (line 101) | void clearInternalExt()
method hasFetchType (line 108) | $core.bool hasFetchType()
method clearFetchType (line 110) | void clearFetchType()
method hasHeartbeatDuration (line 120) | $core.bool hasHeartbeatDuration()
method clearHeartbeatDuration (line 122) | void clearHeartbeatDuration()
method hasNeedAck (line 129) | $core.bool hasNeedAck()
method clearNeedAck (line 131) | void clearNeedAck()
method hasPushServer (line 138) | $core.bool hasPushServer()
method clearPushServer (line 140) | void clearPushServer()
method hasLiveCursor (line 147) | $core.bool hasLiveCursor()
method clearLiveCursor (line 149) | void clearLiveCursor()
method hasHistoryNoMore (line 156) | $core.bool hasHistoryNoMore()
method clearHistoryNoMore (line 158) | void clearHistoryNoMore()
class Message (line 161) | class Message extends $pb.GeneratedMessage {
method clone (line 183) | Message clone()
method copyWith (line 188) | Message copyWith(void Function(Message) updates)
method create (line 193) | Message create()
method createEmptyInstance (line 194) | Message createEmptyInstance()
method createRepeated (line 195) | $pb.PbList<Message> createRepeated()
method getDefault (line 197) | Message getDefault()
method hasMethod (line 205) | $core.bool hasMethod()
method clearMethod (line 207) | void clearMethod()
method hasPayload (line 214) | $core.bool hasPayload()
method clearPayload (line 216) | void clearPayload()
method hasMsgId (line 223) | $core.bool hasMsgId()
method clearMsgId (line 225) | void clearMsgId()
method hasMsgType (line 232) | $core.bool hasMsgType()
method clearMsgType (line 234) | void clearMsgType()
method hasOffset (line 241) | $core.bool hasOffset()
method clearOffset (line 243) | void clearOffset()
method hasNeedWrdsStore (line 250) | $core.bool hasNeedWrdsStore()
method clearNeedWrdsStore (line 252) | void clearNeedWrdsStore()
method hasWrdsVersion (line 259) | $core.bool hasWrdsVersion()
method clearWrdsVersion (line 261) | void clearWrdsVersion()
method hasWrdsSubKey (line 268) | $core.bool hasWrdsSubKey()
method clearWrdsSubKey (line 270) | void clearWrdsSubKey()
class ChatMessage (line 273) | class ChatMessage extends $pb.GeneratedMessage {
method clone (line 306) | ChatMessage clone()
method copyWith (line 311) | ChatMessage copyWith(void Function(ChatMessage) updates)
method create (line 316) | ChatMessage create()
method createEmptyInstance (line 317) | ChatMessage createEmptyInstance()
method createRepeated (line 318) | $pb.PbList<ChatMessage> createRepeated()
method getDefault (line 320) | ChatMessage getDefault()
method hasCommon (line 328) | $core.bool hasCommon()
method clearCommon (line 330) | void clearCommon()
method ensureCommon (line 332) | Common ensureCommon()
method hasUser (line 339) | $core.bool hasUser()
method clearUser (line 341) | void clearUser()
method ensureUser (line 343) | User ensureUser()
method hasContent (line 350) | $core.bool hasContent()
method clearContent (line 352) | void clearContent()
method hasVisibleToSender (line 359) | $core.bool hasVisibleToSender()
method clearVisibleToSender (line 361) | void clearVisibleToSender()
method hasBackgroundImage (line 368) | $core.bool hasBackgroundImage()
method clearBackgroundImage (line 370) | void clearBackgroundImage()
method ensureBackgroundImage (line 372) | Image ensureBackgroundImage()
method hasFullScreenTextColor (line 379) | $core.bool hasFullScreenTextColor()
method clearFullScreenTextColor (line 381) | void clearFullScreenTextColor()
method hasBackgroundImageV2 (line 388) | $core.bool hasBackgroundImageV2()
method clearBackgroundImageV2 (line 390) | void clearBackgroundImageV2()
method ensureBackgroundImageV2 (line 392) | Image ensureBackgroundImageV2()
method hasPublicAreaCommon (line 399) | $core.bool hasPublicAreaCommon()
method clearPublicAreaCommon (line 401) | void clearPublicAreaCommon()
method ensurePublicAreaCommon (line 403) | PublicAreaCommon ensurePublicAreaCommon()
method hasGiftImage (line 410) | $core.bool hasGiftImage()
method clearGiftImage (line 412) | void clearGiftImage()
method ensureGiftImage (line 414) | Image ensureGiftImage()
method hasAgreeMsgId (line 421) | $core.bool hasAgreeMsgId()
method clearAgreeMsgId (line 423) | void clearAgreeMsgId()
method hasPriorityLevel (line 430) | $core.bool hasPriorityLevel()
method clearPriorityLevel (line 432) | void clearPriorityLevel()
method hasLandscapeAreaCommon (line 439) | $core.bool hasLandscapeAreaCommon()
method clearLandscapeAreaCommon (line 441) | void clearLandscapeAreaCommon()
method ensureLandscapeAreaCommon (line 443) | LandscapeAreaCommon ensureLandscapeAreaCommon()
method hasEventTime (line 450) | $core.bool hasEventTime()
method clearEventTime (line 452) | void clearEventTime()
method hasSendReview (line 459) | $core.bool hasSendReview()
method clearSendReview (line 461) | void clearSendReview()
method hasFromIntercom (line 468) | $core.bool hasFromIntercom()
method clearFromIntercom (line 470) | void clearFromIntercom()
method hasIntercomHideUserCard (line 477) | $core.bool hasIntercomHideUserCard()
method clearIntercomHideUserCard (line 479) | void clearIntercomHideUserCard()
method hasChatBy (line 486) | $core.bool hasChatBy()
method clearChatBy (line 488) | void clearChatBy()
method hasIndividualChatPriority (line 495) | $core.bool hasIndividualChatPriority()
method clearIndividualChatPriority (line 497) | void clearIndividualChatPriority()
method hasRtfContent (line 504) | $core.bool hasRtfContent()
method clearRtfContent (line 506) | void clearRtfContent()
method ensureRtfContent (line 508) | Text ensureRtfContent()
class LandscapeAreaCommon (line 511) | class LandscapeAreaCommon extends $pb.GeneratedMessage {
method clone (line 530) | LandscapeAreaCommon clone()
method copyWith (line 535) | LandscapeAreaCommon copyWith(void Function(LandscapeAreaCommon) updates)
method create (line 540) | LandscapeAreaCommon create()
method createEmptyInstance (line 541) | LandscapeAreaCommon createEmptyInstance()
method createRepeated (line 542) | $pb.PbList<LandscapeAreaCommon> createRepeated()
method getDefault (line 544) | LandscapeAreaCommon getDefault()
method hasShowHead (line 552) | $core.bool hasShowHead()
method clearShowHead (line 554) | void clearShowHead()
method hasShowNickname (line 561) | $core.bool hasShowNickname()
method clearShowNickname (line 563) | void clearShowNickname()
method hasShowFontColor (line 570) | $core.bool hasShowFontColor()
method clearShowFontColor (line 572) | void clearShowFontColor()
class RoomUserSeqMessage (line 581) | class RoomUserSeqMessage extends $pb.GeneratedMessage {
method clone (line 608) | RoomUserSeqMessage clone()
method copyWith (line 613) | RoomUserSeqMessage copyWith(void Function(RoomUserSeqMessage) updates)
method create (line 618) | RoomUserSeqMessage create()
method createEmptyInstance (line 619) | RoomUserSeqMessage createEmptyInstance()
method createRepeated (line 620) | $pb.PbList<RoomUserSeqMessage> createRepeated()
method getDefault (line 622) | RoomUserSeqMessage getDefault()
method hasCommon (line 630) | $core.bool hasCommon()
method clearCommon (line 632) | void clearCommon()
method ensureCommon (line 634) | Common ensureCommon()
method hasTotal (line 644) | $core.bool hasTotal()
method clearTotal (line 646) | void clearTotal()
method hasPopStr (line 653) | $core.bool hasPopStr()
method clearPopStr (line 655) | void clearPopStr()
method hasPopularity (line 665) | $core.bool hasPopularity()
method clearPopularity (line 667) | void clearPopularity()
method hasTotalUser (line 674) | $core.bool hasTotalUser()
method clearTotalUser (line 676) | void clearTotalUser()
method hasTotalUserStr (line 683) | $core.bool hasTotalUserStr()
method clearTotalUserStr (line 685) | void clearTotalUserStr()
method hasTotalStr (line 692) | $core.bool hasTotalStr()
method clearTotalStr (line 694) | void clearTotalStr()
method hasOnlineUserForAnchor (line 701) | $core.bool hasOnlineUserForAnchor()
method clearOnlineUserForAnchor (line 703) | void clearOnlineUserForAnchor()
method hasTotalPvForAnchor (line 710) | $core.bool hasTotalPvForAnchor()
method clearTotalPvForAnchor (line 712) | void clearTotalPvForAnchor()
method hasUpRightStatsStr (line 719) | $core.bool hasUpRightStatsStr()
method clearUpRightStatsStr (line 721) | void clearUpRightStatsStr()
method hasUpRightStatsStrComplete (line 728) | $core.bool hasUpRightStatsStrComplete()
method clearUpRightStatsStrComplete (line 730) | void clearUpRightStatsStrComplete()
class CommonTextMessage (line 733) | class CommonTextMessage extends $pb.GeneratedMessage {
method clone (line 750) | CommonTextMessage clone()
method copyWith (line 755) | CommonTextMessage copyWith(void Function(CommonTextMessage) updates)
method create (line 760) | CommonTextMessage create()
method createEmptyInstance (line 761) | CommonTextMessage createEmptyInstance()
method createRepeated (line 762) | $pb.PbList<CommonTextMessage> createRepeated()
method getDefault (line 764) | CommonTextMessage getDefault()
method hasCommon (line 772) | $core.bool hasCommon()
method clearCommon (line 774) | void clearCommon()
method ensureCommon (line 776) | Common ensureCommon()
method hasUser (line 783) | $core.bool hasUser()
method clearUser (line 785) | void clearUser()
method ensureUser (line 787) | User ensureUser()
method hasScene (line 794) | $core.bool hasScene()
method clearScene (line 796) | void clearScene()
class UpdateFanTicketMessage (line 799) | class UpdateFanTicketMessage extends $pb.GeneratedMessage {
method clone (line 817) | UpdateFanTicketMessage clone()
method copyWith (line 822) | UpdateFanTicketMessage copyWith(void Function(UpdateFanTicketMessage) ...
method create (line 827) | UpdateFanTicketMessage create()
method createEmptyInstance (line 828) | UpdateFanTicketMessage createEmptyInstance()
method createRepeated (line 829) | $pb.PbList<UpdateFanTicketMessage> createRepeated()
method getDefault (line 831) | UpdateFanTicketMessage getDefault()
method hasCommon (line 839) | $core.bool hasCommon()
method clearCommon (line 841) | void clearCommon()
method ensureCommon (line 843) | Common ensureCommon()
method hasRoomFanTicketCountText (line 850) | $core.bool hasRoomFanTicketCountText()
method clearRoomFanTicketCountText (line 852) | void clearRoomFanTicketCountText()
method hasRoomFanTicketCount (line 859) | $core.bool hasRoomFanTicketCount()
method clearRoomFanTicketCount (line 861) | void clearRoomFanTicketCount()
method hasForceUpdate (line 868) | $core.bool hasForceUpdate()
method clearForceUpdate (line 870) | void clearForceUpdate()
class RoomUserSeqMessageContributor (line 873) | class RoomUserSeqMessageContributor extends $pb.GeneratedMessage {
method clone (line 894) | RoomUserSeqMessageContributor clone()
method copyWith (line 899) | RoomUserSeqMessageContributor copyWith(void Function(RoomUserSeqMessag...
method create (line 904) | RoomUserSeqMessageContributor create()
method createEmptyInstance (line 905) | RoomUserSeqMessageContributor createEmptyInstance()
method createRepeated (line 906) | $pb.PbList<RoomUserSeqMessageContributor> createRepeated()
method getDefault (line 908) | RoomUserSeqMessageContributor getDefault()
method hasScore (line 916) | $core.bool hasScore()
method clearScore (line 918) | void clearScore()
method hasUser (line 925) | $core.bool hasUser()
method clearUser (line 927) | void clearUser()
method ensureUser (line 929) | User ensureUser()
method hasRank (line 936) | $core.bool hasRank()
method clearRank (line 938) | void clearRank()
method hasDelta (line 945) | $core.bool hasDelta()
method clearDelta (line 947) | void clearDelta()
method hasIsHidden (line 954) | $core.bool hasIsHidden()
method clearIsHidden (line 956) | void clearIsHidden()
method hasScoreDescription (line 963) | $core.bool hasScoreDescription()
method clearScoreDescription (line 965) | void clearScoreDescription()
method hasExactlyScore (line 972) | $core.bool hasExactlyScore()
method clearExactlyScore (line 974) | void clearExactlyScore()
class GiftMessage (line 977) | class GiftMessage extends $pb.GeneratedMessage {
method clone (line 1022) | GiftMessage clone()
method copyWith (line 1027) | GiftMessage copyWith(void Function(GiftMessage) updates)
method create (line 1032) | GiftMessage create()
method createEmptyInstance (line 1033) | GiftMessage createEmptyInstance()
method createRepeated (line 1034) | $pb.PbList<GiftMessage> createRepeated()
method getDefault (line 1036) | GiftMessage getDefault()
method hasCommon (line 1044) | $core.bool hasCommon()
method clearCommon (line 1046) | void clearCommon()
method ensureCommon (line 1048) | Common ensureCommon()
method hasGiftId (line 1055) | $core.bool hasGiftId()
method clearGiftId (line 1057) | void clearGiftId()
method hasFanTicketCount (line 1064) | $core.bool hasFanTicketCount()
method clearFanTicketCount (line 1066) | void clearFanTicketCount()
method hasGroupCount (line 1073) | $core.bool hasGroupCount()
method clearGroupCount (line 1075) | void clearGroupCount()
method hasRepeatCount (line 1082) | $core.bool hasRepeatCount()
method clearRepeatCount (line 1084) | void clearRepeatCount()
method hasComboCount (line 1091) | $core.bool hasComboCount()
method clearComboCount (line 1093) | void clearComboCount()
method hasUser (line 1100) | $core.bool hasUser()
method clearUser (line 1102) | void clearUser()
method ensureUser (line 1104) | User ensureUser()
method hasToUser (line 1111) | $core.bool hasToUser()
method clearToUser (line 1113) | void clearToUser()
method ensureToUser (line 1115) | User ensureToUser()
method hasRepeatEnd (line 1122) | $core.bool hasRepeatEnd()
method clearRepeatEnd (line 1124) | void clearRepeatEnd()
method hasTextEffect (line 1131) | $core.bool hasTextEffect()
method clearTextEffect (line 1133) | void clearTextEffect()
method ensureTextEffect (line 1135) | TextEffect ensureTextEffect()
method hasGroupId (line 1142) | $core.bool hasGroupId()
method clearGroupId (line 1144) | void clearGroupId()
method hasIncomeTaskgifts (line 1151) | $core.bool hasIncomeTaskgifts()
method clearIncomeTaskgifts (line 1153) | void clearIncomeTaskgifts()
method hasRoomFanTicketCount (line 1160) | $core.bool hasRoomFanTicketCount()
method clearRoomFanTicketCount (line 1162) | void clearRoomFanTicketCount()
method hasPriority (line 1169) | $core.bool hasPriority()
method clearPriority (line 1171) | void clearPriority()
method ensurePriority (line 1173) | GiftIMPriority ensurePriority()
method hasGift (line 1180) | $core.bool hasGift()
method clearGift (line 1182) | void clearGift()
method ensureGift (line 1184) | GiftStruct ensureGift()
method hasLogId (line 1191) | $core.bool hasLogId()
method clearLogId (line 1193) | void clearLogId()
method hasSendType (line 1200) | $core.bool hasSendType()
method clearSendType (line 1202) | void clearSendType()
method hasPublicAreaCommon (line 1209) | $core.bool hasPublicAreaCommon()
method clearPublicAreaCommon (line 1211) | void clearPublicAreaCommon()
method ensurePublicAreaCommon (line 1213) | PublicAreaCommon ensurePublicAreaCommon()
method hasTrayDisplayText (line 1220) | $core.bool hasTrayDisplayText()
method clearTrayDisplayText (line 1222) | void clearTrayDisplayText()
method ensureTrayDisplayText (line 1224) | Text ensureTrayDisplayText()
method hasBannedDisplayEffects (line 1231) | $core.bool hasBannedDisplayEffects()
method clearBannedDisplayEffects (line 1233) | void clearBannedDisplayEffects()
method hasDisplayForSelf (line 1240) | $core.bool hasDisplayForSelf()
method clearDisplayForSelf (line 1242) | void clearDisplayForSelf()
method hasInteractGiftInfo (line 1249) | $core.bool hasInteractGiftInfo()
method clearInteractGiftInfo (line 1251) | void clearInteractGiftInfo()
method hasDiyItemInfo (line 1258) | $core.bool hasDiyItemInfo()
method clearDiyItemInfo (line 1260) | void clearDiyItemInfo()
method hasTotalCount (line 1270) | $core.bool hasTotalCount()
method clearTotalCount (line 1272) | void clearTotalCount()
method hasClientGiftSource (line 1279) | $core.bool hasClientGiftSource()
method clearClientGiftSource (line 1281) | void clearClientGiftSource()
method hasSendTime (line 1291) | $core.bool hasSendTime()
method clearSendTime (line 1293) | void clearSendTime()
method hasForceDisplayEffects (line 1300) | $core.bool hasForceDisplayEffects()
method clearForceDisplayEffects (line 1302) | void clearForceDisplayEffects()
method hasTraceId (line 1309) | $core.bool hasTraceId()
method clearTraceId (line 1311) | void clearTraceId()
method hasEffectDisplayTs (line 1318) | $core.bool hasEffectDisplayTs()
method clearEffectDisplayTs (line 1320) | void clearEffectDisplayTs()
class GiftStruct (line 1323) | class GiftStruct extends $pb.GeneratedMessage {
method clone (line 1357) | GiftStruct clone()
method copyWith (line 1362) | GiftStruct copyWith(void Function(GiftStruct) updates)
method create (line 1367) | GiftStruct create()
method createEmptyInstance (line 1368) | GiftStruct createEmptyInstance()
method createRepeated (line 1369) | $pb.PbList<GiftStruct> createRepeated()
method getDefault (line 1371) | GiftStruct getDefault()
method hasImage (line 1379) | $core.bool hasImage()
method clearImage (line 1381) | void clearImage()
method ensureImage (line 1383) | Image ensureImage()
method hasDescribe (line 1390) | $core.bool hasDescribe()
method clearDescribe (line 1392) | void clearDescribe()
method hasNotify (line 1399) | $core.bool hasNotify()
method clearNotify (line 1401) | void clearNotify()
method hasDuration (line 1408) | $core.bool hasDuration()
method clearDuration (line 1410) | void clearDuration()
method hasId (line 1417) | $core.bool hasId()
method clearId (line 1419) | void clearId()
method hasForLinkmic (line 1426) | $core.bool hasForLinkmic()
method clearForLinkmic (line 1428) | void clearForLinkmic()
method hasDoodle (line 1435) | $core.bool hasDoodle()
method clearDoodle (line 1437) | void clearDoodle()
method hasForFansclub (line 1444) | $core.bool hasForFansclub()
method clearForFansclub (line 1446) | void clearForFansclub()
method hasCombo (line 1453) | $core.bool hasCombo()
method clearCombo (line 1455) | void clearCombo()
method hasType (line 1462) | $core.bool hasType()
method clearType (line 1464) | void clearType()
method hasDiamondCount (line 1471) | $core.bool hasDiamondCount()
method clearDiamondCount (line 1473) | void clearDiamondCount()
method hasIsDisplayedOnPanel (line 1480) | $core.bool hasIsDisplayedOnPanel()
method clearIsDisplayedOnPanel (line 1482) | void clearIsDisplayedOnPanel()
method hasPrimaryEffectId (line 1489) | $core.bool hasPrimaryEffectId()
method clearPrimaryEffectId (line 1491) | void clearPrimaryEffectId()
method hasGiftLabelIcon (line 1498) | $core.bool hasGiftLabelIcon()
method clearGiftLabelIcon (line 1500) | void clearGiftLabelIcon()
method ensureGiftLabelIcon (line 1502) | Image ensureGiftLabelIcon()
method hasName (line 1509) | $core.bool hasName()
method clearName (line 1511) | void clearName()
method hasRegion (line 1518) | $core.bool hasRegion()
method clearRegion (line 1520) | void clearRegion()
method hasManual (line 1527) | $core.bool hasManual()
method clearManual (line 1529) | void clearManual()
method hasForCustom (line 1536) | $core.bool hasForCustom()
method clearForCustom (line 1538) | void clearForCustom()
method hasIcon (line 1545) | $core.bool hasIcon()
method clearIcon (line 1547) | void clearIcon()
method ensureIcon (line 1549) | Image ensureIcon()
method hasActionType (line 1556) | $core.bool hasActionType()
method clearActionType (line 1558) | void clearActionType()
class GiftIMPriority (line 1561) | class GiftIMPriority extends $pb.GeneratedMessage {
method clone (line 1578) | GiftIMPriority clone()
method copyWith (line 1583) | GiftIMPriority copyWith(void Function(GiftIMPriority) updates)
method create (line 1588) | GiftIMPriority create()
method createEmptyInstance (line 1589) | GiftIMPriority createEmptyInstance()
method createRepeated (line 1590) | $pb.PbList<GiftIMPriority> createRepeated()
method getDefault (line 1592) | GiftIMPriority getDefault()
method hasSelfQueuePriority (line 1603) | $core.bool hasSelfQueuePriority()
method clearSelfQueuePriority (line 1605) | void clearSelfQueuePriority()
method hasPriority (line 1612) | $core.bool hasPriority()
method clearPriority (line 1614) | void clearPriority()
class TextEffect (line 1617) | class TextEffect extends $pb.GeneratedMessage {
method clone (line 1633) | TextEffect clone()
method copyWith (line 1638) | TextEffect copyWith(void Function(TextEffect) updates)
method create (line 1643) | TextEffect create()
method createEmptyInstance (line 1644) | TextEffect createEmptyInstance()
method createRepeated (line 1645) | $pb.PbList<TextEffect> createRepeated()
method getDefault (line 1647) | TextEffect getDefault()
method hasPortrait (line 1655) | $core.bool hasPortrait()
method clearPortrait (line 1657) | void clearPortrait()
method ensurePortrait (line 1659) | TextEffectDetail ensurePortrait()
method hasLandscape (line 1666) | $core.bool hasLandscape()
method clearLandscape (line 1668) | void clearLandscape()
method ensureLandscape (line 1670) | TextEffectDetail ensureLandscape()
class TextEffectDetail (line 1673) | class TextEffectDetail extends $pb.GeneratedMessage {
method clone (line 1702) | TextEffectDetail clone()
method copyWith (line 1707) | TextEffectDetail copyWith(void Function(TextEffectDetail) updates)
method create (line 1712) | TextEffectDetail create()
method createEmptyInstance (line 1713) | TextEffectDetail createEmptyInstance()
method createRepeated (line 1714) | $pb.PbList<TextEffectDetail> createRepeated()
method getDefault (line 1716) | TextEffectDetail getDefault()
method hasText (line 1724) | $core.bool hasText()
method clearText (line 1726) | void clearText()
method ensureText (line 1728) | Text ensureText()
method hasTextFontSize (line 1735) | $core.bool hasTextFontSize()
method clearTextFontSize (line 1737) | void clearTextFontSize()
method hasBackground (line 1744) | $core.bool hasBackground()
method clearBackground (line 1746) | void clearBackground()
method ensureBackground (line 1748) | Image ensureBackground()
method hasStart (line 1755) | $core.bool hasStart()
method clearStart (line 1757) | void clearStart()
method hasDuration (line 1764) | $core.bool hasDuration()
method clearDuration (line 1766) | void clearDuration()
method hasX (line 1773) | $core.bool hasX()
method clearX (line 1775) | void clearX()
method hasY (line 1782) | $core.bool hasY()
method clearY (line 1784) | void clearY()
method hasWidth (line 1791) | $core.bool hasWidth()
method clearWidth (line 1793) | void clearWidth()
method hasHeight (line 1800) | $core.bool hasHeight()
method clearHeight (line 1802) | void clearHeight()
method hasShadowDx (line 1809) | $core.bool hasShadowDx()
method clearShadowDx (line 1811) | void clearShadowDx()
method hasShadowDy (line 1818) | $core.bool hasShadowDy()
method clearShadowDy (line 1820) | void clearShadowDy()
method hasShadowRadius (line 1827) | $core.bool hasShadowRadius()
method clearShadowRadius (line 1829) | void clearShadowRadius()
method hasShadowColor (line 1836) | $core.bool hasShadowColor()
method clearShadowColor (line 1838) | void clearShadowColor()
method hasStrokeColor (line 1845) | $core.bool hasStrokeColor()
method clearStrokeColor (line 1847) | void clearStrokeColor()
method hasStrokeWidth (line 1854) | $core.bool hasStrokeWidth()
method clearStrokeWidth (line 1856) | void clearStrokeWidth()
class MemberMessage (line 1859) | class MemberMessage extends $pb.GeneratedMessage {
method clone (line 1894) | MemberMessage clone()
method copyWith (line 1899) | MemberMessage copyWith(void Function(MemberMessage) updates)
method create (line 1904) | MemberMessage create()
method createEmptyInstance (line 1905) | MemberMessage createEmptyInstance()
method createRepeated (line 1906) | $pb.PbList<MemberMessage> createRepeated()
method getDefault (line 1908) | MemberMessage getDefault()
method hasCommon (line 1916) | $core.bool hasCommon()
method clearCommon (line 1918) | void clearCommon()
method ensureCommon (line 1920) | Common ensureCommon()
method hasUser (line 1927) | $core.bool hasUser()
method clearUser (line 1929) | void clearUser()
method ensureUser (line 1931) | User ensureUser()
method hasMemberCount (line 1938) | $core.bool hasMemberCount()
method clearMemberCount (line 1940) | void clearMemberCount()
method hasOperator (line 1947) | $core.bool hasOperator()
method clearOperator (line 1949) | void clearOperator()
method ensureOperator (line 1951) | User ensureOperator()
method hasIsSetToAdmin (line 1958) | $core.bool hasIsSetToAdmin()
method clearIsSetToAdmin (line 1960) | void clearIsSetToAdmin()
method hasIsTopUser (line 1967) | $core.bool hasIsTopUser()
method clearIsTopUser (line 1969) | void clearIsTopUser()
method hasRankScore (line 1976) | $core.bool hasRankScore()
method clearRankScore (line 1978) | void clearRankScore()
method hasTopUserNo (line 1985) | $core.bool hasTopUserNo()
method clearTopUserNo (line 1987) | void clearTopUserNo()
method hasEnterType (line 1994) | $core.bool hasEnterType()
method clearEnterType (line 1996) | void clearEnterType()
method hasAction (line 2003) | $core.bool hasAction()
method clearAction (line 2005) | void clearAction()
method hasActionDescription (line 2012) | $core.bool hasActionDescription()
method clearActionDescription (line 2014) | void clearActionDescription()
method hasUserId (line 2021) | $core.bool hasUserId()
method clearUserId (line 2023) | void clearUserId()
method hasEffectConfig (line 2030) | $core.bool hasEffectConfig()
method clearEffectConfig (line 2032) | void clearEffectConfig()
method ensureEffectConfig (line 2034) | EffectConfig ensureEffectConfig()
method hasPopStr (line 2041) | $core.bool hasPopStr()
method clearPopStr (line 2043) | void clearPopStr()
method hasEnterEffectConfig (line 2050) | $core.bool hasEnterEffectConfig()
method clearEnterEffectConfig (line 2052) | void clearEnterEffectConfig()
method ensureEnterEffectConfig (line 2054) | EffectConfig ensureEnterEffectConfig()
method hasBackgroundImage (line 2061) | $core.bool hasBackgroundImage()
method clearBackgroundImage (line 2063) | void clearBackgroundImage()
method ensureBackgroundImage (line 2065) | Image ensureBackgroundImage()
method hasBackgroundImageV2 (line 2072) | $core.bool hasBackgroundImageV2()
method clearBackgroundImageV2 (line 2074) | void clearBackgroundImageV2()
method ensureBackgroundImageV2 (line 2076) | Image ensureBackgroundImageV2()
method hasAnchorDisplayText (line 2083) | $core.bool hasAnchorDisplayText()
method clearAnchorDisplayText (line 2085) | void clearAnchorDisplayText()
method ensureAnchorDisplayText (line 2087) | Text ensureAnchorDisplayText()
method hasPublicAreaCommon (line 2094) | $core.bool hasPublicAreaCommon()
method clearPublicAreaCommon (line 2096) | void clearPublicAreaCommon()
method ensurePublicAreaCommon (line 2098) | PublicAreaCommon ensurePublicAreaCommon()
method hasUserEnterTipType (line 2105) | $core.bool hasUserEnterTipType()
method clearUserEnterTipType (line 2107) | void clearUserEnterTipType()
method hasAnchorEnterTipType (line 2114) | $core.bool hasAnchorEnterTipType()
method clearAnchorEnterTipType (line 2116) | void clearAnchorEnterTipType()
class PublicAreaCommon (line 2119) | class PublicAreaCommon extends $pb.GeneratedMessage {
method clone (line 2136) | PublicAreaCommon clone()
method copyWith (line 2141) | PublicAreaCommon copyWith(void Function(PublicAreaCommon) updates)
method create (line 2146) | PublicAreaCommon create()
method createEmptyInstance (line 2147) | PublicAreaCommon createEmptyInstance()
method createRepeated (line 2148) | $pb.PbList<PublicAreaCommon> createRepeated()
method getDefault (line 2150) | PublicAreaCommon getDefault()
method hasUserLabel (line 2158) | $core.bool hasUserLabel()
method clearUserLabel (line 2160) | void clearUserLabel()
method ensureUserLabel (line 2162) | Image ensureUserLabel()
method hasUserConsumeInRoom (line 2169) | $core.bool hasUserConsumeInRoom()
method clearUserConsumeInRoom (line 2171) | void clearUserConsumeInRoom()
method hasUserSendGiftCntInRoom (line 2178) | $core.bool hasUserSendGiftCntInRoom()
method clearUserSendGiftCntInRoom (line 2180) | void clearUserSendGiftCntInRoom()
class EffectConfig (line 2183) | class EffectConfig extends $pb.GeneratedMessage {
method clone (line 2219) | EffectConfig clone()
method copyWith (line 2224) | EffectConfig copyWith(void Function(EffectConfig) updates)
method create (line 2229) | EffectConfig create()
method createEmptyInstance (line 2230) | EffectConfig createEmptyInstance()
method createRepeated (line 2231) | $pb.PbList<EffectConfig> createRepeated()
method getDefault (line 2233) | EffectConfig getDefault()
method hasType (line 2241) | $core.bool hasType()
method clearType (line 2243) | void clearType()
method hasIcon (line 2250) | $core.bool hasIcon()
method clearIcon (line 2252) | void clearIcon()
method ensureIcon (line 2254) | Image ensureIcon()
method hasAvatarPos (line 2261) | $core.bool hasAvatarPos()
method clearAvatarPos (line 2263) | void clearAvatarPos()
method hasText (line 2270) | $core.bool hasText()
method clearText (line 2272) | void clearText()
method ensureText (line 2274) | Text ensureText()
method hasTextIcon (line 2281) | $core.bool hasTextIcon()
method clearTextIcon (line 2283) | void clearTextIcon()
method ensureTextIcon (line 2285) | Image ensureTextIcon()
method hasStayTime (line 2292) | $core.bool hasStayTime()
method clearStayTime (line 2294) | void clearStayTime()
method hasAnimAssetId (line 2301) | $core.bool hasAnimAssetId()
method clearAnimAssetId (line 2303) | void clearAnimAssetId()
method hasBadge (line 2310) | $core.bool hasBadge()
method clearBadge (line 2312) | void clearBadge()
method ensureBadge (line 2314) | Image ensureBadge()
method hasTextIconOverlay (line 2324) | $core.bool hasTextIconOverlay()
method clearTextIconOverlay (line 2326) | void clearTextIconOverlay()
method ensureTextIconOverlay (line 2328) | Image ensureTextIconOverlay()
method hasAnimatedBadge (line 2335) | $core.bool hasAnimatedBadge()
method clearAnimatedBadge (line 2337) | void clearAnimatedBadge()
method ensureAnimatedBadge (line 2339) | Image ensureAnimatedBadge()
method hasHasSweepLight (line 2346) | $core.bool hasHasSweepLight()
method clearHasSweepLight (line 2348) | void clearHasSweepLight()
method hasCenterAnimAssetId (line 2358) | $core.bool hasCenterAnimAssetId()
method clearCenterAnimAssetId (line 2360) | void clearCenterAnimAssetId()
method hasDynamicImage (line 2367) | $core.bool hasDynamicImage()
method clearDynamicImage (line 2369) | void clearDynamicImage()
method ensureDynamicImage (line 2371) | Image ensureDynamicImage()
method hasMp4AnimAssetId (line 2381) | $core.bool hasMp4AnimAssetId()
method clearMp4AnimAssetId (line 2383) | void clearMp4AnimAssetId()
method hasPriority (line 2390) | $core.bool hasPriority()
method clearPriority (line 2392) | void clearPriority()
method hasMaxWaitTime (line 2399) | $core.bool hasMaxWaitTime()
method clearMaxWaitTime (line 2401) | void clearMaxWaitTime()
method hasDressId (line 2408) | $core.bool hasDressId()
method clearDressId (line 2410) | void clearDressId()
method hasAlignment (line 2417) | $core.bool hasAlignment()
method clearAlignment (line 2419) | void clearAlignment()
method hasAlignmentOffset (line 2426) | $core.bool hasAlignmentOffset()
method clearAlignmentOffset (line 2428) | void clearAlignmentOffset()
class Text (line 2431) | class Text extends $pb.GeneratedMessage {
method clone (line 2449) | Text clone()
method copyWith (line 2454) | Text copyWith(void Function(Text) updates)
method create (line 2459) | Text create()
method createEmptyInstance (line 2460) | Text createEmptyInstance()
method createRepeated (line 2461) | $pb.PbList<Text> createRepeated()
method getDefault (line 2463) | Text getDefault()
method hasKey (line 2471) | $core.bool hasKey()
method clearKey (line 2473) | void clearKey()
method hasDefaultPatter (line 2480) | $core.bool hasDefaultPatter()
method clearDefaultPatter (line 2482) | void clearDefaultPatter()
method hasDefaultFormat (line 2489) | $core.bool hasDefaultFormat()
method clearDefaultFormat (line 2491) | void clearDefaultFormat()
method ensureDefaultFormat (line 2493) | TextFormat ensureDefaultFormat()
class TextPiece (line 2499) | class TextPiece extends $pb.GeneratedMessage {
method clone (line 2521) | TextPiece clone()
method copyWith (line 2526) | TextPiece copyWith(void Function(TextPiece) updates)
method create (line 2531) | TextPiece create()
method createEmptyInstance (line 2532) | TextPiece createEmptyInstance()
method createRepeated (line 2533) | $pb.PbList<TextPiece> createRepeated()
method getDefault (line 2535) | TextPiece getDefault()
method hasType (line 2543) | $core.bool hasType()
method clearType (line 2545) | void clearType()
method hasFormat (line 2552) | $core.bool hasFormat()
method clearFormat (line 2554) | void clearFormat()
method ensureFormat (line 2556) | TextFormat ensureFormat()
method hasStringValue (line 2563) | $core.bool hasStringValue()
method clearStringValue (line 2565) | void clearStringValue()
method hasUserValue (line 2572) | $core.bool hasUserValue()
method clearUserValue (line 2574) | void clearUserValue()
method ensureUserValue (line 2576) | TextPieceUser ensureUserValue()
method hasGiftValue (line 2583) | $core.bool hasGiftValue()
method clearGiftValue (line 2585) | void clearGiftValue()
method ensureGiftValue (line 2587) | TextPieceGift ensureGiftValue()
method hasHeartValue (line 2594) | $core.bool hasHeartValue()
method clearHeartValue (line 2596) | void clearHeartValue()
method ensureHeartValue (line 2598) | TextPieceHeart ensureHeartValue()
method hasPatternRefValue (line 2605) | $core.bool hasPatternRefValue()
method clearPatternRefValue (line 2607) | void clearPatternRefValue()
method ensurePatternRefValue (line 2609) | TextPiecePatternRef ensurePatternRefValue()
method hasImageValue (line 2616) | $core.bool hasImageValue()
method clearImageValue (line 2618) | void clearImageValue()
method ensureImageValue (line 2620) | TextPieceImage ensureImageValue()
class TextPieceImage (line 2623) | class TextPieceImage extends $pb.GeneratedMessage {
method clone (line 2639) | TextPieceImage clone()
method copyWith (line 2644) | TextPieceImage copyWith(void Function(TextPieceImage) updates)
method create (line 2649) | TextPieceImage create()
method createEmptyInstance (line 2650) | TextPieceImage createEmptyInstance()
method createRepeated (line 2651) | $pb.PbList<TextPieceImage> createRepeated()
method getDefault (line 2653) | TextPieceImage getDefault()
method hasImage (line 2661) | $core.bool hasImage()
method clearImage (line 2663) | void clearImage()
method ensureImage (line 2665) | Image ensureImage()
method hasScalingRate (line 2672) | $core.bool hasScalingRate()
method clearScalingRate (line 2674) | void clearScalingRate()
class TextPiecePatternRef (line 2677) | class TextPiecePatternRef extends $pb.GeneratedMessage {
method clone (line 2693) | TextPiecePatternRef clone()
method copyWith (line 2698) | TextPiecePatternRef copyWith(void Function(TextPiecePatternRef) updates)
method create (line 2703) | TextPiecePatternRef create()
method createEmptyInstance (line 2704) | TextPiecePatternRef createEmptyInstance()
method createRepeated (line 2705) | $pb.PbList<TextPiecePatternRef> createRepeated()
method getDefault (line 2707) | TextPiecePatternRef getDefault()
method hasKey (line 2715) | $core.bool hasKey()
method clearKey (line 2717) | void clearKey()
method hasDefaultPattern (line 2724) | $core.bool hasDefaultPattern()
method clearDefaultPattern (line 2726) | void clearDefaultPattern()
class TextPieceHeart (line 2729) | class TextPieceHeart extends $pb.GeneratedMessage {
method clone (line 2744) | TextPieceHeart clone()
method copyWith (line 2749) | TextPieceHeart copyWith(void Function(TextPieceHeart) updates)
method create (line 2754) | TextPieceHeart create()
method createEmptyInstance (line 2755) | TextPieceHeart createEmptyInstance()
method createRepeated (line 2756) | $pb.PbList<TextPieceHeart> createRepeated()
method getDefault (line 2758) | TextPieceHeart getDefault()
method hasColor (line 2766) | $core.bool hasColor()
method clearColor (line 2768) | void clearColor()
class TextPieceGift (line 2771) | class TextPieceGift extends $pb.GeneratedMessage {
method clone (line 2787) | TextPieceGift clone()
method copyWith (line 2792) | TextPieceGift copyWith(void Function(TextPieceGift) updates)
method create (line 2797) | TextPieceGift create()
method createEmptyInstance (line 2798) | TextPieceGift createEmptyInstance()
method createRepeated (line 2799) | $pb.PbList<TextPieceGift> createRepeated()
method getDefault (line 2801) | TextPieceGift getDefault()
method hasGiftId (line 2809) | $core.bool hasGiftId()
method clearGiftId (line 2811) | void clearGiftId()
method hasNameRef (line 2818) | $core.bool hasNameRef()
method clearNameRef (line 2820) | void clearNameRef()
method ensureNameRef (line 2822) | PatternRef ensureNameRef()
class PatternRef (line 2825) | class PatternRef extends $pb.GeneratedMessage {
method clone (line 2841) | PatternRef clone()
method copyWith (line 2846) | PatternRef copyWith(void Function(PatternRef) updates)
method create (line 2851) | PatternRef create()
method createEmptyInstance (line 2852) | PatternRef createEmptyInstance()
method createRepeated (line 2853) | $pb.PbList<PatternRef> createRepeated()
method getDefault (line 2855) | PatternRef getDefault()
method hasKey (line 2863) | $core.bool hasKey()
method clearKey (line 2865) | void clearKey()
method hasDefaultPattern (line 2872) | $core.bool hasDefaultPattern()
method clearDefaultPattern (line 2874) | void clearDefaultPattern()
class TextPieceUser (line 2877) | class TextPieceUser extends $pb.GeneratedMessage {
method clone (line 2893) | TextPieceUser clone()
method copyWith (line 2898) | TextPieceUser copyWith(void Function(TextPieceUser) updates)
method create (line 2903) | TextPieceUser create()
method createEmptyInstance (line 2904) | TextPieceUser createEmptyInstance()
method createRepeated (line 2905) | $pb.PbList<TextPieceUser> createRepeated()
method getDefault (line 2907) | TextPieceUser getDefault()
method hasUser (line 2915) | $core.bool hasUser()
method clearUser (line 2917) | void clearUser()
method ensureUser (line 2919) | User ensureUser()
method hasWithColon (line 2926) | $core.bool hasWithColon()
method clearWithColon (line 2928) | void clearWithColon()
class TextFormat (line 2931) | class TextFormat extends $pb.GeneratedMessage {
method clone (line 2953) | TextFormat clone()
method copyWith (line 2958) | TextFormat copyWith(void Function(TextFormat) updates)
method create (line 2963) | TextFormat create()
method createEmptyInstance (line 2964) | TextFormat createEmptyInstance()
method createRepeated (line 2965) | $pb.PbList<TextFormat> createRepeated()
method getDefault (line 2967) | TextFormat getDefault()
method hasColor (line 2975) | $core.bool hasColor()
method clearColor (line 2977) | void clearColor()
method hasBold (line 2984) | $core.bool hasBold()
method clearBold (line 2986) | void clearBold()
method hasItalic (line 2993) | $core.bool hasItalic()
method clearItalic (line 2995) | void clearItalic()
method hasWeight (line 3002) | $core.bool hasWeight()
method clearWeight (line 3004) | void clearWeight()
method hasItalicAngle (line 3011) | $core.bool hasItalicAngle()
method clearItalicAngle (line 3013) | void clearItalicAngle()
method hasFontSize (line 3020) | $core.bool hasFontSize()
method clearFontSize (line 3022) | void clearFontSize()
method hasUseHeighLightColor (line 3029) | $core.bool hasUseHeighLightColor()
method clearUseHeighLightColor (line 3031) | void clearUseHeighLightColor()
method hasUseRemoteClor (line 3038) | $core.bool hasUseRemoteClor()
method clearUseRemoteClor (line 3040) | void clearUseRemoteClor()
class LikeMessage (line 3043) | class LikeMessage extends $pb.GeneratedMessage {
method clone (line 3068) | LikeMessage clone()
method copyWith (line 3073) | LikeMessage copyWith(void Function(LikeMessage) updates)
method create (line 3078) | LikeMessage create()
method createEmptyInstance (line 3079) | LikeMessage createEmptyInstance()
method createRepeated (line 3080) | $pb.PbList<LikeMessage> createRepeated()
method getDefault (line 3082) | LikeMessage getDefault()
method hasCommon (line 3090) | $core.bool hasCommon()
method clearCommon (line 3092) | void clearCommon()
method ensureCommon (line 3094) | Common ensureCommon()
method hasCount (line 3101) | $core.bool hasCount()
method clearCount (line 3103) | void clearCount()
method hasTotal (line 3110) | $core.bool hasTotal()
method clearTotal (line 3112) | void clearTotal()
method hasColor (line 3119) | $core.bool hasColor()
method clearColor (line 3121) | void clearColor()
method hasUser (line 3128) | $core.bool hasUser()
method clearUser (line 3130) | void clearUser()
method ensureUser (line 3132) | User ensureUser()
method hasIcon (line 3139) | $core.bool hasIcon()
method clearIcon (line 3141) | void clearIcon()
method hasDoubleLikeDetail (line 3148) | $core.bool hasDoubleLikeDetail()
method clearDoubleLikeDetail (line 3150) | void clearDoubleLikeDetail()
method ensureDoubleLikeDetail (line 3152) | DoubleLikeDetail ensureDoubleLikeDetail()
method hasDisplayControlInfo (line 3159) | $core.bool hasDisplayControlInfo()
method clearDisplayControlInfo (line 3161) | void clearDisplayControlInfo()
method ensureDisplayControlInfo (line 3163) | DisplayControlInfo ensureDisplayControlInfo()
method hasLinkmicGuestUid (line 3170) | $core.bool hasLinkmicGuestUid()
method clearLinkmicGuestUid (line 3172) | void clearLinkmicGuestUid()
method hasScene (line 3179) | $core.bool hasScene()
method clearScene (line 3181) | void clearScene()
method hasPicoDisplayInfo (line 3188) | $core.bool hasPicoDisplayInfo()
method clearPicoDisplayInfo (line 3190) | void clearPicoDisplayInfo()
method ensurePicoDisplayInfo (line 3192) | PicoDisplayInfo ensurePicoDisplayInfo()
class SocialMessage (line 3195) | class SocialMessage extends $pb.GeneratedMessage {
method clone (line 3216) | SocialMessage clone()
method copyWith (line 3221) | SocialMessage copyWith(void Function(SocialMessage) updates)
method create (line 3226) | SocialMessage create()
method createEmptyInstance (line 3227) | SocialMessage createEmptyInstance()
method createRepeated (line 3228) | $pb.PbList<SocialMessage> createRepeated()
method getDefault (line 3230) | SocialMessage getDefault()
method hasCommon (line 3238) | $core.bool hasCommon()
method clearCommon (line 3240) | void clearCommon()
method ensureCommon (line 3242) | Common ensureCommon()
method hasUser (line 3249) | $core.bool hasUser()
method clearUser (line 3251) | void clearUser()
method ensureUser (line 3253) | User ensureUser()
method hasShareType (line 3260) | $core.bool hasShareType()
method clearShareType (line 3262) | void clearShareType()
method hasAction (line 3269) | $core.bool hasAction()
method clearAction (line 3271) | void clearAction()
method hasShareTarget (line 3278) | $core.bool hasShareTarget()
method clearShareTarget (line 3280) | void clearShareTarget()
method hasFollowCount (line 3287) | $core.bool hasFollowCount()
method clearFollowCount (line 3289) | void clearFollowCount()
method hasPublicAreaCommon (line 3296) | $core.bool hasPublicAreaCommon()
method clearPublicAreaCommon (line 3298) | void clearPublicAreaCommon()
method ensurePublicAreaCommon (line 3300) | PublicAreaCommon ensurePublicAreaCommon()
class PicoDisplayInfo (line 3303) | class PicoDisplayInfo extends $pb.GeneratedMessage {
method clone (line 3321) | PicoDisplayInfo clone()
method copyWith (line 3326) | PicoDisplayInfo copyWith(void Function(PicoDisplayInfo) updates)
method create (line 3331) | PicoDisplayInfo create()
method createEmptyInstance (line 3332) | PicoDisplayInfo createEmptyInstance()
method createRepeated (line 3333) | $pb.PbList<PicoDisplayInfo> createRepeated()
method getDefault (line 3335) | PicoDisplayInfo getDefault()
method hasComboSumCount (line 3343) | $core.bool hasComboSumCount()
method clearComboSumCount (line 3345) | void clearComboSumCount()
method hasEmoji (line 3352) | $core.bool hasEmoji()
method clearEmoji (line 3354) | void clearEmoji()
method hasEmojiIcon (line 3361) | $core.bool hasEmojiIcon()
method clearEmojiIcon (line 3363) | void clearEmojiIcon()
method ensureEmojiIcon (line 3365) | Image ensureEmojiIcon()
method hasEmojiText (line 3372) | $core.bool hasEmojiText()
method clearEmojiText (line 3374) | void clearEmojiText()
class DoubleLikeDetail (line 3377) | class DoubleLikeDetail extends $pb.GeneratedMessage {
method clone (line 3395) | DoubleLikeDetail clone()
method copyWith (line 3400) | DoubleLikeDetail copyWith(void Function(DoubleLikeDetail) updates)
method create (line 3405) | DoubleLikeDetail create()
method createEmptyInstance (line 3406) | DoubleLikeDetail createEmptyInstance()
method createRepeated (line 3407) | $pb.PbList<DoubleLikeDetail> createRepeated()
method getDefault (line 3409) | DoubleLikeDetail getDefault()
method hasDoubleFlag (line 3417) | $core.bool hasDoubleFlag()
method clearDoubleFlag (line 3419) | void clearDoubleFlag()
method hasSeqId (line 3426) | $core.bool hasSeqId()
method clearSeqId (line 3428) | void clearSeqId()
method hasRenewalsNum (line 3435) | $core.bool hasRenewalsNum()
method clearRenewalsNum (line 3437) | void clearRenewalsNum()
method hasTriggersNum (line 3444) | $core.bool hasTriggersNum()
method clearTriggersNum (line 3446) | void clearTriggersNum()
class DisplayControlInfo (line 3449) | class DisplayControlInfo extends $pb.GeneratedMessage {
method clone (line 3465) | DisplayControlInfo clone()
method copyWith (line 3470) | DisplayControlInfo copyWith(void Function(DisplayControlInfo) updates)
method create (line 3475) | DisplayControlInfo create()
method createEmptyInstance (line 3476) | DisplayControlInfo createEmptyInstance()
method createRepeated (line 3477) | $pb.PbList<DisplayControlInfo> createRepeated()
method getDefault (line 3479) | DisplayControlInfo getDefault()
method hasShowText (line 3487) | $core.bool hasShowText()
method clearShowText (line 3489) | void clearShowText()
method hasShowIcons (line 3496) | $core.bool hasShowIcons()
method clearShowIcons (line 3498) | void clearShowIcons()
class EpisodeChatMessage (line 3501) | class EpisodeChatMessage extends $pb.GeneratedMessage {
method clone (line 3522) | EpisodeChatMessage clone()
method copyWith (line 3527) | EpisodeChatMessage copyWith(void Function(EpisodeChatMessage) updates)
method create (line 3532) | EpisodeChatMessage create()
method createEmptyInstance (line 3533) | EpisodeChatMessage createEmptyInstance()
method createRepeated (line 3534) | $pb.PbList<EpisodeChatMessage> createRepeated()
method getDefault (line 3536) | EpisodeChatMessage getDefault()
method hasCommon (line 3544) | $core.bool hasCommon()
method clearCommon (line 3546) | void clearCommon()
method ensureCommon (line 3548) | Message ensureCommon()
method hasUser (line 3555) | $core.bool hasUser()
method clearUser (line 3557) | void clearUser()
method ensureUser (line 3559) | User ensureUser()
method hasContent (line 3566) | $core.bool hasContent()
method clearContent (line 3568) | void clearContent()
method hasVisibleToSende (line 3575) | $core.bool hasVisibleToSende()
method clearVisibleToSende (line 3577) | void clearVisibleToSende()
method hasGiftImage (line 3584) | $core.bool hasGiftImage()
method clearGiftImage (line 3586) | void clearGiftImage()
method ensureGiftImage (line 3588) | Image ensureGiftImage()
method hasAgreeMsgId (line 3595) | $core.bool hasAgreeMsgId()
method clearAgreeMsgId (line 3597) | void clearAgreeMsgId()
class MatchAgainstScoreMessage (line 3603) | class MatchAgainstScoreMessage extends $pb.GeneratedMessage {
method clone (line 3621) | MatchAgainstScoreMessage clone()
method copyWith (line 3626) | MatchAgainstScoreMessage copyWith(void Function(MatchAgainstScoreMessa...
method create (line 3631) | MatchAgainstScoreMessage create()
method createEmptyInstance (line 3632) | MatchAgainstScoreMessage createEmptyInstance()
method createRepeated (line 3633) | $pb.PbList<MatchAgainstScoreMessage> createRepeated()
method getDefault (line 3635) | MatchAgainstScoreMessage getDefault()
method hasCommon (line 3643) | $core.bool hasCommon()
method clearCommon (line 3645) | void clearCommon()
method ensureCommon (line 3647) | Common ensureCommon()
method hasAgainst (line 3654) | $core.bool hasAgainst()
method clearAgainst (line 3656) | void clearAgainst()
method ensureAgainst (line 3658) | Against ensureAgainst()
method hasMatchStatus (line 3665) | $core.bool hasMatchStatus()
method clearMatchStatus (line 3667) | void clearMatchStatus()
method hasDisplayStatus (line 3674) | $core.bool hasDisplayStatus()
method clearDisplayStatus (line 3676) | void clearDisplayStatus()
class Against (line 3679) | class Against extends $pb.GeneratedMessage {
method clone (line 3710) | Against clone()
method copyWith (line 3715) | Against copyWith(void Function(Against) updates)
method create (line 3720) | Against create()
method createEmptyInstance (line 3721) | Against createEmptyInstance()
method createRepeated (line 3722) | $pb.PbList<Against> createRepeated()
method getDefault (line 3724) | Against getDefault()
method hasLeftName (line 3732) | $core.bool hasLeftName()
method clearLeftName (line 3734) | void clearLeftName()
method hasLeftLogo (line 3741) | $core.bool hasLeftLogo()
method clearLeftLogo (line 3743) | void clearLeftLogo()
method ensureLeftLogo (line 3745) | Image ensureLeftLogo()
method hasLeftGoal (line 3752) | $core.bool hasLeftGoal()
method clearLeftGoal (line 3754) | void clearLeftGoal()
method hasRightName (line 3761) | $core.bool hasRightName()
method clearRightName (line 3763) | void clearRightName()
method hasRightLogo (line 3770) | $core.bool hasRightLogo()
method clearRightLogo (line 3772) | void clearRightLogo()
method ensureRightLogo (line 3774) | Image ensureRightLogo()
method hasRightGoal (line 3781) | $core.bool hasRightGoal()
method clearRightGoal (line 3783) | void clearRightGoal()
method hasTimestamp (line 3790) | $core.bool hasTimestamp()
method clearTimestamp (line 3792) | void clearTimestamp()
method hasVersion (line 3799) | $core.bool hasVersion()
method clearVersion (line 3801) | void clearVersion()
method hasLeftTeamId (line 3808) | $core.bool hasLeftTeamId()
method clearLeftTeamId (line 3810) | void clearLeftTeamId()
method hasRightTeamId (line 3817) | $core.bool hasRightTeamId()
method clearRightTeamId (line 3819) | void clearRightTeamId()
method hasDiffSei2absSecond (line 3826) | $core.bool hasDiffSei2absSecond()
method clearDiffSei2absSecond (line 3828) | void clearDiffSei2absSecond()
method hasFinalGoalStage (line 3835) | $core.bool hasFinalGoalStage()
method clearFinalGoalStage (line 3837) | void clearFinalGoalStage()
method hasCurrentGoalStage (line 3844) | $core.bool hasCurrentGoalStage()
method clearCurrentGoalStage (line 3846) | void clearCurrentGoalStage()
method hasLeftScoreAddition (line 3853) | $core.bool hasLeftScoreAddition()
method clearLeftScoreAddition (line 3855) | void clearLeftScoreAddition()
method hasRightScoreAddition (line 3862) | $core.bool hasRightScoreAddition()
method clearRightScoreAddition (line 3864) | void clearRightScoreAddition()
method hasLeftGoalInt (line 3871) | $core.bool hasLeftGoalInt()
method clearLeftGoalInt (line 3873) | void clearLeftGoalInt()
method hasRightGoalInt (line 3880) | $core.bool hasRightGoalInt()
method clearRightGoalInt (line 3882) | void clearRightGoalInt()
class Common (line 3885) | class Common extends $pb.GeneratedMessage {
method clone (line 3920) | Common clone()
method copyWith (line 3925) | Common copyWith(void Function(Common) updates)
method create (line 3930) | Common create()
method createEmptyInstance (line 3931) | Common createEmptyInstance()
method createRepeated (line 3932) | $pb.PbList<Common> createRepeated()
method getDefault (line 3934) | Common getDefault()
method hasMethod (line 3942) | $core.bool hasMethod()
method clearMethod (line 3944) | void clearMethod()
method hasMsgId (line 3951) | $core.bool hasMsgId()
method clearMsgId (line 3953) | void clearMsgId()
method hasRoomId (line 3960) | $core.bool hasRoomId()
method clearRoomId (line 3962) | void clearRoomId()
method hasCreateTime (line 3969) | $core.bool hasCreateTime()
method clearCreateTime (line 3971) | void clearCreateTime()
method hasMonitor (line 3978) | $core.bool hasMonitor()
method clearMonitor (line 3980) | void clearMonitor()
method hasIsShowMsg (line 3987) | $core.bool hasIsShowMsg()
method clearIsShowMsg (line 3989) | void clearIsShowMsg()
method hasDescribe (line 3996) | $core.bool hasDescribe()
method clearDescribe (line 3998) | void clearDescribe()
method hasFoldType (line 4005) | $core.bool hasFoldType()
method clearFoldType (line 4007) | void clearFoldType()
method hasAnchorFoldType (line 4014) | $core.bool hasAnchorFoldType()
method clearAnchorFoldType (line 4016) | void clearAnchorFoldType()
method hasPriorityScore (line 4023) | $core.bool hasPriorityScore()
method clearPriorityScore (line 4025) | void clearPriorityScore()
method hasLogId (line 4032) | $core.bool hasLogId()
method clearLogId (line 4034) | void clearLogId()
method hasMsgProcessFilterK (line 4041) | $core.bool hasMsgProcessFilterK()
method clearMsgProcessFilterK (line 4043) | void clearMsgProcessFilterK()
method hasMsgProcessFilterV (line 4050) | $core.bool hasMsgProcessFilterV()
method clearMsgProcessFilterV (line 4052) | void clearMsgProcessFilterV()
method hasUser (line 4059) | $core.bool hasUser()
method clearUser (line 4061) | void clearUser()
method ensureUser (line 4063) | User ensureUser()
method hasAnchorFoldTypeV2 (line 4070) | $core.bool hasAnchorFoldTypeV2()
method clearAnchorFoldTypeV2 (line 4072) | void clearAnchorFoldTypeV2()
method hasProcessAtSeiTimeMs (line 4079) | $core.bool hasProcessAtSeiTimeMs()
method clearProcessAtSeiTimeMs (line 4081) | void clearProcessAtSeiTimeMs()
method hasRandomDispatchMs (line 4088) | $core.bool hasRandomDispatchMs()
method clearRandomDispatchMs (line 4090) | void clearRandomDispatchMs()
method hasIsDispatch (line 4097) | $core.bool hasIsDispatch()
method clearIsDispatch (line 4099) | void clearIsDispatch()
method hasChannelId (line 4106) | $core.bool hasChannelId()
method clearChannelId (line 4108) | void clearChannelId()
method hasDiffSei2absSecond (line 4115) | $core.bool hasDiffSei2absSecond()
method clearDiffSei2absSecond (line 4117) | void clearDiffSei2absSecond()
method hasAnchorFoldDuration (line 4124) | $core.bool hasAnchorFoldDuration()
method clearAnchorFoldDuration (line 4126) | void clearAnchorFoldDuration()
class User (line 4129) | class User extends $pb.GeneratedMessage {
method clone (line 4174) | User clone()
method copyWith (line 4179) | User copyWith(void Function(User) updates)
method create (line 4184) | User create()
method createEmptyInstance (line 4185) | User createEmptyInstance()
method createRepeated (line 4186) | $pb.PbList<User> createRepeated()
method getDefault (line 4188) | User getDefault()
method hasId (line 4196) | $core.bool hasId()
method clearId (line 4198) | void clearId()
method hasShortId (line 4205) | $core.bool hasShortId()
method clearShortId (line 4207) | void clearShortId()
method hasNickName (line 4214) | $core.bool hasNickName()
method clearNickName (line 4216) | void clearNickName()
method hasGender (line 4223) | $core.bool hasGender()
method clearGender (line 4225) | void clearGender()
method hasSignature (line 4232) | $core.bool hasSignature()
method clearSignature (line 4234) | void clearSignature()
method hasLevel (line 4241) | $core.bool hasLevel()
method clearLevel (line 4243) | void clearLevel()
method hasBirthday (line 4250) | $core.bool hasBirthday()
method clearBirthday (line 4252) | void clearBirthday()
method hasTelephone (line 4259) | $core.bool hasTelephone()
method clearTelephone (line 4261) | void clearTelephone()
method hasAvatarThumb (line 4268) | $core.bool hasAvatarThumb()
method clearAvatarThumb (line 4270) | void clearAvatarThumb()
method ensureAvatarThumb (line 4272) | Image ensureAvatarThumb()
method hasAvatarMedium (line 4279) | $core.bool hasAvatarMedium()
method clearAvatarMedium (line 4281) | void clearAvatarMedium()
method ensureAvatarMedium (line 4283) | Image ensureAvatarMedium()
method hasAvatarLarge (line 4290) | $core.bool hasAvatarLarge()
method clearAvatarLarge (line 4292) | void clearAvatarLarge()
method ensureAvatarLarge (line 4294) | Image ensureAvatarLarge()
method hasVerified (line 4301) | $core.bool hasVerified()
method clearVerified (line 4303) | void clearVerified()
method hasExperience (line 4310) | $core.bool hasExperience()
method clearExperience (line 4312) | void clearExperience()
method hasCity (line 4319) | $core.bool hasCity()
method clearCity (line 4321) | void clearCity()
method hasStatus (line 4328) | $core.bool hasStatus()
method clearStatus (line 4330) | void clearStatus()
method hasCreateTime (line 4337) | $core.bool hasCreateTime()
method clearCreateTime (line 4339) | void clearCreateTime()
method hasModifyTime (line 4346) | $core.bool hasModifyTime()
method clearModifyTime (line 4348) | void clearModifyTime()
method hasSecret (line 4355) | $core.bool hasSecret()
method clearSecret (line 4357) | void clearSecret()
method hasShareQrcodeUri (line 4364) | $core.bool hasShareQrcodeUri()
method clearShareQrcodeUri (line 4366) | void clearShareQrcodeUri()
method hasIncomeSharePercent (line 4373) | $core.bool hasIncomeSharePercent()
method clearIncomeSharePercent (line 4375) | void clearIncomeSharePercent()
method hasFollowInfo (line 4385) | $core.bool hasFollowInfo()
method clearFollowInfo (line 4387) | void clearFollowInfo()
method ensureFollowInfo (line 4389) | FollowInfo ensureFollowInfo()
method hasSpecialId (line 4396) | $core.bool hasSpecialId()
method clearSpecialId (line 4398) | void clearSpecialId()
method hasAvatarBorder (line 4405) | $core.bool hasAvatarBorder()
method clearAvatarBorder (line 4407) | void clearAvatarBorder()
method ensureAvatarBorder (line 4409) | Image ensureAvatarBorder()
method hasMedal (line 4416) | $core.bool hasMedal()
method clearMedal (line 4418) | void clearMedal()
method ensureMedal (line 4420) | Image ensureMedal()
method hasDisplayId (line 4430) | $core.bool hasDisplayId()
method clearDisplayId (line 4432) | void clearDisplayId()
method hasSecUid (line 4439) | $core.bool hasSecUid()
method clearSecUid (line 4441) | void clearSecUid()
method hasFanTicketCount (line 4448) | $core.bool hasFanTicketCount()
method clearFanTicketCount (line 4450) | void clearFanTicketCount()
method hasIdStr (line 4457) | $core.bool hasIdStr()
method clearIdStr (line 4459) | void clearIdStr()
method hasAgeRange (line 4466) | $core.bool hasAgeRange()
method clearAgeRange (line 4468) | void clearAgeRange()
class FollowInfo (line 4471) | class FollowInfo extends $pb.GeneratedMessage {
method clone (line 4492) | FollowInfo clone()
method copyWith (line 4497) | FollowInfo copyWith(void Function(FollowInfo) updates)
method create (line 4502) | FollowInfo create()
method createEmptyInstance (line 4503) | FollowInfo createEmptyInstance()
method createRepeated (line 4504) | $pb.PbList<FollowInfo> createRepeated()
method getDefault (line 4506) | FollowInfo getDefault()
method hasFollowingCount (line 4514) | $core.bool hasFollowingCount()
method clearFollowingCount (line 4516) | void clearFollowingCount()
method hasFollowerCount (line 4523) | $core.bool hasFollowerCount()
method clearFollowerCount (line 4525) | void clearFollowerCount()
method hasFollowStatus (line 4532) | $core.bool hasFollowStatus()
method clearFollowStatus (line 4534) | void clearFollowStatus()
method hasPushStatus (line 4541) | $core.bool hasPushStatus()
method clearPushStatus (line 4543) | void clearPushStatus()
method hasRemarkName (line 4550) | $core.bool hasRemarkName()
method clearRemarkName (line 4552) | void clearRemarkName()
method hasFollowerCountStr (line 4559) | $core.bool hasFollowerCountStr()
method clearFollowerCountStr (line 4561) | void clearFollowerCountStr()
method hasFollowingCountStr (line 4568) | $core.bool hasFollowingCountStr()
method clearFollowingCountStr (line 4570) | void clearFollowingCountStr()
class Image (line 4573) | class Image extends $pb.GeneratedMessage {
method clone (line 4598) | Image clone()
method copyWith (line 4603) | Image copyWith(void Function(Image) updates)
method create (line 4608) | Image create()
method createEmptyInstance (line 4609) | Image createEmptyInstance()
method createRepeated (line 4610) | $pb.PbList<Image> createRepeated()
method getDefault (line 4612) | Image getDefault()
method hasUri (line 4623) | $core.bool hasUri()
method clearUri (line 4625) | void clearUri()
method hasHeight (line 4632) | $core.bool hasHeight()
method clearHeight (line 4634) | void clearHeight()
method hasWidth (line 4641) | $core.bool hasWidth()
method clearWidth (line 4643) | void clearWidth()
method hasAvgColor (line 4650) | $core.bool hasAvgColor()
method clearAvgColor (line 4652) | void clearAvgColor()
method hasImageType (line 4659) | $core.bool hasImageType()
method clearImageType (line 4661) | void clearImageType()
method hasOpenWebUrl (line 4668) | $core.bool hasOpenWebUrl()
method clearOpenWebUrl (line 4670) | void clearOpenWebUrl()
method hasContent (line 4677) | $core.bool hasContent()
method clearContent (line 4679) | void clearContent()
method ensureContent (line 4681) | ImageContent ensureContent()
method hasIsAnimated (line 4688) | $core.bool hasIsAnimated()
method clearIsAnimated (line 4690) | void clearIsAnimated()
method hasFlexSettingList (line 4697) | $core.bool hasFlexSettingList()
method clearFlexSettingList (line 4699) | void clearFlexSettingList()
method ensureFlexSettingList (line 4701) | NinePatchSetting ensureFlexSettingList()
method hasTextSettingList (line 4708) | $core.bool hasTextSettingList()
method clearTextSettingList (line 4710) | void clearTextSettingList()
method ensureTextSettingList (line 4712) | NinePatchSetting ensureTextSettingList()
class NinePatchSetting (line 4715) | class NinePatchSetting extends $pb.GeneratedMessage {
method clone (line 4730) | NinePatchSetting clone()
method copyWith (line 4735) | NinePatchSetting copyWith(void Function(NinePatchSetting) updates)
method create (line 4740) | NinePatchSetting create()
method createEmptyInstance (line 4741) | NinePatchSetting createEmptyInstance()
method createRepeated (line 4742) | $pb.PbList<NinePatchSetting> createRepeated()
method getDefault (line 4744) | NinePatchSetting getDefault()
class ImageContent (line 4751) | class ImageContent extends $pb.GeneratedMessage {
method clone (line 4769) | ImageContent clone()
method copyWith (line 4774) | ImageContent copyWith(void Function(ImageContent) updates)
method create (line 4779) | ImageContent create()
method createEmptyInstance (line 4780) | ImageContent createEmptyInstance()
method createRepeated (line 4781) | $pb.PbList<ImageContent> createRepeated()
method getDefault (line 4783) | ImageContent getDefault()
method hasName (line 4791) | $core.bool hasName()
method clearName (line 4793) | void clearName()
method hasFontColor (line 4800) | $core.bool hasFontColor()
method clearFontColor (line 4802) | void clearFontColor()
method hasLevel (line 4809) | $core.bool hasLevel()
method clearLevel (line 4811) | void clearLevel()
method hasAlternativeText (line 4818) | $core.bool hasAlternativeText()
method clearAlternativeText (line 4820) | void clearAlternativeText()
class PushFrame (line 4823) | class PushFrame extends $pb.GeneratedMessage {
method clone (line 4845) | PushFrame clone()
method copyWith (line 4850) | PushFrame copyWith(void Function(PushFrame) updates)
method create (line 4855) | PushFrame create()
method createEmptyInstance (line 4856) | PushFrame createEmptyInstance()
method createRepeated (line 4857) | $pb.PbList<PushFrame> createRepeated()
method getDefault (line 4859) | PushFrame getDefault()
method hasSeqId (line 4867) | $core.bool hasSeqId()
method clearSeqId (line 4869) | void clearSeqId()
method hasLogId (line 4876) | $core.bool hasLogId()
method clearLogId (line 4878) | void clearLogId()
method hasService (line 4885) | $core.bool hasService()
method clearService (line 4887) | void clearService()
method hasMethod (line 4894) | $core.bool hasMethod()
method clearMethod (line 4896) | void clearMethod()
method hasPayloadEncoding (line 4906) | $core.bool hasPayloadEncoding()
method clearPayloadEncoding (line 4908) | void clearPayloadEncoding()
method hasPayloadType (line 4915) | $core.bool hasPayloadType()
method clearPayloadType (line 4917) | void clearPayloadType()
method hasPayload (line 4924) | $core.bool hasPayload()
method clearPayload (line 4926) | void clearPayload()
class kk (line 4929) | class kk extends $pb.GeneratedMessage {
method clone (line 4944) | kk clone()
method copyWith (line 4949) | kk copyWith(void Function(kk) updates)
method create (line 4954) | kk create()
method createEmptyInstance (line 4955) | kk createEmptyInstance()
method createRepeated (line 4956) | $pb.PbList<kk> createRepeated()
method getDefault (line 4958) | kk getDefault()
method hasK (line 4966) | $core.bool hasK()
method clearK (line 4968) | void clearK()
class SendMessageBody (line 4971) | class SendMessageBody extends $pb.GeneratedMessage {
method clone (line 4993) | SendMessageBody clone()
method copyWith (line 4998) | SendMessageBody copyWith(void Function(SendMessageBody) updates)
method create (line 5003) | SendMessageBody create()
method createEmptyInstance (line 5004) | SendMessageBody createEmptyInstance()
method createRepeated (line 5005) | $pb.PbList<SendMessageBody> createRepeated()
method getDefault (line 5007) | SendMessageBody getDefault()
method hasConversationId (line 5015) | $core.bool hasConversationId()
method clearConversationId (line 5017) | void clearConversationId()
method hasConversationType (line 5024) | $core.bool hasConversationType()
method clearConversationType (line 5026) | void clearConversationType()
method hasConversationShortId (line 5033) | $core.bool hasConversationShortId()
method clearConversationShortId (line 5035) | void clearConversationShortId()
method hasContent (line 5042) | $core.bool hasContent()
method clearContent (line 5044) | void clearContent()
method hasMessageType (line 5054) | $core.bool hasMessageType()
method clearMessageType (line 5056) | void clearMessageType()
method hasTicket (line 5063) | $core.bool hasTicket()
method clearTicket (line 5065) | void clearTicket()
method hasClientMessageId (line 5072) | $core.bool hasClientMessageId()
method clearClientMessageId (line 5074) | void clearClientMessageId()
class ExtList (line 5077) | class ExtList extends $pb.GeneratedMessage {
method clone (line 5093) | ExtList clone()
method copyWith (line 5098) | ExtList copyWith(void Function(ExtList) updates)
method create (line 5103) | ExtList create()
method createEmptyInstance (line 5104) | ExtList createEmptyInstance()
method createRepeated (line 5105) | $pb.PbList<ExtList> createRepeated()
method getDefault (line 5107) | ExtList getDefault()
method hasKey (line 5115) | $core.bool hasKey()
method clearKey (line 5117) | void clearKey()
method hasValue (line 5124) | $core.bool hasValue()
method clearValue (line 5126) | void clearValue()
class Rsp_F (line 5129) | class Rsp_F extends $pb.GeneratedMessage {
method clone (line 5147) | Rsp_F clone()
method copyWith (line 5152) | Rsp_F copyWith(void Function(Rsp_F) updates)
method create (line 5157) | Rsp_F create()
method createEmptyInstance (line 5158) | Rsp_F createEmptyInstance()
method createRepeated (line 5159) | $pb.PbList<Rsp_F> createRepeated()
method getDefault (line 5161) | Rsp_F getDefault()
method hasQ1 (line 5169) | $core.bool hasQ1()
method clearQ1 (line 5171) | void clearQ1()
method hasQ3 (line 5178) | $core.bool hasQ3()
method clearQ3 (line 5180) | void clearQ3()
method hasQ4 (line 5187) | $core.bool hasQ4()
method clearQ4 (line 5189) | void clearQ4()
method hasQ5 (line 5196) | $core.bool hasQ5()
method clearQ5 (line 5198) | void clearQ5()
class Rsp (line 5201) | class Rsp extends $pb.GeneratedMessage {
method clone (line 5225) | Rsp clone()
method copyWith (line 5230) | Rsp copyWith(void Function(Rsp) updates)
method create (line 5235) | Rsp create()
method createEmptyInstance (line 5236) | Rsp createEmptyInstance()
method createRepeated (line 5237) | $pb.PbList<Rsp> createRepeated()
method getDefault (line 5239) | Rsp getDefault()
method hasA (line 5247) | $core.bool hasA()
method clearA (line 5249) | void clearA()
method hasB (line 5256) | $core.bool hasB()
method clearB (line 5258) | void clearB()
method hasC (line 5265) | $core.bool hasC()
method clearC (line 5267) | void clearC()
method hasD (line 5274) | $core.bool hasD()
method clearD (line 5276) | void clearD()
method hasE (line 5283) | $core.bool hasE()
method clearE (line 5285) | void clearE()
method hasF (line 5292) | $core.bool hasF()
method clearF (line 5294) | void clearF()
method ensureF (line 5296) | Rsp_F ensureF()
method hasG (line 5303) | $core.bool hasG()
method clearG (line 5305) | void clearG()
method hasH (line 5312) | $core.bool hasH()
method clearH (line 5314) | void clearH()
method hasI (line 5321) | $core.bool hasI()
method clearI (line 5323) | void clearI()
method hasJ (line 5330) | $core.bool hasJ()
method clearJ (line 5332) | void clearJ()
class PreMessage (line 5335) | class PreMessage extends $pb.GeneratedMessage {
method clone (line 5363) | PreMessage clone()
method copyWith (line 5368) | PreMessage copyWith(void Function(PreMessage) updates)
method create (line 5373) | PreMessage create()
method createEmptyInstance (line 5374) | PreMessage createEmptyInstance()
method createRepeated (line 5375) | $pb.PbList<PreMessage> createRepeated()
method getDefault (line 5377) | PreMessage getDefault()
method hasCmd (line 5385) | $core.bool hasCmd()
method clearCmd (line 5387) | void clearCmd()
method hasSequenceId (line 5394) | $core.bool hasSequenceId()
method clearSequenceId (line 5396) | void clearSequenceId()
method hasSdkVersion (line 5403) | $core.bool hasSdkVersion()
method clearSdkVersion (line 5405) | void clearSdkVersion()
method hasToken (line 5412) | $core.bool hasToken()
method clearToken (line 5414) | void clearToken()
method hasRefer (line 5421) | $core.bool hasRefer()
method clearRefer (line 5423) | void clearRefer()
method hasInboxType (line 5430) | $core.bool hasInboxType()
method clearInboxType (line 5432) | void clearInboxType()
method hasBuildNumber (line 5439) | $core.bool hasBuildNumber()
method clearBuildNumber (line 5441) | void clearBuildNumber()
method hasSendMessageBody (line 5448) | $core.bool hasSendMessageBody()
method clearSendMessageBody (line 5450) | void clearSendMessageBody()
method ensureSendMessageBody (line 5452) | SendMessageBody ensureSendMessageBody()
method hasAa (line 5459) | $core.bool hasAa()
method clearAa (line 5461) | void clearAa()
method hasDevicePlatform (line 5468) | $core.bool hasDevicePlatform()
method clearDevicePlatform (line 5470) | void clearDevicePlatform()
method hasAuthType (line 5480) | $core.bool hasAuthType()
method clearAuthType (line 5482) | void clearAuthType()
method hasBiz (line 5489) | $core.bool hasBiz()
method clearBiz (line 5491) | void clearBiz()
method hasAccess (line 5498) | $core.bool hasAccess()
method clearAccess (line 5500) | void clearAccess()
class HeadersList (line 5503) | class HeadersList extends $pb.GeneratedMessage {
method clone (line 5519) | HeadersList clone()
method copyWith (line 5524) | HeadersList copyWith(void Function(HeadersList) updates)
method create (line 5529) | HeadersList create()
method createEmptyInstance (line 5530) | HeadersList createEmptyInstance()
method createRepeated (line 5531) | $pb.PbList<HeadersList> createRepeated()
method getDefault (line 5533) | HeadersList getDefault()
method hasKey (line 5541) | $core.bool hasKey()
method clearKey (line 5543) | void clearKey()
method hasValue (line 5550) | $core.bool hasValue()
method clearValue (line 5552) | void clearValue()
FILE: simple_live_core/lib/src/danmaku/proto/douyin.pbenum.dart
class CommentTypeTag (line 16) | class CommentTypeTag extends $pb.ProtobufEnum {
method valueOf (line 26) | CommentTypeTag? valueOf($core.int value)
FILE: simple_live_core/lib/src/douyin_site.dart
class DouyinSite (line 9) | class DouyinSite implements LiveSite {
method getDanmaku (line 17) | LiveDanmaku getDanmaku()
method _logDebug (line 35) | void _logDebug(String msg)
method getRequestHeaders (line 47) | Future<Map<String, dynamic>> getRequestHeaders()
method getCategores (line 68) | Future<List<LiveCategory>> getCategores()
method getCategoryRooms (line 122) | Future<LiveCategoryResult> getCategoryRooms(
method getRecommendRooms (line 184) | Future<LiveCategoryResult> getRecommendRooms({int page = 1})
method getRoomDetail (line 239) | Future<LiveRoomDetail> getRoomDetail({required String roomId})
method getRoomDetailByRoomId (line 257) | Future<LiveRoomDetail> getRoomDetailByRoomId(String roomId)
method getRoomDetailByWebRid (line 311) | Future<LiveRoomDetail> getRoomDetailByWebRid(String webRid)
method _getRoomDetailByWebRidApi (line 324) | Future<LiveRoomDetail> _getRoomDetailByWebRidApi(String webRid)
method _getRoomDetailByWebRidHtml (line 373) | Future<LiveRoomDetail> _getRoomDetailByWebRidHtml(String webRid)
method _getUserUniqueId (line 417) | Future<String> _getUserUniqueId(String webRid)
method _getWebCookie (line 428) | Future<String> _getWebCookie(String webRid)
method _getRoomDataByHtml (line 451) | Future<Map> _getRoomDataByHtml(String webRid)
method _getRoomDataByApi (line 480) | Future<Map> _getRoomDataByApi(String webRid)
method _getRoomDataByRoomId (line 522) | Future<Map> _getRoomDataByRoomId(String roomId)
method getPlayQualites (line 539) | Future<List<LivePlayQuality>> getPlayQualites({
method getPlayUrls (line 632) | Future<LivePlayUrl> getPlayUrls({
method searchRooms (line 641) | Future<LiveSearchRoomResult> searchRooms(
method searchAnchors (line 742) | Future<LiveSearchAnchorResult> searchAnchors(
method getLiveStatus (line 750) | Future<bool> getLiveStatus({required String roomId})
method getSuperChatMessage (line 756) | Future<List<LiveSuperChatMessage>> getSuperChatMessage({
method generateRandomString (line 763) | String generateRandomString(int length)
method generateRandomNumber (line 774) | int generateRandomNumber(int length)
FILE: simple_live_core/lib/src/douyu_site.dart
class DouyuSite (line 21) | class DouyuSite implements LiveSite {
method getDanmaku (line 29) | LiveDanmaku getDanmaku()
method getCategores (line 32) | Future<List<LiveCategory>> getCategores()
method getCategoryRooms (line 67) | Future<LiveCategoryResult> getCategoryRooms(
method getPlayQualites (line 95) | Future<List<LivePlayQuality>> getPlayQualites({
method getPlayUrls (line 134) | Future<LivePlayUrl> getPlayUrls({
method getPlayUrl (line 151) | Future<String> getPlayUrl(
method getRecommendRooms (line 173) | Future<LiveCategoryResult> getRecommendRooms({int page = 1})
method getRoomDetail (line 198) | Future<LiveRoomDetail> getRoomDetail({required String roomId})
method searchRooms (line 260) | Future<LiveSearchRoomResult> searchRooms(
method _getRoomInfo (line 293) | Future<Map> _getRoomInfo(String roomId)
method generateRandomString (line 313) | String generateRandomString(int length)
method searchAnchors (line 324) | Future<LiveSearchAnchorResult> searchAnchors(
method getLiveStatus (line 364) | Future<bool> getLiveStatus({required String roomId})
method parseHotNum (line 369) | int parseHotNum(String hn)
method getSuperChatMessage (line 382) | Future<List<LiveSuperChatMessage>> getSuperChatMessage({
class DouyuPlayData (line 390) | class DouyuPlayData {
FILE: simple_live_core/lib/src/huya_site.dart
class HuyaSite (line 14) | class HuyaSite implements LiveSite {
method getDanmaku (line 39) | LiveDanmaku getDanmaku()
method getCategores (line 42) | Future<List<LiveCategory>> getCategores()
method getSubCategores (line 57) | Future<List<LiveSubCategory>> getSubCategores(String id)
method getCategoryRooms (line 92) | Future<LiveCategoryResult> getCategoryRooms(LiveSubCategory category,
method getPlayQualites (line 130) | Future<List<LivePlayQuality>> getPlayQualites(
method getHuYaUA (line 192) | Future<String> getHuYaUA()
method getPlayUrls (line 211) | Future<LivePlayUrl> getPlayUrls(
method getPlayUrl (line 228) | Future<String> getPlayUrl(HuyaLineModel line, int bitRate)
method buildAntiCode (line 242) | String buildAntiCode(String stream, int presenterUid, String antiCode)
method getCndTokenInfoEx (line 300) | Future<String> getCndTokenInfoEx(String stream)
method getRecommendRooms (line 312) | Future<LiveCategoryResult> getRecommendRooms({int page = 1})
method getRoomDetail (line 348) | Future<LiveRoomDetail> getRoomDetail({required String roomId})
method _getRoomInfo (line 417) | Future<Map> _getRoomInfo(String roomId)
method searchRooms (line 450) | Future<LiveSearchRoomResult> searchRooms(String keyword,
method searchAnchors (line 493) | Future<LiveSearchAnchorResult> searchAnchors(String keyword,
method getLiveStatus (line 525) | Future<bool> getLiveStatus({required String roomId})
method getAnonymousUid (line 531) | Future<String> getAnonymousUid()
method rotl64 (line 548) | int rotl64(int t)
method getUUid (line 556) | String getUUid()
method getUid (line 563) | String getUid({int? t, int? e})
method processAnticode (line 617) | String processAnticode(String anticode, String uid, String streamname)
method getSuperChatMessage (line 664) | Future<List<LiveSuperChatMessage>> getSuperChatMessage(
class HuyaUrlDataModel (line 671) | class HuyaUrlDataModel {
method toString (line 685) | String toString()
type HuyaLineType (line 695) | enum HuyaLineType {
class HuyaLineModel (line 700) | class HuyaLineModel {
method toString (line 722) | String toString()
class HuyaBitRateModel (line 735) | class HuyaBitRateModel {
method toString (line 745) | String toString()
FILE: simple_live_core/lib/src/interface/live_danmaku.dart
class LiveDanmaku (line 5) | class LiveDanmaku {
method heartbeat (line 14) | void heartbeat()
method start (line 17) | Future start(dynamic args)
method stop (line 22) | Future stop()
FILE: simple_live_core/lib/src/interface/live_site.dart
class LiveSite (line 14) | class LiveSite {
method getDanmaku (line 22) | LiveDanmaku getDanmaku()
method getCategores (line 25) | Future<List<LiveCategory>> getCategores()
method searchRooms (line 30) | Future<LiveSearchRoomResult> searchRooms(String keyword, {int page = 1})
method searchAnchors (line 36) | Future<LiveSearchAnchorResult> searchAnchors(String keyword, {int page...
method getCategoryRooms (line 42) | Future<LiveCategoryResult> getCategoryRooms(LiveSubCategory category,
method getRecommendRooms (line 49) | Future<LiveCategoryResult> getRecommendRooms({int page = 1})
method getRoomDetail (line 55) | Future<LiveRoomDetail> getRoomDetail({required String roomId})
method getPlayQualites (line 69) | Future<List<LivePlayQuality>> getPlayQualites(
method getPlayUrls (line 75) | Future<LivePlayUrl> getPlayUrls(
method getLiveStatus (line 81) | Future<bool> getLiveStatus({required String roomId})
method getSuperChatMessage (line 86) | Future<List<LiveSuperChatMessage>> getSuperChatMessage(
FILE: simple_live_core/lib/src/model/live_anchor_item.dart
class LiveAnchorItem (line 3) | class LiveAnchorItem {
method toString (line 24) | String toString()
FILE: simple_live_core/lib/src/model/live_category.dart
class LiveCategory (line 3) | class LiveCategory {
method toString (line 14) | String toString()
class LiveSubCategory (line 23) | class LiveSubCategory {
method toString (line 36) | String toString()
FILE: simple_live_core/lib/src/model/live_category_result.dart
class LiveCategoryResult (line 3) | class LiveCategoryResult {
FILE: simple_live_core/lib/src/model/live_message.dart
type LiveMessageType (line 3) | enum LiveMessageType {
class LiveMessage (line 17) | class LiveMessage {
method toString (line 42) | String toString()
class LiveMessageColor (line 53) | class LiveMessageColor {
method numberToColor (line 57) | LiveMessageColor numberToColor(int intColor)
method toString (line 83) | String toString()
class LiveSuperChatMessage (line 88) | class LiveSuperChatMessage {
method toString (line 109) | String toString()
FILE: simple_live_core/lib/src/model/live_play_quality.dart
class LivePlayQuality (line 3) | class LivePlayQuality {
method toString (line 19) | String toString()
FILE: simple_live_core/lib/src/model/live_play_url.dart
class LivePlayUrl (line 3) | class LivePlayUrl {
method toString (line 16) | String toString()
FILE: simple_live_core/lib/src/model/live_room_detail.dart
class LiveRoomDetail (line 3) | class LiveRoomDetail {
method toString (line 64) | String toString()
FILE: simple_live_core/lib/src/model/live_room_item.dart
class LiveRoomItem (line 3) | class LiveRoomItem {
method toString (line 27) | String toString()
FILE: simple_live_core/lib/src/model/live_search_result.dart
class LiveSearchRoomResult (line 4) | class LiveSearchRoomResult {
class LiveSearchAnchorResult (line 13) | class LiveSearchAnchorResult {
FILE: simple_live_core/lib/src/model/tars/get_cdn_token_ex_req.dart
class GetCdnTokenExReq (line 9) | class GetCdnTokenExReq extends TarsStruct {
method readFrom (line 17) | void readFrom(TarsInputStream _is)
method writeTo (line 26) | void writeTo(TarsOutputStream _os)
method deepCopy (line 35) | TarsStruct deepCopy()
FILE: simple_live_core/lib/src/model/tars/get_cdn_token_ex_resp.dart
class GetCdnTokenExResp (line 6) | class GetCdnTokenExResp extends TarsStruct {
method readFrom (line 11) | void readFrom(TarsInputStream _is)
method writeTo (line 17) | void writeTo(TarsOutputStream _os)
method deepCopy (line 23) | TarsStruct deepCopy()
FILE: simple_live_core/lib/src/model/tars/get_cdn_token_req.dart
class GetCdnTokenReq (line 8) | class GetCdnTokenReq extends TarsStruct {
method readFrom (line 18) | void readFrom(TarsInputStream _is)
method writeTo (line 26) | void writeTo(TarsOutputStream _os)
method deepCopy (line 34) | Object deepCopy()
method displayAsString (line 43) | void displayAsString(StringBuffer sb, int level)
FILE: simple_live_core/lib/src/model/tars/get_cdn_token_resp.dart
class GetCdnTokenResp (line 8) | class GetCdnTokenResp extends TarsStruct {
method readFrom (line 26) | void readFrom(TarsInputStream _is)
method writeTo (line 38) | void writeTo(TarsOutputStream _os)
method deepCopy (line 50) | Object deepCopy()
method displayAsString (line 63) | void displayAsString(StringBuffer sb, int level)
FILE: simple_live_core/lib/src/model/tars/huya_danmaku.dart
class HYPushMessage (line 7) | class HYPushMessage extends TarsStruct {
method readFrom (line 14) | void readFrom(TarsInputStream _is)
method writeTo (line 22) | void writeTo(TarsOutputStream _os)
method deepCopy (line 25) | Object deepCopy()
method displayAsString (line 34) | void displayAsString(StringBuffer sb, int level)
class HYSender (line 37) | class HYSender extends TarsStruct {
method readFrom (line 44) | void readFrom(TarsInputStream _is)
method writeTo (line 52) | void writeTo(TarsOutputStream _os)
method deepCopy (line 55) | Object deepCopy()
method displayAsString (line 64) | void displayAsString(StringBuffer sb, int level)
class HYMessage (line 67) | class HYMessage extends TarsStruct {
method readFrom (line 73) | void readFrom(TarsInputStream _is)
method writeTo (line 80) | void writeTo(TarsOutputStream _os)
method deepCopy (line 83) | Object deepCopy()
method displayAsString (line 91) | void displayAsString(StringBuffer sb, int level)
class HYBulletFormat (line 94) | class HYBulletFormat extends TarsStruct {
method readFrom (line 101) | void readFrom(TarsInputStream _is)
method writeTo (line 109) | void writeTo(TarsOutputStream _os)
method deepCopy (line 112) | Object deepCopy()
method displayAsString (line 121) | void displayAsString(StringBuffer sb, int level)
FILE: simple_live_core/lib/src/model/tars/huya_user_id.dart
class HuyaUserId (line 6) | class HuyaUserId extends TarsStruct {
method readFrom (line 17) | void readFrom(TarsInputStream _is)
method writeTo (line 29) | void writeTo(TarsOutputStream _os)
method deepCopy (line 41) | Object deepCopy()
method displayAsString (line 54) | void displayAsString(StringBuffer sb, int level)
FILE: simple_live_core/lib/src/model/tars/tar2dart.dart
function main (line 10) | void main(List<String> args)
function generate (line 46) | String generate(List<Field> fields)
function displayMethod (line 92) | String displayMethod(String type)
function padRight (line 100) | String padRight(String s, int width)
class Field (line 104) | class Field {
FILE: simple_live_core/lib/src/scripts/douyin_sign.dart
class DouyinSign (line 6) | class DouyinSign {
method getAbogusUrl (line 10651) | String getAbogusUrl(String url, String userAgent)
method getSignature (line 10669) | String getSignature(String roomId, String uniqueId)
method getMsStub (line 10690) | String getMsStub(String roomId, String uniqueId)
method generateMsToken (line 10715) | String generateMsToken(int length)
FILE: simple_live_core/lib/src/scripts/douyu_sign.dart
class DouyuSign (line 3) | class DouyuSign {
method getSign (line 8) | String getSign(String html, String rid)
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_decode_exception.dart
class TarsDecodeException (line 1) | class TarsDecodeException extends Error {
method toString (line 5) | String toString()
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_deep_copyable.dart
class DeepCopyable (line 1) | abstract class DeepCopyable {
method deepCopy (line 2) | Object deepCopy()
function listDeepCopy (line 5) | List<T> listDeepCopy<T>(List list)
function setDeepCopy (line 21) | Set<T> setDeepCopy<T>(Set s)
function mapDeepCopy (line 37) | Map<K, V> mapDeepCopy<K, V>(Map<K, V> map)
function mapListDeepCopy (line 55) | Map<K, List<V>> mapListDeepCopy<K, V>(Map<K, List<V>> map)
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_displayer.dart
class TarsDisplayer (line 8) | class TarsDisplayer {
method ps (line 15) | void ps(String? fieldName)
method display (line 26) | TarsDisplayer? display(dynamic value, String? fieldName)
method DisplayBool (line 54) | TarsDisplayer DisplayBool(bool b, String? fieldName)
method DisplayInt (line 61) | TarsDisplayer DisplayInt(int n, String? fieldName)
method DisplayDouble (line 68) | TarsDisplayer DisplayDouble(double n, String? fieldName)
method DisplayString (line 75) | TarsDisplayer DisplayString(String? s, String? fieldName)
method DisplayUint8List (line 88) | TarsDisplayer DisplayUint8List(Uint8List? v, String? fieldName)
method DisplayMap (line 113) | TarsDisplayer DisplayMap<K, V>(Map<K, V>? m, String? fieldName)
method DisplayArray (line 141) | TarsDisplayer DisplayArray<T>(List<T>? v, String? fieldName)
method DisplayList (line 165) | TarsDisplayer DisplayList<T>(List<T>? v, String? fieldName)
method DisplayTarsStruct (line 180) | TarsDisplayer DisplayTarsStruct(TarsStruct? v, String? fieldName)
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_encode_exception.dart
class TarsEncodeException (line 1) | class TarsEncodeException extends Error {
method toString (line 6) | String toString()
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_input_stream.dart
class HeadData (line 8) | class HeadData {
method clear (line 12) | void clear()
class BinaryReader (line 18) | class BinaryReader {
method read (line 28) | int read()
method readInt (line 38) | int readInt(int len)
method readBytes (line 68) | Uint8List readBytes(int len)
method readFloat (line 79) | double readFloat(int len)
class TarsInputStream (line 96) | class TarsInputStream {
method wrap (line 106) | void wrap(Uint8List bytes, {int pos = 0})
method readBinaryReaderHead (line 111) | int readBinaryReaderHead(HeadData hd, BinaryReader bb)
method readHead (line 125) | int readHead(HeadData hd)
method peakHead (line 129) | int peakHead(HeadData hd)
method skip (line 136) | void skip(int len)
method skipToTag (line 140) | bool skipToTag(int tag)
method skipToStructEnd (line 162) | void skipToStructEnd()
method skipField (line 171) | void skipField()
method skipFieldWithType (line 177) | void skipFieldWithType(int type)
method read (line 249) | dynamic read<T>(dynamic data, int tag, bool isRequire)
method readInt (line 274) | int readInt(int tag, bool isRequire)
method readBool (line 307) | bool readBool(int tag, bool isRequire)
method readChar (line 313) | String readChar(int tag, bool isRequire)
method readString (line 320) | String readString(int tag, bool isRequire)
method _readString1 (line 343) | String _readString1()
method _readString4 (line 355) | String _readString4()
method readFloat (line 369) | double readFloat(int tag, bool isRequire)
method readBytes (line 400) | Uint8List readBytes(int tag, bool isRequire)
method readMap (line 453) | Map<K, V> readMap<K, V>(Map<K, V> data, int tag, bool isRequire)
method readMapList (line 492) | Map<K, List<V>> readMapList<K, V>(
method readMapMap (line 531) | Map<K, Map<K2, V2>> readMapMap<K, K2, V2>(
method readList (line 569) | List<T> readList<T>(dynamic data, int tag, bool isRequire)
method readTarsStruct (line 597) | TarsStruct readTarsStruct(TarsStruct ts, int tag, bool isRequire)
method setServerEncoding (line 618) | int setServerEncoding(String se)
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_output_stream.dart
class BinaryWriter (line 7) | class BinaryWriter {
method writeBytes (line 15) | void writeBytes(Uint8List list)
method writeInt (line 20) | void writeInt(int value, int len)
method writeDouble (line 41) | void writeDouble(double value, int len)
class TarsOutputStream (line 57) | class TarsOutputStream {
method writeHead (line 68) | void writeHead(int type, int tag)
method write (line 91) | void write(dynamic data, int tag)
method writeBool (line 115) | void writeBool(bool b, int tag)
method writeByte (line 121) | void writeByte(int b, int tag)
method writeInt (line 137) | void writeInt(int n, int tag)
method writeFloat (line 169) | void writeFloat(double n, int tag)
method writeDouble (line 177) | void writeDouble(double n, int tag)
method writeString (line 185) | void writeString(String s, int tag)
method writeUint8List (line 207) | void writeUint8List(Uint8List ls, int tag)
method writeMap (line 217) | void writeMap<K, V>(Map<K, V> map, int tag)
method writeList (line 229) | void writeList(List ls, int tag)
method writeTarsStruct (line 240) | void writeTarsStruct(TarsStruct o, int tag)
method toUint8List (line 246) | Uint8List toUint8List()
method setServerEncoding (line 252) | int setServerEncoding(String se)
FILE: simple_live_core/packages/tars_dart/lib/tars/codec/tars_struct.dart
type TarsStructType (line 9) | enum TarsStructType {
class TarsStruct (line 26) | abstract class TarsStruct extends DeepCopyable {
method writeTo (line 28) | void writeTo(TarsOutputStream _os)
method readFrom (line 29) | void readFrom(TarsInputStream _is)
method displayAsString (line 30) | void displayAsString(StringBuffer sb, int level)
method toByteArray (line 32) | Uint8List toByteArray()
FILE: simple_live_core/packages/tars_dart/lib/tars/net/base_tars_http.dart
class BaseTarsHttp (line 14) | class BaseTarsHttp {
method tupRequest (line 47) | Future<RSP> tupRequest<REQ, RSP>(
method tupRequestWithRspCode (line 60) | Future<TupResponse<RSP>> tupRequestWithRspCode<REQ, RSP>(
method tupRequestWithRspCodeNoRsp (line 74) | Future<TupResponse<void>> tupRequestWithRspCodeNoRsp<REQ>(
method tupRequestNoRsp (line 88) | Future<void> tupRequestNoRsp<REQ>(String methodName, REQ tReq)
method buildRequest (line 100) | Uint8List buildRequest<REQ>(String methodName, REQ tReq)
method tupResponseDecode (line 113) | TupResponse<RSP> tupResponseDecode<RSP>(
method tupEmptyResponseDecode (line 128) | TupResponse<void> tupEmptyResponseDecode(String methodName, List<int> ...
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/basic_class_type_util.dart
class BasicClassTypeUtil (line 1) | class BasicClassTypeUtil {
method dart2UniType (line 2) | String dart2UniType(String type, dynamic obj)
method transTypeList (line 56) | String transTypeList(List<String> listType)
method createObject (line 91) | Object? createObject(Type type)
method createObjectT (line 116) | T createObjectT<T>()
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/const.dart
class Const (line 3) | class Const {
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/object_create_exception.dart
class ObjectCreateException (line 1) | class ObjectCreateException implements Exception {
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/request_packet.dart
class RequestPacket (line 11) | class RequestPacket extends TarsStruct {
method className (line 12) | String className()
method writeTo (line 49) | void writeTo(TarsOutputStream _os)
method readFrom (line 67) | void readFrom(TarsInputStream _is)
method displayAsString (line 81) | void displayAsString(StringBuffer _os, int _level)
method deepCopy (line 96) | Object deepCopy()
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/tars_uni_packet.dart
class TarsUniPacket (line 5) | class TarsUniPacket extends UniPacket {
method setTarsVersion (line 17) | void setTarsVersion(int version)
method setTarsPacketType (line 22) | void setTarsPacketType(int packetType)
method setTarsMessageType (line 27) | void setTarsMessageType(int messageType)
method setTarsTimeout (line 32) | void setTarsTimeout(int timeout)
method setTarsBuffer (line 37) | void setTarsBuffer(Uint8List buffer)
method setTarsContext (line 42) | void setTarsContext(Map<String, String> context)
method setTarsStatus (line 47) | void setTarsStatus(Map<String, String> status)
method getTarsVersion (line 52) | int getTarsVersion()
method getTarsPacketType (line 57) | int getTarsPacketType()
method getTarsMessageType (line 62) | int getTarsMessageType()
method getTarsTimeout (line 67) | int getTarsTimeout()
method getTarsBuffer (line 72) | Uint8List? getTarsBuffer()
method getTarsContext (line 77) | Map<String, String>? getTarsContext()
method getTarsStatus (line 82) | Map<String, String>? getTarsStatus()
method getTarsResultCode (line 87) | int getTarsResultCode()
method getTarsResultDesc (line 100) | String getTarsResultDesc()
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/tup_response.dart
class TupResponse (line 1) | class TupResponse<T> {
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/tup_result_exception.dart
class TupResultException (line 1) | class TupResultException implements Exception {
method toString (line 8) | String toString()
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/uni_attribute.dart
class UniAttribute (line 14) | class UniAttribute extends TarsStruct {
method clearCacheData (line 30) | void clearCacheData()
method isEmpty (line 34) | bool isEmpty()
method containsKey (line 50) | bool containsKey(String key)
method put (line 62) | void put<T>(String name, T t)
method checkObjectType (line 95) | void checkObjectType(List<String> listType, dynamic o)
method decodeData (line 134) | Object decodeData(Uint8List data, Object? proxy)
method getByClass (line 147) | T getByClass<T>(String name, T proxy)
method get2 (line 172) | T get2<T>(String name, {T? proxy})
method get (line 198) | T get<T>(String name, T defaultObj)
method saveDataCache (line 216) | void saveDataCache(String name, Object o)
method encode (line 220) | Uint8List encode()
method decode (line 231) | void decode(Uint8List buffer, {int index = 0})
method writeTo (line 250) | void writeTo(TarsOutputStream _os)
method readFrom (line 259) | void readFrom(TarsInputStream _is)
method deepCopy (line 271) | Object deepCopy()
method displayAsString (line 276) | void displayAsString(StringBuffer sb, int level)
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/uni_packet.dart
class UniPacket (line 11) | class UniPacket extends UniAttribute {
method setVersion (line 53) | void setVersion(int iVer)
method getVersion (line 58) | int getVersion()
method encode (line 64) | Uint8List encode()
method decode (line 96) | void decode(Uint8List buffer, {int index = 0})
method writeTo (line 134) | void writeTo(TarsOutputStream _os)
method readFrom (line 139) | void readFrom(TarsInputStream _is)
FILE: simple_live_core/packages/tars_dart/lib/tars/tup/write_buffer.dart
class WriteBuffer (line 22) | class WriteBuffer {
method _add (line 41) | void _add(int byte)
method _append (line 49) | void _append(Uint8List other)
method _addAll (line 58) | void _addAll(Uint8List data, [int start = 0, int? end])
method _resize (line 68) | void _resize([int? requiredLength])
method putUint8 (line 77) | void putUint8(int byte)
method putUint16 (line 83) | void putUint16(int value, {Endian? endian})
method putUint32 (line 90) | void putUint32(int value, {Endian? endian})
method putInt32 (line 97) | void putInt32(int value, {Endian? endian})
method putInt64 (line 104) | void putInt64(int value, {Endian? endian})
method putFloat64 (line 111) | void putFloat64(double value, {Endian? endian})
method putUint8List (line 119) | void putUint8List(Uint8List list)
method putInt32List (line 125) | void putInt32List(Int32List list)
method putInt64List (line 132) | void putInt64List(Int64List list)
method putFloat32List (line 139) | void putFloat32List(Float32List list)
method putFloat64List (line 146) | void putFloat64List(Float64List list)
method _alignTo (line 152) | void _alignTo(int alignment)
method done (line 161) | ByteData done()
class ReadBuffer (line 176) | class ReadBuffer {
method getUint8 (line 190) | int getUint8()
method getUint16 (line 195) | int getUint16({Endian? endian})
method getUint32 (line 202) | int getUint32({Endian? endian})
method getInt32 (line 209) | int getInt32({Endian? endian})
method getInt64 (line 216) | int getInt64({Endian? endian})
method getFloat64 (line 223) | double getFloat64({Endian? endian})
method getUint8List (line 231) | Uint8List getUint8List(int length)
method getInt32List (line 239) | Int32List getInt32List(int length)
method getInt64List (line 248) | Int64List getInt64List(int length)
method getFloat32List (line 257) | Float32List getFloat32List(int length)
method getFloat64List (line 266) | Float64List getFloat64List(int length)
method _alignTo (line 274) | void _alignTo(int alignment)
FILE: simple_live_core/test/simple_live_core_test.dart
function testSite (line 4) | void testSite(LiveSite site)
function main (line 133) | void main()
FILE: simple_live_tv_app/lib/app/app_error.dart
class AppError (line 1) | class AppError extends Error {
method toString (line 20) | String toString()
FILE: simple_live_tv_app/lib/app/app_focus_node.dart
class AppFocusNode (line 5) | class AppFocusNode extends FocusNode {
method dispose (line 17) | void dispose()
FILE: simple_live_tv_app/lib/app/app_style.dart
class AppColors (line 7) | class AppColors {
class AppStyle (line 16) | class AppStyle {
FILE: simple_live_tv_app/lib/app/base_focus_model.dart
class BaseFocusModel (line 3) | class BaseFocusModel {
FILE: simple_live_tv_app/lib/app/constant.dart
class Constant (line 3) | class Constant {
class HomePageItem (line 13) | class HomePageItem {
FILE: simple_live_tv_app/lib/app/controller/app_settings_controller.dart
class AppSettingsController (line 5) | class AppSettingsController extends GetxController {
method onInit (line 15) | void onInit()
method setNoFirstRun (line 106) | void setNoFirstRun()
method setHardwareDecode (line 111) | void setHardwareDecode(bool e)
method setChatTextSize (line 118) | void setChatTextSize(double e)
method setChatTextGap (line 124) | void setChatTextGap(double e)
method setChatBubbleStyle (line 130) | void setChatBubbleStyle(bool e)
method setDanmuSize (line 137) | void setDanmuSize(double e)
method setDanmuSpeed (line 143) | void setDanmuSpeed(double e)
method setDanmuArea (line 149) | void setDanmuArea(double e)
method setDanmuOpacity (line 155) | void setDanmuOpacity(double e)
method setDanmuEnable (line 161) | void setDanmuEnable(bool e)
method setDanmuStrokeWidth (line 167) | void setDanmuStrokeWidth(double e)
method setQualityLevel (line 174) | void setQualityLevel(int level)
method setQualityLevelCellular (line 181) | void setQualityLevelCellular(int level)
method setAutoExitEnable (line 188) | void setAutoExitEnable(bool e)
method setAutoExitDuration (line 195) | void setAutoExitDuration(int e)
method setRoomAutoExitDuration (line 202) | void setRoomAutoExitDuration(int e)
method setPlayerCompatMode (line 209) | void setPlayerCompatMode(bool e)
method setPlayerBufferSize (line 216) | void setPlayerBufferSize(int e)
method setPlayerAutoPause (line 223) | void setPlayerAutoPause(bool e)
method setAutoFullScreen (line 230) | void setAutoFullScreen(bool e)
method addShieldList (line 237) | void addShieldList(String e)
method removeShieldList (line 242) | void removeShieldList(String e)
method clearShieldList (line 247) | Future clearShieldList()
method setScaleMode (line 252) | void setScaleMode(int value)
method setSiteSort (line 261) | void setSiteSort(List<String> e)
method setHomeSort (line 270) | void setHomeSort(List<String> e)
method setPIPHideDanmu (line 279) | void setPIPHideDanmu(bool e)
method setStyleColor (line 285) | void setStyleColor(int e)
method setIsDynamic (line 291) | void setIsDynamic(bool e)
method setDanmuTopMargin (line 297) | void setDanmuTopMargin(double e)
method setDanmuBottomMargin (line 304) | void setDanmuBottomMargin(double e)
method setBiliBiliLoginTip (line 311) | void setBiliBiliLoginTip(bool e)
method setAutoUpdateFollowEnable (line 318) | void setAutoUpdateFollowEnable(bool e)
method setAutoUpdateFollowDuration (line 325) | void setAutoUpdateFollowDuration(int e)
method setUpdateFollowThreadCount (line 332) | void setUpdateFollowThreadCount(int e)
FILE: simple_live_tv_app/lib/app/controller/base_controller.dart
class BaseController (line 10) | class BaseController extends GetxController {
method handleError (line 33) | void handleError(Object exception, {bool showPageError = false})
method exceptionToString (line 48) | String exceptionToString(Object exception)
method onLogin (line 55) | void onLogin()
method onLogout (line 56) | void onLogout()
class BasePageController (line 59) | class BasePageController<T> extends BaseController {
method refreshData (line 69) | Future refreshData()
method loadData (line 75) | Future loadData()
method getData (line 110) | Future<List<T>> getData(int page, int pageSize)
method scrollToTopOrRefresh (line 114) | void scrollToTopOrRefresh()
FILE: simple_live_tv_app/lib/app/event_bus.dart
class EventBus (line 6) | class EventBus {
method emit (line 17) | void emit<T>(String name, T data)
method listen (line 27) | StreamSubscription<dynamic> listen(String name, Function(dynamic)? onD...
FILE: simple_live_tv_app/lib/app/log.dart
class Log (line 6) | class Log {
method d (line 20) | void d(String message)
method i (line 24) | void i(String message)
method e (line 28) | void e(String message, StackTrace stackTrace)
method w (line 32) | void w(String message)
method logPrint (line 36) | void logPrint(dynamic obj)
class DebugLogModel (line 44) | class DebugLogModel {
FILE: simple_live_tv_app/lib/app/sites.dart
class Sites (line 4) | class Sites {
class Site (line 41) | class Site {
FILE: simple_live_tv_app/lib/app/utils.dart
class Utils (line 10) | class Utils {
method parseTime (line 16) | String parseTime(DateTime? dt)
method showAlertDialog (line 40) | Future<bool> showAlertDialog(
method showMessageDialog (line 103) | Future<bool> showMessageDialog(String content,
method showOptionDialog (line 123) | Future<T?> showOptionDialog<T>(
method showMapOptionDialog (line 147) | Future<T?> showMapOptionDialog<T>(
method isRegexFormat (line 174) | bool isRegexFormat(String keyword)
method removeRegexFormat (line 180) | String removeRegexFormat(String keyword)
method showRightDialog (line 184) | void showRightDialog({
method showSystemRightDialog (line 215) | Future<void> showSystemRightDialog({
method hideRightDialog (line 238) | void hideRightDialog()
method parseVersion (line 242) | int parseVersion(String version)
method onlineToString (line 251) | String onlineToString(int num)
FILE: simple_live_tv_app/lib/main.dart
function main (line 26) | void main()
function initServices (line 42) | Future initServices()
class MyApp (line 84) | class MyApp extends StatelessWidget {
method build (line 88) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/models/account/bilibili_user_info_page.dart
function asT (line 3) | T? asT<T>(dynamic value)
class BiliBiliUserInfoModel (line 10) | class BiliBiliUserInfoModel {
method toString (line 44) | String toString()
method toJson (line 48) | Map<String, dynamic> toJson()
FILE: simple_live_tv_app/lib/models/db/follow_user.dart
class FollowUser (line 6) | @HiveType(typeId: 1)
method toJson (line 49) | Map<String, dynamic> toJson()
FILE: simple_live_tv_app/lib/models/db/follow_user.g.dart
class FollowUserAdapter (line 9) | class FollowUserAdapter extends TypeAdapter<FollowUser> {
method read (line 14) | FollowUser read(BinaryReader reader)
method write (line 30) | void write(BinaryWriter writer, FollowUser obj)
FILE: simple_live_tv_app/lib/models/db/history.dart
class History (line 5) | @HiveType(typeId: 2)
method toJson (line 44) | Map<String, dynamic> toJson()
FILE: simple_live_tv_app/lib/models/db/history.g.dart
class HistoryAdapter (line 9) | class HistoryAdapter extends TypeAdapter<History> {
method read (line 14) | History read(BinaryReader reader)
method write (line 30) | void write(BinaryWriter writer, History obj)
FILE: simple_live_tv_app/lib/models/version_model.dart
function asT (line 3) | T? asT<T>(dynamic value)
class VersionModel (line 10) | class VersionModel {
method toString (line 31) | String toString()
method toJson (line 35) | Map<String, dynamic> toJson()
FILE: simple_live_tv_app/lib/modules/account/bilibili/qr_login_controller.dart
type QRStatus (line 9) | enum QRStatus {
class BiliBiliQRLoginController (line 17) | class BiliBiliQRLoginController extends GetxController {
method onInit (line 19) | void onInit()
method loadQRCode (line 37) | void loadQRCode()
method startPoll (line 58) | void startPoll()
method pollQRStatus (line 67) | void pollQRStatus()
method onClose (line 107) | void onClose()
FILE: simple_live_tv_app/lib/modules/account/bilibili/qr_login_page.dart
class BiliBiliQRLoginPage (line 11) | class BiliBiliQRLoginPage extends GetView<BiliBiliQRLoginController> {
method build (line 15) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/agreement/agreement_page.dart
class AgreementPage (line 13) | class AgreementPage extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/category/category_controller.dart
class CategoryController (line 8) | class CategoryController extends BasePageController<AppLiveCategory> {
method onInit (line 13) | void onInit()
method setSite (line 18) | void setSite(String id)
method getData (line 25) | Future<List<AppLiveCategory>> getData(int page, int pageSize)
class AppLiveCategory (line 32) | class AppLiveCategory extends LiveCategory {
class LiveSubCategoryExt (line 63) | class LiveSubCategoryExt extends LiveSubCategory {
FILE: simple_live_tv_app/lib/modules/category/category_page.dart
class CategoryPage (line 14) | class CategoryPage extends GetView<CategoryController> {
method build (line 18) | Widget build(BuildContext context)
method buildSubCategory (line 147) | Widget buildSubCategory(LiveSubCategoryExt item)
method buildShowMore (line 185) | Widget buildShowMore(AppLiveCategory item)
FILE: simple_live_tv_app/lib/modules/category/detail/category_detail_controller.dart
class CategoryDetailController (line 7) | class CategoryDetailController extends BasePageController<LiveRoomItemEx...
method onInit (line 16) | void onInit()
method scrollListener (line 22) | void scrollListener()
method getData (line 30) | Future<List<LiveRoomItemExt>> getData(int page, int pageSize)
method onClose (line 46) | void onClose()
FILE: simple_live_tv_app/lib/modules/category/detail/category_detail_page.dart
class CategoryDetailPage (line 14) | class CategoryDetailPage extends GetView<CategoryDetailController> {
method build (line 18) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/follow_user/follow_user_page.dart
class FollowUserPage (line 12) | class FollowUserPage extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/history/history_controller.dart
class HistoryController (line 6) | class HistoryController extends BasePageController<History> {
method onInit (line 8) | void onInit()
method getData (line 14) | Future<List<History>> getData(int page, int pageSize)
method clean (line 21) | void clean()
method removeItem (line 30) | void removeItem(History item)
FILE: simple_live_tv_app/lib/modules/history/history_page.dart
class HistoryPage (line 12) | class HistoryPage extends GetView<HistoryController> {
method build (line 16) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/home/home_controller.dart
class HomeController (line 9) | class HomeController extends BaseController {
method onInit (line 13) | void onInit()
method initTimer (line 18) | void initTimer()
method toSync (line 26) | void toSync()
method toFollow (line 30) | void toFollow()
method toSettings (line 34) | void toSettings()
method toHistory (line 38) | void toHistory()
method toHotLive (line 42) | void toHotLive()
method toSearchRoom (line 46) | void toSearchRoom(String keyword)
method toSearchAnchor (line 50) | void toSearchAnchor(String keyword)
method toCategory (line 54) | void toCategory()
FILE: simple_live_tv_app/lib/modules/home/home_page.dart
class HomePage (line 20) | class HomePage extends GetView<HomeController> {
method build (line 24) | Widget build(BuildContext context)
method showManageDialog (line 253) | void showManageDialog()
method showSearchDialog (line 339) | void showSearchDialog()
FILE: simple_live_tv_app/lib/modules/hot_live/hot_live_controller.dart
class HotliveController (line 9) | class HotliveController extends BasePageController<LiveRoomItemExt> {
method onInit (line 14) | void onInit()
method scrollListener (line 20) | void scrollListener()
method setSite (line 27) | void setSite(String id)
method getData (line 34) | Future<List<LiveRoomItemExt>> getData(int page, int pageSize)
method onClose (line 49) | void onClose()
class LiveRoomItemExt (line 55) | class LiveRoomItemExt extends LiveRoomItem {
FILE: simple_live_tv_app/lib/modules/hot_live/hot_live_page.dart
class HotLivePage (line 14) | class HotLivePage extends GetView<HotliveController> {
method build (line 18) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/live_room/live_room_controller.dart
class LiveRoomController (line 21) | class LiveRoomController extends PlayerController with WidgetsBindingObs...
method initTimer (line 65) | void initTimer()
method onInit (line 80) | void onInit()
method refreshRoom (line 90) | void refreshRoom()
method initDanmau (line 99) | void initDanmau()
method onWSMessage (line 104) | void onWSMessage(LiveMessage msg)
method loadData (line 144) | void loadData()
method getPlayQualites (line 171) | void getPlayQualites()
method getPlayUrl (line 203) | void getPlayUrl()
method changePlayLine (line 223) | void changePlayLine(int index)
method setPlayer (line 230) | void setPlayer()
method mediaEnd (line 246) | void mediaEnd()
method mediaError (line 272) | void mediaError(String error)
method addHistory (line 296) | void addHistory()
method followUser (line 318) | void followUser()
method removeFollowUser (line 339) | void removeFollowUser()
method resetRoom (line 354) | void resetRoom(Site site, String roomId)
method nextChannel (line 377) | void nextChannel()
method prevChannel (line 400) | void prevChannel()
method didChangeAppLifecycleState (line 424) | void didChangeAppLifecycleState(AppLifecycleState state)
method onClose (line 441) | void onClose()
FILE: simple_live_tv_app/lib/modules/live_room/live_room_page.dart
class LiveRoomPage (line 14) | class LiveRoomPage extends GetView<LiveRoomController> {
method build (line 18) | Widget build(BuildContext context)
method onKeyEvent (line 51) | void onKeyEvent(KeyEvent key)
method buildMediaPlayer (line 113) | Widget buildMediaPlayer()
FILE: simple_live_tv_app/lib/modules/live_room/player/player_controller.dart
function initializePlayer (line 30) | Future<void> initializePlayer()
function hideControls (line 97) | void hideControls()
function setLockState (line 102) | void setLockState()
function showControls (line 112) | void showControls()
function resetHideControlsTimer (line 119) | void resetHideControlsTimer()
function updateScaleMode (line 130) | void updateScaleMode()
function initDanmakuController (line 160) | void initDanmakuController(DanmakuController e)
function updateDanmuOption (line 173) | void updateDanmuOption(DanmakuOption? option)
function disposeDanmakuController (line 178) | void disposeDanmakuController()
function addDanmaku (line 182) | void addDanmaku(List<DanmakuContentItem> items)
function initSystem (line 195) | void initSystem()
function resetSystem (line 204) | Future resetSystem()
function beforeIOS16 (line 209) | Future<bool> beforeIOS16()
class PlayerController (line 221) | class PlayerController extends BaseController
method onInit (line 224) | void onInit()
method initStream (line 239) | void initStream()
method disposeStream (line 273) | void disposeStream()
method mediaEnd (line 281) | void mediaEnd()
method mediaError (line 283) | void mediaError(String error)
method onClose (line 286) | void onClose()
FILE: simple_live_tv_app/lib/modules/live_room/player/player_controls.dart
function playerControls (line 18) | Widget playerControls(VideoState videoState, LiveRoomController controller)
function buildControls (line 22) | Widget buildControls(VideoState videoState, LiveRoomController controller)
function buildDanmuView (line 216) | Widget buildDanmuView(VideoState videoState, LiveRoomController controller)
function showPlayerSettings (line 324) | void showPlayerSettings(LiveRoomController controller)
function showFollowUser (line 597) | void showFollowUser(LiveRoomController controller)
FILE: simple_live_tv_app/lib/modules/search/anchor/search_anchor_controller.dart
class SearchAnchorController (line 9) | class SearchAnchorController extends BasePageController<LiveAnchorItemEx...
method onInit (line 16) | void onInit()
method scrollListener (line 22) | void scrollListener()
method setSite (line 29) | void setSite(String id)
method getData (line 36) | Future<List<LiveAnchorItemExt>> getData(int page, int pageSize)
method onClose (line 50) | void onClose()
class LiveAnchorItemExt (line 56) | class LiveAnchorItemExt extends LiveAnchorItem {
FILE: simple_live_tv_app/lib/modules/search/anchor/search_anchor_page.dart
class SearchAnchorPage (line 16) | class SearchAnchorPage extends GetView<SearchAnchorController> {
method build (line 20) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/search/room/search_room_controller.dart
class SearchRoomController (line 8) | class SearchRoomController extends BasePageController<LiveRoomItemExt> {
method onInit (line 15) | void onInit()
method scrollListener (line 21) | void scrollListener()
method setSite (line 28) | void setSite(String id)
method getData (line 35) | Future<List<LiveRoomItemExt>> getData(int page, int pageSize)
method onClose (line 50) | void onClose()
FILE: simple_live_tv_app/lib/modules/search/room/search_room_page.dart
class SearchRoomPage (line 16) | class SearchRoomPage extends GetView<SearchRoomController> {
method build (line 20) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/modules/settings/settings_controller.dart
class SettingsController (line 9) | class SettingsController extends BaseController
method bilibiliTap (line 56) | void bilibiliTap()
FILE: simple_live_tv_app/lib/modules/settings/settings_page.dart
class SettingsPage (line 17) | class SettingsPage extends GetView<SettingsController> {
method build (line 21) | Widget build(BuildContext context)
method buildPlayerSettings (line 134) | Widget buildPlayerSettings()
method buildFollowSettings (line 212) | Widget buildFollowSettings()
method buildDanmakuSettings (line 286) | Widget buildDanmakuSettings()
method buildAccountSettings (line 415) | Widget buildAccountSettings()
method buildAbout (line 481) | Widget buildAbout()
FILE: simple_live_tv_app/lib/modules/sync/sync_controller.dart
class SyncController (line 17) | class SyncController extends BaseController {
method onInit (line 35) | void onInit()
method connect (line 40) | void connect()
method createRoom (line 48) | void createRoom()
method _startTimer (line 64) | void _startTimer()
method listenSignalR (line 76) | void listenSignalR()
method onReceiveFavorite (line 103) | void onReceiveFavorite(bool overlay, String data)
method onReceiveHistory (line 122) | void onReceiveHistory(bool overlay, String data)
method onReceiveShieldWord (line 147) | void onReceiveShieldWord(bool overlay, String data)
method onReceiveBiliAccount (line 163) | void onReceiveBiliAccount(bool overlay, String data)
method onClose (line 177) | void onClose()
FILE: simple_live_tv_app/lib/modules/sync/sync_page.dart
class SyncPage (line 13) | class SyncPage extends GetView<SyncController> {
method build (line 17) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/requests/common_request.dart
class CommonRequest (line 7) | class CommonRequest {
method checkUpdate (line 8) | Future<VersionModel> checkUpdate()
method checkUpdateGitMirror (line 17) | Future<VersionModel> checkUpdateGitMirror()
method checkUpdateJsDelivr (line 31) | Future<VersionModel> checkUpdateJsDelivr()
FILE: simple_live_tv_app/lib/requests/custom_log_interceptor.dart
class CustomLogInterceptor (line 4) | class CustomLogInterceptor extends Interceptor {
method onRequest (line 6) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
method onError (line 13) | void onError(DioException err, ErrorInterceptorHandler handler)
method onResponse (line 31) | void onResponse(Response response, ResponseInterceptorHandler handler)
FILE: simple_live_tv_app/lib/requests/http_client.dart
class HttpClient (line 5) | class HttpClient {
method getText (line 29) | Future<String> getText(
method getJson (line 62) | Future<dynamic> getJson(
method get (line 95) | Future<Response<dynamic>> get(
method postJson (line 129) | Future<dynamic> postJson(
method head (line 168) | Future<Response> head(
FILE: simple_live_tv_app/lib/requests/http_error.dart
class HttpError (line 1) | class HttpError extends Error {
method toString (line 13) | String toString()
method statusCodeToString (line 21) | String statusCodeToString(int statusCode)
FILE: simple_live_tv_app/lib/routes/app_navigation.dart
class AppNavigator (line 13) | class AppNavigator {
method toLiveRoomDetail (line 15) | void toLiveRoomDetail(
method toBiliBiliLogin (line 33) | Future toBiliBiliLogin()
method toCategoryDetail (line 38) | void toCategoryDetail(
FILE: simple_live_tv_app/lib/routes/app_pages.dart
class AppPages (line 31) | class AppPages {
FILE: simple_live_tv_app/lib/routes/route_path.dart
class RoutePath (line 2) | class RoutePath {
FILE: simple_live_tv_app/lib/services/bilibili_account_service.dart
class BiliBiliAccountService (line 10) | class BiliBiliAccountService extends GetxService {
method onInit (line 21) | void onInit()
method loadUserInfo (line 29) | Future loadUserInfo()
method setSite (line 54) | void setSite()
method setCookie (line 60) | void setCookie(String cookie)
method logout (line 67) | void logout()
FILE: simple_live_tv_app/lib/services/db_service.dart
class DBService (line 7) | class DBService extends GetxService {
method init (line 12) | Future init()
method getFollowExist (line 17) | bool getFollowExist(String id)
method getFollowList (line 21) | List<FollowUser> getFollowList()
method addFollow (line 25) | Future addFollow(FollowUser follow)
method deleteFollow (line 29) | Future deleteFollow(String id)
method getHistory (line 33) | History? getHistory(String id)
method addOrUpdateHistory (line 40) | Future addOrUpdateHistory(History history)
method getHistores (line 44) | List<History> getHistores()
FILE: simple_live_tv_app/lib/services/follow_user_service.dart
class FollowUserService (line 13) | class FollowUserService extends BasePageController<FollowUser> {
method onInit (line 21) | void onInit()
method initTimer (line 34) | void initTimer()
method getData (line 55) | Future<List<FollowUser>> getData(int page, int pageSize)
method sortList (line 71) | void sortList()
method updateLivingList (line 76) | void updateLivingList()
method startUpdateStatus (line 80) | void startUpdateStatus(List<FollowUser> followList)
method updateLiveStatus (line 108) | Future updateLiveStatus(FollowUser item)
method removeItem (line 126) | void removeItem(FollowUser item, {bool refresh = true})
method onClose (line 142) | void onClose()
FILE: simple_live_tv_app/lib/services/local_storage_service.dart
class LocalStorageService (line 5) | class LocalStorageService extends GetxService {
method init (line 129) | Future init()
method getValue (line 138) | T getValue<T>(dynamic key, T defaultValue)
method setValue (line 149) | Future setValue<T>(dynamic key, T value)
method removeValue (line 154) | Future removeValue<T>(dynamic key)
FILE: simple_live_tv_app/lib/services/signalr_service.dart
type SignalRConnectionState (line 6) | enum SignalRConnectionState {
class SignalRService (line 12) | class SignalRService {
method connect (line 52) | Future<void> connect()
method _listen (line 69) | void _listen()
method disconnect (line 91) | Future<void> disconnect()
method createRoom (line 97) | Future<Resp<String>> createRoom()
method joinRoom (line 109) | Future<Resp> joinRoom(String roomId)
method sendContent (line 121) | Future<Resp> sendContent({
method dispose (line 135) | void dispose()
class Resp (line 148) | class Resp<T> {
class RoomUser (line 170) | class RoomUser {
FILE: simple_live_tv_app/lib/services/sync_service.dart
class SyncService (line 23) | class SyncService extends GetxService {
method onInit (line 39) | void onInit()
method listenUDP (line 49) | void listenUDP()
method sendInfo (line 75) | void sendInfo()
method getLocalIP (line 100) | Future<String> getLocalIP()
method getDeviceName (line 121) | Future<String> getDeviceName()
method initServer (line 143) | void initServer()
method _helloRequest (line 175) | shelf.Response _helloRequest(shelf.Request request)
method _infoRequest (line 185) | Future<shelf.Response> _infoRequest(shelf.Request request)
method _syncFollowUserReuqest (line 198) | Future<shelf.Response> _syncFollowUserReuqest(shelf.Request request)
method _syncHistoryReuqest (line 229) | Future<shelf.Response> _syncHistoryReuqest(shelf.Request request)
method _syncBlockedWordReuqest (line 266) | Future<shelf.Response> _syncBlockedWordReuqest(shelf.Request request)
method _syncBiliAccountReuqest (line 293) | Future<shelf.Response> _syncBiliAccountReuqest(shelf.Request request)
method toJsonResponse (line 314) | shelf.Response toJsonResponse(Map<String, dynamic> data)
method onClose (line 325) | void onClose()
FILE: simple_live_tv_app/lib/widgets/app_scaffold.dart
class AppScaffold (line 3) | class AppScaffold extends StatelessWidget {
method build (line 8) | Widget build(BuildContext context)
FILE: simple_live_tv_app/lib/widgets/button/highlight_button.dart
class HighlightButton (line 8) | class HighlightButton extends StatelessWidget {
method build (line 27) | Widget build(BuildContext context)
method buildIcon (line 64) | Widget buildIcon()
FILE: simple_live_tv_app/lib/widgets/button/highlight_list_tile.dart
clas
Condensed preview — 436 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,839K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug.yml",
"chars": 2089,
"preview": "name: BUG报告\ntitle: \"[BUG] 请填写简短易读的标题\"\ndescription: \"使用过程中遇到了BUG\"\nassignees: xiaoyaocz\nlabels:\n - \"bug\"\nbody:\n - type: "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 28,
"preview": "blank_issues_enabled: false\n"
},
{
"path": ".github/ISSUE_TEMPLATE/feature.yml",
"chars": 1067,
"preview": "name: 功能请求\r\ntitle: \"[Feature] 请填写简短易读的标题\"\r\ndescription: \"请求开发新的功能/优化某项功能\"\r\nassignees: xiaoyaocz\r\nlabels:\r\n - \"enhanceme"
},
{
"path": ".github/workflows/publish_app_dev.yaml",
"chars": 6175,
"preview": "name: app-build-action-dev\n\non:\n workflow_dispatch:\n push:\n tags:\n - \"dev_v*\"\n\njobs:\n # 打包Android、iOS、Mac\n b"
},
{
"path": ".github/workflows/publish_app_release.yml",
"chars": 8522,
"preview": "name: app-build-action\n#推送Tag时触发\non:\n push:\n tags:\n - \"v*\"\njobs:\n build-mac-ios-android:\n runs-on: macos-la"
},
{
"path": ".github/workflows/publish_tv_app_dev.yaml",
"chars": 2428,
"preview": "name: app-build-action\n#推送Tag时触发\non:\n push:\n tags:\n - \"dev_tv_v*\"\njobs:\n build-tv:\n runs-"
},
{
"path": ".github/workflows/publish_tv_app_release.yaml",
"chars": 3100,
"preview": "name: app-build-action\n#推送Tag时触发\non:\n push:\n tags:\n - \"tv_*\"\njobs:\n build-tv:\n runs-on: macos-latest\n pe"
},
{
"path": ".gitignore",
"chars": 126,
"preview": "simple_live_app/.vscode/settings.json\nsimple_live_tv_app/.vscode/settings.json\n\n# macOS Spotlight Search index file\n*.DS"
},
{
"path": ".vscode/settings.json",
"chars": 45,
"preview": "{\n \"cmake.ignoreCMakeListsMissing\": true\n}"
},
{
"path": "LICENSE",
"chars": 35143,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 1962,
"preview": "> ### ⚠ 本项目不提供Release安装包,请自行编译后运行测试。\n\n\n<p align=\"center\">\n <img width=\"128\" src=\"/assets/logo.png\" alt=\"Simple Live l"
},
{
"path": "assets/app_version.json",
"chars": 177,
"preview": "{\n \"version\": \"1.11.1\",\n \"version_num\": 11101,\n \"version_desc\": \"- 版本更新\",\n \"prerelease\": false,\n \"download_url\": \"h"
},
{
"path": "assets/play_config.json",
"chars": 125,
"preview": "{\n \"huya\": {\n \"user_agent\": \"HYSDK(Windows, 30000002)_APP(pc_exe&6080100&official)_SDK(trans&2.23.0.4969)\"\n "
},
{
"path": "assets/tv_app_version.json",
"chars": 215,
"preview": "{\n \"version\": \"1.3.5\",\n \"version_num\": 10305,\n \"version_desc\": \"- 修复虎牙播放中断 #723 @SlotSun\\n- 修复哔哩哔哩加载失败\",\n \"p"
},
{
"path": "simple_live_app/.fvmrc",
"chars": 25,
"preview": "{\n \"flutter\": \"3.38.3\"\n}"
},
{
"path": "simple_live_app/.gitignore",
"chars": 776,
"preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.build/\n.buildlog/\n.history\n.svn/\n.swiftpm/\nmigrate_working_d"
},
{
"path": "simple_live_app/.metadata",
"chars": 966,
"preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
},
{
"path": "simple_live_app/README.md",
"chars": 111,
"preview": "# simple_live_app\n\n基于核心库实现的Flutter APP客户端。\n\n## TODO\n\n- [ ] 支持桌面平台\n- [ ] iOS播放问题\n- [ ] 全屏、非全屏弹幕样式分离\n- [ ] 重写直播间 "
},
{
"path": "simple_live_app/analysis_options.yaml",
"chars": 1453,
"preview": "# This file configures the analyzer, which statically analyzes Dart code to\n# check for errors, warnings, and lints.\n#\n#"
},
{
"path": "simple_live_app/android/.gitignore",
"chars": 253,
"preview": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n.cxx/\n\n# R"
},
{
"path": "simple_live_app/android/app/build.gradle.kts",
"chars": 2319,
"preview": "import java.util.Properties\nimport java.io.FileInputStream\n\nplugins {\n id(\"com.android.application\")\n id(\"kotlin-a"
},
{
"path": "simple_live_app/android/app/proguard-rules.pro",
"chars": 344,
"preview": "#Flutter Wrapper\n-keep class io.flutter.app.** { *; }\n-keep class io.flutter.plugin.** { *; }\n-keep class io.flutter.ut"
},
{
"path": "simple_live_app/android/app/src/debug/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "simple_live_app/android/app/src/main/AndroidManifest.xml",
"chars": 2753,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.xycz.simple_live\">\n <uses-permission"
},
{
"path": "simple_live_app/android/app/src/main/kotlin/com/xycz/simple_live/MainActivity.kt",
"chars": 121,
"preview": "package com.xycz.simple_live\n\nimport io.flutter.embedding.android.FlutterActivity\n\nclass MainActivity: FlutterActivity()"
},
{
"path": "simple_live_app/android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "simple_live_app/android/app/src/main/res/drawable-v21/launch_background.xml",
"chars": 438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "simple_live_app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
"chars": 335,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "simple_live_app/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
"chars": 335,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <b"
},
{
"path": "simple_live_app/android/app/src/main/res/values/ic_launcher_background.xml",
"chars": 120,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">#FFFFFF</color>\n</resources>"
},
{
"path": "simple_live_app/android/app/src/main/res/values/styles.xml",
"chars": 1075,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "simple_live_app/android/app/src/main/res/values-night/styles.xml",
"chars": 1074,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "simple_live_app/android/app/src/main/res/xml/network_security_config.xml",
"chars": 145,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<network-security-config>\n <base-config cleartextTrafficPermitted=\"true\" />\n</"
},
{
"path": "simple_live_app/android/app/src/profile/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "simple_live_app/android/build/reports/problems/problems-report.html",
"chars": 139498,
"preview": "<!DOCTYPE html>\n\n<html lang=\"en\">\n<head>\n <!-- Required meta tags -->\n <meta charset=\"utf-8\">\n <meta name=\"view"
},
{
"path": "simple_live_app/android/build.gradle.kts",
"chars": 537,
"preview": "allprojects {\n repositories {\n google()\n mavenCentral()\n }\n}\n\nval newBuildDir: Directory =\n rootP"
},
{
"path": "simple_live_app/android/gradle/wrapper/gradle-wrapper.properties",
"chars": 201,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "simple_live_app/android/gradle.properties",
"chars": 166,
"preview": "org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError\nandroid"
},
{
"path": "simple_live_app/android/settings.gradle.kts",
"chars": 770,
"preview": "pluginManagement {\n val flutterSdkPath =\n run {\n val properties = java.util.Properties()\n "
},
{
"path": "simple_live_app/assets/lotties/empty.json",
"chars": 9011,
"preview": "{\"v\":\"4.7.0\",\"fr\":25,\"ip\":0,\"op\":50,\"w\":120,\"h\":120,\"nm\":\"Comp 1\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,"
},
{
"path": "simple_live_app/assets/lotties/error.json",
"chars": 31327,
"preview": "{\"v\":\"5.8.1\",\"fr\":29.9700012207031,\"ip\":0,\"op\":301.000012259981,\"w\":1080,\"h\":900,\"nm\":\"Composition 1\",\"ddd\":0,\"assets\":["
},
{
"path": "simple_live_app/assets/lotties/loadding.json",
"chars": 82689,
"preview": "{\n \"v\": \"5.5.8\",\n \"fr\": 50,\n \"ip\": 0,\n \"op\": 147,\n \"w\": 800,\n \"h\": 600,\n \"nm\": \"Paperplane\",\n \"d"
},
{
"path": "simple_live_app/assets/statement.txt",
"chars": 628,
"preview": "在使用本软件之前,请您仔细阅读以下内容,并确保您充分理解并同意以下条款:\n1、本软件为开源软件,您可以免费获取并使用该软件。\n2、本软件完全基于您个人意愿使用,您应该对自己的使用行为和所有结果承担全部责任。\n3、本软件仅供学习交流、科研等非"
},
{
"path": "simple_live_app/distribute_options.yaml",
"chars": 19,
"preview": "output: build/dist/"
},
{
"path": "simple_live_app/ios/.gitignore",
"chars": 569,
"preview": "**/dgph\n*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/De"
},
{
"path": "simple_live_app/ios/Flutter/AppFrameworkInfo.plist",
"chars": 774,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/ios/Flutter/Debug.xcconfig",
"chars": 107,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "simple_live_app/ios/Flutter/Release.xcconfig",
"chars": 109,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "simple_live_app/ios/Podfile",
"chars": 2735,
"preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '13.0'\n\n# CocoaPods analytics sends ne"
},
{
"path": "simple_live_app/ios/Runner/AppDelegate.swift",
"chars": 540,
"preview": "import UIKit\nimport Flutter\n\n@main\n@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {\n overri"
},
{
"path": "simple_live_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2940,
"preview": "{\n \"images\": [\n {\n \"size\": \"20x20\",\n \"idiom\": \"iphone\",\n \"filename\": \"icon-20"
},
{
"path": "simple_live_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "simple_live_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "simple_live_app/ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "simple_live_app/ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "simple_live_app/ios/Runner/Info.plist",
"chars": 2654,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/ios/Runner/Runner-Bridging-Header.h",
"chars": 38,
"preview": "#import \"GeneratedPluginRegistrant.h\"\n"
},
{
"path": "simple_live_app/ios/Runner.xcodeproj/project.pbxproj",
"chars": 23289,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "simple_live_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:\">\n </FileRef"
},
{
"path": "simple_live_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
"chars": 3221,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1510\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "simple_live_app/ios/Runner.xcworkspace/contents.xcworkspacedata",
"chars": 224,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:Runner.xcodepr"
},
{
"path": "simple_live_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "simple_live_app/lib/app/app_style.dart",
"chars": 6901,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:get/g"
},
{
"path": "simple_live_app/lib/app/constant.dart",
"chars": 1065,
"preview": "import 'package:flutter/material.dart';\nimport 'package:remixicon/remixicon.dart';\n\nclass Constant {\n static const Stri"
},
{
"path": "simple_live_app/lib/app/controller/app_settings_controller.dart",
"chars": 16234,
"preview": "import 'dart:io';\n\nimport 'package:simple_live_app/app/constant.dart';\nimport 'package:simple_live_app/app/log.dart';\nim"
},
{
"path": "simple_live_app/lib/app/controller/base_controller.dart",
"chars": 2785,
"preview": "import 'dart:async';\n\nimport 'package:flutter/widgets.dart';\n\nimport 'package:simple_live_app/app/log.dart';\n\nimport 'pa"
},
{
"path": "simple_live_app/lib/app/custom_throttle.dart",
"chars": 707,
"preview": "/// 这个类的目的是简化 throttle 的操作,以便更好的理解代码\n/// 主要作用:节流,如果在很短时间内都会调用同一个方法,除了第一个方法有用以外\n/// 剩下的方法将会被舍弃,在 [eachDelayMilli] 时间后,才会允"
},
{
"path": "simple_live_app/lib/app/event_bus.dart",
"chars": 858,
"preview": "import 'dart:async';\n\nimport 'package:simple_live_app/app/log.dart';\n\n/// 全局事件\nclass EventBus {\n /// 点击了底部导航\n static c"
},
{
"path": "simple_live_app/lib/app/log.dart",
"chars": 4592,
"preview": "import 'dart:io';\n\nimport 'package:device_info_plus/device_info_plus.dart';\nimport 'package:flutter/foundation.dart';\nim"
},
{
"path": "simple_live_app/lib/app/sites.dart",
"chars": 1234,
"preview": "import 'package:simple_live_app/app/constant.dart';\nimport 'package:simple_live_app/app/controller/app_settings_controll"
},
{
"path": "simple_live_app/lib/app/utils/archive.dart",
"chars": 908,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'package:archive/archive_io.dart';\nimport 'package:path/path.dart';\n\next"
},
{
"path": "simple_live_app/lib/app/utils/document.dart",
"chars": 1284,
"preview": "import 'dart:io';\n\nimport 'package:simple_live_app/app/log.dart';\n\n// 扩展 Directory 类,添加清空文件夹的功能并验证是否为文件夹\nextension Direc"
},
{
"path": "simple_live_app/lib/app/utils/listen_fourth_button.dart",
"chars": 976,
"preview": "import 'package:flutter/gestures.dart';\n\n/// 鼠标侧键点击手势识别器\n/// - https://github.com/flutter/flutter/issues/115641\n/// - ht"
},
{
"path": "simple_live_app/lib/app/utils.dart",
"chars": 13862,
"preview": "import 'dart:io';\n\nimport 'package:device_info_plus/device_info_plus.dart';\nimport 'package:flutter/services.dart';\nimpo"
},
{
"path": "simple_live_app/lib/main.dart",
"chars": 11004,
"preview": "import 'dart:async';\nimport 'dart:io';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart'"
},
{
"path": "simple_live_app/lib/models/account/bilibili_user_info_page.dart",
"chars": 1224,
"preview": "import 'dart:convert';\n\nT? asT<T>(dynamic value) {\n if (value is T) {\n return value;\n }\n return null;\n}\n\nclass Bil"
},
{
"path": "simple_live_app/lib/models/db/follow_user.dart",
"chars": 1236,
"preview": "import 'package:get/get.dart';\nimport 'package:hive/hive.dart';\n\npart 'follow_user.g.dart';\n\n@HiveType(typeId: 1)\nclass "
},
{
"path": "simple_live_app/lib/models/db/follow_user.g.dart",
"chars": 1513,
"preview": "// GENERATED CODE - DO NOT MODIFY BY HAND\n\npart of 'follow_user.dart';\n\n// *********************************************"
},
{
"path": "simple_live_app/lib/models/db/follow_user_tag.dart",
"chars": 871,
"preview": "import 'package:hive/hive.dart';\n\npart 'follow_user_tag.g.dart';\n\n@HiveType(typeId: 3)\nclass FollowUserTag {\n @HiveFiel"
},
{
"path": "simple_live_app/lib/models/db/follow_user_tag.g.dart",
"chars": 1231,
"preview": "// GENERATED CODE - DO NOT MODIFY BY HAND\n\npart of 'follow_user_tag.dart';\n\n// *****************************************"
},
{
"path": "simple_live_app/lib/models/db/history.dart",
"chars": 997,
"preview": "import 'package:hive/hive.dart';\n\npart 'history.g.dart';\n\n@HiveType(typeId: 2)\nclass History {\n History({\n required "
},
{
"path": "simple_live_app/lib/models/db/history.g.dart",
"chars": 1423,
"preview": "// GENERATED CODE - DO NOT MODIFY BY HAND\n\npart of 'history.dart';\n\n// *************************************************"
},
{
"path": "simple_live_app/lib/models/follow_user_item.dart",
"chars": 1,
"preview": "\n"
},
{
"path": "simple_live_app/lib/models/sync_client_info_model.dart",
"chars": 954,
"preview": "import 'dart:convert';\n\nT? asT<T>(dynamic value) {\n if (value is T) {\n return value;\n }\n return null;\n}\n\nclass Syn"
},
{
"path": "simple_live_app/lib/models/version_model.dart",
"chars": 926,
"preview": "import 'dart:convert';\n\nT? asT<T>(dynamic value) {\n if (value is T) {\n return value;\n }\n return null;\n}\n\nclass Ver"
},
{
"path": "simple_live_app/lib/modules/category/category_controller.dart",
"chars": 1345,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_liv"
},
{
"path": "simple_live_app/lib/modules/category/category_list_controller.dart",
"chars": 1029,
"preview": "import 'package:get/get.dart';\nimport 'package:simple_live_app/app/controller/base_controller.dart';\nimport 'package:sim"
},
{
"path": "simple_live_app/lib/modules/category/category_list_view.dart",
"chars": 4141,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_easyrefresh/easy_refresh.dart';\n\nimport 'package:get/get"
},
{
"path": "simple_live_app/lib/modules/category/category_page.dart",
"chars": 1602,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/category/detail/category_detail_controller.dart",
"chars": 590,
"preview": "import 'package:simple_live_app/app/controller/base_controller.dart';\nimport 'package:simple_live_app/app/sites.dart';\ni"
},
{
"path": "simple_live_app/lib/modules/category/detail/category_detail_page.dart",
"chars": 1216,
"preview": "import 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.da"
},
{
"path": "simple_live_app/lib/modules/follow_user/follow_user_controller.dart",
"chars": 5926,
"preview": "// ignore_for_file: invalid_use_of_protected_member\n\nimport 'dart:async';\nimport 'package:flutter_smart_dialog/flutter_s"
},
{
"path": "simple_live_app/lib/modules/follow_user/follow_user_page.dart",
"chars": 13543,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/modules/home/home_controller.dart",
"chars": 1441,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_liv"
},
{
"path": "simple_live_app/lib/modules/home/home_list_controller.dart",
"chars": 479,
"preview": "import 'package:simple_live_app/app/controller/base_controller.dart';\nimport 'package:simple_live_app/app/sites.dart';\ni"
},
{
"path": "simple_live_app/lib/modules/home/home_list_view.dart",
"chars": 1141,
"preview": "import 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.da"
},
{
"path": "simple_live_app/lib/modules/home/home_page.dart",
"chars": 1687,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/indexed/indexed_controller.dart",
"chars": 2258,
"preview": "import 'package:flutter/widgets.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/constant.dart"
},
{
"path": "simple_live_app/lib/modules/indexed/indexed_page.dart",
"chars": 2786,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/live_room/live_room_controller.dart",
"chars": 29892,
"preview": "import 'dart:async';\nimport 'dart:io';\n\nimport 'package:connectivity_plus/connectivity_plus.dart';\nimport 'package:flutt"
},
{
"path": "simple_live_app/lib/modules/live_room/live_room_page.dart",
"chars": 29897,
"preview": "import 'dart:io';\n\nimport 'package:floating/floating.dart';\nimport 'package:flutter/material.dart';\nimport 'package:get/"
},
{
"path": "simple_live_app/lib/modules/live_room/player/player_controller.dart",
"chars": 23198,
"preview": "import 'dart:async';\nimport 'dart:io';\nimport 'package:auto_orientation_v2/auto_orientation_v2.dart';\nimport 'package:de"
},
{
"path": "simple_live_app/lib/modules/live_room/player/player_controls.dart",
"chars": 33214,
"preview": "import 'dart:io';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:get/ge"
},
{
"path": "simple_live_app/lib/modules/mine/account/account_controller.dart",
"chars": 5475,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dar"
},
{
"path": "simple_live_app/lib/modules/mine/account/account_page.dart",
"chars": 2774,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/mine/account/bilibili/qr_login_controller.dart",
"chars": 2716,
"preview": "import 'dart:async';\n\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dart';\nimport 'package:get/get.dart';\nim"
},
{
"path": "simple_live_app/lib/modules/mine/account/bilibili/qr_login_page.dart",
"chars": 2832,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:qr_flutter/qr_flutter.dart';\nimpo"
},
{
"path": "simple_live_app/lib/modules/mine/account/bilibili/web_login_controller.dart",
"chars": 1540,
"preview": "import 'package:flutter_inappwebview/flutter_inappwebview.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_l"
},
{
"path": "simple_live_app/lib/modules/mine/account/bilibili/web_login_page.dart",
"chars": 1600,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_inappwebview/flutter_inappwebview.dart';\nimport 'package"
},
{
"path": "simple_live_app/lib/modules/mine/history/history_controller.dart",
"chars": 824,
"preview": "import 'package:simple_live_app/app/controller/base_controller.dart';\nimport 'package:simple_live_app/app/utils.dart';\ni"
},
{
"path": "simple_live_app/lib/modules/mine/history/history_page.dart",
"chars": 3521,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/mine/mine_page.dart",
"chars": 9429,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart'"
},
{
"path": "simple_live_app/lib/modules/mine/parse/parse_controller.dart",
"chars": 5502,
"preview": "import 'package:dio/dio.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'p"
},
{
"path": "simple_live_app/lib/modules/mine/parse/parse_page.dart",
"chars": 4648,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/modules/other/debug_log_page.dart",
"chars": 1861,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:path_provider/"
},
{
"path": "simple_live_app/lib/modules/search/douyin/douyin_search_controller.dart",
"chars": 2116,
"preview": "import 'dart:io';\n\nimport 'package:flutter_inappwebview/flutter_inappwebview.dart';\nimport 'package:get/get.dart';\nimpor"
},
{
"path": "simple_live_app/lib/modules/search/douyin/douyin_search_view.dart",
"chars": 3478,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_inappwebview/flutter_inappwebview.dar"
},
{
"path": "simple_live_app/lib/modules/search/search_controller.dart",
"chars": 2434,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_liv"
},
{
"path": "simple_live_app/lib/modules/search/search_list_controller.dart",
"chars": 920,
"preview": "import 'package:get/get.dart';\nimport 'package:simple_live_app/app/controller/base_controller.dart';\nimport 'package:sim"
},
{
"path": "simple_live_app/lib/modules/search/search_list_view.dart",
"chars": 3447,
"preview": "import 'package:flutter/material.dart';\n\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.da"
},
{
"path": "simple_live_app/lib/modules/search/search_page.dart",
"chars": 3460,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/appstyle_setting_page.dart",
"chars": 5720,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/auto_exit_settings_page.dart",
"chars": 2742,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/danmu_settings_page.dart",
"chars": 7589,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:canvas_danmaku/canvas_danmaku.dar"
},
{
"path": "simple_live_app/lib/modules/settings/danmu_shield/danmu_shield_controller.dart",
"chars": 826,
"preview": "import 'package:flutter/widgets.dart';\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dart';\nimport 'package:"
},
{
"path": "simple_live_app/lib/modules/settings/danmu_shield/danmu_shield_page.dart",
"chars": 2624,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/follow_settings_page.dart",
"chars": 6159,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/indexed_settings/indexed_settings_controller.dart",
"chars": 1059,
"preview": "import 'package:get/get.dart';\nimport 'package:simple_live_app/app/controller/app_settings_controller.dart';\n\nclass Inde"
},
{
"path": "simple_live_app/lib/modules/settings/indexed_settings/indexed_settings_page.dart",
"chars": 2911,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/modules/settings/other/other_settings_controller.dart",
"chars": 7244,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'package:flutter/foundation.dart';\nimport 'package:file_picker/file_pick"
},
{
"path": "simple_live_app/lib/modules/settings/other/other_settings_page.dart",
"chars": 7945,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remi"
},
{
"path": "simple_live_app/lib/modules/settings/play_settings_page.dart",
"chars": 8361,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_ap"
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/device/sync_device_controller.dart",
"chars": 3304,
"preview": "import 'dart:convert';\n\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dart';\nimport 'package:simple_live_app"
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/device/sync_device_page.dart",
"chars": 3095,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/local_sync_controller.dart",
"chars": 4441,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\n\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.da"
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/local_sync_page.dart",
"chars": 4201,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remi"
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/scan_qr/sync_scan_qr_controller.dart",
"chars": 2215,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_smart_dialog/flutter_smart_dialog."
},
{
"path": "simple_live_app/lib/modules/sync/local_sync/scan_qr/sync_scan_qr_page.dart",
"chars": 2797,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:qr_code_scanner_plus/qr_code_scan"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/room/remote_sync_room_controller.dart",
"chars": 10399,
"preview": "import 'dart:async';\nimport 'dart:convert';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_smart_dialo"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/room/remote_sync_room_page.dart",
"chars": 10601,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_config_page.dart",
"chars": 6070,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:flutter_smart_dialog/flu"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_controller.dart",
"chars": 12493,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:isolate';\nimport 'dart:typed_data';\n\nimport 'package:archive/archi"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/webdav/remote_sync_webdav_page.dart",
"chars": 5316,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/modules/sync/remote_sync/webdav/webdav_client.dart",
"chars": 1154,
"preview": "import 'dart:async';\nimport 'dart:typed_data';\n\nimport 'package:webdav_client/webdav_client.dart';\n\nclass DAVClient {\n "
},
{
"path": "simple_live_app/lib/modules/sync/sync_page.dart",
"chars": 4499,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dart';\nimport 'package"
},
{
"path": "simple_live_app/lib/requests/custom_log_interceptor.dart",
"chars": 2741,
"preview": "import 'package:dio/dio.dart';\nimport 'package:flutter/foundation.dart';\nimport 'package:simple_live_app/app/log.dart';\n"
},
{
"path": "simple_live_app/lib/requests/http_client.dart",
"chars": 4926,
"preview": "import 'package:dio/dio.dart';\nimport 'package:simple_live_app/requests/custom_log_interceptor.dart';\nimport 'package:si"
},
{
"path": "simple_live_app/lib/requests/http_error.dart",
"chars": 780,
"preview": "class HttpError extends Error {\n /// 错误码\n final int statusCode;\n\n /// 错误信息\n final String message;\n\n HttpError(\n "
},
{
"path": "simple_live_app/lib/requests/sync_client_request.dart",
"chars": 2599,
"preview": "import 'package:simple_live_app/models/sync_client_info_model.dart';\nimport 'package:simple_live_app/requests/http_clien"
},
{
"path": "simple_live_app/lib/routes/app_navigation.dart",
"chars": 2407,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter_smart_dialog/flutter_smart_dialog.dar"
},
{
"path": "simple_live_app/lib/routes/app_pages.dart",
"chars": 8577,
"preview": "// ignore_for_file: prefer_inlined_adds\n\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/modules/category"
},
{
"path": "simple_live_app/lib/routes/route_path.dart",
"chars": 1749,
"preview": "/// 路由路径\nclass RoutePath {\n /// 首页\n static const kIndex = \"/index\";\n\n /// 搜索\n static const kSearch = \"/search\";\n\n /"
},
{
"path": "simple_live_app/lib/services/bilibili_account_service.dart",
"chars": 2357,
"preview": "import 'dart:io';\n\nimport 'package:flutter_inappwebview/flutter_inappwebview.dart';\nimport 'package:flutter_smart_dialog"
},
{
"path": "simple_live_app/lib/services/db_service.dart",
"chars": 2767,
"preview": "import 'package:get/get.dart';\nimport 'package:hive/hive.dart';\nimport 'package:simple_live_app/models/db/follow_user.da"
},
{
"path": "simple_live_app/lib/services/douyin_account_service.dart",
"chars": 1178,
"preview": "import 'package:get/get.dart';\nimport 'package:simple_live_app/app/constant.dart';\nimport 'package:simple_live_app/app/s"
},
{
"path": "simple_live_app/lib/services/follow_service.dart",
"chars": 11923,
"preview": "import 'dart:async';\nimport 'dart:collection';\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'package:file_picker/fil"
},
{
"path": "simple_live_app/lib/services/local_storage_service.dart",
"chars": 5019,
"preview": "import 'package:get/get.dart';\nimport 'package:hive/hive.dart';\nimport 'package:simple_live_app/app/log.dart';\n\nclass Lo"
},
{
"path": "simple_live_app/lib/services/signalr_service.dart",
"chars": 6333,
"preview": "import 'dart:async';\nimport 'dart:io';\n\nimport 'package:signalr_netcore/signalr_client.dart';\nimport 'package:simple_liv"
},
{
"path": "simple_live_app/lib/services/sync_service.dart",
"chars": 11800,
"preview": "import 'dart:convert';\nimport 'dart:io';\n\nimport 'package:device_info_plus/device_info_plus.dart';\nimport 'package:flutt"
},
{
"path": "simple_live_app/lib/widgets/desktop_refresh_button.dart",
"chars": 1075,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\n\nclass DesktopRefreshButton"
},
{
"path": "simple_live_app/lib/widgets/filter_button.dart",
"chars": 1090,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\n\nclass FilterButton extends"
},
{
"path": "simple_live_app/lib/widgets/follow_user_item.dart",
"chars": 5174,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:remixicon/remixicon.dart';\nimport"
},
{
"path": "simple_live_app/lib/widgets/keep_alive_wrapper.dart",
"chars": 531,
"preview": "import 'package:flutter/material.dart';\n\nclass KeepAliveWrapper extends StatefulWidget {\n final Widget child;\n\n const "
},
{
"path": "simple_live_app/lib/widgets/live_room_card.dart",
"chars": 3298,
"preview": "import 'package:flutter/material.dart';\nimport 'package:remixicon/remixicon.dart';\nimport 'package:simple_live_app/app/a"
},
{
"path": "simple_live_app/lib/widgets/net_image.dart",
"chars": 1502,
"preview": "import 'package:extended_image/extended_image.dart';\nimport 'package:flutter/material.dart';\n\nclass NetImage extends Sta"
},
{
"path": "simple_live_app/lib/widgets/none_border_circular_textfield.dart",
"chars": 2384,
"preview": "import 'package:flutter/material.dart';\n\nclass NoneBorderCircularTextField extends StatelessWidget {\n final TextEditing"
},
{
"path": "simple_live_app/lib/widgets/page_grid_view.dart",
"chars": 4441,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/controller/base_controlle"
},
{
"path": "simple_live_app/lib/widgets/page_list_view.dart",
"chars": 4300,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/controller/base_controlle"
},
{
"path": "simple_live_app/lib/widgets/rectangular_indicator.dart",
"chars": 3912,
"preview": "import 'package:flutter/material.dart';\n\n/// 来自 https://github.com/adar2378/tab_indicator_styler\n\nclass RectangularIndic"
},
{
"path": "simple_live_app/lib/widgets/settings/settings_action.dart",
"chars": 1521,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/widgets/settings/settings_card.dart",
"chars": 757,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\n\nclass SettingsCard extends"
},
{
"path": "simple_live_app/lib/widgets/settings/settings_menu.dart",
"chars": 2441,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/widgets/settings/settings_number.dart",
"chars": 4518,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/widgets/settings/settings_switch.dart",
"chars": 1151,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\n\nclass SettingsSwitch exten"
},
{
"path": "simple_live_app/lib/widgets/shadow_card.dart",
"chars": 1169,
"preview": "import 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport 'package:simple_live_app/app/app_style.dar"
},
{
"path": "simple_live_app/lib/widgets/status/app_empty_widget.dart",
"chars": 1029,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\nimport 'package:lottie/lott"
},
{
"path": "simple_live_app/lib/widgets/status/app_error_widget.dart",
"chars": 1061,
"preview": "import 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\nimport 'package:lottie/lott"
},
{
"path": "simple_live_app/lib/widgets/status/app_loadding_widget.dart",
"chars": 869,
"preview": "import 'package:flutter/cupertino.dart';\nimport 'package:flutter/material.dart';\nimport 'package:get/get.dart';\nimport '"
},
{
"path": "simple_live_app/lib/widgets/superchat_card.dart",
"chars": 3619,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:simple_live_app/app/app_style.dart';\nimpor"
},
{
"path": "simple_live_app/linux/.gitignore",
"chars": 18,
"preview": "flutter/ephemeral\n"
},
{
"path": "simple_live_app/linux/CMakeLists.txt",
"chars": 4766,
"preview": "# Project-level configuration.\ncmake_minimum_required(VERSION 3.13)\nproject(runner LANGUAGES CXX)\n\n# The name of the exe"
},
{
"path": "simple_live_app/linux/flutter/CMakeLists.txt",
"chars": 2815,
"preview": "# This file controls Flutter-level build steps. It should not be edited.\ncmake_minimum_required(VERSION 3.10)\n\nset(EPHEM"
},
{
"path": "simple_live_app/linux/flutter/generated_plugin_registrant.cc",
"chars": 2134,
"preview": "//\n// Generated file. Do not edit.\n//\n\n// clang-format off\n\n#include \"generated_plugin_registrant.h\"\n\n#include <dynamic"
},
{
"path": "simple_live_app/linux/flutter/generated_plugin_registrant.h",
"chars": 303,
"preview": "//\n// Generated file. Do not edit.\n//\n\n// clang-format off\n\n#ifndef GENERATED_PLUGIN_REGISTRANT_\n#define GENERATED_PLUG"
},
{
"path": "simple_live_app/linux/flutter/generated_plugins.cmake",
"chars": 879,
"preview": "#\n# Generated file, do not edit.\n#\n\nlist(APPEND FLUTTER_PLUGIN_LIST\n dynamic_color\n media_kit_libs_linux\n media_kit_v"
},
{
"path": "simple_live_app/linux/packaging/deb/make_config.yaml",
"chars": 303,
"preview": "display_name: Simple-Live\npackage_name: simple-live\nmaintainer:\n name: xiaoyaocz\n email: xiaoyaocz@52uwp.com\npriority:"
},
{
"path": "simple_live_app/linux/runner/CMakeLists.txt",
"chars": 974,
"preview": "cmake_minimum_required(VERSION 3.13)\nproject(runner LANGUAGES CXX)\n\n# Define the application target. To change its name,"
},
{
"path": "simple_live_app/linux/runner/main.cc",
"chars": 180,
"preview": "#include \"my_application.h\"\n\nint main(int argc, char** argv) {\n g_autoptr(MyApplication) app = my_application_new();\n "
},
{
"path": "simple_live_app/linux/runner/my_application.cc",
"chars": 5469,
"preview": "#include \"my_application.h\"\n\n#include <flutter_linux/flutter_linux.h>\n#ifdef GDK_WINDOWING_X11\n#include <gdk/gdkx.h>\n#en"
},
{
"path": "simple_live_app/linux/runner/my_application.h",
"chars": 451,
"preview": "#ifndef FLUTTER_MY_APPLICATION_H_\n#define FLUTTER_MY_APPLICATION_H_\n\n#include <gtk/gtk.h>\n\nG_DECLARE_FINAL_TYPE(MyApplic"
},
{
"path": "simple_live_app/macos/.gitignore",
"chars": 89,
"preview": "# Flutter-related\n**/Flutter/ephemeral/\n**/Pods/\n\n# Xcode-related\n**/dgph\n**/xcuserdata/\n"
},
{
"path": "simple_live_app/macos/Flutter/Flutter-Debug.xcconfig",
"chars": 125,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n#include \"ephemeral/Flutter-Generated.xccon"
},
{
"path": "simple_live_app/macos/Flutter/Flutter-Release.xcconfig",
"chars": 127,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n#include \"ephemeral/Flutter-Generated.xcc"
},
{
"path": "simple_live_app/macos/Flutter/GeneratedPluginRegistrant.swift",
"chars": 2223,
"preview": "//\n// Generated file. Do not edit.\n//\n\nimport FlutterMacOS\nimport Foundation\n\nimport connectivity_plus\nimport device_in"
},
{
"path": "simple_live_app/macos/Podfile",
"chars": 1389,
"preview": "platform :osx, '10.14'\n\n# CocoaPods analytics sends network stats synchronously affecting flutter build latency.\nENV['CO"
},
{
"path": "simple_live_app/macos/Runner/AppDelegate.swift",
"chars": 214,
"preview": "import Cocoa\nimport FlutterMacOS\n\n@NSApplicationMain\nclass AppDelegate: FlutterAppDelegate {\n override func application"
},
{
"path": "simple_live_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 1569,
"preview": "{\n \"images\": [\n {\n \"size\": \"16x16\",\n \"idiom\": \"mac\",\n \"filename\": \"icon-16.pn"
}
]
// ... and 236 more files (download for full content)
About this extraction
This page contains the full source code of the xiaoyaocz/dart_simple_live GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 436 files (2.6 MB), approximately 699.9k tokens, and a symbol index with 2735 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.