From b064232176e32d64370c015d5ffbf9e268dbbdaa Mon Sep 17 00:00:00 2001 From: akanealw Date: Thu, 23 Apr 2026 06:49:19 +0000 Subject: [PATCH] removed invidious --- invidious/.ameba.yml | 88 - invidious/.editorconfig | 7 - invidious/.gitignore | 10 - invidious/CHANGELOG.md | 844 ------- invidious/LICENSE | 661 ------ invidious/Makefile | 119 - invidious/README.md | 170 -- invidious/TRANSLATION | 1 - invidious/assets/.well-known/dnt-policy.txt | 218 -- invidious/assets/android-chrome-192x192.png | Bin 3427 -> 0 bytes invidious/assets/android-chrome-512x512.png | Bin 17142 -> 0 bytes invidious/assets/apple-touch-icon.png | Bin 3096 -> 0 bytes invidious/assets/browserconfig.xml | 9 - invidious/assets/css/carousel.css | 119 - invidious/assets/css/default.css | 801 ------- invidious/assets/css/embed.css | 27 - invidious/assets/css/empty.css | 16 - invidious/assets/css/grids-responsive-min.css | 7 - invidious/assets/css/ionicons.min.css | 11 - invidious/assets/css/player.css | 264 --- invidious/assets/css/pure-min.css | 11 - invidious/assets/css/quality-selector.css | 1 - invidious/assets/css/search.css | 121 - .../css/videojs-youtube-annotations.min.css | 1 - invidious/assets/favicon-16x16.png | Bin 589 -> 0 bytes invidious/assets/favicon-32x32.png | Bin 1316 -> 0 bytes invidious/assets/favicon.ico | Bin 15086 -> 0 bytes invidious/assets/fonts/ionicons.eot | Bin 112650 -> 0 bytes invidious/assets/fonts/ionicons.svg | 2090 ----------------- invidious/assets/fonts/ionicons.ttf | Bin 112472 -> 0 bytes invidious/assets/fonts/ionicons.woff | Bin 65908 -> 0 bytes invidious/assets/fonts/ionicons.woff2 | Bin 50556 -> 0 bytes invidious/assets/hashtag.svg | 9 - invidious/assets/invidious-colored-vector.svg | 2 - invidious/assets/js/_helpers.js | 254 -- invidious/assets/js/comments.js | 174 -- invidious/assets/js/community.js | 82 - invidious/assets/js/embed.js | 64 - invidious/assets/js/handlers.js | 149 -- invidious/assets/js/notifications.js | 131 -- invidious/assets/js/player.js | 784 ------- invidious/assets/js/playlist_widget.js | 48 - invidious/assets/js/post.js | 3 - ...silvermine-videojs-quality-selector.min.js | 4 - invidious/assets/js/sse.js | 200 -- invidious/assets/js/subscribe_widget.js | 44 - invidious/assets/js/themes.js | 46 - .../js/videojs-youtube-annotations.min.js | 1 - invidious/assets/js/watch.js | 193 -- invidious/assets/js/watched_indicator.js | 24 - invidious/assets/js/watched_widget.js | 34 - invidious/assets/mstile-150x150.png | Bin 6368 -> 0 bytes invidious/assets/robots.txt | 2 - invidious/assets/safari-pinned-tab.svg | 35 - invidious/assets/site.webmanifest | 21 - invidious/assets/videojs/.gitignore | 4 - invidious/config/config.example.yml | 901 ------- .../migrate-scripts/migrate-db-17cf077.sh | 7 - .../migrate-scripts/migrate-db-1c8075c.sh | 10 - .../migrate-scripts/migrate-db-1eca969.sh | 22 - .../migrate-scripts/migrate-db-30e6d29.sh | 7 - .../migrate-scripts/migrate-db-3646395.sh | 8 - .../migrate-scripts/migrate-db-3bcb98e.sh | 6 - .../migrate-scripts/migrate-db-52cb239.sh | 6 - .../migrate-scripts/migrate-db-6e51189.sh | 7 - .../migrate-scripts/migrate-db-701b5ea.sh | 6 - .../migrate-scripts/migrate-db-88b7097.sh | 6 - .../migrate-scripts/migrate-db-8e884fe.sh | 8 - invidious/config/sql/annotations.sql | 12 - invidious/config/sql/channel_videos.sql | 30 - invidious/config/sql/channels.sql | 25 - invidious/config/sql/nonces.sql | 22 - invidious/config/sql/playlist_videos.sql | 19 - invidious/config/sql/playlists.sql | 29 - invidious/config/sql/session_ids.sql | 23 - invidious/config/sql/users.sql | 29 - invidious/config/sql/videos.sql | 23 - invidious/docker-compose.yml | 73 - invidious/docker/Dockerfile | 52 - invidious/docker/Dockerfile.arm64 | 52 - invidious/docker/init-invidious-db.sh | 12 - invidious/invidious.service | 19 - invidious/kubernetes/.gitignore | 1 - invidious/kubernetes/Chart.lock | 6 - invidious/kubernetes/Chart.yaml | 22 - invidious/kubernetes/README.md | 41 - invidious/kubernetes/templates/_helpers.tpl | 16 - invidious/kubernetes/templates/configmap.yaml | 11 - .../kubernetes/templates/deployment.yaml | 61 - invidious/kubernetes/templates/hpa.yaml | 18 - invidious/kubernetes/templates/service.yaml | 20 - invidious/kubernetes/values.yaml | 61 - invidious/locales/af.json | 15 - invidious/locales/ar.json | 560 ----- invidious/locales/az.json | 1 - invidious/locales/be.json | 1 - invidious/locales/bg.json | 491 ---- invidious/locales/bn.json | 94 - invidious/locales/bn_BD.json | 58 - invidious/locales/ca.json | 491 ---- invidious/locales/cs.json | 509 ---- invidious/locales/da.json | 491 ---- invidious/locales/de.json | 491 ---- invidious/locales/el.json | 490 ---- invidious/locales/en-US.json | 500 ---- invidious/locales/eo.json | 490 ---- invidious/locales/es.json | 509 ---- invidious/locales/et.json | 332 --- invidious/locales/eu.json | 269 --- invidious/locales/fa.json | 488 ---- invidious/locales/fi.json | 468 ---- invidious/locales/fr.json | 508 ---- invidious/locales/he.json | 301 --- invidious/locales/hi.json | 491 ---- invidious/locales/hr.json | 508 ---- invidious/locales/hu-HU.json | 468 ---- invidious/locales/ia.json | 41 - invidious/locales/id.json | 474 ---- invidious/locales/is.json | 315 --- invidious/locales/it.json | 508 ---- invidious/locales/ja.json | 474 ---- invidious/locales/ko.json | 474 ---- invidious/locales/lt.json | 485 ---- invidious/locales/nb-NO.json | 491 ---- invidious/locales/nl.json | 491 ---- invidious/locales/or.json | 29 - invidious/locales/pl.json | 509 ---- invidious/locales/pt-BR.json | 509 ---- invidious/locales/pt-PT.json | 475 ---- invidious/locales/pt.json | 509 ---- invidious/locales/ro.json | 482 ---- invidious/locales/ru.json | 508 ---- invidious/locales/si.json | 127 - invidious/locales/sk.json | 121 - invidious/locales/sl.json | 525 ----- invidious/locales/sq.json | 488 ---- invidious/locales/sr.json | 508 ---- invidious/locales/sr_Cyrl.json | 509 ---- invidious/locales/sv-SE.json | 492 ---- invidious/locales/tr.json | 492 ---- invidious/locales/uk.json | 509 ---- invidious/locales/vi.json | 474 ---- invidious/locales/zh-CN.json | 475 ---- invidious/locales/zh-TW.json | 475 ---- invidious/screenshots/01_player.png | Bin 1441685 -> 0 bytes invidious/screenshots/02_preferences.png | Bin 90542 -> 0 bytes invidious/screenshots/03_subscriptions.png | Bin 72941 -> 0 bytes invidious/screenshots/04_description.png | Bin 614264 -> 0 bytes invidious/screenshots/05_preferences.png | Bin 91202 -> 0 bytes invidious/screenshots/06_subscriptions.png | Bin 74336 -> 0 bytes invidious/screenshots/native_notification.png | Bin 22500 -> 0 bytes invidious/scripts/deploy-database.sh | 60 - .../scripts/fetch-player-dependencies.cr | 164 -- invidious/scripts/git/pre-commit | 17 - invidious/scripts/install-dependencies.sh | 174 -- invidious/shard.lock | 50 - invidious/shard.yml | 42 - invidious/spec/helpers/vtt/builder_spec.cr | 87 - invidious/spec/i18next_plurals_spec.cr | 231 -- invidious/spec/invidious/hashtag_spec.cr | 109 - invidious/spec/invidious/helpers_spec.cr | 56 - .../spec/invidious/search/iv_filters_spec.cr | 371 --- invidious/spec/invidious/search/query_spec.cr | 242 -- .../spec/invidious/search/yt_filters_spec.cr | 143 -- invidious/spec/invidious/user/imports_spec.cr | 51 - invidious/spec/invidious/utils_spec.cr | 46 - .../videos/regular_videos_extract_spec.cr | 166 -- .../videos/scheduled_live_extract_spec.cr | 111 - invidious/spec/parsers_helper.cr | 35 - invidious/spec/spec_helper.cr | 18 - invidious/src/ext/kemal_content_for.cr | 16 - .../src/ext/kemal_static_file_handler.cr | 195 -- invidious/src/invidious.cr | 238 -- invidious/src/invidious/channels/about.cr | 173 -- invidious/src/invidious/channels/channels.cr | 304 --- invidious/src/invidious/channels/community.cr | 332 --- invidious/src/invidious/channels/playlists.cr | 46 - invidious/src/invidious/channels/videos.cr | 170 -- invidious/src/invidious/comments/content.cr | 89 - .../src/invidious/comments/links_util.cr | 76 - invidious/src/invidious/comments/reddit.cr | 41 - .../src/invidious/comments/reddit_types.cr | 57 - invidious/src/invidious/comments/youtube.cr | 299 --- invidious/src/invidious/config.cr | 233 -- .../src/invidious/database/annotations.cr | 24 - invidious/src/invidious/database/base.cr | 136 -- invidious/src/invidious/database/channels.cr | 158 -- invidious/src/invidious/database/migration.cr | 38 - .../migrations/0001_create_channels_table.cr | 30 - .../migrations/0002_create_videos_table.cr | 28 - .../0003_create_channel_videos_table.cr | 35 - .../migrations/0004_create_users_table.cr | 34 - .../0005_create_session_ids_table.cr | 28 - .../migrations/0006_create_nonces_table.cr | 27 - .../0007_create_annotations_table.cr | 20 - .../migrations/0008_create_playlists_table.cr | 50 - .../0009_create_playlist_videos_table.cr | 27 - .../migrations/0010_make_videos_unlogged.cr | 11 - invidious/src/invidious/database/migrator.cr | 49 - invidious/src/invidious/database/nonces.cr | 55 - invidious/src/invidious/database/playlists.cr | 261 -- invidious/src/invidious/database/sessions.cr | 74 - .../src/invidious/database/statistics.cr | 49 - invidious/src/invidious/database/users.cr | 228 -- invidious/src/invidious/database/videos.cr | 52 - invidious/src/invidious/exceptions.cr | 40 - .../src/invidious/frontend/channel_page.cr | 46 - .../src/invidious/frontend/comments_reddit.cr | 50 - .../invidious/frontend/comments_youtube.cr | 208 -- invidious/src/invidious/frontend/misc.cr | 14 - .../src/invidious/frontend/pagination.cr | 97 - .../src/invidious/frontend/search_filters.cr | 135 -- .../src/invidious/frontend/watch_page.cr | 107 - invidious/src/invidious/hashtag.cr | 42 - .../helpers/crystal_class_overrides.cr | 70 - invidious/src/invidious/helpers/errors.cr | 200 -- invidious/src/invidious/helpers/handlers.cr | 159 -- invidious/src/invidious/helpers/helpers.cr | 200 -- invidious/src/invidious/helpers/i18n.cr | 183 -- invidious/src/invidious/helpers/i18next.cr | 567 ----- invidious/src/invidious/helpers/logger.cr | 69 - invidious/src/invidious/helpers/macros.cr | 73 - .../invidious/helpers/serialized_yt_data.cr | 298 --- invidious/src/invidious/helpers/signatures.cr | 73 - invidious/src/invidious/helpers/tokens.cr | 145 -- invidious/src/invidious/helpers/utils.cr | 447 ---- invidious/src/invidious/helpers/webvtt.cr | 81 - invidious/src/invidious/http_server/utils.cr | 40 - invidious/src/invidious/jobs.cr | 40 - invidious/src/invidious/jobs/base_job.cr | 33 - .../invidious/jobs/clear_expired_items_job.cr | 27 - .../src/invidious/jobs/notification_job.cr | 24 - .../invidious/jobs/pull_popular_videos_job.cr | 20 - .../invidious/jobs/refresh_channels_job.cr | 66 - .../src/invidious/jobs/refresh_feeds_job.cr | 75 - .../invidious/jobs/statistics_refresh_job.cr | 70 - .../invidious/jobs/subscribe_to_feeds_job.cr | 50 - .../jobs/update_decrypt_function_job.cr | 14 - .../src/invidious/jsonify/api_v1/common.cr | 18 - .../invidious/jsonify/api_v1/video_json.cr | 274 --- invidious/src/invidious/mixes.cr | 119 - invidious/src/invidious/playlists.cr | 534 ----- invidious/src/invidious/routes/account.cr | 354 --- .../src/invidious/routes/api/manifest.cr | 235 -- .../invidious/routes/api/v1/authenticated.cr | 490 ---- .../src/invidious/routes/api/v1/channels.cr | 468 ---- .../src/invidious/routes/api/v1/feeds.cr | 45 - invidious/src/invidious/routes/api/v1/misc.cr | 201 -- .../src/invidious/routes/api/v1/search.cr | 89 - .../src/invidious/routes/api/v1/videos.cr | 409 ---- invidious/src/invidious/routes/before_all.cr | 126 - invidious/src/invidious/routes/channels.cr | 384 --- invidious/src/invidious/routes/embed.cr | 206 -- invidious/src/invidious/routes/errors.cr | 52 - invidious/src/invidious/routes/feeds.cr | 464 ---- invidious/src/invidious/routes/images.cr | 209 -- invidious/src/invidious/routes/login.cr | 214 -- invidious/src/invidious/routes/misc.cr | 46 - .../src/invidious/routes/notifications.cr | 34 - invidious/src/invidious/routes/playlists.cr | 494 ---- invidious/src/invidious/routes/preferences.cr | 350 --- invidious/src/invidious/routes/search.cr | 113 - .../src/invidious/routes/subscriptions.cr | 130 - .../src/invidious/routes/video_playback.cr | 303 --- invidious/src/invidious/routes/watch.cr | 335 --- invidious/src/invidious/routing.cr | 320 --- invidious/src/invidious/search/ctoken.cr | 32 - invidious/src/invidious/search/filters.cr | 376 --- invidious/src/invidious/search/processors.cr | 56 - invidious/src/invidious/search/query.cr | 140 -- invidious/src/invidious/trending.cr | 40 - invidious/src/invidious/user/captcha.cr | 78 - invidious/src/invidious/user/converters.cr | 12 - invidious/src/invidious/user/cookies.cr | 39 - invidious/src/invidious/user/exports.cr | 35 - invidious/src/invidious/user/imports.cr | 337 --- invidious/src/invidious/user/preferences.cr | 274 --- invidious/src/invidious/user/user.cr | 27 - invidious/src/invidious/users.cr | 106 - invidious/src/invidious/videos.cr | 453 ---- invidious/src/invidious/videos/caption.cr | 223 -- invidious/src/invidious/videos/clip.cr | 22 - invidious/src/invidious/videos/description.cr | 64 - invidious/src/invidious/videos/formats.cr | 116 - invidious/src/invidious/videos/music.cr | 13 - invidious/src/invidious/videos/parser.cr | 428 ---- invidious/src/invidious/videos/regions.cr | 27 - invidious/src/invidious/videos/transcript.cr | 77 - .../src/invidious/videos/video_preferences.cr | 156 -- .../invidious/views/add_playlist_items.ecr | 35 - invidious/src/invidious/views/channel.ecr | 54 - invidious/src/invidious/views/community.ecr | 46 - .../views/components/channel_info.ecr | 61 - .../invidious/views/components/feed_menu.ecr | 11 - .../src/invidious/views/components/item.ecr | 205 -- .../views/components/items_paginated.ecr | 11 - .../src/invidious/views/components/player.ecr | 80 - .../views/components/player_sources.ecr | 31 - .../invidious/views/components/search_box.ecr | 9 - .../views/components/subscribe_widget.ecr | 36 - .../components/video-context-buttons.ecr | 21 - .../src/invidious/views/create_playlist.ecr | 39 - .../src/invidious/views/delete_playlist.ecr | 24 - .../src/invidious/views/edit_playlist.ecr | 60 - invidious/src/invidious/views/embed.ecr | 37 - invidious/src/invidious/views/error.ecr | 8 - .../src/invidious/views/feeds/history.ecr | 59 - .../src/invidious/views/feeds/playlists.ecr | 43 - .../src/invidious/views/feeds/popular.ecr | 20 - .../invidious/views/feeds/subscriptions.ecr | 74 - .../src/invidious/views/feeds/trending.ecr | 49 - invidious/src/invidious/views/hashtag.ecr | 8 - invidious/src/invidious/views/licenses.ecr | 307 --- invidious/src/invidious/views/message.ecr | 12 - invidious/src/invidious/views/mix.ecr | 20 - invidious/src/invidious/views/playlist.ecr | 125 - invidious/src/invidious/views/post.ecr | 48 - invidious/src/invidious/views/privacy.ecr | 53 - invidious/src/invidious/views/search.ecr | 21 - .../src/invidious/views/search_homepage.ecr | 20 - invidious/src/invidious/views/template.ecr | 177 -- .../invidious/views/user/authorize_token.ecr | 78 - .../invidious/views/user/change_password.ecr | 32 - .../views/user/clear_watch_history.ecr | 24 - .../src/invidious/views/user/data_control.ecr | 68 - .../invidious/views/user/delete_account.ecr | 24 - invidious/src/invidious/views/user/login.ecr | 77 - .../src/invidious/views/user/preferences.ecr | 358 --- .../views/user/subscription_manager.ecr | 52 - .../invidious/views/user/token_manager.ecr | 44 - invidious/src/invidious/views/watch.ecr | 374 --- .../invidious/yt_backend/connection_pool.cr | 95 - .../src/invidious/yt_backend/extractors.cr | 901 ------- .../invidious/yt_backend/extractors_utils.cr | 87 - invidious/src/invidious/yt_backend/proxy.cr | 316 --- .../src/invidious/yt_backend/youtube_api.cr | 679 ------ invidious/videojs-dependencies.yml | 54 - 337 files changed, 55401 deletions(-) delete mode 100755 invidious/.ameba.yml delete mode 100755 invidious/.editorconfig delete mode 100755 invidious/.gitignore delete mode 100755 invidious/CHANGELOG.md delete mode 100755 invidious/LICENSE delete mode 100755 invidious/Makefile delete mode 100755 invidious/README.md delete mode 100755 invidious/TRANSLATION delete mode 100755 invidious/assets/.well-known/dnt-policy.txt delete mode 100755 invidious/assets/android-chrome-192x192.png delete mode 100755 invidious/assets/android-chrome-512x512.png delete mode 100755 invidious/assets/apple-touch-icon.png delete mode 100755 invidious/assets/browserconfig.xml delete mode 100755 invidious/assets/css/carousel.css delete mode 100755 invidious/assets/css/default.css delete mode 100755 invidious/assets/css/embed.css delete mode 100755 invidious/assets/css/empty.css delete mode 100755 invidious/assets/css/grids-responsive-min.css delete mode 100755 invidious/assets/css/ionicons.min.css delete mode 100755 invidious/assets/css/player.css delete mode 100755 invidious/assets/css/pure-min.css delete mode 100755 invidious/assets/css/quality-selector.css delete mode 100755 invidious/assets/css/search.css delete mode 100755 invidious/assets/css/videojs-youtube-annotations.min.css delete mode 100755 invidious/assets/favicon-16x16.png delete mode 100755 invidious/assets/favicon-32x32.png delete mode 100755 invidious/assets/favicon.ico delete mode 100755 invidious/assets/fonts/ionicons.eot delete mode 100755 invidious/assets/fonts/ionicons.svg delete mode 100755 invidious/assets/fonts/ionicons.ttf delete mode 100755 invidious/assets/fonts/ionicons.woff delete mode 100755 invidious/assets/fonts/ionicons.woff2 delete mode 100755 invidious/assets/hashtag.svg delete mode 100755 invidious/assets/invidious-colored-vector.svg delete mode 100755 invidious/assets/js/_helpers.js delete mode 100755 invidious/assets/js/comments.js delete mode 100755 invidious/assets/js/community.js delete mode 100755 invidious/assets/js/embed.js delete mode 100755 invidious/assets/js/handlers.js delete mode 100755 invidious/assets/js/notifications.js delete mode 100755 invidious/assets/js/player.js delete mode 100755 invidious/assets/js/playlist_widget.js delete mode 100755 invidious/assets/js/post.js delete mode 100755 invidious/assets/js/silvermine-videojs-quality-selector.min.js delete mode 100755 invidious/assets/js/sse.js delete mode 100755 invidious/assets/js/subscribe_widget.js delete mode 100755 invidious/assets/js/themes.js delete mode 100755 invidious/assets/js/videojs-youtube-annotations.min.js delete mode 100755 invidious/assets/js/watch.js delete mode 100755 invidious/assets/js/watched_indicator.js delete mode 100755 invidious/assets/js/watched_widget.js delete mode 100755 invidious/assets/mstile-150x150.png delete mode 100755 invidious/assets/robots.txt delete mode 100755 invidious/assets/safari-pinned-tab.svg delete mode 100755 invidious/assets/site.webmanifest delete mode 100755 invidious/assets/videojs/.gitignore delete mode 100755 invidious/config/config.example.yml delete mode 100755 invidious/config/migrate-scripts/migrate-db-17cf077.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-1c8075c.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-1eca969.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-30e6d29.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-3646395.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-3bcb98e.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-52cb239.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-6e51189.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-701b5ea.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-88b7097.sh delete mode 100755 invidious/config/migrate-scripts/migrate-db-8e884fe.sh delete mode 100755 invidious/config/sql/annotations.sql delete mode 100755 invidious/config/sql/channel_videos.sql delete mode 100755 invidious/config/sql/channels.sql delete mode 100755 invidious/config/sql/nonces.sql delete mode 100755 invidious/config/sql/playlist_videos.sql delete mode 100755 invidious/config/sql/playlists.sql delete mode 100755 invidious/config/sql/session_ids.sql delete mode 100755 invidious/config/sql/users.sql delete mode 100755 invidious/config/sql/videos.sql delete mode 100755 invidious/docker-compose.yml delete mode 100755 invidious/docker/Dockerfile delete mode 100755 invidious/docker/Dockerfile.arm64 delete mode 100755 invidious/docker/init-invidious-db.sh delete mode 100755 invidious/invidious.service delete mode 100755 invidious/kubernetes/.gitignore delete mode 100755 invidious/kubernetes/Chart.lock delete mode 100755 invidious/kubernetes/Chart.yaml delete mode 100755 invidious/kubernetes/README.md delete mode 100755 invidious/kubernetes/templates/_helpers.tpl delete mode 100755 invidious/kubernetes/templates/configmap.yaml delete mode 100755 invidious/kubernetes/templates/deployment.yaml delete mode 100755 invidious/kubernetes/templates/hpa.yaml delete mode 100755 invidious/kubernetes/templates/service.yaml delete mode 100755 invidious/kubernetes/values.yaml delete mode 100755 invidious/locales/af.json delete mode 100755 invidious/locales/ar.json delete mode 100755 invidious/locales/az.json delete mode 100755 invidious/locales/be.json delete mode 100755 invidious/locales/bg.json delete mode 100755 invidious/locales/bn.json delete mode 100755 invidious/locales/bn_BD.json delete mode 100755 invidious/locales/ca.json delete mode 100755 invidious/locales/cs.json delete mode 100755 invidious/locales/da.json delete mode 100755 invidious/locales/de.json delete mode 100755 invidious/locales/el.json delete mode 100755 invidious/locales/en-US.json delete mode 100755 invidious/locales/eo.json delete mode 100755 invidious/locales/es.json delete mode 100755 invidious/locales/et.json delete mode 100755 invidious/locales/eu.json delete mode 100755 invidious/locales/fa.json delete mode 100755 invidious/locales/fi.json delete mode 100755 invidious/locales/fr.json delete mode 100755 invidious/locales/he.json delete mode 100755 invidious/locales/hi.json delete mode 100755 invidious/locales/hr.json delete mode 100755 invidious/locales/hu-HU.json delete mode 100755 invidious/locales/ia.json delete mode 100755 invidious/locales/id.json delete mode 100755 invidious/locales/is.json delete mode 100755 invidious/locales/it.json delete mode 100755 invidious/locales/ja.json delete mode 100755 invidious/locales/ko.json delete mode 100755 invidious/locales/lt.json delete mode 100755 invidious/locales/nb-NO.json delete mode 100755 invidious/locales/nl.json delete mode 100755 invidious/locales/or.json delete mode 100755 invidious/locales/pl.json delete mode 100755 invidious/locales/pt-BR.json delete mode 100755 invidious/locales/pt-PT.json delete mode 100755 invidious/locales/pt.json delete mode 100755 invidious/locales/ro.json delete mode 100755 invidious/locales/ru.json delete mode 100755 invidious/locales/si.json delete mode 100755 invidious/locales/sk.json delete mode 100755 invidious/locales/sl.json delete mode 100755 invidious/locales/sq.json delete mode 100755 invidious/locales/sr.json delete mode 100755 invidious/locales/sr_Cyrl.json delete mode 100755 invidious/locales/sv-SE.json delete mode 100755 invidious/locales/tr.json delete mode 100755 invidious/locales/uk.json delete mode 100755 invidious/locales/vi.json delete mode 100755 invidious/locales/zh-CN.json delete mode 100755 invidious/locales/zh-TW.json delete mode 100755 invidious/screenshots/01_player.png delete mode 100755 invidious/screenshots/02_preferences.png delete mode 100755 invidious/screenshots/03_subscriptions.png delete mode 100755 invidious/screenshots/04_description.png delete mode 100755 invidious/screenshots/05_preferences.png delete mode 100755 invidious/screenshots/06_subscriptions.png delete mode 100755 invidious/screenshots/native_notification.png delete mode 100755 invidious/scripts/deploy-database.sh delete mode 100755 invidious/scripts/fetch-player-dependencies.cr delete mode 100755 invidious/scripts/git/pre-commit delete mode 100755 invidious/scripts/install-dependencies.sh delete mode 100755 invidious/shard.lock delete mode 100755 invidious/shard.yml delete mode 100755 invidious/spec/helpers/vtt/builder_spec.cr delete mode 100755 invidious/spec/i18next_plurals_spec.cr delete mode 100755 invidious/spec/invidious/hashtag_spec.cr delete mode 100755 invidious/spec/invidious/helpers_spec.cr delete mode 100755 invidious/spec/invidious/search/iv_filters_spec.cr delete mode 100755 invidious/spec/invidious/search/query_spec.cr delete mode 100755 invidious/spec/invidious/search/yt_filters_spec.cr delete mode 100755 invidious/spec/invidious/user/imports_spec.cr delete mode 100755 invidious/spec/invidious/utils_spec.cr delete mode 100755 invidious/spec/invidious/videos/regular_videos_extract_spec.cr delete mode 100755 invidious/spec/invidious/videos/scheduled_live_extract_spec.cr delete mode 100755 invidious/spec/parsers_helper.cr delete mode 100755 invidious/spec/spec_helper.cr delete mode 100755 invidious/src/ext/kemal_content_for.cr delete mode 100755 invidious/src/ext/kemal_static_file_handler.cr delete mode 100755 invidious/src/invidious.cr delete mode 100755 invidious/src/invidious/channels/about.cr delete mode 100755 invidious/src/invidious/channels/channels.cr delete mode 100755 invidious/src/invidious/channels/community.cr delete mode 100755 invidious/src/invidious/channels/playlists.cr delete mode 100755 invidious/src/invidious/channels/videos.cr delete mode 100755 invidious/src/invidious/comments/content.cr delete mode 100755 invidious/src/invidious/comments/links_util.cr delete mode 100755 invidious/src/invidious/comments/reddit.cr delete mode 100755 invidious/src/invidious/comments/reddit_types.cr delete mode 100755 invidious/src/invidious/comments/youtube.cr delete mode 100755 invidious/src/invidious/config.cr delete mode 100755 invidious/src/invidious/database/annotations.cr delete mode 100755 invidious/src/invidious/database/base.cr delete mode 100755 invidious/src/invidious/database/channels.cr delete mode 100755 invidious/src/invidious/database/migration.cr delete mode 100755 invidious/src/invidious/database/migrations/0001_create_channels_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0002_create_videos_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0003_create_channel_videos_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0004_create_users_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0005_create_session_ids_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0006_create_nonces_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0007_create_annotations_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0008_create_playlists_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0009_create_playlist_videos_table.cr delete mode 100755 invidious/src/invidious/database/migrations/0010_make_videos_unlogged.cr delete mode 100755 invidious/src/invidious/database/migrator.cr delete mode 100755 invidious/src/invidious/database/nonces.cr delete mode 100755 invidious/src/invidious/database/playlists.cr delete mode 100755 invidious/src/invidious/database/sessions.cr delete mode 100755 invidious/src/invidious/database/statistics.cr delete mode 100755 invidious/src/invidious/database/users.cr delete mode 100755 invidious/src/invidious/database/videos.cr delete mode 100755 invidious/src/invidious/exceptions.cr delete mode 100755 invidious/src/invidious/frontend/channel_page.cr delete mode 100755 invidious/src/invidious/frontend/comments_reddit.cr delete mode 100755 invidious/src/invidious/frontend/comments_youtube.cr delete mode 100755 invidious/src/invidious/frontend/misc.cr delete mode 100755 invidious/src/invidious/frontend/pagination.cr delete mode 100755 invidious/src/invidious/frontend/search_filters.cr delete mode 100755 invidious/src/invidious/frontend/watch_page.cr delete mode 100755 invidious/src/invidious/hashtag.cr delete mode 100755 invidious/src/invidious/helpers/crystal_class_overrides.cr delete mode 100755 invidious/src/invidious/helpers/errors.cr delete mode 100755 invidious/src/invidious/helpers/handlers.cr delete mode 100755 invidious/src/invidious/helpers/helpers.cr delete mode 100755 invidious/src/invidious/helpers/i18n.cr delete mode 100755 invidious/src/invidious/helpers/i18next.cr delete mode 100755 invidious/src/invidious/helpers/logger.cr delete mode 100755 invidious/src/invidious/helpers/macros.cr delete mode 100755 invidious/src/invidious/helpers/serialized_yt_data.cr delete mode 100755 invidious/src/invidious/helpers/signatures.cr delete mode 100755 invidious/src/invidious/helpers/tokens.cr delete mode 100755 invidious/src/invidious/helpers/utils.cr delete mode 100755 invidious/src/invidious/helpers/webvtt.cr delete mode 100755 invidious/src/invidious/http_server/utils.cr delete mode 100755 invidious/src/invidious/jobs.cr delete mode 100755 invidious/src/invidious/jobs/base_job.cr delete mode 100755 invidious/src/invidious/jobs/clear_expired_items_job.cr delete mode 100755 invidious/src/invidious/jobs/notification_job.cr delete mode 100755 invidious/src/invidious/jobs/pull_popular_videos_job.cr delete mode 100755 invidious/src/invidious/jobs/refresh_channels_job.cr delete mode 100755 invidious/src/invidious/jobs/refresh_feeds_job.cr delete mode 100755 invidious/src/invidious/jobs/statistics_refresh_job.cr delete mode 100755 invidious/src/invidious/jobs/subscribe_to_feeds_job.cr delete mode 100755 invidious/src/invidious/jobs/update_decrypt_function_job.cr delete mode 100755 invidious/src/invidious/jsonify/api_v1/common.cr delete mode 100755 invidious/src/invidious/jsonify/api_v1/video_json.cr delete mode 100755 invidious/src/invidious/mixes.cr delete mode 100755 invidious/src/invidious/playlists.cr delete mode 100755 invidious/src/invidious/routes/account.cr delete mode 100755 invidious/src/invidious/routes/api/manifest.cr delete mode 100755 invidious/src/invidious/routes/api/v1/authenticated.cr delete mode 100755 invidious/src/invidious/routes/api/v1/channels.cr delete mode 100755 invidious/src/invidious/routes/api/v1/feeds.cr delete mode 100755 invidious/src/invidious/routes/api/v1/misc.cr delete mode 100755 invidious/src/invidious/routes/api/v1/search.cr delete mode 100755 invidious/src/invidious/routes/api/v1/videos.cr delete mode 100755 invidious/src/invidious/routes/before_all.cr delete mode 100755 invidious/src/invidious/routes/channels.cr delete mode 100755 invidious/src/invidious/routes/embed.cr delete mode 100755 invidious/src/invidious/routes/errors.cr delete mode 100755 invidious/src/invidious/routes/feeds.cr delete mode 100755 invidious/src/invidious/routes/images.cr delete mode 100755 invidious/src/invidious/routes/login.cr delete mode 100755 invidious/src/invidious/routes/misc.cr delete mode 100755 invidious/src/invidious/routes/notifications.cr delete mode 100755 invidious/src/invidious/routes/playlists.cr delete mode 100755 invidious/src/invidious/routes/preferences.cr delete mode 100755 invidious/src/invidious/routes/search.cr delete mode 100755 invidious/src/invidious/routes/subscriptions.cr delete mode 100755 invidious/src/invidious/routes/video_playback.cr delete mode 100755 invidious/src/invidious/routes/watch.cr delete mode 100755 invidious/src/invidious/routing.cr delete mode 100755 invidious/src/invidious/search/ctoken.cr delete mode 100755 invidious/src/invidious/search/filters.cr delete mode 100755 invidious/src/invidious/search/processors.cr delete mode 100755 invidious/src/invidious/search/query.cr delete mode 100755 invidious/src/invidious/trending.cr delete mode 100755 invidious/src/invidious/user/captcha.cr delete mode 100755 invidious/src/invidious/user/converters.cr delete mode 100755 invidious/src/invidious/user/cookies.cr delete mode 100755 invidious/src/invidious/user/exports.cr delete mode 100755 invidious/src/invidious/user/imports.cr delete mode 100755 invidious/src/invidious/user/preferences.cr delete mode 100755 invidious/src/invidious/user/user.cr delete mode 100755 invidious/src/invidious/users.cr delete mode 100755 invidious/src/invidious/videos.cr delete mode 100755 invidious/src/invidious/videos/caption.cr delete mode 100755 invidious/src/invidious/videos/clip.cr delete mode 100755 invidious/src/invidious/videos/description.cr delete mode 100755 invidious/src/invidious/videos/formats.cr delete mode 100755 invidious/src/invidious/videos/music.cr delete mode 100755 invidious/src/invidious/videos/parser.cr delete mode 100755 invidious/src/invidious/videos/regions.cr delete mode 100755 invidious/src/invidious/videos/transcript.cr delete mode 100755 invidious/src/invidious/videos/video_preferences.cr delete mode 100755 invidious/src/invidious/views/add_playlist_items.ecr delete mode 100755 invidious/src/invidious/views/channel.ecr delete mode 100755 invidious/src/invidious/views/community.ecr delete mode 100755 invidious/src/invidious/views/components/channel_info.ecr delete mode 100755 invidious/src/invidious/views/components/feed_menu.ecr delete mode 100755 invidious/src/invidious/views/components/item.ecr delete mode 100755 invidious/src/invidious/views/components/items_paginated.ecr delete mode 100755 invidious/src/invidious/views/components/player.ecr delete mode 100755 invidious/src/invidious/views/components/player_sources.ecr delete mode 100755 invidious/src/invidious/views/components/search_box.ecr delete mode 100755 invidious/src/invidious/views/components/subscribe_widget.ecr delete mode 100755 invidious/src/invidious/views/components/video-context-buttons.ecr delete mode 100755 invidious/src/invidious/views/create_playlist.ecr delete mode 100755 invidious/src/invidious/views/delete_playlist.ecr delete mode 100755 invidious/src/invidious/views/edit_playlist.ecr delete mode 100755 invidious/src/invidious/views/embed.ecr delete mode 100755 invidious/src/invidious/views/error.ecr delete mode 100755 invidious/src/invidious/views/feeds/history.ecr delete mode 100755 invidious/src/invidious/views/feeds/playlists.ecr delete mode 100755 invidious/src/invidious/views/feeds/popular.ecr delete mode 100755 invidious/src/invidious/views/feeds/subscriptions.ecr delete mode 100755 invidious/src/invidious/views/feeds/trending.ecr delete mode 100755 invidious/src/invidious/views/hashtag.ecr delete mode 100755 invidious/src/invidious/views/licenses.ecr delete mode 100755 invidious/src/invidious/views/message.ecr delete mode 100755 invidious/src/invidious/views/mix.ecr delete mode 100755 invidious/src/invidious/views/playlist.ecr delete mode 100755 invidious/src/invidious/views/post.ecr delete mode 100755 invidious/src/invidious/views/privacy.ecr delete mode 100755 invidious/src/invidious/views/search.ecr delete mode 100755 invidious/src/invidious/views/search_homepage.ecr delete mode 100755 invidious/src/invidious/views/template.ecr delete mode 100755 invidious/src/invidious/views/user/authorize_token.ecr delete mode 100755 invidious/src/invidious/views/user/change_password.ecr delete mode 100755 invidious/src/invidious/views/user/clear_watch_history.ecr delete mode 100755 invidious/src/invidious/views/user/data_control.ecr delete mode 100755 invidious/src/invidious/views/user/delete_account.ecr delete mode 100755 invidious/src/invidious/views/user/login.ecr delete mode 100755 invidious/src/invidious/views/user/preferences.ecr delete mode 100755 invidious/src/invidious/views/user/subscription_manager.ecr delete mode 100755 invidious/src/invidious/views/user/token_manager.ecr delete mode 100755 invidious/src/invidious/views/watch.ecr delete mode 100755 invidious/src/invidious/yt_backend/connection_pool.cr delete mode 100755 invidious/src/invidious/yt_backend/extractors.cr delete mode 100755 invidious/src/invidious/yt_backend/extractors_utils.cr delete mode 100755 invidious/src/invidious/yt_backend/proxy.cr delete mode 100755 invidious/src/invidious/yt_backend/youtube_api.cr delete mode 100755 invidious/videojs-dependencies.yml diff --git a/invidious/.ameba.yml b/invidious/.ameba.yml deleted file mode 100755 index 96cbc8f..0000000 --- a/invidious/.ameba.yml +++ /dev/null @@ -1,88 +0,0 @@ -# -# Lint -# - -# Exclude assigns for ECR files -Lint/UselessAssign: - Excluded: - - src/invidious.cr - - src/invidious/helpers/errors.cr - - src/invidious/routes/**/*.cr - -# Ignore false negative (if !db.query_one?...) -Lint/UnreachableCode: - Excluded: - - src/invidious/database/base.cr - -# Ignore shadowed variable `key` (it works for now, and that's -# a sensitive part of the code) -Lint/ShadowingOuterLocalVar: - Excluded: - - src/invidious/helpers/tokens.cr - - -# -# Style -# - -Style/RedundantBegin: - Enabled: false - -Style/RedundantReturn: - Enabled: false - - -# -# Metrics -# - -# Ignore function complexity (number of if/else & case/when branches) -# For some functions that can hardly be simplified for now -Metrics/CyclomaticComplexity: - Excluded: - # get_about_info(ucid, locale) => [17/10] - - src/invidious/channels/about.cr - - # fetch_channel_community(ucid, continuation, ...) => [34/10] - - src/invidious/channels/community.cr - - # create_notification_stream(env, topics, connection_channel) => [14/10] - - src/invidious/helpers/helpers.cr:84:5 - - # get_index(plural_form, count) => [25/10] - - src/invidious/helpers/i18next.cr - - # call(context) => [18/10] - - src/invidious/helpers/static_file_handler.cr - - # show(env) => [38/10] - - src/invidious/routes/embed.cr - - # get_video_playback(env) => [45/10] - - src/invidious/routes/video_playback.cr - - # handle(env) => [40/10] - - src/invidious/routes/watch.cr - - # playlist_ajax(env) => [24/10] - - src/invidious/routes/playlists.cr - - # fetch_youtube_comments(id, cursor, ....) => [40/10] - # template_youtube_comments(comments, locale, ...) => [16/10] - # content_to_comment_html(content) => [14/10] - - src/invidious/comments.cr - - # to_json(locale, json) => [21/10] - # extract_video_info(video_id, ...) => [44/10] - # process_video_params(query, preferences) => [20/10] - - src/invidious/videos.cr - - - -#src/invidious/playlists.cr:327:5 -#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [19/10] -# fetch_playlist(plid : String) - -#src/invidious/playlists.cr:436:5 -#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [11/10] -# extract_playlist_videos(initial_data : Hash(String, JSON::Any)) diff --git a/invidious/.editorconfig b/invidious/.editorconfig deleted file mode 100755 index 8f0c87a..0000000 --- a/invidious/.editorconfig +++ /dev/null @@ -1,7 +0,0 @@ -[*.cr] -charset = utf-8 -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true diff --git a/invidious/.gitignore b/invidious/.gitignore deleted file mode 100755 index 3d40e80..0000000 --- a/invidious/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -/docs/ -/dev/ -/lib/ -/bin/ -/.shards/ -/.vscode/ -/invidious -/sentry -/config/config.yml -/src diff --git a/invidious/CHANGELOG.md b/invidious/CHANGELOG.md deleted file mode 100755 index 8aa416e..0000000 --- a/invidious/CHANGELOG.md +++ /dev/null @@ -1,844 +0,0 @@ -# Note: This is no longer updated and links to omarroths repo, which doesn't exist anymore. - -# 0.20.0 (2019-011-06) - -# Version 0.20.0: Custom Playlists - -It's been quite a while since the last release! There've been [198 commits](https://github.com/omarroth/invidious/compare/0.19.0..0.20.0) from 27 contributors. - -A couple smaller features have since been added. Channel pages and playlists in particular have received a bit of a face-lift, with both now displaying their descriptions as expected, and playlists providing video count and published information. Channels will also now provide video descriptions in their RSS feed. - -Turkish (tr), Chinese (zh-TW, in addition to zh-CN), and Japanese (jp) are all now supported languages. Thank you as always to the hard work done by translators that makes this possible. - -The feed menu and default home page are both now configurable for registered and unregistered users, and is quite a bit of an improvement for users looking to reduce distractions for their daily use. - -## For Administrators - -`feed_menu` and `default_home` are now configurable by the user, and have therefore been moved into `default_user_preferences`: - -```yaml -feed_menu: ["Popular", "Top"] -default_home: Top - -# becomes: - -default_user_preferences: - feed_menu: ["Popular", "Top"] - default_home: Top -``` - -Several new options have also been added, including the ability to set a support email for the instance using `admin_email: EMAIL`, and forcing the use of a specific connection in the case of rate-limiting using `force_resolve` (see below). - -## For Developers - -Authenticated endpoints are now [properly documented](https://github.com/omarroth/invidious/wiki/Authenticated-Endpoints), as well how to generate and use API tokens. My hope is that this makes some of the more [interesting](https://github.com/omarroth/invidious/wiki/Authenticated-Endpoints#get-apiv1authnotifications) endpoints more accessible for developers to use in their own applications. - -API endpoints for interacting with custom playlists have also been added with documentation available [here](https://github.com/omarroth/invidious/wiki/Authenticated-Endpoints#get-apiv1authplaylists). - -## Custom playlists - -This is probably the feature that has been the longest in the pipe and that I'm quite pleased is now implemented. It is now possible to create custom playlists, which can be played and edited through Invidious. API endpoints have also been added (documentation [here](https://github.com/omarroth/invidious/wiki/Authenticated-Endpoints#get-apiv1authplaylists)). - -Overall I'm quite pleased with how smoothly it has been rolled out and with the experience so far, and I'm exctited for how it can be extended and improved in future. - -## [instances.invidio.us](https://instances.invidio.us) - -It is now possible to view a list of public instances (as provided in the [wiki](https://github.com/omarroth/invidious/wiki/Invidious-Instances)) through an API or a pretty new interface [here](https://instances.invidio.us). It combines uptime information, statistics from each instance and basic information already provided in the wiki. I expect it should be much more user-friendly than compiling the information yourself, and is already used by [Invidition](https://codeberg.org/Booteille/Invidition) to provide a list of instances for users to choose from. - -The site itself is licensed under the AGPLv3 and the source is available [here](https://github.com/omarroth/instances.invidio.us). - -## Video unavailable [#811](https://github.com/omarroth/invidious/issues/811) - -Many users have likely noticed this error message if using Invidious directly or through another service, such as FreeTube. This issue is caused by rate-limiting by Google, and is not a new issuee for projects like Invidious (notably [youtube-dl](https://github.com/ytdl-org/youtube-dl#http-error-429-too-many-requests-or-402-payment-required)) and appears to be affecting smaller, private instances as well. - -There is not a permanent fix for administrators currently, however there is some information available [here](https://github.com/omarroth/invidious/issues/811#issuecomment-540017772) that may provide a temporary solution. Unfortanately, in most cases the best option is to wait for the instance to be unbanned or to move the instance to a different IP. A more informative error message is also now provided, which should help an administrator more quickly diagnose the problem. - -For those interested, I would recommend following [#811](https://github.com/omarroth/invidious/issues/811) for any future progress on the issue. - -## BAT verified publisher - -I'm quite late to this announcement, however I'm pleased to mention that Invidious is now a BAT verified publisher! I would recommend looking [here](https://basicattentiontoken.org/about/) or [here](https://www.reddit.com/r/BATProject/comments/7cr7yc/new_to_bat_read_this_introduction_to_basic/) for learning more about what it is and how it works. Overall I think it makes an interesting substitute for services like Liberapay, and a (hopefully) much less-intrusive alternative to direct advertising. - -BAT is combined under other cryptocurrencies below. Currently there's a fairly significant delay in payout, which is the reason for the large fluctuation in crypto donations between September and October (and also the reason for the late announcement). - -## Release schedule - -Currently I'm quite pleased with the current state of the project. There's plenty of things I'd still like to add, however at this point I expect the rate of most new additions will slow down a bit, with more focus on stabililty and any long-standing bugs. - -Because of this, I'm planning on releasing a new version quarterly, with any necessary hotfixes being pushed as a new patch release as necessary. As always it will be possible to run Invidious directly from [master](https://github.com/omarroth/invidious/wiki/Updating) if you'd still like to have the lastest version. - -I'll plan on providing finances each release, with a similar monthly breakdown as below. - -## Finances for September 2019 - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$64.37 -- [Liberapay](https://liberapay.com/omarroth) : \$76.04 -- Crypto : ~\$99.89 (converted from BAT, BCH, BTC) -- Total : \$240.30 - -### Expenses - -- invidious-lb1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node6 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node7 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node8 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node9 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node10 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node11 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node12 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node13 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node14 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node15 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node16 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$135.00 - -## Finances for October 2019 - -- [Liberapay](https://liberapay.com/omarroth) : \$134.40 -- Crypto : ~\$8.29 (converted from BAT, BCH, BTC) -- Total : \$142.69 - -### Expenses - -- invidious-lb1 (nyc1) : \$5.00 (load balancer) -- invidious-lb2 (nyc1) : \$5.00 (load balancer) -- invidious-lb3 (nyc1) : \$5.00 (load balancer) -- invidious-lb4 (nyc1) : \$5.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node6 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node7 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node8 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node9 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node10 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node11 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node12 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node13 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node14 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node15 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node16 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node17 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node18 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$155.00 - -# 0.19.0 (2019-07-13) - -# Version 0.19.0: Communities - -Hello again everyone! Focus this month has mainly been on improving playback performance, along with a couple new features I'd like to announce. There have been [109 commits](https://github.com/omarroth/invidious/compare/0.18.0...0.19.0) this past month from 10 contributors. - -This past month has seen the addition of Chinese (`zh-CN`) and Icelandic (`is`) translations. I would like to give a huge thanks to their respective translators, and again an enormous thanks to everyone who helps translate the site. - -I'm delighted to mention that [FreeTube 0.6.0](https://github.com/FreeTubeApp/FreeTube) now supports 1080p thanks to the Invidious API. I would very much recommend reading the [relevant post](https://freetube.writeas.com/freetube-release-0-6-0-beta-1080p-and-a-lot-of-qol) for some more information on how it works, along with several other major improvements. Folks that are interested in adding similar functionality for their own projects should feel free to get in touch. - -This past month there has been quite a bit of work on improving memory usage and improving download and playback speeds. As mentioned in the previous release, some extra hardware has been allocated which should also help with this. I'm still looking for ways to improve performance and feedback is always appreciated. - -Along with performance, a couple quality of life improvements have been added, including author thumbnails and banners, clickable titles for embedded videos, and better styling for captions, among some other enhancements. - -## Communities - -Support for YouTube's [communities tab](https://creatoracademy.youtube.com/page/lesson/community-tab) has been added. It's a very interesting but surprisingly unknown feature. Essentially, providing comments for a channel, rather than a video, where an author can post updates for their subscribers. - -It's commonly used to promote interesting links and foster discussion. I hope this feature helps people find more interesting content that otherwise would have been overlooked. - -## For Developers - -For accessing channel communities, an `/api/v1/channels/comments/:ucid` endpoint has been added, with similar behavior and schema to `/api/v1/comments/:id`, with an extra `attachment` field for top-level comments. More info on usage and available data can be found in the [wiki](https://github.com/omarroth/invidious/wiki/API#get-apiv1channelscommentsucid-apiv1channelsucidcomments). - -An `/api/v1/auth/feeds` endpoint has been added for programmatically accessing a user's subscription feed, with options for displaying notifications and filtering an existing feed. - -An `/api/v1/search/suggestions` endpoint has been added for retrieving suggestions for a given query. - -## For Administrators - -It is now possible to disable more resource intensive features, such as downloads and DASH functionality by adding `disable_proxy` to your config. See [#453](https://github.com/omarroth/invidious/issues/453) and the [Wiki](https://github.com/omarroth/invidious/wiki/Configuration) for more information and example usage. I expect this to be a big help for folks with limited bandwidth when hosting their own instances. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$38.39 -- [Liberapay](https://liberapay.com/omarroth) : \$84.85 -- Crypto : ~\$0.00 (converted from BCH, BTC) -- Total : \$123.24 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node6 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node7 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node8 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node9 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node10 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$105.00 - -The goal on Patreon has been updated to reflect the above expenses. As mentioned above, the main reason for more hardware is to improve playback and download speeds, although I'm still looking into improving performance without allocating more hardware. - -As always I'm grateful for everyone's support and feedback. I'll see you all next month. - -# 0.18.0 (2019-06-06) - -# Version 0.18.0: Native Notifications and Optimizations - -Hope everyone has been doing well. This past month there have been [97 commits](https://github.com/omarroth/invidious/compare/0.17.0...0.18.0) from 10 contributors. For the most part changes this month have been on optimizing various parts of the site, mainly subscription feeds and support for serving images and other assets. - -I'm quite happy to mention that support for Greek (`el`) has been added, which I hope will continue to make the site accessible for more users. - -Subscription feeds will now only update when necessary, rather than periodically. This greatly lightens the load on DB as well as making the feeds generally more responsive when changing subscriptions, importing data, and when receiving new uploads. - -Caching for images and other assets should be greatly improved with [#456](https://github.com/omarroth/invidious/issues/456). JavaScript has been pulled out into separate files where possible to take advantage of this, which should result in lighter pages and faster load times. - -This past month several people have encountered issues with downloads and watching high quality video through the site, see [#532](https://github.com/omarroth/invidious/issues/532) and [#562](https://github.com/omarroth/invidious/issues/562). For this coming month I've allocated some more hardware which should help with this, and I'm also looking into optimizing how videos are currently served. - -## For Developers - -`viewCount` is now available for `/api/v1/popular` and all videos returned from `/api/v1/auth/notifications`. Both also now provide `"type"` for indicating available information for each object. - -An `/authorize_token` page is now available for more easily creating new tokens for use in applications, see [this comment](https://github.com/omarroth/invidious/issues/473#issuecomment-496230812) in [#473](https://github.com/omarroth/invidious/issues/473) for more details. - -A POST `/api/v1/auth/notifications` endpoint is also now available for correctly returning notifications for 150+ channels. - -## For Administrators - -There are two new schema changes for administrators: `views` for adding view count to the popular page, and `feed_needs_update` for tracking feed changes. - -As always the relevant migration scripts are provided which should run when following instructions for [updating](https://github.com/omarroth/invidious/wiki/Updating). Otherwise, adding `check_tables: true` to your config will automatically make the required changes. - -## Native Notifications - -[](https://omar.yt/81c3ae1839831bd9300d75e273b6552a86dc2352/native_notification.png "Example of native notification, available in repository under screnshots/native_notification.png") - -It is now possible to receive [Web notifications](https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API) from subscribed channels. - -You can enable notifications by clicking "Enable web notifications" in your preferences. Generally they appear within 20-60 seconds of a new video being uploaded, and I've found them to be an enormous quality of life improvement. - -Although it has been fairly stable, please feel free to report any issues you find [here](https://github.com/omarroth/invidious/issues) or emailing me directly at omarroth@protonmail.com. - -Important to note for administrators is that instances require [`use_pubsub_feeds`](https://github.com/omarroth/invidious/wiki/Configuration) and must be served over HTTPS in order to correctly send web notifications. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$49.73 -- [Liberapay](https://liberapay.com/omarroth) : \$100.57 -- Crypto : ~\$11.12 (converted from BCH, BTC) -- Total : \$161.42 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node6 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$85.00 - -See you all next month! - -# 0.17.0 (2019-05-06) - -# Version 0.17.0: Player and Authentication API - -Hello everyone! This past month there have been [130 commits](https://github.com/omarroth/invidious/compare/0.16.0..0.17.0) from 11 contributors. Large focus has been on improving the player as well as adding API access for other projects to make use of Invidious. - -There have also been significant changes in preparation of native notifications (see [#195](https://github.com/omarroth/invidious/issues/195), [#469](https://github.com/omarroth/invidious/issues/469), [#473](https://github.com/omarroth/invidious/issues/473), and [#502](https://github.com/omarroth/invidious/issues/502)), and playlists. I expect to see both of these to be added in the next release. - -I'm quite happy to mention that new translations have been added for Esperanto (`eo`) and Ukranian (`uk`). Support for pluralization has also been added, so it should now be possible to make a more native experience for speakers in other languages. The system currently in place is a bit cumbersome, so for any help using this feature please get in touch! - -## For Administrators - -A `check_tables` option has been added to automatically migrate without the use of custom scripts. This method will likely prove to be much more robust, and is currently enabled for the official instance. To prevent any unintended changes to the DB, `check_tables` is disabled by default and will print commands before executing. Having this makes features that require schema changes much easier to implement, and also makes it easier to upgrade from older instances. - -As part of [#303](https://github.com/omarroth/invidious/issues/303), a `cache_annotations` option has been added to speed up access from `/api/v1/annotations/:id`. This vastly improves the experience for videos with annotations. Currently, only videos that contain legacy annotations will be cached, which should help keep down the size of the cache. `cache_annotations` is disabled by default. - -## For Developers - -An authorization API has been added which allows other applications to read and modify user subscriptions and preferences (see [#473](https://github.com/omarroth/invidious/issues/473)). Support for accessing user feeds and notifications is also planned. I believe this feature is a large step forward in supporting syncing subscriptions and preferences with other services, and I'm excited to see what other developers do with this functionality. - -Support for server-to-client push notifications is currently underway. This allows Invidious users, as well as applications using the Invidious API, to receive notifications about uploads in near real-time (see #469). An `/api/v1/auth/notifications` endpoint is currently available. I'm very excited for this to be integrated into the site, and to see how other developers use it in their own projects. - -An `/api/v1/storyboards/:id` endpoint has been added for accessing storyboard URLs, which allows developers to add video previews to their players (see below). - -## Player - -Support for annotations has been merged into master with [#303](https://github.com/omarroth/invidious/issues/303), thanks @glmdgrielson! Annotations can be enabled by default or only for subscribed channels, and can also be toggled per video. I'm extremely proud of the progress made here, and I'm so thankful to everyone that has made this possible. I expect this to be the last update with regards to supporting annotations, but I do plan on continuing to improve the experience as much as possible. - -The Invidious player now supports video previews and a corresponding API endpoint `/api/v1/storyboards/:id` has been added for developers looking to add similar functionality to their own players. Not much else to say here. Overall it's a very nice quality of life improvement and an attractive addition to the site. - -It is now possible to select specific sources for videos provided using DASH (see [#34](https://github.com/omarroth/invidious/issues/34)). I would consider support largely feature complete, although there are still several issues to be fixed before I would consider it ready for larger rollout. You can watch videos in 1080p by setting `Default quality` to `dash` in your preferences, or by adding `&quality=dash` to the end of video URLs. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$49.73 -- [Liberapay](https://liberapay.com/omarroth) : \$63.03 -- Crypto : ~\$0.00 (converted from BCH, BTC) -- Total : \$112.76 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$80.00 - -That's all for now. Thanks! - -# 0.16.0 (2019-04-06) - -# Version 0.16.0: API Improvements and Annotations - -Hello again! This past month has seen [116 commits](https://github.com/omarroth/invidious/compare/0.15.0..0.16.0) from 13 contributors and a couple important changes I'd like to announce. - -A privacy policy is now available [here](https://invidio.us/privacy). I've done my best to explain things as clearly as possible without oversimplifying, and would very much recommend reading it if you're concerned about your privacy and want to learn more about how Invidious uses your data. Please let me know if there is anything that needs clarification. - -I'm also very happy to announce that a Spanish translation has been added to the site. You can use it with `?hl=es` or by setting `es` as your default locale. As always I'm extremely grateful to translators for making the site accessible to more people. - -## For Administrators - -Invidious now supports server-to-server [push notifications](https://developers.google.com/youtube/v3/guides/push_notifications). This uses [PubSubHubbub](https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html) to automatically handle new videos sent to an instance, which is less resource intensive and generally faster. Note that it will not pull all videos from a subscribed channel, so recommended usage is in addition to `channel_threads`. Using PubSub requires a valid `domain` that updates can be sent to, and a random string that can be used to sign updates sent to the instance. You can enable it by adding `use_pubsub_feeds: true` to your `config.yml`. See [Configuration](https://github.com/omarroth/invidious/wiki/Configuration) for more info. - -Unfortunately there are a couple necessary changes to the DB to support `liveNow` and `premiereTimestamp` in subscription feeds. Migration scripts have been provided that should be used automatically if following the instructions [here](https://github.com/omarroth/invidious/wiki/Updating). - -You can now configure default user preferences for your instance. This allows you to set default locale, player preferences, and more. See [#415](https://github.com/omarroth/invidious/issues/415) for more details and example usage. - -## For Developers - -The [fields](https://developers.google.com/youtube/v3/getting-started#fields) API has been added with [#429](https://github.com/omarroth/invidious/pull/429) and is now supported on all JSON endpoints, thanks [**@afrmtbl**](https://github.com/afrmtbl)! Synax is straight-forward and can be used to reduce data transfer and create a simpler response for debugging. You can see an example [here](https://invidio.us/api/v1/videos/CvFH_6DNRCY?pretty=1&fields=title,recommendedVideos/title). I've been quite happy using it and hope it is similarly useful for others. - -An `/api/v1/annotations/:id` endpoint has been added for pulling legacy annotation data from [this](https://archive.org/details/youtubeannotations) archive, see below for more details. You can also access annotation data available on YouTube using `?source=youtube`, although this will only return card data as legacy annotations were deleted on January 15th. - -A couple minor changes to existing endpoints: - -- A `premiereTimestamp` field has been added to `/api/v1/videos/:id` -- A `sort_by` param has been added to `/api/v1/comments/:id`, supports `new`, `top`. - -More info is available in the [documentation](https://github.com/omarroth/invidious/wiki/API). - -## Annotations - -I'm pleased to announce that annotation data is finally available from the roughly 1.4 billion videos archived as part of [this](https://www.reddit.com/r/DataHoarder/comments/aa6czg/youtube_annotation_archive/) project. They are accessible from the Internet Archive [here](https://archive.org/details/youtubeannotations) or as a 355GB torrent, see [here](https://www.reddit.com/r/DataHoarder/comments/b7imx9/youtube_annotation_archive_annotation_data_from/) for more details. A corresponding `/api/v1/annotations/:id` endpoint has been added to Invidious which uses the collection from IA to provide legacy annotations. - -Support for them in the player is possible thanks to [this](https://github.com/afrmtbl/videojs-youtube-annotations) plugin developed by [**@afrmtbl**](https://github.com/afrmtbl). A PR for adding support to the site is available as [#303](https://github.com/omarroth/invidious/pull/303). There's also an [extension](https://github.com/afrmtbl/AnnotationsRestored) for overlaying them on top of the YouTube player (again thanks to [**@afrmtbl**](https://github.com/afrmtbl)), and an [extension](https://tech234a.bitbucket.io/AnnotationsReloaded?src=invidious) for hooking into code still present in the YouTube player itself, developed by [**@tech234a**](https://github.com/tech234a). - -I would recommend reading the [official announcement](https://www.reddit.com/r/DataHoarder/comments/b7imx9/youtube_annotation_archive_annotation_data_from/) for more details. I would like to again thank everyone that helped contribute to this project. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$42.42 -- [Liberapay](https://liberapay.com/omarroth) : \$70.11 -- Crypto : ~\$1.76 (converted from BCH, BTC, BSV) -- Total : \$114.29 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node5 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$80.00 - -This past month the site saw a couple abnormal peaks in traffic, so an additional webserver has been added to match the increased load. The goal on Patreon has been updated to match the above expenses. - -Thanks everyone! - -# 0.15.0 (2019-03-06) - -## Version 0.15.0: Preferences and Channel Playlists - -The project has seen quite a bit of activity this past month. Large focus has been on fixing bugs, but there's still quite a few new features I'm happy to announce. There have been [133 commits](https://github.com/omarroth/invidious/compare/0.14.0...0.15.0) from 15 contributors this past month. - -As a couple miscellaneous changes, a couple [nice screenshots](https://github.com/omarroth/invidious#screenshots) have been added to the README, so folks can see more of what the site has to offer without creating an account. - -The footer has also been cleaned up quite a bit, and now displays the current version, so it's easier to know what features are available from the current instance. - -## For Administrators - -This past month there has been a minor release - `0.14.1` - which fixes a breaking change made by YouTube for their polymer redesign. - -There have been several new features that unfortunately require a database migration. There are migration scripts provided in `config/migrate-scripts`, and the [wiki](https://github.com/omarroth/invidious/wiki/Updating) has instructions for automatically applying them. I'll do my best to keep those changes to a minimum, and expect to see a corresponding script to automatically apply any new changes. - -Administrator preferences have been added with [#312](https://github.com/omarroth/invidious/issues/312), which allows administrators to customize their instance. Administrators can change the order of feed menus, change the default homepage, disable open registration, and several other options. There's a short 'how-to' [here](https://github.com/omarroth/invidious/issues/312#issuecomment-468831842), and the new options are documented [here](https://github.com/omarroth/invidious/wiki/Configuration). - -An `/api/v1/stats` endpoint has been added with [#356](https://github.com/omarroth/invidious/issues/356), which reports the instance version and number of active users. Statistics are disabled by default, and can be enabled in administator preferences. Statistics for the official instance are available [here](https://invidio.us/api/v1/stats?pretty=1). - -## For Developers - -`/api/v1/channels/:ucid` now provides an `autoGenerated` tag, which returns true for topic channels, and larger genre channels generated by YouTube. These channels don't have any videos of their own, so `latestVideos` will be empty. It is recommended instead to display a list of playlists generated by YouTube. - -You can now pull a list of playlists from a channel with `/api/v1/channels/playlists/:ucid`. Supported options are documented in the [wiki](https://github.com/omarroth/invidious/wiki/API#get-apiv1channelsplaylistsucid-apiv1channelsucidplaylists). Pagination is handled with a `continuation` token, which is generated on each call. Of note is that auto-generated channels currently have one page of results, and subsequent calls will be empty. - -For quickly pulling the latest 30 videos from a channel, there is now `/api/v1/channels/latest/:ucid`. It is much faster than a call to `/api/v1/channels/:ucid`. It will not convert an author name to a valid ucid automatically, and will not return any extra data about a channel. - -## Preferences - -In addition to administrator preferences mentioned above, you can now change your preferences without an account (see [#42](https://github.com/omarroth/invidious/pull/42)). I think this is quite an improvement to the usability of the site, and is much friendlier to privacy-conscious folks that don't want to make an account. Preferences will be automatically imported to a newly created account. - -Several issues with sorting subscriptions have been fixed, and `/manage_subscriptions` has been sped up significantly. The subscription feed has also seen a bump in performance. Delayed notifications have unfortunately started becoming a problem now that there are more users on the site. Some new changes are currently being tested which should mostly resolve the issue, so expect to see more in the next release. - -## Channel Playlists - -You can now view available playlists from a channel, and [auto-generated channels](https://invidio.us/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ) are no longer empty. You can sort as you would on YouTube, and all the same functionality should be available. I'm quite pleased to finally have it implemented, since it's currently the only data available from the above mentioned auto-generated channels, and makes it much easier to consume music on the site. - -There's also more discussion on improving Invidious for streaming music in [#304](https://github.com/omarroth/invidious/issues/304), and adding support for music.youtube.com. I would appreciate any thoughts on how to improve that experience, since it's a very large and useful part of YouTube. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$42.42 -- [Liberapay](https://liberapay.com/omarroth) : \$30.97 -- Crypto : ~\$0.00 (converted from BCH, BTC) -- Total : \$73.39 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$75.00 - -It's been very humbling to see how fast the project has grown, and I look forward to making the site even better. Thank you everyone. - -# 0.14.0 (2019-02-06) - -## Version 0.14.0: Community - -This last month several contributors have made improvements specifically for the people using this project. New pages have been added to the wiki, and there is now a [Matrix Server](https://riot.im/app/#/room/#invidious:matrix.org) and IRC channel so it's easier and faster for people to ask questions or chat. There have been [101 commits](https://github.com/omarroth/invidious/compare/0.13.0...0.14.0) since the last major release from 8 contributors. - -It has come to my attention in the past month how many people are self-hosting, and I would like to make it easier for them to do so. - -With that in mind, expect future releases to have a section for For Administrators (if any relevant changes) and For Developers (if any relevant changes). - -## For Administrators - -This month the most notable change for administrators is releases. As always, there will be a major release each month. However, a new minor release will be made whenever there are any critical bugs that need to be fixed. - -This past month is the first time there has been a minor release - `0.13.1` - which fixes a breaking change made by YouTube. Administrators using versioning for their instances will be able to rely on the latest version, and should have a system in place to upgrade their instance as soon as a new release is available. - -Several new pages have been added to the [wiki](https://github.com/omarroth/invidious/wiki#for-administrators) (as mentioned below) that will help administrators better setup their own instances. Configuration, maintenance, and instructions for updating are of note, as well as several common issues that are encountered when first setting up. - -## For Developers - -There's now a `pretty=1` parameter for most endpoints so you can view data easily from the browser, which is convenient for debugging and casual use. You can see an example [here](https://invidio.us/api/v1/videos/CvFH_6DNRCY?pretty=1). - -Unfortunately the `/api/v1/insights/:id` endpoint is no longer functional, as YouTube removed all publicly available analytics around a month ago. The YouTube endpoint now returns a 404, so it's unlikely it will be functional again. - -## Wiki - -There have been a sizable number of changes to the Wiki, including a [list of public Invidious instances](https://github.com/omarroth/invidious/wiki/Invidious-Instances), the [list of extensions](https://github.com/omarroth/invidious/wiki/Extensions), and documentation for administrators (as mentioned above) and developers. - -The wiki is editable by anyone so feel free to add anything you think is useful. - -## Matrix & IRC - -Thee is now a [Matrix Server](https://riot.im/app/#/room/#invidious:matrix.org) for Invidious, so please feel free to hop on if you have any questions or want to chat. There is also a registered IRC channel: #invidious on Freenode which is bridged to Matrix. - -## Features - -Several new features have been added, including a download button, creator hearts and comment colors, and a French translation. - -There have been fixes for Google logins, missing text in locales, invalid links to genre channels, and better error handling in the player, among others. - -Several fixes and features are omitted for space, so I'd recommend taking a look at the [compare tab](https://github.com/omarroth/invidious/compare/0.13.0...0.14.0) for more information. - -## Annotations Update - -Annotations were removed January 15th, 2019 around15:00 UTC. Before they were deleted we were able to archive annotations from around 1.4 billion videos. I'd very much recommend taking a look [here](https://www.reddit.com/r/DataHoarder/comments/al7exa/youtube_annotation_archive_update_and_preview/) for more information and a list of acknowledgements. I'm extremely thankful to everyone who was able to contribute and I'm glad we were able to save such a large part of internet history. - -There's been large strides in supporting them in the player as well, which you can follow in [#303](https://github.com/omarroth/invidious/pull/303). You can preview the functionality at https://dev.invidio.us . Before they are added to the main site expect to see an option to disable them, both site-wide and per video. - -Organizing this project has unfortunately taken up quite a bit of my time, and I've been very grateful for everyone's patience. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth) : \$49.42 -- [Liberapay](https://liberapay.com/omarroth) : \$27.89 -- Crypto : ~\$0.00 (converted from BCH, BTC) -- Total : \$77.31 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$75.00 - -As always I'm grateful for everyone's contributions and support. I'll see you all in March. - -# 0.13.1 (2019-01-19) - -## - -# 0.13.0 (2019-01-06) - -## Version 0.13.0: Translations, Annotations, and Tor - -I hope everyone had a happy New Year! There's been a couple new additions since last release, with [44 commits](https://github.com/omarroth/invidious/compare/0.12.0...0.13.0) from 9 contributors. It's been quite a year for the project, and I hope to continue improving the project into 2019! Starting off the new year: - -## Translations - -I'm happy to announce support for translations has been added with [`a160c64`](https://github.com/omarroth/invidious/a160c64). Currently, there is support for: - -- Arabic (`ar`) -- Dutch (`nl`) -- English (`en-US`) -- German (`de`) -- Norwegian Bokmål (`nb_NO`) -- Polish (`pl`) -- Russian (`ru`) - -Which you can change in your preferences under `Language`. You can also add `&hl=LANGUAGE` to the end of any request to translate it to your preferred language, for example https://invidio.us/?hl=ru. I'd like to say thank you again to everyone who has helped translate the site! I've mentioned this before, but I'm delighted that so many people find the project useful. - -## Annotations - -Recently, [YouTube announced that all annotations will be deleted on January 15th, 2019](https://support.google.com/youtube/answer/7342737). I believe that annotations have a very important place in YouTube's history, and [announced a project to archive them](https://www.reddit.com/r/DataHoarder/comments/aa6czg/youtube_annotation_archive/). - -I expect annotations to be supported in the Invidious player once archiving is complete (see [#110](https://github.com/omarroth/invidious/issues/110) for details), and would also like to host them for other developers to use in their projects. - -The code is available [here](https://github.com/omarroth/archive), and contains instructions for running a worker if you would like to contribute. There's much more information available in the announcement as well for anyone who is interested. - -## Tor - -I unfortunately missed the chance to mention this in the previous release, but I'm now happy to announce that you can now view Invidious through Tor at the following links: - -kgg2m7yk5aybusll.onion -axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid.onion - -Invidious is well suited to use through Tor, as it does not require any JS and is fairly lightweight. I'd recommend looking [here](https://diasp.org/posts/10965196) and [here](https://www.reddit.com/r/TOR/comments/a3c1ak/you_can_now_watch_youtube_videos_anonymously_with/) for more details on how to use the onion links, and would like to say thank you to [/u/whonix-os](https://www.reddit.com/user/whonix-os) for suggesting it and providing support setting setting them up. - -## Popular and Trending - -You can now easily view videos trending on YouTube with [`a16f967`](https://github.com/omarroth/invidious/a16f967). It also provides support for viewing YouTube's various categories categories, such as `News`, `Gaming`, and `Music`. You can also change the `region` parameter to view trending in different countries, which should be made easier to use in the coming weeks. - -A link to `/feed/popular` has also been added, which provides a list of videos sorted using the algorithm described [here](https://github.com/omarroth/invidious/issues/217#issuecomment-436503761). I think it better reflects what users watch on the site, but I'd like to hear peoples' thoughts on this and on how it could be improved. - -## Finances - -### Donations - -- [Patreon](https://www.patreon.com/omarroth): \$64.63 -- [Liberapay](https://liberapay.com/omarroth) : \$30.05 -- Crypto : ~\$28.74 (converted from BCH, BTC) -- Total : \$123.42 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$75.00 - -### What will happen with what's left over? - -I believe this is the first month that all expenses have been fully paid for by donations. Thank you! I expect to allocate the current amount for hardware to improve performance and for hosting annotation data, as mentioned above. - -Anything that is left over is kept to continue hosting the project for as long as possible. Thank you again everyone! - -I think that's everything for 2018. There's lots still planned, and I'm very excited for the future of this project! - -# 0.12.0 (2018-12-06) - -## Version 0.12.0: Accessibility, Privacy, Transparency - -Hello again, it's been a while! A lot has happened since the last release. Invidious has seen [134 commits](https://github.com/omarroth/invidious/compare/0.11.0...0.12.0) from 3 contributors, and I'm quite happy with the progress that has been made. I enjoyed this past month, and I believe having a monthly release schedule allows me to focus on more long-term improvements, and I hope people enjoy these more substantial updates as well. - -## Accessability and Privacy - -There have been quite a few improvements for user privacy, and improvements that improve accessibility for both people and software. - -You can now view comments without JS with [`19516ea`](https://github.com/omarroth/invidious/19516ea). Currently, this functionality is limited to the first 20 comments, but expect this functionality to be improved to come as close to the JS version as possible. Folks can track progress in [#204](https://github.com/omarroth/invidious/issues/204). - -Invidious is now compatible with [LibreJS](https://www.gnu.org/software/librejs/), and provides license information [here](https://invidio.us/licenses) with [`7f868ec`](https://github.com/omarroth/invidious/7f868ec). As expected, all libraries are compatible under the AGPLv3, and I'm happy to mention that no other changes were required to make Invidious compatible with LibreJS. - -A DNT policy has also been added with [`9194f47`](https://github.com/omarroth/invidious/9194f47) for compatibility with [Privacy Badger](https://www.eff.org/privacybadger). I'm pleased to mention that here too no other changes had to be made in order for Invidious to be compatible with this extension. I expect a privacy policy to be added soon as well, so users can better understand how Invidious uses their data. - -For users that are visually impaired, there is now a text CAPTCHA available so it's easier to register and login. Because of the simple front-end of the project, I expect screen readers and other software to be able to easily understand the site's interface. In combination with the ability to listen-only, I believe Invidious is much more accessible than YouTube. Folks can read [#244](https://github.com/omarroth/invidious/issues/244) for more details, and I would very much appreciate any feedback on how this can be improved. - -## User Preferences - -There have been a lot of improvements to preferences. Options for enabling audio-only by default and continuous playback (autoplay) have been added with [`e39dec9`](https://github.com/omarroth/invidious/e39dec9), with [`4b76b93`](https://github.com/omarroth/invidious/4b76b93), respectively. Users can also now mark videos as watched from their subscription feed and view watch history by going to https://invidio.us/feed/history. I expect to add more information to history so that it's easier to use. Folks can track progress with [#182](https://github.com/omarroth/invidious/issues/182). As with all data Invidious keeps, watch history can be exported [here](https://invidio.us/data_control). - -Users can now delete their account with [`b9c29bf`](https://github.com/omarroth/invidious/b9c29bf). This will remove _all_ user data from Invidious, including session IDs, watch history, and subscriptions. As mentioned above, it's easy to export that data and import it to a local instance, or export subscriptions for use with other applications such as [FreeTube](https://github.com/FreeTubeApp/FreeTube) or [NewPipe](https://github.com/TeamNewPipe/NewPipe). - -## Translation and Internationalis(z)ation - -Invidious has been approved for hosting by Weblate, available [here](https://hosted.weblate.org/projects/invidious/translations/). At the time of writing, translations for Arabic, Dutch, German, Polish, and Russian are currently underway. I would like to say a very big thank you to everyone working on them, and I hope to fully support them within around 2 weeks. Folks can track progress with [#251](https://github.com/omarroth/invidious/issues/251). - -## Transperency and Finances - -For the sake of transparency, I plan on publishing each month's finances. This is currently already done on Liberapay and Patreon, but there is not a total amount currently provided anywhere, and I would also like to include expenses to provide a better explanation of how patrons' money is being spent. - -### Donations - -- [Patreon](https://www.patreon.com/omarroth): \$43.60 (Patreon takes roughly 9%) -- [Liberapay](https://liberapay.com/omarroth) : \$22.10 -- Crypto : ~\$1.25 (converted from BCH, BTC) -- Total : \$66.95 - -### Expenses - -- invidious-load1 (nyc1) : \$10.00 (load balancer) -- invidious-update1 (s-1vcpu-1gb) : \$5.00 (updates feeds) -- invidious-node1 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node2 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node3 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-node4 (s-1vcpu-1gb) : \$5.00 (web server) -- invidious-db1 (s-4vcpu-8gb) : \$40.00 (database) -- Total : \$75.00 - -I'd be happy to provide any explanation where needed. I would also like to thank everyone who donates, it really helps and I can't say how happy I am to see that so many people find it valuable. - -That's all for this month. I wish everyone the best for the holidays, and I'll see you all again in January! - -# 0.11.0 (2018-10-23) - -## Week 11: FreeTube and Styling - -This past Friday I'm been very excited to see that FreeTube version [0.4.0](https://github.com/FreeTubeApp/FreeTube/tree/0.4.0) has been released! I'd recommend taking a look at the official patch notes, but to spoil a little bit here: FreeTube now uses the Invidious API for _all_ requests previously sent to YouTube, and has also seen support for playlists, keyboard shortcuts, and more default settings (speed, autoplay, and subtitles). I'm happy to see that FreeTube has reached 500 stars on Github, and I think it's very much deserved. I'd recommend keeping an eye on the newly-launched [FreeTube blog](https://freetube.writeas.com/) for updates on the project. - -Quite a few styling changes have been added this past week, including channel subscriber count to the subscribe and unsubscribe buttons. The changes sound small, but they've been a very big improvement and I'm quite satisfied with how they look. Also to note is that partial support for duration in thumbnails have been added with [#202](https://github.com/omarroth/invidious/issues/202). Overall, I think the site is becoming much more pleasing visually, and I hope to continue to improve it. - -I've been very pleased to see Invidious in its current state, and I believe it's many times more mature compared to even a month ago. Changes have also started slowing down a bit as it's become more mature, and therefore I'd like to transition to a monthly update schedule in order to provide more comprehensive updates for everyone. I want to thank you all for helping me reach this point. I can't say how happy I am for Invidious to be where it is now. - -Enjoy the rest of your week everyone, I'll see you in November! - -# 0.10.0 (2018-10-16) - -## Week 10: Subscriptions - -This week I'm happy to announce that subscriptions have been drastically sped up with -35e63fa. As I mentioned last week, this essentially "caches" a user's feed, meaning that operations that previously took 20 seconds or timed out, now can load in under a second. I'd take a look at [#173](https://github.com/omarroth/invidious/issues/173) for a sample benchmark. Previously features that made Invidious's feed so useful, such as filtering by unseen and by author would take too long to load, and so instead would timeout. I'm very happy that this has been fixed, and folks can get back to using these features. - -Among some smaller features that have been added this week include [#118](https://github.com/omarroth/invidious/issues/118), which adds, in my opinion, some very attractive subscribe and unsubscribe buttons. I think it's also a bit of a functional improvement as well, since it doesn't require a user to reload the page in order to subscribe or unsubscribe to a channel, and also gives the opportunity to put the channel's sub count on display. - -An option to swap between Reddit and YouTube comments without a page reload has been added with -5eefab6, bringing it somewhat closer in functionality to the popular [AlienTube](https://github.com/xlexi/alientube) extension, on which it is based (although the extension unfortunately appears now to be fragmented). - -As always, there are a couple smaller improvements this week, including some minor fixes for geo-bypass with -e46e618 and [`245d0b5`](https://github.com/omarroth/invidious/245d0b5), playlist preferences with [`81b4477`](https://github.com/omarroth/invidious/81b4477), and YouTube comments with [`02335f3`](https://github.com/omarroth/invidious/02335f3). - -This coming week I'd also recommend keeping an eye on the excellent [FreeTube](https://github.com/FreeTubeApp/FreeTube), which is looking forward to a new release. I've been very lucky to work with [**@PrestonN**](https://github.com/PrestonN) for the past few weeks to improve the Invidious API, and I'm quite looking forward to the new release. - -That's all for this week folks, thank you all again for your continued interest and support. - -# 0.9.0 (2018-10-08) - -## Week 9: Playlists - -Not as much to announce this week, but I'm still quite happy to announce a couple things, namely: - -Playback support for playlists has finally been added with [`88430a6`](https://github.com/omarroth/invidious/88430a6). You can now view playlists with the `&list=` query param, as you would on YouTube. You can also view mixes with the mentioned `&list=`, although they require some extra handling that I would like to add in the coming week, as well as adding playlist looping and shuffle. I think playback support has been a roadblock for more exciting features such as [#114](https://github.com/omarroth/invidious/issues/114), and I look forward to improving the experience. - -Comments have had a bit of a cosmetic upgrade with [#132](https://github.com/omarroth/invidious/issues/132), which I think helps better distinguish between Reddit and YouTube comments, as it makes them appear similarly to their respective sites. You can also now switch between YouTube and Reddit comments with a push of a button, which I think is quite an improvement, especially for newer or less popular videos with fewer comments. - -I've had a small breakthrough in speeding up users' subscription feeds with PostgreSQL's [materialized views](https://www.postgresql.org/docs/current/static/rules-materializedviews.html). Without going into too much detail, materialized views essentially cache the result of a query, making it possible to run resource-intensive queries once, rather than every time a user visits their feed. In the coming week I hope to push this out to users, and hopefully close [#173](https://github.com/omarroth/invidious/issues/173). - -I haven't had as much time to work on the project this week, but I'm quite happy to have added some new features. Have a great week everyone. - -# 0.8.0 (2018-10-02) - -## Week 8: Mixes - -Hello again! - -Mixes have been added with [`20130db`](https://github.com/omarroth/invidious/20130db), which makes it easy to create a playlist of related content. See [#188](https://github.com/omarroth/invidious/issues/188) for more info on how they work. Currently, they return the first 50 videos rather than a continuous feed to avoid tracking by Google/YouTube, which I think is a good trade-off between usability and privacy, and I hope other folks agree. You can create mixes by adding `RD` to the beginning of a video ID, an example is provided [here](https://www.invidio.us/mix?list=RDYE7VzlLtp-4) based on Big Buck Bunny. I've been quite happy with the results returned for the mixes I've tried, and it is not limited to music, which I think is a big plus. To emulate a continuous feed provided many are used to, using the last video of each mix as a new 'seed' has worked well for me. In the coming week I'd like to to add playback support in the player to listen to these easily. - -A very big thanks to [**@flourgaz**](https://github.com/flourgaz) for Docker support with [#186](https://github.com/omarroth/invidious/pull/186). This is an enormous improvement in portability for the project, and opens the door for Heroku support (see [#162](https://github.com/omarroth/invidious/issues/162)), and seamless support on Windows. For most users, it should be as easy as running `docker-compose up`. - -I've spent quite a bit of time this past week improving support for geo-bypass (see [#92](https://github.com/omarroth/invidious/issues/92)), and am happy to note that Invidious has been able to proxy ~50% of the geo-restricted videos I've tried. In addition, you can now watch geo-restricted videos if you have `dash` enabled as your `preferred quality`, for more details see [#34](https://github.com/omarroth/invidious/issues/34) and [#185](https://github.com/omarroth/invidious/issues/185), or last week's update. For folks interested in replicating these results for themselves, I'd take a look [here](https://gist.github.com/omarroth/3ce0f276c43e0c4b13e7d9cd35524688) for the script used, and [here](https://gist.github.com/omarroth/beffc4a76a7b82a422e1b36a571878ef) for a list of videos restricted in the US. - -1080p has seen a fairly smooth roll-out, although there have been a couple issues reported, mainly [#193](https://github.com/omarroth/invidious/issues/193), which is likely an issue in the player. I've also encountered a couple other issues myself that I would like to investigate. Although none are major, I'd like to keep 1080p opt-in for registered users another week to better address these issues. - -Have an excellent week everyone. - -# 0.7.0 (2018-09-25) - -## Week 7: 1080p and Search Types - -Hello again everyone! I've got quite a couple announcements this week: - -Experimental 1080p support has been added with [`b3ca392`](https://github.com/omarroth/invidious/b3ca392), and can be enabled by going to preferences and changing `preferred video quality` to `dash`. You can find more details [here](https://github.com/omarroth/invidious/issues/34#issuecomment-424171888). Currently quality and speed controls have not yet been integrated into the player, but I'd still appreciate feedback, mainly on any issues with buffering or DASH playback. I hope to integrate 1080p support into the player and push support site-wide in the coming weeks. - -You can now filter content types in search with the `type:TYPE` filter. Supported content types are `playlist`, `channel`, and `video`. More info is available [here](https://github.com/omarroth/invidious/issues/126#issuecomment-423823148). I think this is quite an improvement in usability and I hope others find the same. - -A [CHANGELOG](https://github.com/omarroth/invidious/blob/master/CHANGELOG.md) has been added to the repository, so folks will now receive a copy of all these updates when cloning. I think this is an improvement in hosting the project, as it is no longer tied to the `/releases` tab on Github or the posts on Patreon. - -Recently, users have been reporting 504s when attempting to access their subscriptions, which is tracked in [#173](https://github.com/omarroth/invidious/issues/173). This is most likely caused by an uptick in usage, which I am absolutely grateful for, but unfortunately has resulted in an increase in costs for hosting the site, which is why I will be bumping my goal on Patreon from $60 to $80. I would appreciate any feedback on how subscriptions could be improved. - -Other minor improvements include: - -- Additional regions added to bypass geo-block with [`9a78523`](https://github.com/omarroth/invidious/9a78523) -- Fix for playlists containing less than 100 videos (previously shown as empty) with [`35ac887`](https://github.com/omarroth/invidious/35ac887) -- Fix for `published` date for Reddit comments (previously showing negative seconds) with [`6e09202`](https://github.com/omarroth/invidious/6e09202) - -Thank you everyone for your support! - -# 0.6.0 (2018-09-18) - -## Week 6: Filters and Thumbnails - -Hello again! This week I'm happy to mention a couple new features to search as well as some miscellaneous usability improvements. - -You can now constrain your search query to a specific channel with the `channel:CHANNEL` filter (see [#165](https://github.com/omarroth/invidious/issues/165) for more details). Unfortunately, other search filters combined with channel search are not yet supported. I hope to add support for them in the coming weeks. - -You can also now search only your subscriptions by adding `subscriptions:true` to your query (see [#30](https://github.com/omarroth/invidious/issues/30) for more details). It's not quite ready for widespread use but I would appreciate feedback as the site updates to fully support it. Other search filters are not yet supported with `subscriptions:true`, but I hope to add more functionality to this as well. - -With [#153](https://github.com/omarroth/invidious/issues/153) and [#168](https://github.com/omarroth/invidious/issues/168) all images on the site are now proxied through Invidious. In addition to offering the user more protection from Google's eyes, it also allows the site to automatically pick out the highest resolution thumbnail for videos. I think this is quite a large aesthetic improvement and I hope others will find the same. - -As a smaller improvement to the site, you can also now view RSS feeds for playlists with [#113](https://github.com/omarroth/invidious/issues/113). - -These updates are also now listed under Github's [releases](https://github.com/omarroth/invidious/releases). I'm also planning on adding them as a `CHANGELOG.md` in the repository itself so people can receive a copy with the project's source. - -That's all for this week. Thank you everyone for your support! - -# 0.5.0 (2018-09-11) - -## Week 5: Privacy and Security - -I hope everyone had a good weekend! This past week I've been fixing some issues that have been brought to my attention to help better protect users and help them keep their anonymity. - -An issue with open referers has been fixed with [`29a2186`](https://github.com/omarroth/invidious/29a2186), which prevents potential redirects to external sites on actions such as login or modifying preferences. - -Additionally, X-XSS-Protection, X-Content-Type-Options, and X-Frame-Options headers have been added with [`96234e5`](https://github.com/omarroth/invidious/96234e5), which should keep users safer while using the site. - -A potential XSS vector has also been fixed in YouTube comments with [`8c45694`](https://github.com/omarroth/invidious/8c45694). - -All the above vulnerabilities were brought to my attention by someone who wishes to remain anonymous, but I would like to say again here how thankful I am. If anyone else would like to get in touch please feel free to email me at omarroth@hotmail.com or omarroth@protonmail.com. - -This week a couple changes have been made to better protect user's privacy as well. -All CSS and JS assets are now served locally with [`3ec684a`](https://github.com/omarroth/invidious/3ec684a), which means users no longer need to whitelist unpkg.com. Although I personally have encountered few issues, I understand that many folks would like to keep their browsing activity contained to as few parties as possible. In the coming week I also hope to proxy YouTube images, so that no user data is sent to Google. - -YouTube links in comments now should redirect properly to the Invidious alternate with [`1c8bd67`](https://github.com/omarroth/invidious/1c8bd67) and [`cf63c82`](https://github.com/omarroth/invidious/cf63c82), so users can more easily evade Google tracking. - -I'm also happy to mention a couple quality of life features this week: - -Invidious now shows a video's "license" if provided, see [#159](https://github.com/omarroth/invidious/issues/159) for more details. You can also search for videos licensed under the creative commons with "QUERY features:creative_commons". - -Videos with only one source will always display the cog for changing quality, so that users can see what quality is currently playing. See [#158](https://github.com/omarroth/invidious/issues/158) for more details. - -Folks have also probably noticed that the gutters on either side of the screen have been shrunk down quite significantly, so that more of the screen is filled with content. Hopefully this can be improved even more in the coming weeks. - -"Music", "Sports", and "Popular on YouTube" channels now properly display their videos. You can subscribe to these channels just as you would normally. - -This coming week I'm planning on spending time with my family, so I unfortunately may not be as responsive. I do still hope to add some smaller features for next week however, and I hope to continue development soon. -Thank you everyone again for your support. - -# 0.4.0 (2018-09-06) - -## Week 4: Genre Channels - -Hello! I hope everyone enjoyed their weekend. Without further ado: -Just today genre channels have been added with [#119](https://github.com/omarroth/invidious/issues/119). More information on genre channels is available [here](https://support.google.com/youtube/answer/2579942). You can subscribe to them as normally, and view them as RSS. I think they offer an interesting alternative way to find new content and I hope people find them useful. - -This past week folks have started reporting 504s on their subscription page (see [#144](https://github.com/omarroth/invidious/issues/144) for more details). Upgrading the database server appeared to fix the issue, as well as providing a smoother experience across the site. Unfortunately, that means I will be increasing the goal from $50 to $60 in order to meet the increased hosting costs. - -With [#134](https://github.com/omarroth/invidious/issues/134), comments are now formatted correctly, providing support for bold, italics, and links in comments. I think this improvement makes them much easier to read, and I hope others find the same. Also to note is that links in both comments and the video description now no longer contain any of Google's tracking with [#115](https://github.com/omarroth/invidious/issues/115). - -One of the major use cases for Invidious is as a stripped-down version of YouTube. In line with that, I'm happy to announce that you can now hide related videos if you're logged in, for users that prefer an even more lightweight experience. - -Finally, I'm pleased to announce that Invidious has hit 100 stars on GitHub. I am very happy that Invidious has proven to be useful to so many people, and I can't say how grateful I am to everyone for their continued support. - -Enjoy the rest of your week everyone! - -# 0.3.0 (2018-09-06) - -## Week 3: Quality of Life - -Hello everyone! This week I've been working on some smaller features that will hopefully make the site more functional. -Search filters have been added with [#126](https://github.com/omarroth/invidious/issues/126). You can now specify 'sort', 'date', 'duration', and 'features' within your query using the 'operator:value' syntax. I'd recommend taking a look [here](https://github.com/omarroth/invidious/blob/master/src/invidious/search.cr#L33-L114) for a list of supported options and at [#126](https://github.com/omarroth/invidious/issues/126) for some examples. This also opens the door for features such as [#30](https://github.com/omarroth/invidious/issues/30) which can be implemented as filters. I think advanced search is a major point in which Invidious can improve on YouTube and hope to add more features soon! - -This week a more advanced system for viewing fallback comments has been added (see [#84](https://github.com/omarroth/invidious/issues/84) for more details). You can now specify a comment fallback in your preferences, which Invidious will use. If, for example, no Reddit comments are available for a given video, it can choose to fallback on YouTube comments. This also makes it possible to turn comments off completely for users that prefer a more streamlined experience. - -With [#98](https://github.com/omarroth/invidious/issues/98), it is now possible for users to specify preferences without creating an account. You can now change speed, volume, subtitles, autoplay, loop, and quality using query parameters. See the issue above for more details and several examples. - -I'd also like to announce that I've set up an account on [Liberapay](https://liberapay.com/omarroth), for patrons that prefer a privacy-friendly alternative to Patreon. Liberapay also does not take any percentage of donations, so I'd recommend donating some to the Liberapay for their hard work. Go check it out! - -[Two weeks ago](https://github.com/omarroth/invidious/releases/tag/0.1.0) I mentioned adding 1080p support into the player. Currently, the only thing blocking is [#207](https://github.com/videojs/http-streaming/pull/207) in the excellent [http-streaming](https://github.com/videojs/http-streaming) library. I hope to work with the videojs team to merge it soon and finally implement 1080p support! - -That's all for this week, thank you again everyone for your support! - -# 0.2.0 (2018-09-06) - -## Week 2: Toward Playlists - -Sorry for the late update! Not as much to announce this week, but still a couple things of note: -I'm happy to announce that a playlists page and API endpoint has been added so you can now view playlists. Currently, you cannot watch playlists through the player, but I hope to add that in the coming week as well as adding functionality to add and modify playlists. There is a good conversation on [#114](https://github.com/omarroth/invidious/issues/114) about giving playlists even more functionality, which I think is interesting and would appreciate feedback on. - -As an update to the Invidious API announcement last week, I've been working with [**@PrestonN**](https://github.com/PrestonN), the developer of [FreeTube](https://github.com/FreeTubeApp/FreeTube), to help migrate his project to the Invidious API. Because of it's increasing popularity, he has had trouble keeping under the quota set by YouTube's API. I hope to improve the API to meet his and others needs and I'd recommend folks to keep an eye on his excellent project! There is a good discussion with his thoughts [here](https://github.com/FreeTubeApp/FreeTube/issues/100). - -A couple of miscellaneous features and bugfixes: - -- You can now login to Invidious simultaneously from multiple devices - [#109](https://github.com/omarroth/invidious/issues/109) - -- Added a note for scheduled livestreams - [#124](https://github.com/omarroth/invidious/issues/124) - -- Changed YouTube comment header to "View x comments" - [#120](https://github.com/omarroth/invidious/issues/120) - -Enjoy your week everyone! - -# 0.1.0 (2018-09-06) - -## Week 1: Invidious API and Geo-Bypass - -Hello everyone! This past week there have been quite a few things worthy of mention: - -I'm happy to announce the [Invidious Developer API](https://github.com/omarroth/invidious/wiki/API). The Invidious API does not use any of the official YouTube APIs, and instead crawls the site to provide a JSON interface for other developers to use. It's still under development but is already powering [CloudTube](https://github.com/cloudrac3r/cadencegq). The API currently does not have a quota (compared to YouTube) which I hope to continue thanks to continued support from my Patrons. Hopefully other developers find it useful, and I hope to continue to improve it so it can better serve the community. - -Just today partial support for bypassing geo-restrictions has been added with [fada57a](https://github.com/omarroth/invidious/commit/fada57a307d66d696d9286fc943c579a3fd22de6). If a video is unblocked in one of: United States, Canada, Germany, France, Japan, Russia, or United Kingdom, then Invidious will be able to serve video info. Currently you will not yet be able to access the video files themselves, but in the coming week I hope to proxy videos so that users can enjoy content across borders. - -Support for generating DASH manifests has been fixed, in the coming week I hope to integrate this functionality into the watch page, so users can view videos in 1080p and above. - -Thank you everyone for your continued interest and support! diff --git a/invidious/LICENSE b/invidious/LICENSE deleted file mode 100755 index 1ce8758..0000000 --- a/invidious/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are 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. - - 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. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - 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 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 work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero 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 Affero 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 Affero 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 Affero 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. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero 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 Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - 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 AGPL, see -. \ No newline at end of file diff --git a/invidious/Makefile b/invidious/Makefile deleted file mode 100755 index 9eb195d..0000000 --- a/invidious/Makefile +++ /dev/null @@ -1,119 +0,0 @@ -# ----------------------- -# Compilation options -# ----------------------- - -RELEASE := 1 -STATIC := 0 - -NO_DBG_SYMBOLS := 0 - - -FLAGS ?= - - -ifeq ($(RELEASE), 1) - FLAGS += --release -endif - -ifeq ($(STATIC), 1) - FLAGS += --static -endif - - -ifeq ($(NO_DBG_SYMBOLS), 1) - FLAGS += --no-debug -else - FLAGS += --debug -endif - -ifeq ($(API_ONLY), 1) - FLAGS += -Dapi_only -endif - - -# ----------------------- -# Main -# ----------------------- - -all: invidious - -get-libs: - shards install --production - -# TODO: add support for ARM64 via cross-compilation -invidious: get-libs - crystal build src/invidious.cr $(FLAGS) --progress --stats --error-trace - - -run: invidious - ./invidious - - -# ----------------------- -# Development -# ----------------------- - - -format: - crystal tool format - -test: - crystal spec - -verify: - crystal build src/invidious.cr -Dskip_videojs_download \ - --no-codegen --progress --stats --error-trace - - -# ----------------------- -# (Un)Install -# ----------------------- - -# TODO - - -# ----------------------- -# Cleaning -# ----------------------- - -clean: - rm invidious - -distclean: clean - rm -rf libs - rm -rf ~/.cache/{crystal,shards} - - -# ----------------------- -# Help page -# ----------------------- - -help: - @echo "Targets available in this Makefile:" - @echo "" - @echo " get-libs Fetch Crystal libraries" - @echo " invidious Build Invidious" - @echo " run Launch Invidious" - @echo "" - @echo " format Run the Crystal formatter" - @echo " test Run tests" - @echo " verify Just make sure that the code compiles, but without" - @echo " generating any binaries. Useful to search for errors" - @echo "" - @echo " clean Remove build artifacts" - @echo " distclean Remove build artifacts and libraries" - @echo "" - @echo "" - @echo "Build options available for this Makefile:" - @echo "" - @echo " RELEASE Make a release build (Default: 1)" - @echo " STATIC Link libraries statically (Default: 0)" - @echo "" - @echo " API_ONLY Build invidious without a GUI (Default: 0)" - @echo " NO_DBG_SYMBOLS Strip debug symbols (Default: 0)" - - - -# No targets generates an output named after themselves -.PHONY: all get-libs build amd64 run -.PHONY: format test verify clean distclean help diff --git a/invidious/README.md b/invidious/README.md deleted file mode 100755 index b139c5f..0000000 --- a/invidious/README.md +++ /dev/null @@ -1,170 +0,0 @@ -
- Invidious logo -

Invidious

- - - License: AGPLv3 - - - Build Status - - - GitHub commits - - - GitHub issues - - - GitHub pull requests - - - Translation Status - - - - Awesome Humane Tech - - -

An open source alternative front-end to YouTube

- - Website -  •  - Instances list -  •  - FAQ -  •  - Documentation -  •  - Contribute -  •  - Donate - -
Chat with us:
- - Matrix - - - Libera.chat (IRC) - -
- - Fediverse: @invidious@social.tchncs.de - -
- - E-mail - -
- - -## Screenshots - -| Player | Preferences | Subscriptions | -|-------------------------------------|-------------------------------------|---------------------------------------| -| ![](screenshots/01_player.png) | ![](screenshots/02_preferences.png) | ![](screenshots/03_subscriptions.png) | -| ![](screenshots/04_description.png) | ![](screenshots/05_preferences.png) | ![](screenshots/06_subscriptions.png) | - - -## Features - -**User features** -- Lightweight -- No ads -- No tracking -- No JavaScript required -- Light/Dark themes -- Customizable homepage -- Subscriptions independent from Google -- Notifications for all subscribed channels -- Audio-only mode (with background play on mobile) -- Support for Reddit comments -- [Available in many languages](locales/), thanks to [our translators](#contribute) - -**Data import/export** -- Import subscriptions from YouTube, NewPipe and Freetube -- Import watch history from YouTube and NewPipe -- Export subscriptions to NewPipe and Freetube -- Import/Export Invidious user data - -**Technical features** -- Embedded video support -- [Developer API](https://docs.invidious.io/api/) -- Does not use official YouTube APIs -- No Contributor License Agreement (CLA) - - -## Quick start - -**Using invidious:** - -- [Select a public instance from the list](https://instances.invidious.io) and start watching videos right now! - -**Hosting invidious:** - -- [Follow the installation instructions](https://docs.invidious.io/installation/) - - -## Documentation - -The full documentation can be accessed online at https://docs.invidious.io/ - -The documentation's source code is available in this repository: -https://github.com/iv-org/documentation - -### Extensions - -We highly recommend the use of [Privacy Redirect](https://github.com/SimonBrazell/privacy-redirect#get), -a browser extension that automatically redirects Youtube URLs to any Invidious instance and replaces -embedded youtube videos on other websites with invidious. - -The documentation contains a list of browser extensions that we recommended to use along with Invidious. - -You can read more here: https://docs.invidious.io/applications/ - - -## Contribute - -### Code - -1. Fork it ( https://github.com/iv-org/invidious/fork ). -1. Create your feature branch (`git checkout -b my-new-feature`). -1. Stage your files (`git add .`). -1. Commit your changes (`git commit -am 'Add some feature'`). -1. Push to the branch (`git push origin my-new-feature`). -1. Create a new pull request ( https://github.com/iv-org/invidious/compare ). - -### Translations - -We use [Weblate](https://weblate.org) to manage Invidious translations. - -You can suggest new translations and/or correction here: https://hosted.weblate.org/engage/invidious/. - -Creating an account is not required, but recommended, especially if you want to contribute regularly. -Weblate also allows you to log-in with major SSO providers like Github, Gitlab, BitBucket, Google, ... - - -## Projects using Invidious - -A list of projects and extensions for or utilizing Invidious can be found in the documentation: https://docs.invidious.io/applications/ - -## Liability - -We take no responsibility for the use of our tool, or external instances -provided by third parties. We strongly recommend you abide by the valid -official regulations in your country. Furthermore, we refuse liability -for any inappropriate use of Invidious, such as illegal downloading. -This tool is provided to you in the spirit of free, open software. - -You may view the LICENSE in which this software is provided to you [here](./LICENSE). - -> 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. diff --git a/invidious/TRANSLATION b/invidious/TRANSLATION deleted file mode 100755 index fa340d7..0000000 --- a/invidious/TRANSLATION +++ /dev/null @@ -1 +0,0 @@ -https://hosted.weblate.org/projects/invidious/ diff --git a/invidious/assets/.well-known/dnt-policy.txt b/invidious/assets/.well-known/dnt-policy.txt deleted file mode 100755 index ad946d1..0000000 --- a/invidious/assets/.well-known/dnt-policy.txt +++ /dev/null @@ -1,218 +0,0 @@ -Do Not Track Compliance Policy - -Version 1.0 - -This domain complies with user opt-outs from tracking via the "Do Not Track" -or "DNT" header [http://www.w3.org/TR/tracking-dnt/]. This file will always -be posted via HTTPS at https://example-domain.com/.well-known/dnt-policy.txt -to indicate this fact. - -SCOPE - -This policy document allows an operator of a Fully Qualified Domain Name -("domain") to declare that it respects Do Not Track as a meaningful privacy -opt-out of tracking, so that privacy-protecting software can better determine -whether to block or anonymize communications with this domain. This policy is -intended first and foremost to be posted on domains that publish ads, widgets, -images, scripts and other third-party embedded hypertext (for instance on -widgets.example.com), but it can be posted on any domain, including those users -visit directly (such as www.example.com). The policy may be applied to some -domains used by a company, site, or service, and not to others. Do Not Track -may be sent by any client that uses the HTTP protocol, including websites, -mobile apps, and smart devices like TVs. Do Not Track also works with all -protocols able to read HTTP headers, including SPDY. - -NOTE: This policy contains both Requirements and Exceptions. Where possible -terms are defined in the text, but a few additional definitions are included -at the end. - -REQUIREMENTS - -When this domain receives Web requests from a user who enables DNT by actively -choosing an opt-out setting in their browser or by installing software that is -primarily designed to protect privacy ("DNT User"), we will take the following -measures with respect to those users' data, subject to the Exceptions, also -listed below: - -1. END USER IDENTIFIERS: - - a. If a DNT User has logged in to our service, all user identifiers, such as - unique or nearly unique cookies, "supercookies" and fingerprints are - discarded as soon as the HTTP(S) response is issued. - - Data structures which associate user identifiers with accounts may be - employed to recognize logged in users per Exception 4 below, but may not - be associated with records of the user's activities unless otherwise - excepted. - - b. If a DNT User is not logged in to our service, we will take steps to ensure - that no user identifiers are transmitted to us at all. - -2. LOG RETENTION: - - a. Logs with DNT Users' identifiers removed (but including IP addresses and - User Agent strings) may be retained for a period of 10 days or less, - unless an Exception (below) applies. This period of time balances privacy - concerns with the need to ensure that log processing systems have time to - operate; that operations engineers have time to monitor and fix technical - and performance problems; and that security and data aggregation systems - have time to operate. - - b. These logs will not be used for any other purposes. - -3. OTHER DOMAINS: - - a. If this domain transfers identifiable user data about DNT Users to - contractors, affiliates or other parties, or embeds from or posts data to - other domains, we will either: - - b. ensure that the operators of those domains abide by this policy overall - by posting it at /.well-known/dnt-policy.txt via HTTPS on the domains in - question, - - OR - - ensure that the recipient's policies and practices require the recipient - to respect the policy for our DNT Users' data. - - OR - - obtain a contractual commitment from the recipient to respect this policy - for our DNT Users' data. - - NOTE: if an “Other Domain” does not receive identifiable user information - from the domain because such information has been removed, because the - Other Domain does not log that information, or for some other reason, these - requirements do not apply. - - c. "Identifiable" means any records which are not Anonymized or otherwise - covered by the Exceptions below. - -4. PERIODIC REASSERTION OF COMPLIANCE: - - At least once every 12 months, we will take reasonable steps commensurate - with the size of our organization and the nature of our service to confirm - our ongoing compliance with this document, and we will publicly reassert our - compliance. - -5. USER NOTIFICATION: - - a. If we are required by law to retain or disclose user identifiers, we will - attempt to provide the users with notice (unless we are prohibited or it - would be futile) that a request for their information has been made in - order to give the users an opportunity to object to the retention or - disclosure. - - b. We will attempt to provide this notice by email, if the users have given - us an email address, and by postal mail if the users have provided a - postal address. - - c. If the users do not challenge the disclosure request, we may be legally - required to turn over their information. - - d. We may delay notice if we, in good faith, believe that an emergency - involving danger of death or serious physical injury to any person - requires disclosure without delay of information relating to the - emergency. - -EXCEPTIONS - -Data from DNT Users collected by this domain may be logged or retained only in -the following specific situations: - -1. CONSENT / "OPT BACK IN" - - a. DNT Users are opting out from tracking across the Web. It is possible - that for some feature or functionality, we will need to ask a DNT User to - "opt back in" to be tracked by us across the entire Web. - - b. If we do that, we will take reasonable steps to verify that the users who - select this option have genuinely intended to opt back in to tracking. - One way to do this is by performing scientifically reasonable user - studies with a representative sample of our users, but smaller - organizations can satisfy this requirement by other means. - - c. Where we believe that we have opt back in consent, our server will - send a tracking value status header "Tk: C" as described in section 6.2 - of the W3C Tracking Preference Expression draft: - - http://www.w3.org/TR/tracking-dnt/#tracking-status-value - -2. TRANSACTIONS - - If a DNT User actively and knowingly enters a transaction with our - services (for instance, clicking on a clearly-labeled advertisement, - posting content to a widget, or purchasing an item), we will retain - necessary data for as long as required to perform the transaction. This - may for example include keeping auditing information for clicks on - advertising links; keeping a copy of posted content and the name of the - posting user; keeping server-side session IDs to recognize logged in - users; or keeping a copy of the physical address to which a purchased - item will be shipped. By their nature, some transactions will require data - to be retained indefinitely. - -3. TECHNICAL AND SECURITY LOGGING: - - a. If, during the processing of the initial request (for unique identifiers) - or during the subsequent 10 days (for IP addresses and User Agent strings), - we obtain specific information that causes our employees or systems to - believe that a request is, or is likely to be, part of a security attack, - spam submission, or fraudulent transaction, then logs of those requests - are not subject to this policy. - - b. If we encounter technical problems with our site, then, in rare - circumstances, we may retain logs for longer than 10 days, if that is - necessary to diagnose and fix those problems, but this practice will not be - routinized and we will strive to delete such logs as soon as possible. - -4. AGGREGATION: - - a. We may retain and share anonymized datasets, such as aggregate records of - readership patterns; statistical models of user behavior; graphs of system - variables; data structures to count active users on monthly or yearly - bases; database tables mapping authentication cookies to logged in - accounts; non-unique data structures constructed within browsers for tasks - such as ad frequency capping or conversion tracking; or logs with truncated - and/or encrypted IP addresses and simplified User Agent strings. - - b. "Anonymized" means we have conducted risk mitigation to ensure - that the dataset, plus any additional information that is in our - possession or likely to be available to us, does not allow the - reconstruction of reading habits, online or offline activity of groups of - fewer than 5000 individuals or devices. - - c. If we generate anonymized datasets under this exception we will publicly - document our anonymization methods in sufficient detail to allow outside - experts to evaluate the effectiveness of those methods. - -5. ERRORS: - -From time to time, there may be errors by which user data is temporarily -logged or retained in violation of this policy. If such errors are -inadvertent, rare, and made in good faith, they do not constitute a breach -of this policy. We will delete such data as soon as practicable after we -become aware of any error and take steps to ensure that it is deleted by any -third-party who may have had access to the data. - -ADDITIONAL DEFINITIONS - -"Fully Qualified Domain Name" means a domain name that addresses a computer -connected to the Internet. For instance, example1.com; www.example1.com; -ads.example1.com; and widgets.example2.com are all distinct FQDNs. - -"Supercookie" means any technology other than an HTTP Cookie which can be used -by a server to associate identifiers with the clients that visit it. Examples -of supercookies include Flash LSO cookies, DOM storage, HTML5 storage, or -tricks to store information in caches or etags. - -"Risk mitigation" means an engineering process that evaluates the possibility -and likelihood of various adverse outcomes, considers the available methods of -making those adverse outcomes less likely, and deploys sufficient mitigations -to bring the probability and harm from adverse outcomes below an acceptable -threshold. - -"Reading habits" includes amongst other things lists of visited DNS names, if -those domains pertain to specific topics or activities, but records of visited -DNS names are not reading habits if those domain names serve content of a very -diverse and general nature, thereby revealing minimal information about the -opinions, interests or activities of the user. diff --git a/invidious/assets/android-chrome-192x192.png b/invidious/assets/android-chrome-192x192.png deleted file mode 100755 index a94c969d8a43f4096eb2bc20e6028a8579b98380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3427 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 diff --git a/invidious/assets/apple-touch-icon.png b/invidious/assets/apple-touch-icon.png deleted file mode 100755 index 8f30d5c08651c8c9ead0484c034c488065b281cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3096 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 mqN1XrqN1XrqN1XrqM}cuoHs2hzvJ=%0000 - - - - - #2b5797 - - - diff --git a/invidious/assets/css/carousel.css b/invidious/assets/css/carousel.css deleted file mode 100755 index 4bae92e..0000000 --- a/invidious/assets/css/carousel.css +++ /dev/null @@ -1,119 +0,0 @@ -/* -Copyright (c) 2024 by Jennifer (https://codepen.io/jwjertzoch/pen/JjyGeRy) - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall -be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -*/ - -.carousel { - margin: 0 auto; - overflow: hidden; - text-align: center; -} - -.slides { - width: 100%; - display: flex; - overflow-x: scroll; - scrollbar-width: none; - scroll-snap-type: x mandatory; - scroll-behavior: smooth; -} - -.slides::-webkit-scrollbar { - display: none; -} - -.slides-item { - align-items: center; - border-radius: 10px; - display: flex; - flex-shrink: 0; - font-size: 100px; - height: 600px; - justify-content: center; - margin: 0 1rem; - position: relative; - scroll-snap-align: start; - transform: scale(1); - transform-origin: center center; - transition: transform .5s; - width: 100%; -} - -.carousel__nav { - padding: 1.25rem .5rem; -} - -.slider-nav { - align-items: center; - background-color: #ddd; - border-radius: 50%; - color: #000; - display: inline-flex; - height: 1.5rem; - justify-content: center; - padding: .5rem; - position: relative; - text-decoration: none; - width: 1.5rem; -} - -.skip-link { - height: 1px; - overflow: hidden; - position: absolute; - top: auto; - width: 1px; -} - -.skip-link:focus { - align-items: center; - background-color: #000; - color: #fff; - display: flex; - font-size: 30px; - height: 30px; - justify-content: center; - opacity: .8; - text-decoration: none; - width: 50%; - z-index: 1; -} - -.light-theme .slider-nav { - background-color: #ddd; -} - -.dark-theme .slider-nav { - background-color: #0005; -} - -@media (prefers-color-scheme: light) { - .no-theme .slider-nav { - background-color: #ddd; - } -} - -@media (prefers-color-scheme: dark) { - .no-theme .slider-nav { - background-color: #0005; - } -} diff --git a/invidious/assets/css/default.css b/invidious/assets/css/default.css deleted file mode 100755 index a47762e..0000000 --- a/invidious/assets/css/default.css +++ /dev/null @@ -1,801 +0,0 @@ -/* - * Common attributes - */ - -html, -body { - font-family: BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, - Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, - Arial, sans-serif; -} - -#contents { - display: flex; - flex-direction: column; - min-height: 100vh; - margin: auto; -} - -.h-box { - padding-left: 1em; - padding-right: 1em; -} - -.v-box { - padding-top: 1em; - padding-bottom: 1em; -} - -.deleted { - background-color: rgb(255, 0, 0, 0.5); -} - -.underlined { - border-bottom: 1px solid; - margin-bottom: 20px; -} - -.title { - margin: 0.5em 0 1em 0; -} - -/* A flex container */ -.flexible { - display: flex; - align-items: center; -} - -.flex-left { - display: flex; - flex: 1 1 auto; - flex-flow: row wrap; - justify-content: flex-start; -} -.flex-right { - display: flex; - flex: 2 0 auto; - flex-flow: row nowrap; - justify-content: flex-end; -} - - -/* - * Channel page - */ - -.channel-profile > * { - font-size: 1.17em; - font-weight: bold; - vertical-align: middle; - border-radius: 50%; -} - -.channel-profile > img { - width: 48px; - height: auto; -} - -body a.channel-owner { - background-color: #008bec; - color: #fff; - border-radius: 9px; - padding: 1px 6px; -} - -.creator-heart-container { - display: inline-block; - padding: 0px 7px 6px 0px; - margin: 0px -7px -4px 0px; -} - -.creator-heart { - display: inline-block; - position: relative; - width: 16px; - height: 16px; - border: 2px none; -} - -.creator-heart-background-hearted { - width: 16px; - height: 16px; - padding: 0px; - position: relative; -} - -.creator-heart-small-hearted { - position: absolute; - right: -7px; - bottom: -4px; -} - -.creator-heart-small-container { - display: block; - position: relative; - width: 13px; - height: 13px; - color: rgb(255, 0, 0); -} - -.feed-menu { - display: flex; - justify-content: center; - flex-wrap: wrap; -} - -.feed-menu-item { - text-align: center; -} - -@media screen and (max-width: 640px) { - .feed-menu-item { - flex: 0 0 40%; - } -} - -div { - overflow-wrap: break-word; - word-wrap: break-word; -} - -.loading { - display: inline-block; - animation: spin 2s linear infinite; -} - -.playlist-restricted { - height: 20em; - padding-right: 10px; -} - - -/* - * Buttons - */ - -body a.pure-button { - color: rgba(0,0,0,.8); -} - -button.pure-button-primary, -body a.pure-button-primary, -.channel-owner:hover, -.channel-owner:focus { - background-color: #a0a0a0; - color: rgba(35, 35, 35, 1); -} - -.pure-button-primary, -.pure-button-secondary { - border: 1px solid #a0a0a0; - border-radius: 3px; - margin: 0 .4em; -} - -.pure-button-secondary.low-profile { - padding: 5px 10px; - margin: 0; -} - -/* Has to be combined with flex-left/right */ -.button-container { - flex-flow: wrap; - gap: 0.5em 0.75em; -} - - -/* - * Video thumbnails - */ - -div.thumbnail { - position: relative; - width: 100%; - box-sizing: border-box; -} - -img.thumbnail { - display: block; /* See: https://stackoverflow.com/a/11635197 */ - width: 100%; - object-fit: cover; - aspect-ratio: 16 / 9; -} - -.thumbnail-placeholder { - min-height: 50px; - border: 2px dotted; -} - -div.watched-overlay { - z-index: 50; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(255,255,255,.4); -} - -div.watched-indicator { - position: absolute; - left: 0; - bottom: 0; - height: 4px; - width: 100%; - background-color: red; -} - -div.thumbnail > .top-left-overlay, -div.thumbnail > .bottom-right-overlay { - z-index: 100; - position: absolute; - padding: 0; - margin: 0; - font-size: 16px; -} - -.top-left-overlay { top: 0.6em; left: 0.6em; } -.bottom-right-overlay { bottom: 0.6em; right: 0.6em; } - -.length { - padding: 1px; - margin: -2px 0; - color: #fff; - border-radius: 3px; -} - -.length, .top-left-overlay button { - color: #eee; - background-color: rgba(35, 35, 35, 0.85) !important; -} - - -/* - * Navbar - */ - -.navbar { - margin: 1em 0; - display: flex; /* this is also defined in framework, but in case of future changes */ - align-items: center; - justify-content: space-between; -} - -.navbar > div { - flex: 1; -} - -.searchbar { - flex-grow: 2; /* take double the space of the other items */ -} - -.navbar a { - padding: 0; /* this way it will stay aligned with content under */ -} - -.navbar .index-link { - font-weight: bold; - display: inline; -} - -.searchbar .pure-form fieldset { padding: 0; } - -.searchbar input[type="search"] { - width: 100%; - margin: 1px; - - border: 1px solid; - border-color: rgba(0,0,0,0); - border-bottom-color: #CCC; - border-radius: 0; - - box-shadow: none; - appearance: none; - -webkit-appearance: none; -} - -.searchbar input[type="search"]:focus { - margin: 0; - border: 2px solid; - border-color: rgba(0,0,0,0); - border-bottom-color: #FED; -} - -/* https://stackoverflow.com/a/55170420 */ -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; - height: 14px; - width: 14px; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAn0lEQVR42u3UMQrDMBBEUZ9WfQqDmm22EaTyjRMHAlM5K+Y7lb0wnUZPIKHlnutOa+25Z4D++MRBX98MD1V/trSppLKHqj9TTBWKcoUqffbUcbBBEhTjBOV4ja4l4OIAZThEOV6jHO8ARXD+gPPvKMABinGOrnu6gTNUawrcQKNCAQ7QeTxORzle3+sDfjJpPCqhJh7GixZq4rHcc9l5A9qZ+WeBhgEuAAAAAElFTkSuQmCC); - background-size: 14px; -} - -.user-field { - display: flex; - flex-direction: row; - justify-content: flex-end; - align-items: center; -} - -.user-field div { - width: auto; -} - -.user-field div:not(:last-child) { - margin-right: 1em; -} - - -/* - * Responsive rules - */ - -@media only screen and (max-aspect-ratio: 16/9) { - .player-dimensions.vjs-fluid { - padding-top: 46.86% !important; - } - - #player-container { - padding-bottom: 46.86% !important; - } -} - -@media screen and (max-width: 767px) { - .navbar { - flex-direction: column; - } - - .navbar > div { - display: flex; - justify-content: center; - margin-bottom: 25px; - } - - .navbar > .searchbar > form { - width: 75%; - } - - h1 { - font-size: 1.25em; - margin: 0.42em 0; - } - - /* Space out the subscribe & RSS buttons and align them to the left */ - .title.flexible { display: block; } - .title.flexible > .flex-right { margin: 0.75em 0; justify-content: flex-start; } - - /* Space out buttons to make them easier to tap */ - .user-field { font-size: 125%; } - .user-field > :not(:last-child) { margin-right: 1.75em; } - - .icon-buttons { font-size: 125%; } - .icon-buttons > :not(:last-child) { margin-right: 0.75em; } -} - -@media screen and (max-width: 320px) { - .navbar > .searchbar > form { - width: 100%; - margin: 0 1em; - } -} - - -/* - * Video "cards" (results/playlist/channel videos) - */ - -.video-card-row { margin: 15px 0; } - -p.channel-name { margin: 0; } -p.video-data { margin: 0; font-weight: bold; font-size: 80%; } - - -/* - * Comments & community posts - */ - -.comments { - max-width: 800px; - margin: auto; -} - -/* - * We don't want the top and bottom margin on the post page. - */ -.comments.post-comments { - margin-bottom: 0; - margin-top: 0; -} - -.video-iframe-wrapper { - position: relative; - height: 0; - padding-bottom: 56.25%; -} - -.video-iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: none; -} - - -/* - * Page navigation - */ - -.page-nav-container { margin: 15px 0 30px 0; } - -.page-prev-container { text-align: start; } -.page-next-container { text-align: end; } - -.page-prev-container, -.page-next-container { - display: inline-block; -} - - -/* - * Footer - */ - -footer { - margin-top: auto; - padding: 1.5em 0; - text-align: center; - max-height: 30vh; -} - -.light-theme footer { - color: #7c7c7c; -} - -.dark-theme footer { - color: #adadad; -} - -.light-theme footer a { - color: #7c7c7c !important; -} - -.dark-theme footer a { - color: #adadad !important; -} - -footer span { - margin: 4px 0; - display: block; -} - -/* keyframes */ - -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -fieldset > select, -span > select { - color: rgba(49, 49, 51, 1); -} - -.pure-control-group label { - word-wrap: normal; -} - - -/* - * Light theme - */ - -.light-theme a:hover, -.light-theme a:active, -.light-theme summary:hover, -.light-theme a:focus, -.light-theme summary:focus { - color: #075A9E !important; -} - -.light-theme .pure-button-primary:hover, -.light-theme .pure-button-primary:focus, -.light-theme .pure-button-secondary:hover, -.light-theme .pure-button-secondary:focus { - color: #fff !important; - border-color: rgba(0, 182, 240, 0.75) !important; - background-color: rgba(0, 182, 240, 0.75) !important; -} - -.light-theme .pure-button-secondary:not(.low-profile) { - color: #335d7a; - background-color: #fff2; -} - -.light-theme a { - color: #335d7a; - text-decoration: none; -} - -/* All links that do not fit with the default color goes here */ -.light-theme a:not([data-id]) > .icon, -.light-theme .pure-u-lg-1-5 > .h-box > a[href^="/watch?"], -.light-theme .playlist-restricted > ol > li > a { - color: #303030; -} - -.light-theme .pure-menu-heading { - color: #565d64; -} - -@media (prefers-color-scheme: light) { - .no-theme a:hover, - .no-theme a:active, - .no-theme summary:hover, - .no-theme a:focus, - .no-theme summary:focus { - color: #075A9E !important; - } - - .no-theme .pure-button-primary:hover, - .no-theme .pure-button-primary:focus, - .no-theme .pure-button-secondary:hover, - .no-theme .pure-button-secondary:focus { - color: #fff !important; - border-color: rgba(0, 182, 240, 0.75) !important; - background-color: rgba(0, 182, 240, 0.75) !important; - } - - .no-theme .pure-button-secondary:not(.low-profile) { - color: #335d7a; - background-color: #fff2; - } - - .no-theme a { - color: #335d7a; - text-decoration: none; - } - - /* All links that do not fit with the default color goes here */ - .no-theme a:not([data-id]) > .icon, - .no-theme .pure-u-lg-1-5 > .h-box > a[href^="/watch?"], - .no-theme .playlist-restricted > ol > li > a { - color: #303030; - } - - .no-theme footer { - color: #7c7c7c; - } - - .no-theme footer a { - color: #7c7c7c !important; - } - - .light-theme .pure-menu-heading { - color: #565d64; - } -} - - -/* - * Dark theme - */ - -.dark-theme a:hover, -.dark-theme a:active, -.dark-theme summary:hover, -.dark-theme a:focus, -.dark-theme summary:focus { - color: rgb(0, 182, 240); -} - -.dark-theme .pure-button-primary:hover, -.dark-theme .pure-button-primary:focus, -.dark-theme .pure-button-secondary:hover, -.dark-theme .pure-button-secondary:focus { - color: #fff !important; - border-color: rgb(0, 182, 240) !important; - background-color: rgba(0, 182, 240, 1) !important; -} - -.dark-theme .pure-button-secondary { - background-color: #0002; - color: #ddd; -} - -.dark-theme a { - color: #adadad; - text-decoration: none; -} - -body.dark-theme { - background-color: rgba(35, 35, 35, 1); - color: #f0f0f0; -} - -.dark-theme .pure-form legend { - color: #f0f0f0; -} - -.dark-theme .pure-menu-heading { - color: #f0f0f0; -} - -.dark-theme input, -.dark-theme select, -.dark-theme textarea { - color: rgba(35, 35, 35, 1); -} - -.dark-theme .pure-form input[type="file"] { - color: #f0f0f0; -} - -.dark-theme .searchbar input { - background-color: inherit; - color: inherit; -} - -@media (prefers-color-scheme: dark) { - .no-theme a:hover, - .no-theme a:active, - .no-theme a:focus { - color: rgb(0, 182, 240); - } - - .no-theme .pure-button-primary:hover, - .no-theme .pure-button-primary:focus, - .no-theme .pure-button-secondary:hover, - .no-theme .pure-button-secondary:focus { - color: #fff !important; - border-color: rgb(0, 182, 240) !important; - background-color: rgba(0, 182, 240, 1) !important; - } - - .no-theme .pure-button-secondary { - background-color: #0002; - color: #ddd; - } - - .no-theme a { - color: #adadad; - text-decoration: none; - } - - body.no-theme { - background-color: rgba(35, 35, 35, 1); - color: #f0f0f0; - } - - .no-theme .pure-form legend { - color: #f0f0f0; - } - - .no-theme .pure-menu-heading { - color: #f0f0f0; - } - - .no-theme input, - .no-theme select, - .no-theme textarea { - color: rgba(35, 35, 35, 1); - } - - .no-theme .pure-form input[type="file"] { - color: #f0f0f0; - } - - .no-theme .searchbar input { - background-color: inherit; - color: inherit; - } - - .no-theme footer { - color: #adadad; - } - - .no-theme footer a { - color: #adadad !important; - } -} - - -/* - * Miscellanous - */ - - -/*With commit d9528f5 all contents of the page is now within a flexbox. However, -the hr element is rendered improperly within one. -See https://stackoverflow.com/a/34372979 for more info */ -hr { - margin: 10px 0 10px 0; -} - -/* Description Expansion Styling*/ -#descexpansionbutton, -#music-desc-expansion { - display: none; -} - -#descexpansionbutton ~ div { - overflow: hidden; -} - -#descexpansionbutton:not(:checked) ~ div { - max-height: 8.3em; -} - -#descexpansionbutton:checked ~ div { - overflow: unset; - height: 100%; -} - -#descexpansionbutton ~ label { - order: 1; - margin-top: 20px; -} - -label[for="descexpansionbutton"]:hover, -label[for="music-desc-expansion"]:hover { - cursor: pointer; -} - -/* Bidi (bidirectional text) support */ -h1, h2, h3, h4, h5, p, -#descriptionWrapper, -#description-box, -#music-description-box { - unicode-bidi: plaintext; - text-align: start; -} - -#descriptionWrapper { - max-width: 600px; - white-space: pre-wrap; -} - -#music-description-box { - display: none; -} - -#music-desc-expansion:checked ~ #music-description-box { - display: block; -} - -#music-desc-expansion ~ label > h3 > .ion-ios-arrow-up, -#music-desc-expansion:checked ~ label > h3 > .ion-ios-arrow-down { - display: none; -} - -#music-desc-expansion:checked ~ label > h3 > .ion-ios-arrow-up, -#music-desc-expansion ~ label > h3 > .ion-ios-arrow-down { - display: inline; -} - -/* Select all the music items except the first one */ -.music-item + .music-item { - border-top: 1px solid #ffffff; -} - -/* Center the "invidious" logo on the search page */ -#logo > h1 { text-align: center; } - -/* IE11 fixes */ -:-ms-input-placeholder { color: #888; } - -/* Wider settings name to less word wrap */ -.pure-form-aligned .pure-control-group label { width: 19em; } - -.channel-emoji { - margin: 0 2px; -} - -#download_widget { - width: 100%; -} diff --git a/invidious/assets/css/embed.css b/invidious/assets/css/embed.css deleted file mode 100755 index cbafcfe..0000000 --- a/invidious/assets/css/embed.css +++ /dev/null @@ -1,27 +0,0 @@ -#player { - position: fixed; - right: 0; - bottom: 0; - min-width: 100%; - min-height: 100%; - width: auto; - height: auto; - z-index: -100; -} - -.watch-on-invidious { - font-size: 1.3em !important; - font-weight: bold; - white-space: nowrap; - margin: 0 1em 0 1em !important; - order: 3; -} - -.watch-on-invidious > a { - color: white; -} - -.watch-on-invidious > a:hover, -.watch-on-invidious > a:focus { - color: rgba(0, 182, 240, 1);; -} diff --git a/invidious/assets/css/empty.css b/invidious/assets/css/empty.css deleted file mode 100755 index 6ad1515..0000000 --- a/invidious/assets/css/empty.css +++ /dev/null @@ -1,16 +0,0 @@ -#search-widget { - text-align: center; - margin: 20vh 0 50px 0; -} - -#logo > h1 { - font-size: 3.5em; - margin: 0; - padding: 0; -} - -@media screen and (max-width: 1500px) and (max-height: 1000px) { - #logo > h1 { - font-size: 10vmin; - } -} diff --git a/invidious/assets/css/grids-responsive-min.css b/invidious/assets/css/grids-responsive-min.css deleted file mode 100755 index ee11e6d..0000000 --- a/invidious/assets/css/grids-responsive-min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! -Pure v1.0.1 -Copyright 2013 Yahoo! -Licensed under the BSD License. -https://github.com/pure-css/pure/blob/master/LICENSE.md -*/ -@media screen and (min-width:35.5em){.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-1-12,.pure-u-sm-1-2,.pure-u-sm-1-24,.pure-u-sm-1-3,.pure-u-sm-1-4,.pure-u-sm-1-5,.pure-u-sm-1-6,.pure-u-sm-1-8,.pure-u-sm-10-24,.pure-u-sm-11-12,.pure-u-sm-11-24,.pure-u-sm-12-24,.pure-u-sm-13-24,.pure-u-sm-14-24,.pure-u-sm-15-24,.pure-u-sm-16-24,.pure-u-sm-17-24,.pure-u-sm-18-24,.pure-u-sm-19-24,.pure-u-sm-2-24,.pure-u-sm-2-3,.pure-u-sm-2-5,.pure-u-sm-20-24,.pure-u-sm-21-24,.pure-u-sm-22-24,.pure-u-sm-23-24,.pure-u-sm-24-24,.pure-u-sm-3-24,.pure-u-sm-3-4,.pure-u-sm-3-5,.pure-u-sm-3-8,.pure-u-sm-4-24,.pure-u-sm-4-5,.pure-u-sm-5-12,.pure-u-sm-5-24,.pure-u-sm-5-5,.pure-u-sm-5-6,.pure-u-sm-5-8,.pure-u-sm-6-24,.pure-u-sm-7-12,.pure-u-sm-7-24,.pure-u-sm-7-8,.pure-u-sm-8-24,.pure-u-sm-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-sm-1-24{width:4.1667%}.pure-u-sm-1-12,.pure-u-sm-2-24{width:8.3333%}.pure-u-sm-1-8,.pure-u-sm-3-24{width:12.5%}.pure-u-sm-1-6,.pure-u-sm-4-24{width:16.6667%}.pure-u-sm-1-5{width:20%}.pure-u-sm-5-24{width:20.8333%}.pure-u-sm-1-4,.pure-u-sm-6-24{width:25%}.pure-u-sm-7-24{width:29.1667%}.pure-u-sm-1-3,.pure-u-sm-8-24{width:33.3333%}.pure-u-sm-3-8,.pure-u-sm-9-24{width:37.5%}.pure-u-sm-2-5{width:40%}.pure-u-sm-10-24,.pure-u-sm-5-12{width:41.6667%}.pure-u-sm-11-24{width:45.8333%}.pure-u-sm-1-2,.pure-u-sm-12-24{width:50%}.pure-u-sm-13-24{width:54.1667%}.pure-u-sm-14-24,.pure-u-sm-7-12{width:58.3333%}.pure-u-sm-3-5{width:60%}.pure-u-sm-15-24,.pure-u-sm-5-8{width:62.5%}.pure-u-sm-16-24,.pure-u-sm-2-3{width:66.6667%}.pure-u-sm-17-24{width:70.8333%}.pure-u-sm-18-24,.pure-u-sm-3-4{width:75%}.pure-u-sm-19-24{width:79.1667%}.pure-u-sm-4-5{width:80%}.pure-u-sm-20-24,.pure-u-sm-5-6{width:83.3333%}.pure-u-sm-21-24,.pure-u-sm-7-8{width:87.5%}.pure-u-sm-11-12,.pure-u-sm-22-24{width:91.6667%}.pure-u-sm-23-24{width:95.8333%}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-24-24,.pure-u-sm-5-5{width:100%}}@media screen and (min-width:48em){.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-1-12,.pure-u-md-1-2,.pure-u-md-1-24,.pure-u-md-1-3,.pure-u-md-1-4,.pure-u-md-1-5,.pure-u-md-1-6,.pure-u-md-1-8,.pure-u-md-10-24,.pure-u-md-11-12,.pure-u-md-11-24,.pure-u-md-12-24,.pure-u-md-13-24,.pure-u-md-14-24,.pure-u-md-15-24,.pure-u-md-16-24,.pure-u-md-17-24,.pure-u-md-18-24,.pure-u-md-19-24,.pure-u-md-2-24,.pure-u-md-2-3,.pure-u-md-2-5,.pure-u-md-20-24,.pure-u-md-21-24,.pure-u-md-22-24,.pure-u-md-23-24,.pure-u-md-24-24,.pure-u-md-3-24,.pure-u-md-3-4,.pure-u-md-3-5,.pure-u-md-3-8,.pure-u-md-4-24,.pure-u-md-4-5,.pure-u-md-5-12,.pure-u-md-5-24,.pure-u-md-5-5,.pure-u-md-5-6,.pure-u-md-5-8,.pure-u-md-6-24,.pure-u-md-7-12,.pure-u-md-7-24,.pure-u-md-7-8,.pure-u-md-8-24,.pure-u-md-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-md-1-24{width:4.1667%}.pure-u-md-1-12,.pure-u-md-2-24{width:8.3333%}.pure-u-md-1-8,.pure-u-md-3-24{width:12.5%}.pure-u-md-1-6,.pure-u-md-4-24{width:16.6667%}.pure-u-md-1-5{width:20%}.pure-u-md-5-24{width:20.8333%}.pure-u-md-1-4,.pure-u-md-6-24{width:25%}.pure-u-md-7-24{width:29.1667%}.pure-u-md-1-3,.pure-u-md-8-24{width:33.3333%}.pure-u-md-3-8,.pure-u-md-9-24{width:37.5%}.pure-u-md-2-5{width:40%}.pure-u-md-10-24,.pure-u-md-5-12{width:41.6667%}.pure-u-md-11-24{width:45.8333%}.pure-u-md-1-2,.pure-u-md-12-24{width:50%}.pure-u-md-13-24{width:54.1667%}.pure-u-md-14-24,.pure-u-md-7-12{width:58.3333%}.pure-u-md-3-5{width:60%}.pure-u-md-15-24,.pure-u-md-5-8{width:62.5%}.pure-u-md-16-24,.pure-u-md-2-3{width:66.6667%}.pure-u-md-17-24{width:70.8333%}.pure-u-md-18-24,.pure-u-md-3-4{width:75%}.pure-u-md-19-24{width:79.1667%}.pure-u-md-4-5{width:80%}.pure-u-md-20-24,.pure-u-md-5-6{width:83.3333%}.pure-u-md-21-24,.pure-u-md-7-8{width:87.5%}.pure-u-md-11-12,.pure-u-md-22-24{width:91.6667%}.pure-u-md-23-24{width:95.8333%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-24-24,.pure-u-md-5-5{width:100%}}@media screen and (min-width:64em){.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-1-12,.pure-u-lg-1-2,.pure-u-lg-1-24,.pure-u-lg-1-3,.pure-u-lg-1-4,.pure-u-lg-1-5,.pure-u-lg-1-6,.pure-u-lg-1-8,.pure-u-lg-10-24,.pure-u-lg-11-12,.pure-u-lg-11-24,.pure-u-lg-12-24,.pure-u-lg-13-24,.pure-u-lg-14-24,.pure-u-lg-15-24,.pure-u-lg-16-24,.pure-u-lg-17-24,.pure-u-lg-18-24,.pure-u-lg-19-24,.pure-u-lg-2-24,.pure-u-lg-2-3,.pure-u-lg-2-5,.pure-u-lg-20-24,.pure-u-lg-21-24,.pure-u-lg-22-24,.pure-u-lg-23-24,.pure-u-lg-24-24,.pure-u-lg-3-24,.pure-u-lg-3-4,.pure-u-lg-3-5,.pure-u-lg-3-8,.pure-u-lg-4-24,.pure-u-lg-4-5,.pure-u-lg-5-12,.pure-u-lg-5-24,.pure-u-lg-5-5,.pure-u-lg-5-6,.pure-u-lg-5-8,.pure-u-lg-6-24,.pure-u-lg-7-12,.pure-u-lg-7-24,.pure-u-lg-7-8,.pure-u-lg-8-24,.pure-u-lg-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-lg-1-24{width:4.1667%}.pure-u-lg-1-12,.pure-u-lg-2-24{width:8.3333%}.pure-u-lg-1-8,.pure-u-lg-3-24{width:12.5%}.pure-u-lg-1-6,.pure-u-lg-4-24{width:16.6667%}.pure-u-lg-1-5{width:20%}.pure-u-lg-5-24{width:20.8333%}.pure-u-lg-1-4,.pure-u-lg-6-24{width:25%}.pure-u-lg-7-24{width:29.1667%}.pure-u-lg-1-3,.pure-u-lg-8-24{width:33.3333%}.pure-u-lg-3-8,.pure-u-lg-9-24{width:37.5%}.pure-u-lg-2-5{width:40%}.pure-u-lg-10-24,.pure-u-lg-5-12{width:41.6667%}.pure-u-lg-11-24{width:45.8333%}.pure-u-lg-1-2,.pure-u-lg-12-24{width:50%}.pure-u-lg-13-24{width:54.1667%}.pure-u-lg-14-24,.pure-u-lg-7-12{width:58.3333%}.pure-u-lg-3-5{width:60%}.pure-u-lg-15-24,.pure-u-lg-5-8{width:62.5%}.pure-u-lg-16-24,.pure-u-lg-2-3{width:66.6667%}.pure-u-lg-17-24{width:70.8333%}.pure-u-lg-18-24,.pure-u-lg-3-4{width:75%}.pure-u-lg-19-24{width:79.1667%}.pure-u-lg-4-5{width:80%}.pure-u-lg-20-24,.pure-u-lg-5-6{width:83.3333%}.pure-u-lg-21-24,.pure-u-lg-7-8{width:87.5%}.pure-u-lg-11-12,.pure-u-lg-22-24{width:91.6667%}.pure-u-lg-23-24{width:95.8333%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-24-24,.pure-u-lg-5-5{width:100%}}@media screen and (min-width:80em){.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-1-12,.pure-u-xl-1-2,.pure-u-xl-1-24,.pure-u-xl-1-3,.pure-u-xl-1-4,.pure-u-xl-1-5,.pure-u-xl-1-6,.pure-u-xl-1-8,.pure-u-xl-10-24,.pure-u-xl-11-12,.pure-u-xl-11-24,.pure-u-xl-12-24,.pure-u-xl-13-24,.pure-u-xl-14-24,.pure-u-xl-15-24,.pure-u-xl-16-24,.pure-u-xl-17-24,.pure-u-xl-18-24,.pure-u-xl-19-24,.pure-u-xl-2-24,.pure-u-xl-2-3,.pure-u-xl-2-5,.pure-u-xl-20-24,.pure-u-xl-21-24,.pure-u-xl-22-24,.pure-u-xl-23-24,.pure-u-xl-24-24,.pure-u-xl-3-24,.pure-u-xl-3-4,.pure-u-xl-3-5,.pure-u-xl-3-8,.pure-u-xl-4-24,.pure-u-xl-4-5,.pure-u-xl-5-12,.pure-u-xl-5-24,.pure-u-xl-5-5,.pure-u-xl-5-6,.pure-u-xl-5-8,.pure-u-xl-6-24,.pure-u-xl-7-12,.pure-u-xl-7-24,.pure-u-xl-7-8,.pure-u-xl-8-24,.pure-u-xl-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xl-1-24{width:4.1667%}.pure-u-xl-1-12,.pure-u-xl-2-24{width:8.3333%}.pure-u-xl-1-8,.pure-u-xl-3-24{width:12.5%}.pure-u-xl-1-6,.pure-u-xl-4-24{width:16.6667%}.pure-u-xl-1-5{width:20%}.pure-u-xl-5-24{width:20.8333%}.pure-u-xl-1-4,.pure-u-xl-6-24{width:25%}.pure-u-xl-7-24{width:29.1667%}.pure-u-xl-1-3,.pure-u-xl-8-24{width:33.3333%}.pure-u-xl-3-8,.pure-u-xl-9-24{width:37.5%}.pure-u-xl-2-5{width:40%}.pure-u-xl-10-24,.pure-u-xl-5-12{width:41.6667%}.pure-u-xl-11-24{width:45.8333%}.pure-u-xl-1-2,.pure-u-xl-12-24{width:50%}.pure-u-xl-13-24{width:54.1667%}.pure-u-xl-14-24,.pure-u-xl-7-12{width:58.3333%}.pure-u-xl-3-5{width:60%}.pure-u-xl-15-24,.pure-u-xl-5-8{width:62.5%}.pure-u-xl-16-24,.pure-u-xl-2-3{width:66.6667%}.pure-u-xl-17-24{width:70.8333%}.pure-u-xl-18-24,.pure-u-xl-3-4{width:75%}.pure-u-xl-19-24{width:79.1667%}.pure-u-xl-4-5{width:80%}.pure-u-xl-20-24,.pure-u-xl-5-6{width:83.3333%}.pure-u-xl-21-24,.pure-u-xl-7-8{width:87.5%}.pure-u-xl-11-12,.pure-u-xl-22-24{width:91.6667%}.pure-u-xl-23-24{width:95.8333%}.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-24-24,.pure-u-xl-5-5{width:100%}} \ No newline at end of file diff --git a/invidious/assets/css/ionicons.min.css b/invidious/assets/css/ionicons.min.css deleted file mode 100755 index 454b6bb..0000000 --- a/invidious/assets/css/ionicons.min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! - Ionicons, v4.6.3 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=4.6.3");src:url("../fonts/ionicons.eot?v=4.6.3#iefix") format("embedded-opentype"),url("../fonts/ionicons.woff2?v=4.6.3") format("woff2"),url("../fonts/ionicons.woff?v=4.6.3") format("woff"),url("../fonts/ionicons.ttf?v=4.6.3") format("truetype"),url("../fonts/ionicons.svg?v=4.6.3#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-ios-add:before,.ion-ios-add-circle:before,.ion-ios-add-circle-outline:before,.ion-ios-airplane:before,.ion-ios-alarm:before,.ion-ios-albums:before,.ion-ios-alert:before,.ion-ios-american-football:before,.ion-ios-analytics:before,.ion-ios-aperture:before,.ion-ios-apps:before,.ion-ios-appstore:before,.ion-ios-archive:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-dropdown:before,.ion-ios-arrow-dropdown-circle:before,.ion-ios-arrow-dropleft:before,.ion-ios-arrow-dropleft-circle:before,.ion-ios-arrow-dropright:before,.ion-ios-arrow-dropright-circle:before,.ion-ios-arrow-dropup:before,.ion-ios-arrow-dropup-circle:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-round-back:before,.ion-ios-arrow-round-down:before,.ion-ios-arrow-round-forward:before,.ion-ios-arrow-round-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-attach:before,.ion-ios-backspace:before,.ion-ios-barcode:before,.ion-ios-baseball:before,.ion-ios-basket:before,.ion-ios-basketball:before,.ion-ios-battery-charging:before,.ion-ios-battery-dead:before,.ion-ios-battery-full:before,.ion-ios-beaker:before,.ion-ios-bed:before,.ion-ios-beer:before,.ion-ios-bicycle:before,.ion-ios-bluetooth:before,.ion-ios-boat:before,.ion-ios-body:before,.ion-ios-bonfire:before,.ion-ios-book:before,.ion-ios-bookmark:before,.ion-ios-bookmarks:before,.ion-ios-bowtie:before,.ion-ios-briefcase:before,.ion-ios-browsers:before,.ion-ios-brush:before,.ion-ios-bug:before,.ion-ios-build:before,.ion-ios-bulb:before,.ion-ios-bus:before,.ion-ios-business:before,.ion-ios-cafe:before,.ion-ios-calculator:before,.ion-ios-calendar:before,.ion-ios-call:before,.ion-ios-camera:before,.ion-ios-car:before,.ion-ios-card:before,.ion-ios-cart:before,.ion-ios-cash:before,.ion-ios-cellular:before,.ion-ios-chatboxes:before,.ion-ios-chatbubbles:before,.ion-ios-checkbox:before,.ion-ios-checkbox-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-circle:before,.ion-ios-checkmark-circle-outline:before,.ion-ios-clipboard:before,.ion-ios-clock:before,.ion-ios-close:before,.ion-ios-close-circle:before,.ion-ios-close-circle-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-circle:before,.ion-ios-cloud-done:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-code:before,.ion-ios-code-download:before,.ion-ios-code-working:before,.ion-ios-cog:before,.ion-ios-color-fill:before,.ion-ios-color-filter:before,.ion-ios-color-palette:before,.ion-ios-color-wand:before,.ion-ios-compass:before,.ion-ios-construct:before,.ion-ios-contact:before,.ion-ios-contacts:before,.ion-ios-contract:before,.ion-ios-contrast:before,.ion-ios-copy:before,.ion-ios-create:before,.ion-ios-crop:before,.ion-ios-cube:before,.ion-ios-cut:before,.ion-ios-desktop:before,.ion-ios-disc:before,.ion-ios-document:before,.ion-ios-done-all:before,.ion-ios-download:before,.ion-ios-easel:before,.ion-ios-egg:before,.ion-ios-exit:before,.ion-ios-expand:before,.ion-ios-eye:before,.ion-ios-eye-off:before,.ion-ios-fastforward:before,.ion-ios-female:before,.ion-ios-filing:before,.ion-ios-film:before,.ion-ios-finger-print:before,.ion-ios-fitness:before,.ion-ios-flag:before,.ion-ios-flame:before,.ion-ios-flash:before,.ion-ios-flash-off:before,.ion-ios-flashlight:before,.ion-ios-flask:before,.ion-ios-flower:before,.ion-ios-folder:before,.ion-ios-folder-open:before,.ion-ios-football:before,.ion-ios-funnel:before,.ion-ios-gift:before,.ion-ios-git-branch:before,.ion-ios-git-commit:before,.ion-ios-git-compare:before,.ion-ios-git-merge:before,.ion-ios-git-network:before,.ion-ios-git-pull-request:before,.ion-ios-glasses:before,.ion-ios-globe:before,.ion-ios-grid:before,.ion-ios-hammer:before,.ion-ios-hand:before,.ion-ios-happy:before,.ion-ios-headset:before,.ion-ios-heart:before,.ion-ios-heart-dislike:before,.ion-ios-heart-empty:before,.ion-ios-heart-half:before,.ion-ios-help:before,.ion-ios-help-buoy:before,.ion-ios-help-circle:before,.ion-ios-help-circle-outline:before,.ion-ios-home:before,.ion-ios-hourglass:before,.ion-ios-ice-cream:before,.ion-ios-image:before,.ion-ios-images:before,.ion-ios-infinite:before,.ion-ios-information:before,.ion-ios-information-circle:before,.ion-ios-information-circle-outline:before,.ion-ios-jet:before,.ion-ios-journal:before,.ion-ios-key:before,.ion-ios-keypad:before,.ion-ios-laptop:before,.ion-ios-leaf:before,.ion-ios-link:before,.ion-ios-list:before,.ion-ios-list-box:before,.ion-ios-locate:before,.ion-ios-lock:before,.ion-ios-log-in:before,.ion-ios-log-out:before,.ion-ios-magnet:before,.ion-ios-mail:before,.ion-ios-mail-open:before,.ion-ios-mail-unread:before,.ion-ios-male:before,.ion-ios-man:before,.ion-ios-map:before,.ion-ios-medal:before,.ion-ios-medical:before,.ion-ios-medkit:before,.ion-ios-megaphone:before,.ion-ios-menu:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-microphone:before,.ion-ios-moon:before,.ion-ios-more:before,.ion-ios-move:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-notifications:before,.ion-ios-notifications-off:before,.ion-ios-notifications-outline:before,.ion-ios-nuclear:before,.ion-ios-nutrition:before,.ion-ios-open:before,.ion-ios-options:before,.ion-ios-outlet:before,.ion-ios-paper:before,.ion-ios-paper-plane:before,.ion-ios-partly-sunny:before,.ion-ios-pause:before,.ion-ios-paw:before,.ion-ios-people:before,.ion-ios-person:before,.ion-ios-person-add:before,.ion-ios-phone-landscape:before,.ion-ios-phone-portrait:before,.ion-ios-photos:before,.ion-ios-pie:before,.ion-ios-pin:before,.ion-ios-pint:before,.ion-ios-pizza:before,.ion-ios-planet:before,.ion-ios-play:before,.ion-ios-play-circle:before,.ion-ios-podium:before,.ion-ios-power:before,.ion-ios-pricetag:before,.ion-ios-pricetags:before,.ion-ios-print:before,.ion-ios-pulse:before,.ion-ios-qr-scanner:before,.ion-ios-quote:before,.ion-ios-radio:before,.ion-ios-radio-button-off:before,.ion-ios-radio-button-on:before,.ion-ios-rainy:before,.ion-ios-recording:before,.ion-ios-redo:before,.ion-ios-refresh:before,.ion-ios-refresh-circle:before,.ion-ios-remove:before,.ion-ios-remove-circle:before,.ion-ios-remove-circle-outline:before,.ion-ios-reorder:before,.ion-ios-repeat:before,.ion-ios-resize:before,.ion-ios-restaurant:before,.ion-ios-return-left:before,.ion-ios-return-right:before,.ion-ios-reverse-camera:before,.ion-ios-rewind:before,.ion-ios-ribbon:before,.ion-ios-rocket:before,.ion-ios-rose:before,.ion-ios-sad:before,.ion-ios-save:before,.ion-ios-school:before,.ion-ios-search:before,.ion-ios-send:before,.ion-ios-settings:before,.ion-ios-share:before,.ion-ios-share-alt:before,.ion-ios-shirt:before,.ion-ios-shuffle:before,.ion-ios-skip-backward:before,.ion-ios-skip-forward:before,.ion-ios-snow:before,.ion-ios-speedometer:before,.ion-ios-square:before,.ion-ios-square-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stats:before,.ion-ios-stopwatch:before,.ion-ios-subway:before,.ion-ios-sunny:before,.ion-ios-swap:before,.ion-ios-switch:before,.ion-ios-sync:before,.ion-ios-tablet-landscape:before,.ion-ios-tablet-portrait:before,.ion-ios-tennisball:before,.ion-ios-text:before,.ion-ios-thermometer:before,.ion-ios-thumbs-down:before,.ion-ios-thumbs-up:before,.ion-ios-thunderstorm:before,.ion-ios-time:before,.ion-ios-timer:before,.ion-ios-today:before,.ion-ios-train:before,.ion-ios-transgender:before,.ion-ios-trash:before,.ion-ios-trending-down:before,.ion-ios-trending-up:before,.ion-ios-trophy:before,.ion-ios-tv:before,.ion-ios-umbrella:before,.ion-ios-undo:before,.ion-ios-unlock:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-volume-mute:before,.ion-ios-volume-off:before,.ion-ios-walk:before,.ion-ios-wallet:before,.ion-ios-warning:before,.ion-ios-watch:before,.ion-ios-water:before,.ion-ios-wifi:before,.ion-ios-wine:before,.ion-ios-woman:before,.ion-logo-android:before,.ion-logo-angular:before,.ion-logo-apple:before,.ion-logo-bitbucket:before,.ion-logo-bitcoin:before,.ion-logo-buffer:before,.ion-logo-chrome:before,.ion-logo-closed-captioning:before,.ion-logo-codepen:before,.ion-logo-css3:before,.ion-logo-designernews:before,.ion-logo-dribbble:before,.ion-logo-dropbox:before,.ion-logo-euro:before,.ion-logo-facebook:before,.ion-logo-flickr:before,.ion-logo-foursquare:before,.ion-logo-freebsd-devil:before,.ion-logo-game-controller-a:before,.ion-logo-game-controller-b:before,.ion-logo-github:before,.ion-logo-google:before,.ion-logo-googleplus:before,.ion-logo-hackernews:before,.ion-logo-html5:before,.ion-logo-instagram:before,.ion-logo-ionic:before,.ion-logo-ionitron:before,.ion-logo-javascript:before,.ion-logo-linkedin:before,.ion-logo-markdown:before,.ion-logo-model-s:before,.ion-logo-no-smoking:before,.ion-logo-nodejs:before,.ion-logo-npm:before,.ion-logo-octocat:before,.ion-logo-pinterest:before,.ion-logo-playstation:before,.ion-logo-polymer:before,.ion-logo-python:before,.ion-logo-reddit:before,.ion-logo-rss:before,.ion-logo-sass:before,.ion-logo-skype:before,.ion-logo-slack:before,.ion-logo-snapchat:before,.ion-logo-steam:before,.ion-logo-tumblr:before,.ion-logo-tux:before,.ion-logo-twitch:before,.ion-logo-twitter:before,.ion-logo-usd:before,.ion-logo-vimeo:before,.ion-logo-vk:before,.ion-logo-whatsapp:before,.ion-logo-windows:before,.ion-logo-wordpress:before,.ion-logo-xbox:before,.ion-logo-xing:before,.ion-logo-yahoo:before,.ion-logo-yen:before,.ion-logo-youtube:before,.ion-md-add:before,.ion-md-add-circle:before,.ion-md-add-circle-outline:before,.ion-md-airplane:before,.ion-md-alarm:before,.ion-md-albums:before,.ion-md-alert:before,.ion-md-american-football:before,.ion-md-analytics:before,.ion-md-aperture:before,.ion-md-apps:before,.ion-md-appstore:before,.ion-md-archive:before,.ion-md-arrow-back:before,.ion-md-arrow-down:before,.ion-md-arrow-dropdown:before,.ion-md-arrow-dropdown-circle:before,.ion-md-arrow-dropleft:before,.ion-md-arrow-dropleft-circle:before,.ion-md-arrow-dropright:before,.ion-md-arrow-dropright-circle:before,.ion-md-arrow-dropup:before,.ion-md-arrow-dropup-circle:before,.ion-md-arrow-forward:before,.ion-md-arrow-round-back:before,.ion-md-arrow-round-down:before,.ion-md-arrow-round-forward:before,.ion-md-arrow-round-up:before,.ion-md-arrow-up:before,.ion-md-at:before,.ion-md-attach:before,.ion-md-backspace:before,.ion-md-barcode:before,.ion-md-baseball:before,.ion-md-basket:before,.ion-md-basketball:before,.ion-md-battery-charging:before,.ion-md-battery-dead:before,.ion-md-battery-full:before,.ion-md-beaker:before,.ion-md-bed:before,.ion-md-beer:before,.ion-md-bicycle:before,.ion-md-bluetooth:before,.ion-md-boat:before,.ion-md-body:before,.ion-md-bonfire:before,.ion-md-book:before,.ion-md-bookmark:before,.ion-md-bookmarks:before,.ion-md-bowtie:before,.ion-md-briefcase:before,.ion-md-browsers:before,.ion-md-brush:before,.ion-md-bug:before,.ion-md-build:before,.ion-md-bulb:before,.ion-md-bus:before,.ion-md-business:before,.ion-md-cafe:before,.ion-md-calculator:before,.ion-md-calendar:before,.ion-md-call:before,.ion-md-camera:before,.ion-md-car:before,.ion-md-card:before,.ion-md-cart:before,.ion-md-cash:before,.ion-md-cellular:before,.ion-md-chatboxes:before,.ion-md-chatbubbles:before,.ion-md-checkbox:before,.ion-md-checkbox-outline:before,.ion-md-checkmark:before,.ion-md-checkmark-circle:before,.ion-md-checkmark-circle-outline:before,.ion-md-clipboard:before,.ion-md-clock:before,.ion-md-close:before,.ion-md-close-circle:before,.ion-md-close-circle-outline:before,.ion-md-cloud:before,.ion-md-cloud-circle:before,.ion-md-cloud-done:before,.ion-md-cloud-download:before,.ion-md-cloud-outline:before,.ion-md-cloud-upload:before,.ion-md-cloudy:before,.ion-md-cloudy-night:before,.ion-md-code:before,.ion-md-code-download:before,.ion-md-code-working:before,.ion-md-cog:before,.ion-md-color-fill:before,.ion-md-color-filter:before,.ion-md-color-palette:before,.ion-md-color-wand:before,.ion-md-compass:before,.ion-md-construct:before,.ion-md-contact:before,.ion-md-contacts:before,.ion-md-contract:before,.ion-md-contrast:before,.ion-md-copy:before,.ion-md-create:before,.ion-md-crop:before,.ion-md-cube:before,.ion-md-cut:before,.ion-md-desktop:before,.ion-md-disc:before,.ion-md-document:before,.ion-md-done-all:before,.ion-md-download:before,.ion-md-easel:before,.ion-md-egg:before,.ion-md-exit:before,.ion-md-expand:before,.ion-md-eye:before,.ion-md-eye-off:before,.ion-md-fastforward:before,.ion-md-female:before,.ion-md-filing:before,.ion-md-film:before,.ion-md-finger-print:before,.ion-md-fitness:before,.ion-md-flag:before,.ion-md-flame:before,.ion-md-flash:before,.ion-md-flash-off:before,.ion-md-flashlight:before,.ion-md-flask:before,.ion-md-flower:before,.ion-md-folder:before,.ion-md-folder-open:before,.ion-md-football:before,.ion-md-funnel:before,.ion-md-gift:before,.ion-md-git-branch:before,.ion-md-git-commit:before,.ion-md-git-compare:before,.ion-md-git-merge:before,.ion-md-git-network:before,.ion-md-git-pull-request:before,.ion-md-glasses:before,.ion-md-globe:before,.ion-md-grid:before,.ion-md-hammer:before,.ion-md-hand:before,.ion-md-happy:before,.ion-md-headset:before,.ion-md-heart:before,.ion-md-heart-dislike:before,.ion-md-heart-empty:before,.ion-md-heart-half:before,.ion-md-help:before,.ion-md-help-buoy:before,.ion-md-help-circle:before,.ion-md-help-circle-outline:before,.ion-md-home:before,.ion-md-hourglass:before,.ion-md-ice-cream:before,.ion-md-image:before,.ion-md-images:before,.ion-md-infinite:before,.ion-md-information:before,.ion-md-information-circle:before,.ion-md-information-circle-outline:before,.ion-md-jet:before,.ion-md-journal:before,.ion-md-key:before,.ion-md-keypad:before,.ion-md-laptop:before,.ion-md-leaf:before,.ion-md-link:before,.ion-md-list:before,.ion-md-list-box:before,.ion-md-locate:before,.ion-md-lock:before,.ion-md-log-in:before,.ion-md-log-out:before,.ion-md-magnet:before,.ion-md-mail:before,.ion-md-mail-open:before,.ion-md-mail-unread:before,.ion-md-male:before,.ion-md-man:before,.ion-md-map:before,.ion-md-medal:before,.ion-md-medical:before,.ion-md-medkit:before,.ion-md-megaphone:before,.ion-md-menu:before,.ion-md-mic:before,.ion-md-mic-off:before,.ion-md-microphone:before,.ion-md-moon:before,.ion-md-more:before,.ion-md-move:before,.ion-md-musical-note:before,.ion-md-musical-notes:before,.ion-md-navigate:before,.ion-md-notifications:before,.ion-md-notifications-off:before,.ion-md-notifications-outline:before,.ion-md-nuclear:before,.ion-md-nutrition:before,.ion-md-open:before,.ion-md-options:before,.ion-md-outlet:before,.ion-md-paper:before,.ion-md-paper-plane:before,.ion-md-partly-sunny:before,.ion-md-pause:before,.ion-md-paw:before,.ion-md-people:before,.ion-md-person:before,.ion-md-person-add:before,.ion-md-phone-landscape:before,.ion-md-phone-portrait:before,.ion-md-photos:before,.ion-md-pie:before,.ion-md-pin:before,.ion-md-pint:before,.ion-md-pizza:before,.ion-md-planet:before,.ion-md-play:before,.ion-md-play-circle:before,.ion-md-podium:before,.ion-md-power:before,.ion-md-pricetag:before,.ion-md-pricetags:before,.ion-md-print:before,.ion-md-pulse:before,.ion-md-qr-scanner:before,.ion-md-quote:before,.ion-md-radio:before,.ion-md-radio-button-off:before,.ion-md-radio-button-on:before,.ion-md-rainy:before,.ion-md-recording:before,.ion-md-redo:before,.ion-md-refresh:before,.ion-md-refresh-circle:before,.ion-md-remove:before,.ion-md-remove-circle:before,.ion-md-remove-circle-outline:before,.ion-md-reorder:before,.ion-md-repeat:before,.ion-md-resize:before,.ion-md-restaurant:before,.ion-md-return-left:before,.ion-md-return-right:before,.ion-md-reverse-camera:before,.ion-md-rewind:before,.ion-md-ribbon:before,.ion-md-rocket:before,.ion-md-rose:before,.ion-md-sad:before,.ion-md-save:before,.ion-md-school:before,.ion-md-search:before,.ion-md-send:before,.ion-md-settings:before,.ion-md-share:before,.ion-md-share-alt:before,.ion-md-shirt:before,.ion-md-shuffle:before,.ion-md-skip-backward:before,.ion-md-skip-forward:before,.ion-md-snow:before,.ion-md-speedometer:before,.ion-md-square:before,.ion-md-square-outline:before,.ion-md-star:before,.ion-md-star-half:before,.ion-md-star-outline:before,.ion-md-stats:before,.ion-md-stopwatch:before,.ion-md-subway:before,.ion-md-sunny:before,.ion-md-swap:before,.ion-md-switch:before,.ion-md-sync:before,.ion-md-tablet-landscape:before,.ion-md-tablet-portrait:before,.ion-md-tennisball:before,.ion-md-text:before,.ion-md-thermometer:before,.ion-md-thumbs-down:before,.ion-md-thumbs-up:before,.ion-md-thunderstorm:before,.ion-md-time:before,.ion-md-timer:before,.ion-md-today:before,.ion-md-train:before,.ion-md-transgender:before,.ion-md-trash:before,.ion-md-trending-down:before,.ion-md-trending-up:before,.ion-md-trophy:before,.ion-md-tv:before,.ion-md-umbrella:before,.ion-md-undo:before,.ion-md-unlock:before,.ion-md-videocam:before,.ion-md-volume-high:before,.ion-md-volume-low:before,.ion-md-volume-mute:before,.ion-md-volume-off:before,.ion-md-walk:before,.ion-md-wallet:before,.ion-md-warning:before,.ion-md-watch:before,.ion-md-water:before,.ion-md-wifi:before,.ion-md-wine:before,.ion-md-woman:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-ios-add:before{content:""}.ion-ios-add-circle:before{content:""}.ion-ios-add-circle-outline:before{content:""}.ion-ios-airplane:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-alert:before{content:""}.ion-ios-american-football:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-aperture:before{content:""}.ion-ios-apps:before{content:""}.ion-ios-appstore:before{content:""}.ion-ios-archive:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-dropdown:before{content:""}.ion-ios-arrow-dropdown-circle:before{content:""}.ion-ios-arrow-dropleft:before{content:""}.ion-ios-arrow-dropleft-circle:before{content:""}.ion-ios-arrow-dropright:before{content:""}.ion-ios-arrow-dropright-circle:before{content:""}.ion-ios-arrow-dropup:before{content:""}.ion-ios-arrow-dropup-circle:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-round-back:before{content:""}.ion-ios-arrow-round-down:before{content:""}.ion-ios-arrow-round-forward:before{content:""}.ion-ios-arrow-round-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-attach:before{content:""}.ion-ios-backspace:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-basket:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-battery-charging:before{content:""}.ion-ios-battery-dead:before{content:""}.ion-ios-battery-full:before{content:""}.ion-ios-beaker:before{content:""}.ion-ios-bed:before{content:""}.ion-ios-beer:before{content:""}.ion-ios-bicycle:before{content:""}.ion-ios-bluetooth:before{content:""}.ion-ios-boat:before{content:""}.ion-ios-body:before{content:""}.ion-ios-bonfire:before{content:""}.ion-ios-book:before{content:""}.ion-ios-bookmark:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bowtie:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-brush:before{content:""}.ion-ios-bug:before{content:""}.ion-ios-build:before{content:""}.ion-ios-bulb:before{content:""}.ion-ios-bus:before{content:""}.ion-ios-business:before{content:""}.ion-ios-cafe:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-call:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-car:before{content:""}.ion-ios-card:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cash:before{content:""}.ion-ios-cellular:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatbubbles:before{content:""}.ion-ios-checkbox:before{content:""}.ion-ios-checkbox-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-circle:before{content:""}.ion-ios-checkmark-circle-outline:before{content:""}.ion-ios-clipboard:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-circle:before{content:""}.ion-ios-close-circle-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-circle:before{content:""}.ion-ios-cloud-done:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-code:before{content:""}.ion-ios-code-download:before{content:""}.ion-ios-code-working:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-color-fill:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-palette:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-compass:before{content:""}.ion-ios-construct:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contacts:before{content:""}.ion-ios-contract:before{content:""}.ion-ios-contrast:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-create:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-cube:before{content:""}.ion-ios-cut:before{content:""}.ion-ios-desktop:before{content:""}.ion-ios-disc:before{content:""}.ion-ios-document:before{content:""}.ion-ios-done-all:before{content:""}.ion-ios-download:before{content:""}.ion-ios-easel:before{content:""}.ion-ios-egg:before{content:""}.ion-ios-exit:before{content:""}.ion-ios-expand:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-off:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-female:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-film:before{content:""}.ion-ios-finger-print:before{content:""}.ion-ios-fitness:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flash:before{content:""}.ion-ios-flash-off:before{content:""}.ion-ios-flashlight:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-open:before{content:""}.ion-ios-football:before{content:""}.ion-ios-funnel:before{content:""}.ion-ios-gift:before{content:""}.ion-ios-git-branch:before{content:""}.ion-ios-git-commit:before{content:""}.ion-ios-git-compare:before{content:""}.ion-ios-git-merge:before{content:""}.ion-ios-git-network:before{content:""}.ion-ios-git-pull-request:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-globe:before{content:""}.ion-ios-grid:before{content:""}.ion-ios-hammer:before{content:""}.ion-ios-hand:before{content:""}.ion-ios-happy:before{content:""}.ion-ios-headset:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-dislike:before{content:""}.ion-ios-heart-empty:before{content:""}.ion-ios-heart-half:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-buoy:before{content:""}.ion-ios-help-circle:before{content:""}.ion-ios-help-circle-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-hourglass:before{content:""}.ion-ios-ice-cream:before{content:""}.ion-ios-image:before{content:""}.ion-ios-images:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-circle:before{content:""}.ion-ios-information-circle-outline:before{content:""}.ion-ios-jet:before{content:""}.ion-ios-journal:before{content:""}.ion-ios-key:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-laptop:before{content:""}.ion-ios-leaf:before{content:""}.ion-ios-link:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-box:before{content:""}.ion-ios-locate:before{content:""}.ion-ios-lock:before{content:""}.ion-ios-log-in:before{content:""}.ion-ios-log-out:before{content:""}.ion-ios-magnet:before{content:""}.ion-ios-mail:before{content:""}.ion-ios-mail-open:before{content:""}.ion-ios-mail-unread:before{content:""}.ion-ios-male:before{content:""}.ion-ios-man:before{content:""}.ion-ios-map:before{content:""}.ion-ios-medal:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-megaphone:before{content:""}.ion-ios-menu:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-microphone:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-more:before{content:""}.ion-ios-move:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-notifications:before{content:""}.ion-ios-notifications-off:before{content:""}.ion-ios-notifications-outline:before{content:""}.ion-ios-nuclear:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-open:before{content:""}.ion-ios-options:before{content:""}.ion-ios-outlet:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-plane:before{content:""}.ion-ios-partly-sunny:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-people:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-add:before{content:""}.ion-ios-phone-landscape:before{content:""}.ion-ios-phone-portrait:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pin:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pizza:before{content:""}.ion-ios-planet:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-circle:before{content:""}.ion-ios-podium:before{content:""}.ion-ios-power:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-print:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-qr-scanner:before{content:""}.ion-ios-quote:before{content:""}.ion-ios-radio:before{content:""}.ion-ios-radio-button-off:before{content:""}.ion-ios-radio-button-on:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-circle:before{content:""}.ion-ios-remove:before{content:""}.ion-ios-remove-circle:before{content:""}.ion-ios-remove-circle-outline:before{content:""}.ion-ios-reorder:before{content:""}.ion-ios-repeat:before{content:""}.ion-ios-resize:before{content:""}.ion-ios-restaurant:before{content:""}.ion-ios-return-left:before{content:""}.ion-ios-return-right:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-ribbon:before{content:""}.ion-ios-rocket:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-sad:before{content:""}.ion-ios-save:before{content:""}.ion-ios-school:before{content:""}.ion-ios-search:before{content:""}.ion-ios-send:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-share:before{content:""}.ion-ios-share-alt:before{content:""}.ion-ios-shirt:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-skip-backward:before{content:""}.ion-ios-skip-forward:before{content:""}.ion-ios-snow:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-square:before{content:""}.ion-ios-square-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stats:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-subway:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-swap:before{content:""}.ion-ios-switch:before{content:""}.ion-ios-sync:before{content:""}.ion-ios-tablet-landscape:before{content:""}.ion-ios-tablet-portrait:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-text:before{content:""}.ion-ios-thermometer:before{content:""}.ion-ios-thumbs-down:before{content:""}.ion-ios-thumbs-up:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-time:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-today:before{content:""}.ion-ios-train:before{content:""}.ion-ios-transgender:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trending-down:before{content:""}.ion-ios-trending-up:before{content:""}.ion-ios-trophy:before{content:""}.ion-ios-tv:before{content:""}.ion-ios-umbrella:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-unlock:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-volume-mute:before{content:""}.ion-ios-volume-off:before{content:""}.ion-ios-walk:before{content:""}.ion-ios-wallet:before{content:""}.ion-ios-warning:before{content:""}.ion-ios-watch:before{content:""}.ion-ios-water:before{content:""}.ion-ios-wifi:before{content:""}.ion-ios-wine:before{content:""}.ion-ios-woman:before{content:""}.ion-logo-android:before{content:""}.ion-logo-angular:before{content:""}.ion-logo-apple:before{content:""}.ion-logo-bitbucket:before{content:""}.ion-logo-bitcoin:before{content:""}.ion-logo-buffer:before{content:""}.ion-logo-chrome:before{content:""}.ion-logo-closed-captioning:before{content:""}.ion-logo-codepen:before{content:""}.ion-logo-css3:before{content:""}.ion-logo-designernews:before{content:""}.ion-logo-dribbble:before{content:""}.ion-logo-dropbox:before{content:""}.ion-logo-euro:before{content:""}.ion-logo-facebook:before{content:""}.ion-logo-flickr:before{content:""}.ion-logo-foursquare:before{content:""}.ion-logo-freebsd-devil:before{content:""}.ion-logo-game-controller-a:before{content:""}.ion-logo-game-controller-b:before{content:""}.ion-logo-github:before{content:""}.ion-logo-google:before{content:""}.ion-logo-googleplus:before{content:""}.ion-logo-hackernews:before{content:""}.ion-logo-html5:before{content:""}.ion-logo-instagram:before{content:""}.ion-logo-ionic:before{content:""}.ion-logo-ionitron:before{content:""}.ion-logo-javascript:before{content:""}.ion-logo-linkedin:before{content:""}.ion-logo-markdown:before{content:""}.ion-logo-model-s:before{content:""}.ion-logo-no-smoking:before{content:""}.ion-logo-nodejs:before{content:""}.ion-logo-npm:before{content:""}.ion-logo-octocat:before{content:""}.ion-logo-pinterest:before{content:""}.ion-logo-playstation:before{content:""}.ion-logo-polymer:before{content:""}.ion-logo-python:before{content:""}.ion-logo-reddit:before{content:""}.ion-logo-rss:before{content:""}.ion-logo-sass:before{content:""}.ion-logo-skype:before{content:""}.ion-logo-slack:before{content:""}.ion-logo-snapchat:before{content:""}.ion-logo-steam:before{content:""}.ion-logo-tumblr:before{content:""}.ion-logo-tux:before{content:""}.ion-logo-twitch:before{content:""}.ion-logo-twitter:before{content:""}.ion-logo-usd:before{content:""}.ion-logo-vimeo:before{content:""}.ion-logo-vk:before{content:""}.ion-logo-whatsapp:before{content:""}.ion-logo-windows:before{content:""}.ion-logo-wordpress:before{content:""}.ion-logo-xbox:before{content:""}.ion-logo-xing:before{content:""}.ion-logo-yahoo:before{content:""}.ion-logo-yen:before{content:""}.ion-logo-youtube:before{content:""}.ion-md-add:before{content:""}.ion-md-add-circle:before{content:""}.ion-md-add-circle-outline:before{content:""}.ion-md-airplane:before{content:""}.ion-md-alarm:before{content:""}.ion-md-albums:before{content:""}.ion-md-alert:before{content:""}.ion-md-american-football:before{content:""}.ion-md-analytics:before{content:""}.ion-md-aperture:before{content:""}.ion-md-apps:before{content:""}.ion-md-appstore:before{content:""}.ion-md-archive:before{content:""}.ion-md-arrow-back:before{content:""}.ion-md-arrow-down:before{content:""}.ion-md-arrow-dropdown:before{content:""}.ion-md-arrow-dropdown-circle:before{content:""}.ion-md-arrow-dropleft:before{content:""}.ion-md-arrow-dropleft-circle:before{content:""}.ion-md-arrow-dropright:before{content:""}.ion-md-arrow-dropright-circle:before{content:""}.ion-md-arrow-dropup:before{content:""}.ion-md-arrow-dropup-circle:before{content:""}.ion-md-arrow-forward:before{content:""}.ion-md-arrow-round-back:before{content:""}.ion-md-arrow-round-down:before{content:""}.ion-md-arrow-round-forward:before{content:""}.ion-md-arrow-round-up:before{content:""}.ion-md-arrow-up:before{content:""}.ion-md-at:before{content:""}.ion-md-attach:before{content:""}.ion-md-backspace:before{content:""}.ion-md-barcode:before{content:""}.ion-md-baseball:before{content:""}.ion-md-basket:before{content:""}.ion-md-basketball:before{content:""}.ion-md-battery-charging:before{content:""}.ion-md-battery-dead:before{content:""}.ion-md-battery-full:before{content:""}.ion-md-beaker:before{content:""}.ion-md-bed:before{content:""}.ion-md-beer:before{content:""}.ion-md-bicycle:before{content:""}.ion-md-bluetooth:before{content:""}.ion-md-boat:before{content:""}.ion-md-body:before{content:""}.ion-md-bonfire:before{content:""}.ion-md-book:before{content:""}.ion-md-bookmark:before{content:""}.ion-md-bookmarks:before{content:""}.ion-md-bowtie:before{content:""}.ion-md-briefcase:before{content:""}.ion-md-browsers:before{content:""}.ion-md-brush:before{content:""}.ion-md-bug:before{content:""}.ion-md-build:before{content:""}.ion-md-bulb:before{content:""}.ion-md-bus:before{content:""}.ion-md-business:before{content:""}.ion-md-cafe:before{content:""}.ion-md-calculator:before{content:""}.ion-md-calendar:before{content:""}.ion-md-call:before{content:""}.ion-md-camera:before{content:""}.ion-md-car:before{content:""}.ion-md-card:before{content:""}.ion-md-cart:before{content:""}.ion-md-cash:before{content:""}.ion-md-cellular:before{content:""}.ion-md-chatboxes:before{content:""}.ion-md-chatbubbles:before{content:""}.ion-md-checkbox:before{content:""}.ion-md-checkbox-outline:before{content:""}.ion-md-checkmark:before{content:""}.ion-md-checkmark-circle:before{content:""}.ion-md-checkmark-circle-outline:before{content:""}.ion-md-clipboard:before{content:""}.ion-md-clock:before{content:""}.ion-md-close:before{content:""}.ion-md-close-circle:before{content:""}.ion-md-close-circle-outline:before{content:""}.ion-md-cloud:before{content:""}.ion-md-cloud-circle:before{content:""}.ion-md-cloud-done:before{content:""}.ion-md-cloud-download:before{content:""}.ion-md-cloud-outline:before{content:""}.ion-md-cloud-upload:before{content:""}.ion-md-cloudy:before{content:""}.ion-md-cloudy-night:before{content:""}.ion-md-code:before{content:""}.ion-md-code-download:before{content:""}.ion-md-code-working:before{content:""}.ion-md-cog:before{content:""}.ion-md-color-fill:before{content:""}.ion-md-color-filter:before{content:""}.ion-md-color-palette:before{content:""}.ion-md-color-wand:before{content:""}.ion-md-compass:before{content:""}.ion-md-construct:before{content:""}.ion-md-contact:before{content:""}.ion-md-contacts:before{content:""}.ion-md-contract:before{content:""}.ion-md-contrast:before{content:""}.ion-md-copy:before{content:""}.ion-md-create:before{content:""}.ion-md-crop:before{content:""}.ion-md-cube:before{content:""}.ion-md-cut:before{content:""}.ion-md-desktop:before{content:""}.ion-md-disc:before{content:""}.ion-md-document:before{content:""}.ion-md-done-all:before{content:""}.ion-md-download:before{content:""}.ion-md-easel:before{content:""}.ion-md-egg:before{content:""}.ion-md-exit:before{content:""}.ion-md-expand:before{content:""}.ion-md-eye:before{content:""}.ion-md-eye-off:before{content:""}.ion-md-fastforward:before{content:""}.ion-md-female:before{content:""}.ion-md-filing:before{content:""}.ion-md-film:before{content:""}.ion-md-finger-print:before{content:""}.ion-md-fitness:before{content:""}.ion-md-flag:before{content:""}.ion-md-flame:before{content:""}.ion-md-flash:before{content:""}.ion-md-flash-off:before{content:""}.ion-md-flashlight:before{content:""}.ion-md-flask:before{content:""}.ion-md-flower:before{content:""}.ion-md-folder:before{content:""}.ion-md-folder-open:before{content:""}.ion-md-football:before{content:""}.ion-md-funnel:before{content:""}.ion-md-gift:before{content:""}.ion-md-git-branch:before{content:""}.ion-md-git-commit:before{content:""}.ion-md-git-compare:before{content:""}.ion-md-git-merge:before{content:""}.ion-md-git-network:before{content:""}.ion-md-git-pull-request:before{content:""}.ion-md-glasses:before{content:""}.ion-md-globe:before{content:""}.ion-md-grid:before{content:""}.ion-md-hammer:before{content:""}.ion-md-hand:before{content:""}.ion-md-happy:before{content:""}.ion-md-headset:before{content:""}.ion-md-heart:before{content:""}.ion-md-heart-dislike:before{content:""}.ion-md-heart-empty:before{content:""}.ion-md-heart-half:before{content:""}.ion-md-help:before{content:""}.ion-md-help-buoy:before{content:""}.ion-md-help-circle:before{content:""}.ion-md-help-circle-outline:before{content:""}.ion-md-home:before{content:""}.ion-md-hourglass:before{content:""}.ion-md-ice-cream:before{content:""}.ion-md-image:before{content:""}.ion-md-images:before{content:""}.ion-md-infinite:before{content:""}.ion-md-information:before{content:""}.ion-md-information-circle:before{content:""}.ion-md-information-circle-outline:before{content:""}.ion-md-jet:before{content:""}.ion-md-journal:before{content:""}.ion-md-key:before{content:""}.ion-md-keypad:before{content:""}.ion-md-laptop:before{content:""}.ion-md-leaf:before{content:""}.ion-md-link:before{content:""}.ion-md-list:before{content:""}.ion-md-list-box:before{content:""}.ion-md-locate:before{content:""}.ion-md-lock:before{content:""}.ion-md-log-in:before{content:""}.ion-md-log-out:before{content:""}.ion-md-magnet:before{content:""}.ion-md-mail:before{content:""}.ion-md-mail-open:before{content:""}.ion-md-mail-unread:before{content:""}.ion-md-male:before{content:""}.ion-md-man:before{content:""}.ion-md-map:before{content:""}.ion-md-medal:before{content:""}.ion-md-medical:before{content:""}.ion-md-medkit:before{content:""}.ion-md-megaphone:before{content:""}.ion-md-menu:before{content:""}.ion-md-mic:before{content:""}.ion-md-mic-off:before{content:""}.ion-md-microphone:before{content:""}.ion-md-moon:before{content:""}.ion-md-more:before{content:""}.ion-md-move:before{content:""}.ion-md-musical-note:before{content:""}.ion-md-musical-notes:before{content:""}.ion-md-navigate:before{content:""}.ion-md-notifications:before{content:""}.ion-md-notifications-off:before{content:""}.ion-md-notifications-outline:before{content:""}.ion-md-nuclear:before{content:""}.ion-md-nutrition:before{content:""}.ion-md-open:before{content:""}.ion-md-options:before{content:""}.ion-md-outlet:before{content:""}.ion-md-paper:before{content:""}.ion-md-paper-plane:before{content:""}.ion-md-partly-sunny:before{content:""}.ion-md-pause:before{content:""}.ion-md-paw:before{content:""}.ion-md-people:before{content:""}.ion-md-person:before{content:""}.ion-md-person-add:before{content:""}.ion-md-phone-landscape:before{content:""}.ion-md-phone-portrait:before{content:""}.ion-md-photos:before{content:""}.ion-md-pie:before{content:""}.ion-md-pin:before{content:""}.ion-md-pint:before{content:""}.ion-md-pizza:before{content:""}.ion-md-planet:before{content:""}.ion-md-play:before{content:""}.ion-md-play-circle:before{content:""}.ion-md-podium:before{content:""}.ion-md-power:before{content:""}.ion-md-pricetag:before{content:""}.ion-md-pricetags:before{content:""}.ion-md-print:before{content:""}.ion-md-pulse:before{content:""}.ion-md-qr-scanner:before{content:""}.ion-md-quote:before{content:""}.ion-md-radio:before{content:""}.ion-md-radio-button-off:before{content:""}.ion-md-radio-button-on:before{content:""}.ion-md-rainy:before{content:""}.ion-md-recording:before{content:""}.ion-md-redo:before{content:""}.ion-md-refresh:before{content:""}.ion-md-refresh-circle:before{content:""}.ion-md-remove:before{content:""}.ion-md-remove-circle:before{content:""}.ion-md-remove-circle-outline:before{content:""}.ion-md-reorder:before{content:""}.ion-md-repeat:before{content:""}.ion-md-resize:before{content:""}.ion-md-restaurant:before{content:""}.ion-md-return-left:before{content:""}.ion-md-return-right:before{content:""}.ion-md-reverse-camera:before{content:""}.ion-md-rewind:before{content:""}.ion-md-ribbon:before{content:""}.ion-md-rocket:before{content:""}.ion-md-rose:before{content:""}.ion-md-sad:before{content:""}.ion-md-save:before{content:""}.ion-md-school:before{content:""}.ion-md-search:before{content:""}.ion-md-send:before{content:""}.ion-md-settings:before{content:""}.ion-md-share:before{content:""}.ion-md-share-alt:before{content:""}.ion-md-shirt:before{content:""}.ion-md-shuffle:before{content:""}.ion-md-skip-backward:before{content:""}.ion-md-skip-forward:before{content:""}.ion-md-snow:before{content:""}.ion-md-speedometer:before{content:""}.ion-md-square:before{content:""}.ion-md-square-outline:before{content:""}.ion-md-star:before{content:""}.ion-md-star-half:before{content:""}.ion-md-star-outline:before{content:""}.ion-md-stats:before{content:""}.ion-md-stopwatch:before{content:""}.ion-md-subway:before{content:""}.ion-md-sunny:before{content:""}.ion-md-swap:before{content:""}.ion-md-switch:before{content:""}.ion-md-sync:before{content:""}.ion-md-tablet-landscape:before{content:""}.ion-md-tablet-portrait:before{content:""}.ion-md-tennisball:before{content:""}.ion-md-text:before{content:""}.ion-md-thermometer:before{content:""}.ion-md-thumbs-down:before{content:""}.ion-md-thumbs-up:before{content:""}.ion-md-thunderstorm:before{content:""}.ion-md-time:before{content:""}.ion-md-timer:before{content:""}.ion-md-today:before{content:""}.ion-md-train:before{content:""}.ion-md-transgender:before{content:""}.ion-md-trash:before{content:""}.ion-md-trending-down:before{content:""}.ion-md-trending-up:before{content:""}.ion-md-trophy:before{content:""}.ion-md-tv:before{content:""}.ion-md-umbrella:before{content:""}.ion-md-undo:before{content:""}.ion-md-unlock:before{content:""}.ion-md-videocam:before{content:""}.ion-md-volume-high:before{content:""}.ion-md-volume-low:before{content:""}.ion-md-volume-mute:before{content:""}.ion-md-volume-off:before{content:""}.ion-md-walk:before{content:""}.ion-md-wallet:before{content:""}.ion-md-warning:before{content:""}.ion-md-watch:before{content:""}.ion-md-water:before{content:""}.ion-md-wifi:before{content:""}.ion-md-wine:before{content:""}.ion-md-woman:before{content:""} \ No newline at end of file diff --git a/invidious/assets/css/player.css b/invidious/assets/css/player.css deleted file mode 100755 index 50c7a74..0000000 --- a/invidious/assets/css/player.css +++ /dev/null @@ -1,264 +0,0 @@ -/* Youtube player style */ -.video-js.player-style-youtube .vjs-progress-control { - height: 0; -} - -.video-js.player-style-youtube .vjs-progress-control .vjs-progress-holder, .video-js.player-style-youtube .vjs-progress-control { - position: absolute; - right: 0; - left: 0; - width: 100%; - margin: 0; -} - -.video-js.player-style-youtube .vjs-control-bar { - background: linear-gradient(rgba(0,0,0,0.1), rgba(0, 0, 0,0.5)); -} - -.video-js.player-style-youtube .vjs-slider { - background-color: rgba(255,255,255,0.2); -} - -.video-js.player-style-youtube .vjs-load-progress > div { - background-color: rgba(255,255,255,0.5); -} - -.video-js.player-style-youtube .vjs-play-progress { - background-color: red; -} - -.video-js.player-style-youtube .vjs-progress-control:hover .vjs-progress-holder { - font-size: 15px; -} - -.video-js.player-style-youtube .vjs-control-bar > .vjs-spacer { - flex: 1; - order: 2; -} - -.video-js.player-style-youtube .vjs-play-progress .vjs-time-tooltip { - display: none; -} - -.video-js.player-style-youtube .vjs-play-progress::before { - color: red; - font-size: 0.85em; - display: none; -} - -.video-js.player-style-youtube .vjs-progress-holder:hover .vjs-play-progress::before { - display: unset; -} - -.video-js.player-style-youtube .vjs-control-bar { - display: flex; - flex-direction: row; -} - -.video-js.player-style-youtube .vjs-big-play-button { - /* - Styles copied from video-js.min.css, definition of - .vjs-big-play-centered .vjs-big-play-button - */ - top: 50%; - left: 50%; - margin-top: -0.81666em; - margin-left: -1.5em; -} - -.video-js.player-style-youtube .vjs-menu-button-popup .vjs-menu { - margin-bottom: 2em; -} - -.video-js.player-style-youtube .vjs-progress-control .vjs-progress-holder, .video-js.player-style-youtube .vjs-progress-control {height: 5px; -margin-bottom: 10px;} - -ul.vjs-menu-content::-webkit-scrollbar { - display: none; -} - -.vjs-user-inactive { - cursor: none; -} - -.video-js .vjs-text-track-display > div > div > div { - background-color: rgba(0, 0, 0, 0.75) !important; - border-radius: 9px !important; - padding: 5px !important; -} - -.vjs-play-control, -.vjs-volume-panel, -.vjs-current-time, -.vjs-time-control, -.vjs-duration, -.vjs-progress-control, -.vjs-remaining-time { - order: 1; -} - -.vjs-captions-button { - order: 2; -} - -.vjs-audio-button { - order: 3; -} - -.vjs-quality-selector, -.video-js .vjs-http-source-selector { - order: 4; -} - -.vjs-playback-rate { - order: 5; -} - -.vjs-share-control { - order: 6; -} - -.vjs-fullscreen-control { - order: 7; -} - -.vjs-playback-rate > .vjs-menu { - width: 50px; -} - -.vjs-control-bar { - display: flex; - flex-direction: row; - scrollbar-width: none; -} - -.vjs-control-bar::-webkit-scrollbar { - display: none; -} - -.video-js .vjs-icon-cog { - font-size: 18px; -} - -.video-js .vjs-control-bar, -.vjs-menu-button-popup .vjs-menu .vjs-menu-content { - background-color: rgba(35, 35, 35, 0.75); -} - -.vjs-menu li.vjs-menu-item:focus, -.vjs-menu li.vjs-menu-item:hover { - background-color: rgba(255, 255, 255, 0.75); - color: rgba(49, 49, 51, 0.75); -} - -.vjs-menu li.vjs-selected, -.vjs-menu li.vjs-selected:focus, -.vjs-menu li.vjs-selected:hover { - background-color: rgba(0, 182, 240, 0.75); -} - -/* Progress Bar */ -.video-js .vjs-slider { - background-color: rgba(15, 15, 15, 0.5); -} - -.video-js .vjs-load-progress, -.video-js .vjs-load-progress div { - background: rgba(87, 87, 88, 1); -} - -.video-js .vjs-slider:hover, -.video-js button:hover { - color: rgba(0, 182, 240, 1); -} - -.video-js.player-style-invidious .vjs-play-progress { - background-color: rgba(0, 182, 240, 1); -} - -/* Overlay */ -.video-js .vjs-overlay { - background-color: rgba(35, 35, 35, 0.75) !important; -} -.video-js .vjs-overlay * { - color: rgba(255, 255, 255, 1) !important; - text-align: center; -} - -/* ProgressBar marker */ -.vjs-marker { - background-color: rgba(255, 255, 255, 1); - z-index: 0; -} - -/* Big "Play" Button */ -.video-js .vjs-big-play-button { - background-color: rgba(35, 35, 35, 0.5); -} - -.video-js:hover .vjs-big-play-button { - background-color: rgba(35, 35, 35, 0.75); -} - -.video-js .vjs-current-time, -.video-js .vjs-time-divider, -.video-js .vjs-duration { - display: block; -} - -.video-js .vjs-time-divider { - min-width: 0px; - padding-left: 0px; - padding-right: 0px; -} - -.video-js .vjs-poster { - background-size: cover; - object-fit: cover; -} - -.player-dimensions.vjs-fluid { - padding-top: 82vh; -} - -video.video-js { - position: absolute; - height: 100%; -} - -#player-container { - position: relative; - padding-left: 0; - padding-right: 0; - margin-left: 1em; - margin-right: 1em; - padding-bottom: 82vh; - height: 0; -} - -.mobile-operations-bar { - display: flex; - position: absolute; - top: 0; - right: 1px !important; - left: initial !important; - width: initial !important; -} - -.mobile-operations-bar ul { - position: absolute !important; - bottom: unset !important; - top: 1.5em; -} - -@media screen and (max-width: 700px) { - .video-js .vjs-share { - justify-content: unset; - } -} - -@media screen and (max-width: 650px) { - .vjs-modal-dialog-content { - overflow-x: hidden; - } -} diff --git a/invidious/assets/css/pure-min.css b/invidious/assets/css/pure-min.css deleted file mode 100755 index 474ba32..0000000 --- a/invidious/assets/css/pure-min.css +++ /dev/null @@ -1,11 +0,0 @@ -/*! -Pure v1.0.1 -Copyright 2013 Yahoo! -Licensed under the BSD License. -https://github.com/pure-css/pure/blob/master/LICENSE.md -*/ -/*! -normalize.css v^3.0 | MIT License | git.io/normalize -Copyright (c) Nicolas Gallagher and Jonathan Neal -*/ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;zoom:1;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);border:1px solid #999;border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid #111;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned .pure-help-inline,.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form .pure-help-inline,.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;zoom:1;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} \ No newline at end of file diff --git a/invidious/assets/css/quality-selector.css b/invidious/assets/css/quality-selector.css deleted file mode 100755 index f3cc033..0000000 --- a/invidious/assets/css/quality-selector.css +++ /dev/null @@ -1 +0,0 @@ -.vjs-quality-selector .vjs-menu-button{margin:0;padding:0;height:100%;width:100%}.vjs-quality-selector .vjs-icon-placeholder{font-family:'VideoJS';font-weight:normal;font-style:normal}.vjs-quality-selector .vjs-icon-placeholder:before{content:'\f110'}.vjs-quality-changing .vjs-big-play-button{display:none}.vjs-quality-changing .vjs-control-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;visibility:visible;opacity:1} diff --git a/invidious/assets/css/search.css b/invidious/assets/css/search.css deleted file mode 100755 index 7036fd2..0000000 --- a/invidious/assets/css/search.css +++ /dev/null @@ -1,121 +0,0 @@ -summary { - /* This should hide the marker */ - display: block; - - font-size: 1.17em; - font-weight: bold; - margin: 0 auto 10px auto; - cursor: pointer; -} - -summary::-webkit-details-marker, -summary::marker { display: none; } - -summary:before { - border-radius: 5px; - content: "[ + ]"; - margin: -2px 10px 0 10px; - padding: 1px 0 3px 0; - text-align: center; - width: 40px; -} - -details[open] > summary:before { content: "[ − ]"; } - - -#filters-box { - padding: 10px 20px 20px 10px; - margin: 10px 15px; -} -#filters-flex { - display: flex; - flex-wrap: wrap; - flex-direction: row; - align-items: flex-start; - align-content: flex-start; - justify-content: flex-start; -} - - -fieldset, legend { - display: contents !important; - border: none !important; - margin: 0 !important; - padding: 0 !important; -} - - -.filter-column { - display: inline-block; - display: inline-flex; - width: max-content; - min-width: max-content; - max-width: 16em; - margin: 15px; - flex-grow: 2; - flex-basis: auto; - flex-direction: column; -} -.filter-name, .filter-options { - display: block; - padding: 5px 10px; - margin: 0; - text-align: start; -} - -.filter-options div { margin: 6px 0; } -.filter-options div * { vertical-align: middle; } -.filter-options label { margin: 0 10px; } - - -#filters-apply { - text-align: right; /* IE11 only */ - text-align: end; /* Override for compatible browsers */ -} - -/* Error message */ - -.no-results-error { - text-align: center; - line-height: 180%; - font-size: 110%; - padding: 15px 15px 125px 15px; -} - -/* Responsive rules */ - -@media only screen and (max-width: 800px) { - summary { font-size: 1.30em; } - #filters-box { - margin: 10px 0 0 0; - padding: 0; - } - #filters-apply { - text-align: center; - padding: 15px; - } -} - -/* Light theme */ - -.light-theme #filters-box { - background: #dfdfdf; -} - -@media (prefers-color-scheme: light) { - .no-theme #filters-box { - background: #dfdfdf; - } -} - -/* Dark theme */ - -.dark-theme #filters-box { - background: #373737; -} - -@media (prefers-color-scheme: dark) { - .no-theme #filters-box { - background: #373737; - } -} diff --git a/invidious/assets/css/videojs-youtube-annotations.min.css b/invidious/assets/css/videojs-youtube-annotations.min.css deleted file mode 100755 index 282ebe6..0000000 --- a/invidious/assets/css/videojs-youtube-annotations.min.css +++ /dev/null @@ -1 +0,0 @@ -.__cxt-ar-annotations-container__{--annotation-close-size: 20px;position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none;overflow:hidden}.__cxt-ar-annotation__{position:absolute;box-sizing:border-box;font-family:Arial,sans-serif;color:#fff;z-index:20;pointer-events:auto}.__cxt-ar-annotation__ span{position:absolute;left:0;top:0;overflow:hidden;word-wrap:break-word;white-space:pre-wrap;pointer-events:none;box-sizing:border-box;padding:2%;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.__cxt-ar-annotation-close__{display:none;position:absolute;width:var(--annotation-close-size);height:var(--annotation-close-size);cursor:pointer;right:calc(var(--annotation-close-size)/-1.8);top:calc(var(--annotation-close-size)/-1.8);z-index:1}.__cxt-ar-annotation__:hover:not([hidden]):not([data-ar-closed]) .__cxt-ar-annotation-close__{display:block}.__cxt-ar-annotation__[hidden]{display:none!important}.__cxt-ar-annotation__[data-ar-type=highlight]{border:1px solid rgba(255,255,255,.1);background-color:transparent}.__cxt-ar-annotation__[data-ar-type=highlight]:hover{border:1px solid rgba(255,255,255,.5);background-color:transparent}.__cxt-ar-annotation__ svg{pointer-events:all} diff --git a/invidious/assets/favicon-16x16.png b/invidious/assets/favicon-16x16.png deleted file mode 100755 index c1fa973e942a8fcfdffefff2ae7eaed0b6d35b72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0|f+;7})zuF=IyzpjudmJ zzuyl-Lqo8+xe0043bC@XVq^CA_kWhMU^bg!XJ>~h@pwEXSsWf7{w}Eip-?C&&4q;p z*xK4c79|ywbRifFf>bJ{Yq?wwBuk}OpbJ(E;!JK3akks-pwVdP8kLhugzfEZWKkHz z1%}7t)sZwhag{*$z*x4K%AbQxHBQ2zXfr0nLA{G)_r2gl!3WvjR zd3i~#;u|bFqVO{U3SOs-T^R6J;J zZ-2SAwsu7<{6xAKOa!jU*)P&)*Vu5_cuYBAu~<)AT3TMt&CShdxl>gqeUcbN!00000NkvXXu0mjf3_KK- diff --git a/invidious/assets/favicon-32x32.png b/invidious/assets/favicon-32x32.png deleted file mode 100755 index 1a5f80fe2024b3d3270938f6d231c8067fcfbefc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1316 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

OV(uY{)4f8TBu`;Rob)y29+9y)t zRXVhwKZ`*J;I{LU31JGBn|1SUSg-dz ze%xp6IdrH8j8CTo-&&6XQ`XK&(c+19%N}=L^h4>(GT#=bgqC+y@rjpZ1m(`L;R08O zEWAHe#eGz0(ONS8`))(Yto}Who=sZ+{?@tLq#r8D$N$U?EMt0;^K%>^%|8Qo7~r7A zQnU6Jso;UhXRyAcsXnqm?TZ{3w@C*?k!h98NUi^(qQd+lrvX5l_i70(F3#p}zDb8% zpRbkTxBYcI9r!K_B_@{ag7|0s|5)oQAh&3VY3E@kt02!zmZdC4WNj`BB!kWkyM>_- zL;XtMaI%^jGZ}H;iNkV9-)jErc|)e4IB7`8z5o55=v%uZ_0Ob^D1vgLPB6W0MYN-q z$_`R#71Q^9&VTABi)pwv#Pj)dYf16CJGvdtI=ZkbfPHFlVNpixAdRc{Q>81Pska5m z8#jZ|B6|7G-S`wQBvLR$or#dl&&5Tg zSwd4isvgsEaPHcR@ESOXM^kaw<=w#$=VnY^Fgc@}Pr2i2BXBBK6Mtp4qtgVbUH|1j z7T#wq*RJ4*qGbD^9gRS>*J12rg5c5r0cN!K9ggqv^LP6hHQdWQ?kVlX>^*GVWAzxH zb5eIP=MoE=;SrMs;SF$kXOsh~{T_`Ym8y6VHWVZ|fH*0hU==xsG?F(SL zcKw)bR8_a@V0YE>G0j4nRK9e^cAN$tn-Dl5SDOOXuiP3Dr}+K*h^@7hdzt~&0QW8> zW2KfOx2`lInDqkZ6uo=Tc04s9Oe&G7(KCFrTM^3>zFy?xEvp#GBbqK8? zY#!f_2&d@SyWFHPd(!dLQ__zgN;&5r*Qy;JrdS?G00T;XD*|qPf*=Ii?nc#2}je9H=WbuD+Pax*uN4DZQ}bzcdk zYiVF_f@P_{BAQ0y;`HU&WV2P8Mb6ip)~M?3xV}3AWNgv-n4RZvE@3MN9+1v1{HUGX zoCk6SOhmYOmZg19OH5w&SL@86U}M*~(_ly{(bPTnNmNXLgVx||T=$@M- zI)XzDcg31gagnp^RK|0A#A1m8$6I;>dk-7u_#@Sb{~YhxKzxUZZ-DosKT=?EKxbI6 zp^vG1c{PuB*yx~P5oaYc~ow|f_1*ZiX^&JgxA@WR8p*62<=oNqY}Nx zgdM<$w7uIcRTc@zzx~cM@}993#?Y|Nf*P2h2($6=MG}3CBQ&Zs??eRki4qauAm=FZ zIRT=TpHQ_a1h0rfubYk{mu=~gTGUZeria};3Wo@J1mj`JCH91}0%K9Qe#X>&z64O1 zRCM62(U`7D3f>b0F?YgNd{Gq+Dk?x(k==g4VrPG*oy_|};$?eXc3H3cb$;I0b@nTE z%gN~{FCIPzN$Iwj%>*ZH0f(0d*n>8oe74-MH*3MkKGE6b*a`_(6I zlvYbOP4M%{G!)TQUPB3G=)tfqy44@(QFe2RqVe{^jy9Xkn4y(HRcs5_^mvY>NrT9tt*`rlb!)c`z zrOKjUBD0Z_Uf*!LQt`_W_swpm`iE6G3Tod}Ug04Jx0EYKxYY30XH=hc8J?-Nln7o{ zxJXKo-Z(B)E;V_6th%Yl0Ex1dBOwNmUwRu4UOVS z5`e8n2zog&-;j{&1gA=eU&6caAeuCspf89#iQX*mFH)82dkrBYg(D%U*?O;Zt8^}Z zrEO&aSYPVl%D4kuvj8qj4{3|&18?1Bm@_9Yd{TIxWP4&EAJ}iJ32lDwfKk72I>AsA zp>sacoPgIkozNsdu)d;V7}TCQ4Cv#N#;m_4x{|pkP_S(;sf6Z%9y_yKLwzzY>{JL;{=~zXtia3Pa9)0=J zJuc&oyI+oj)MTIqmG}rw_9N%xO2!q)$pV#D2*s4Sj#7pJ13is8S@VS_4P2n>1;X@_qG9kMqM>xjOsL1kNpwS=N$q!kx* z!xw`-$yX7n%-QmRVaCN?*;HZ%wdwKjfP7W-OGV>EmCS6}z*BIcogs0h9OU9IpW?I^xiPPWVtXWpH){OD1il(c^k+isGfsM|V{7xf zV&y9RJgW39WP?x*K=e3!sl+X@7IZZ*2v;LiL@FZzqzA_YK8G4vq>P9-E&|blB=9|+ ze#$EA0K#|;L;}Q2qI`e@LD@%B3|fSiQJ5tOkc7ieC&O@VZ6&Kmz$>xP17aumMfhQU zazEDE)^E}>I->2-h0%^^*4F!||ymW6Ly#;)D>Es%auR&F4QsAr@&M*}1_S4swQx@vfZmO!X6xPc&4I%kaJG zlQR6O9;!AF@3n1|N~9jL*1zC+&LKZ5t2D9o31MRs$HFYfh`LMaLLjsXT=%i=03JQ2F0u6H~A~41;r;K-}C*K zfbsF0-|3S;*THiDmqZ&Op#(T99U&#utu;xF${gKYYBIQ0%*>Vb2=$%OQIWyEGIWK z0ow*>TealQ!`GdC1gX_7+Sc+-U8keSM*^}##+UM4~HF~8& zdtD25SZNxQuW6-~rWu$yE#`&NG=6_-%x&#$(9}uoSL9;zhWBr6+@ukCBf&kUnKVf= z)^MvC^sk6CBXr|Wr(7!zDIV_`UlEiSLy7-ngGLN$aoGa#NFzrqs6MGP&VdmOt_o6^ zs@d3dr^@)nMLUsMpl=A|K$Zv`6KJ!)-?}3(b(q^r(gh1~)>OO)1IC&)yMB`60bd02 zIC2H;gCs_XZB6qEw=PbEQ^V|?ka8hZd+|(Sm_k2)nqGN}RNYpPQIv9oV#{DH+}CJ@ z5msB>r)pMQL0&r!5D00HbQju7x2Q-%jB{-Q+EAsyD?AcGBuWM4TMFebrbWjBVuIeL z&T&PV^2uD|!eFM~{W*^L_Q8Xli(zRb0)STAu7mdg<^NA&n?V5f@5) zAdc0VZ}WJ`MAa1dlkG(ru2_WAVtELVPf!9QVZl$vT{v8W_8_y*cMFlQhzlcXx+%!D z6V;BS(X>IP849H9xyMS4CxE1{2X1Mxj_dW6+LlAtwXjt`UMb0)tDW1=cXr@jp6?yT zwDkkCt)`IIWK;HI-tr?P_Gi+UHfX&5K$Pg~tnzN6UKQ!j|L*piHMq|}{3<;oBoD(~#>Ep7W zS2bzht`3yGqy9Z(>&cu+?+gpN>)E>3H!a^1OV{!rz3fheny74AH-ce8ayMt0lJIz?v4WheJ{Ka2;$O>#zlm1$7TX9igDX zf;!PI)Q#qrn}Z`MZ(>@L)3aN&C6@V^yoEeQ=4a^})RBJZV$^+aFi<%RhWjM% zJKyWYcCq!2A!w`{qfbDT(Xw9YuoM)z$oQUu=`SxXiNn_s_b|JB3`GGFPAHez&vTp* ziT46q?gKIp`3F55Cg9oKs)5*KmPZ(w8#%TxpYf)FslONuCr^5B->#^jZto2lKs<pBjwid*L#QRO-ctvJ)sM;LG8RVR`{mv`ZtI{5)sq{e6 z>jgd4eBX9=&Xng;G}x0ALg%?i_bZpUZ_c^NuCJbllobsoefau;&$Qg|nUZDYvCO{p z-RBR!{@{{+*4C#|1*SFwCzXZV+b`ghF9l#bp+oFwTHZMev^zL@x><#H8SCctHEf@c zH`MDxx2deAFPiXyz6i4z%=@{jSQR`FOmL@LBEl0*Uk0Xxghc0=kAAg$xp(T+vtDpE zds}tzzdEx9{(ES*V8hQoIoWFh-L>nEWaOoMkGvBfwIdDsgr5Ef1yS$+R&i*b?0{46 z%+6W-r!R2#o$Q&@eYaN{qwZD)b-tTWn)Ydj0$MA+mbP1v$4F$yRybmDTs}0X zmKRTDalMDaO|S*d92#d&*^_h&w_sZc;ofIVjX7%OEIs{G8~#op8i9%eXu}7?m0Q=a zERT(2GMfjleyV3TFPKO{5B#q`k;=wo*Hv9A`EegT(~P#5R@=vJ-i-}0MtkMML{DLZ zp8c*PV5ya1J>>Ok^5E@!@ADHKMk{SDg(9dh=xs4k>cL^oBUDFEzih!E+Bw01WhR5m z67`&sM{%Tp_e!YAD+Ih%RnMwEDb10AZDj`1#by->eL+(}?h;tY5)Adp(TeLIZk&7I z?_&On%Jp*eJ<}EZ;M|Q5*DJy$H{otRT}Shp+V@|Jp+^+wOrMPJb}xHf=rxbOAC=GE zSKW8xA3a-^|KrzM2K5LUUj_ATUNAm!)4EefRxDq=yw2fpV90Wb01gKN)}@D_JJrsy z8;x$S_x!oKx^w3pbVuNr`rDiX1D=5cV91r*T9X?3B2>w=@`Asc(deE^R3qKc!_Jp) z6r%{u;>ak!o@@f#=%4>Ze)yMVc9;XdnvAhdg+(E)9AENss>buuBO0XsUdByS7!=^n z_q;KFp7GA-^XGFac)9K5NgMvC1)oHl;9B?KU|VZNi}&h49VlpMc=W);=)P05Z&qzS9P=}1olne1FRK~CyQvFLpgjp<# zG+B$pE66*B8tKKh9GjdD-ma&A|vpUWnrn3PIE;HdqCDUskqYj56xM zwO*I&n-@h6m&2-(s`_v!XBD2S>?9LHI$>Rx@eh4?igo^pfLxE=_f%)4F(HBh8ILD0ZQW{a<0vu3 zXj3Xq%MqB(0<~VVNa)Tf9Ug~~&Ss$hcxxGE0C;3{70k&smRPl0HKg{l&6W6k$ZzyGm zz&7|LiBu~EU42u#_Dn1-uh~)F4MXIH_WJMC*PPxavr=CqDB44sI)NE@56Fu6rfaf9 zU)@Amnymz*;XG3REOlmgf!I{^VW5(yKJz}>(^%&@O+g211zt2|LDP4T?z9 zrs=i%o{tC$m8b~?1zn@-B{xspaMjC~d*Mw;Jg*Vi{ZcF)1q&}9zm$qcrGK_a`=#IH zO5aF>HY207Ame!a@eCkvsd`i)4b!h3P`EU%v_W>YN*!c_?k@+_f8zt@GraCh^Mu;D z*w1nMHm1$@+h7&R zVAT+a#5-S1;1?5~m82%?g>AGM?5JlwzbrCp%l>BiZ28QO5F7Ddz`dJ^!A>IWaZt0F zwE4VPi@!|dcg$aOZ$(u2j2{~)$?q)PRIoWH?AL%PsYKJK7Xk=w&4YUxq-CL zr}6?Lf%v?@Z722sge35c3?Uq}+d#3-LB$Wa zK0x)v5pH?+MTYdx#!t!v+rKvl7Z4=j{_gIQiz4=HiO^H!dl5Uexf^1x%?K0?_f}#6M!dA&s_D%MQJ&9nS5FkVb%H zN#Gl*zJ|Z4qa2r^!rR5M_vV|x^+FrS>bvDD1E|xgmmS2Q7^gh`-g9FxG^(%NZ;mQ9 zMeVQC*X=h6%v`gzrQ^XCkBp$tkQ6;1Q126SvDCQN@AiAcy1K=27B8!X#1;c#uf;xk z>*Yy4u}6`HV%`9fN7;6o9oxCXx>oD)V}ysP5woHAE(lsgy| z%uvQxXl#Ws(lG5;rTQ>oV^Eihl#r4~Ao>`lY~sN=K=;?ZA*0twGj~!g@aPLL~S@~p*!Dwm;GgbnxvT(LrweFfwV(e!$bb6dB99F@s~i$ zMr+8@c5?0emg;l|NlJCmfOZ|vgKzTd>?3WupSXC z;eiX+`rtNsvG0p`YfVVL+yV-v(%)8`h%%AxF0!Ru#5J7#wtXTfalv*tQj)StvMVX8 zBMXGA_Dvf4Ia|Wauq-Pp6VHk@ainkjYP?Igk9^_5A~Bc*dNIt5VVG9jaAUx(n;0U! z;XmzScmP=S>43AsapOWv@c3~EK$vhbetl7VysQWUNVh|Lu^>?_Tmr#9CC~#pbCj^^ z7l{MjBnrco}D@08#`rOMj0Vxni8cZ zd#{{|_0FH^y8*8D5eK8U>s`m2YNt_|6nNE)v0sRWWC;2K?=G(E%X6RwTVHupqesDSe@`GU2 zgXa3NaIe}MKE_ss=9+$(Z!&GsC&SUM6r3%`1n*X7EzvH~oYI>7fuTO~$pt~ReN*!~h^Dk+%{o2tY?PJadU8-3-UZK@%li?{UwG|SrR140tJ9*uSrL;uJNU4<- zM$(!#lB}SwZu$KmvkD8vHXtC1e)v6By~0nyQw0y?4+N_^PCS^twYqI8F&2r5Rc)z^ zH(DZ_;=*}n%;QTdD#XLa&1ZPwaZQnRy-(HWM_$Cm9(5M<4ygRuy*HP=-f!yk&U*~D z4Zu5Ywv0=}J;40TYbL!aG+*ObxaspCwd>1x=!@?soQ+VQ8_5_srw%^hZ*Tkh!{jxm z@I^(JCKSHHeX_GdoNgbye*4L0dk+O%d4J_(*RO~YuGHFhjUROlv<%p;0@k(sDpnx1 z6GIMlwivcsORrYjqb+Z0+8y?a1wwH`*u?luxpr~O%T`N`O=^*v?T=3Y?;y9G_QywB zBNf8uX0!G}X0K3@!wR9NvETebYu6m)DL|)-u1v+%?J8GjgGvgyq|5xcIf4w;?Y942 zA^(FXK|e;-zdkrQ4M~%wp=mw499YECYvy{Wsod*qE!o}xLWY_XH3iK{vnyx!WZjym zzJwHObJOjDQEhCjxE7RYk#fZ0G}CWDBen)B^mKXbi8uIC{*4A{MRI_@OPlK&ZyoQc z$dv+pNKc5XN!_D%t?LQt0SS{l9uMp+FUQ>|49{PjTND=*k!sXQw!Qk2VOrwvzi6Rz z>Xc>6%x-obCc3*t{)=N5`_LmU*0z`7<9#aLjhJD5kc{}g^T@|Dvb9H)#GX~ zo*S!(4dHIA_W4f`kX@J^Ao$Nmy-BetMB;uWz9#)&6Z9H$TUxEE0NC78l3v)|U6@|d zVupVNLnrTjkROAOoDy#s`sMz|lW&fF?g3vMj$92bgkBJJ_%&7B3Rz%4)~Yl326DoG zkU@N#WHS?a$E*+^H7#^bY|c)A2Rgm7b=aQ^Xd>bur&8QE2(M8S&uaEeU+3k1bvJ@nR zBj=Zb3YRn?U{QQ$Y^OiGbH?Rk%IJ67qb^5*K38As*s5gvGd%{rW?S2ld}Mc~QaR|v z)O>e`?7x@JzzyZszMCRv^Uwr&)f*$zz~R(RpU(r^nM?hzoJ*KZ_RoEIq)f_MP5Tml zC4Wh~X5aHNo6oF8y3j5J4Ey?kvKp9y)(-@lL#q-KYZFtt#{a^I^XZFETUZHkn-X-%Y@#UKq0QDMN-4>f^Tl z{*a=(cfI4TML;TrrIk{vv_ewXSynBA%5e#=EN+n)7~3yqZ!Pflg(n*{k2KTC@Tco% zk^bPIT*L-77gq;yKM{^PR!I)H%b$7yM`<0qsJ8@|0l#EHU*DtpzWVy~de)j_)-(ya z#VkC&q`e;;a=~x_I*tnEvcT(z8*xZsm_2ToigqN5HDHd1;d5Li_ma=Jk5H#$K4t$M zka~;fy>ubAKejJf+Am#NFJVT8yPlAQG59V9b)y}u5%ouFylL0&c0LoKDLJ9hK)Y$lrY`>)2?ULWbvz&m8dGGa116VzZ-0pkAN&kQG24?<>$*?NHvfK zMVH3c&m~X1*e4s5n}e@gN#bLBu8LC$wD&|2l^_zg1!tXNwbl|cu|^?{woscUp5!Zu z?uq8#^{)h}LyyWE*;3y%KQctyqYYW8m+Hk{z;iP#7%E1b$W-RO!&j)~ru2I$__L2R z=4Q+BE5w{lm0i?t))^{jrJWPHpR9|i_|gJ^A)FFDBnHPFN9HR-p{wU6kB+_-W+&AU zhE@a0`WBRx8X|L7&zbE=i%tzTp>~;JahDc^18L7+)uWyv>4fjXof6;wDEVeeAt=A3 zOG_EaaAX;!^*7F*wZ)E!dK6Ve$?=)iPb6vhYK5XYtJ~zTu~k*8szG7m`?CJ@ zEy?Lqh^axgf<1NbV6LKmxwzqVY~`|@)D2lQ=t4Qc_JS<`Jc!NOK-*m?t*!#~s**9m z>``;`IY^HhKZATgx?2`{E+b9=?BY+;GViS{xg1nBriV>!0+2<%`6irtBe5;TrEBJUYUGM`p|rqK*&FaS)P|R0Z(n;v(R&*?P_&8{{H`x39!q zx<@JgnKK7@Fs;-B<5oz-cJVT+9oVhQn$h!eyl1#)w89FkVA)ZhhoNKReED~=to+}D zwuiycv#=;pKz}%#p^A@qp^@sM<+8Mx_#roQ`0Ly(N>W0p zo&b&|sEuKF!aqz(osjNutZ5C>(=crFW{agLIwmV?>Zj9^aXNR^;DB1M2KqoDCO;4! zAyuxICuisYTTp>|Hb}DNLzkrMn}NVzy?gfPlRth;)?*8xWADUbx5d3_t)0(Wx6-?Q zHD==7@yYlp=EfhhXoJ*@AKkCOsu;~Ghs_QxUtuAH=Me*9HI*^i6LWx#6$Q-uvj=LM z{5^8e!LVhw9~$E{7L)y@2O2PrPS_)!)tBk)|P4mlKjs+Z6XF0oSFzHO09N zSeNShNs%2W>LW3fgqUR5P$U(J?U5F-NV=g=MBD+;b0b>d#v(B8a!D$)*qjQq!~(0( z!fb=m0Jh*;tll}zrF|b@OG!3-7_|??_Jg1^YOW$ z=vL}@p~s{(dhE&i)GvIBp8v9{t7qk$BA=grDiX|D+0(uHmtTB}zDP~h+dW3D$x}F< zdP`9B%g3JXRS&EQjvg)Y0l91^(6$}&Ls&F&redZ7oPlj()PX3LtUOSm|s#pLFOgS9WFR7h9M%CN*tZ1O64d>4Kg2CX^9 zPD}kg+d{N79y&*t4zfakIsQp1c-;;$lkQ$FP}!sJ>2KAy_8it9mcn`%>|H)z zJKyE*G+0Y+hFT4&FMv~BGL;sSg6f<-T2R`%uT+NJl?+G+U;x+iBzG}GSQON@Wp-t2 z<&9oVL9zjO*QZzO2SU7dFVW${c`klKX6Bf$2q;oWn6dzb|NO6oZ>aGGK=t>ThjfQB ztE-3BSJ!O%12NA9ARGuPisS{DpTgxuEopUhw!Va(mjowg(avwDr3toI8_Oz8+C^9I zOCnNIb&0uoxz>p*XCiT2#DXILX|!4q+D@hbSi{=rh(J)Ev7PB0(-vlwTa#=)uQzQ? zO`DZ$tgHwOo7V_FRdCQO2r_(}DH#g@M%-C`>Jpg}|NH|`slGYtjDODX( z5UgBFOQ>1liKBhO_mLbSjUa8{HUMf?-IumucwqJ%%uS~xuaiAfR8k!Ai#G_NhmZ7+ z!3Hy@k^N+72+%1M%1l)`S0**q)SI<`hD8k*;lQ{wFWwcYnH)Mer7Y&-Wc_ULxq)}p zo@Ru{s4!GCNYs#@2yNX0X3ffqi})iFb0_W%4d34QhEvw zBo?V&YCY6+2n$vB+fuDD)fbdbRm2gVFt7@-Mn!cZ;7w)v=5=6z9XA7Rzz|#$x9Dg zd8ffMdR|+Rk2#4jJ~=L#GA{4y;oQs*Sv@mPX6&p=nc<@X6+cx}F-CtO?MHUFx7xZ z;8d>1!w}RPl^9#mqpZ}KVt1;n$-P!p>r{o7s_6?gr>Ouu+GoW}$yLX6b1Su#Aepi0 z9Zq|H%U#3se#oe`SU?;Q;up0gN|BzSXhLVr1LuE07bB~CV43PLwn&SzJu0hn5q4N5 z!_v|kaDz8DAMEb3$HtcZZnA}DhM6x?wK*&_!*2RLBgfjofRXoy^n^?~o8PPgs^$#b z)q_63U#+$S?JHY?U%mR^+h9=zb=ZLr7yXZ4=$)*_KAJ{_?jsv3gWn!h&%Y$K1=u)q zFu`@W!54Xp;31OAb73MWjuFM0eH#uFjKg69C8jchgT!gT^1IwKFbq*Z{b9}rwD+85 zk9@WMeJN7EJ+YHz66!sZs!#wI16UjL4Rf2Y`}v^SB0%MqlF1{YgxKqG+xyx%8V%>h z^qKOs4(M>>Kwet_2!y7ae2Q=$$-J(y5yTD6nd9Jjd5%@9#zAlI#tZg(2*iO0<5?O$ zxrIZ$?S1C-4Z?LNMr#P>Uz8Gl4pw{>s=gQ)JW4Qy&l8LID}$2kSr&6qNlIF=Ju_fI zOPBg_&3#tf`1SC1j zHhTsnj${(aWI~{yK{1Z=W4$0S3STYT#vj3N-tFegOj|mH@9AR?xHio|Btl4>B;0E# zAxh^l80DYMRzO3@f_7HV-= zZ1p=SSAB&m`*p`r-{?3OucES%JyJ#x*^3D$?253$&n^RJcj$1*hw&x?23Fus?ZH*O zRuP<;iCBPrB&WiwzOFGrnM+TmXtu0@b4Eb^n-^xR-se&}VfBwYoFS3C*H0&Ak?{C* zqff=FpSGlt>D+y2)*NEclQ@GcdpU{9O%4fO^eC86^id4xEmaL7mfeL%#x>V6vkD`j z;6tMRRjcU=t-pc+sqF><&q-CTTG=nkhCY^wUn7h zk`!n{oJf3=FlOW$72Gp*;limvI&h|Q$H(lJw4rXd>_ z(4{u`E#g4l!u8zjgeT=f<}HT#5y)HGLEfd#3z!vMDRST7nIE49wqVAsuQQJfs~1ne zoVavkMOF{PheuW`xPUX6Q*5nK30sdv0avkSM9A?zGKfy<$MMRi$_S@Y&c)lTsgLloKb{x4fgCGtB#QCkL(B{f zITwp~E|n0X=*ZXp>3ojBfiLjLs3O|L%W$HE9K|rL$&sPle#8C2+3so0KDjS*V%qun zc6GqCA(IJXMfVOYyxBx#n3*&~MiU?c6*0GpWXa&TXrQeNzG(&1$S>bG+*YrHDIG+8 zvz3^V%?Vb(KEb|4V6uS-u_>?4;N`&hq!}j92jh04&HB)jOYiYXGDP_;oB-|Sg}$@o{f(wP%4hG zpYzFt2pDyHAY!2U7d3HKqU9>?7d_4fcMZz)Km3u5O9odeBJ}ZFNX(Ei`r?-%kWCXP zyZ8o2K{2`6VAEAH<}kCSn!q4!QFFdeyieOYeIVoj@<@ETr@>q>S!V<$VB~L7)U3~s z!rQ%2p_oTf(A9laK3#kgG$S*lb?rV?N33Kc?G>w`6#Lt#>h<|bH{X?^ZgPRS!EE8m z1AzjHcCM=u#rqg$74Z0Ys(MYpWkf<(Hp?I=sCqaXwA;DnhuKYK5d~9K2NGl_Xoqk{ zN6^J1Q53Ch7gPm#=ebyqy^E^hCrvTgMNXh+G$;|M{+J$9$>s83(XVW$XMJmXd_P^V zg))cI>6cY0e6Z|9LM7g8IOH^#kD{t9`k@gKEdP3SNMw3C7Ks`oFi1TzWOZ*Qk<h z4Q4EgNlj>`_N^;OSlkwo^aT%z3f3QH>o4suy zR>db8vzzbw5(2r$c{h!6#tv-D{!~oVX}<~HuSPTCK0jzQeeO#Rs~(6YgZaUB+la;f z?!Co4Vz=C;_7|T!Z@1X(=gwUT5i-miBg1BSe0kdVU4kgm!;! znnse8>_KN%5Um41mPlLyE!YePdDEK6W9bljBGy)Ui!DdY8U11HRPzz+l#C+AWnjz9 zngm?r`1CkcHK!^#F1<7uK#>+~OH_Ipl@&(-NmfrtFG*hVMkYfgr=GWJk|ZZFG_pLh!xeFpd8u`nJnFlhP`>hv0~`X7j+xr6Ss zUAiUWGra&EoJXB#s?|^U6)}E+vrPug*~^!54{%8*NmJL6D#XXP*bg5L2EW$PT<rVB}tAOv86a^i5!czb)F++Y9`c0Q^%6o-$FAfpttg5*X?crNw!YM!a4kZl^-zi(FCUNUb4Jv%6qrNKVmjJa|;ut ztG%{SK8zPdE<&?9kH@} zOvAGTDj8XbOHII|a&rD{P(pZs&?bqq65x0H5Xkxuz`cv48TbbT5hrneor{EVz&|J? zjo~0M_}s>WW8bkt1ZM0MPgcE(*dz2%5mT}}^*LnL7D!W$wA z*nTI0z~@B1fQ8BaI%}_i6FvaV!OP{;&n@M9VJZBI3omB^^*y^5lq0k5RmYl)Sid)$ zKL1wzECu9dmC7Qro0+2O*h{H(W>%f3GOOOTNrYu=vB|7C1zgGZNQ$$?Z`QTVzJ5I~ z)eD{P!%~Yv|Is{n&F;+}+pqqSiyUI)`A71Fe6d~Z>N8}xv}B|2Qy=B*Uv~&BER!&6 zJ!ADZ)vqH1hoVjF(F>-iiMys-$HC&3NV~XSY+nUPW9D;?nzF#!FDmmmY61E(P8%Eu z&FhFY73WTEwd&Jrcig@K2O>LoK0#THjTzucuhx#wRoC%$XpeCSNb&1^s&g z>`3QQ1_7z@1c)*pGu-kS&DB7Ev|m6mj&@TQv#T})SV?zX+zID|aEXp%PvOf$wHgPv zxA-5JiqX-E9-zGEW{IyKPB9wOZB9#WbU{PbDT*KoY^G+vqMDqpyBCN)aVa|9?msa5 zeBGDvCYa3L3NBK=Xi$_WVWydS$z2Aay2jU)sOL3(aJIjDVB*B zQ&6-W_*y8Bn8Av77jA5qYammiza!&n@PMMgs}#_*KqE)R?m!4IYE;~I7y_WHm^8m< z!F@K-_}hwo$ufYS)_Fv)s7N4d4|3W02359ztvSe}MN}FTM`|{PZ>$SLcEl#cL*%rN zl5uT#)rT*5W|O$rwJy&rkl5PptKltM=KuI<-Y)GsPKZO92}2%=h@wdykrgcDOhAQ9 zs~QKKJOUj>P#z?bVOxcA&QtC2E8$GZp*P`Rq2+v%mGw*Y{5Nw^xOG!QLa={YFcg*L zAC%C9;j2EY+}M;5bhN8MS#Uzb=YXa|By=vfz4{%?I_A7AUwH&C0T(rpZD?&fN<>r6 zNSH<$#y=BwJKGBucYqHCFP^nm~b>SrXPtAirb^uIUJ9)>H=g8rI0|fxLehoP(T2JaooC zJh{9;Yn7J@+=5d1DK6>7AqPVikw6)t#r1Ndj>aX?NdSv_8GxHd%fG&NikzLDA7YEf zNV#+7sRA5Nz%YXLJ~~i7N6TM7&o{TUIt9+(e#c0eGgh+|LiDHAu>n}ygjJ*THd-!$ z6UmK3aukErhonnz#9La~d5k{tKi$C)2INg{Ebv4KGfR}h36bwYSiDJ&58a{`s{L%r zoTH#7%Wi%66`HbZWRq%e}(hY-^#HA${!%8C`c zkpOLk?ypmGNuV(-e0CcbjHLpK zH~OCM8KGhB$7~z{8a^R+(^U5C+DvOpOK#4Tso4-o4rg&orLmS%Q(^2Rvu=`1f#W9_ zP32`K{Um#~AE=TfrhkHtJ?Y~lz{2l%BKH41JP5*6`(FqiN#6p9rnULDI@B)_B&0GHDAW(pzM8d_Y1K5KYA6FDjgQ+sWzxsv;GNX5r&C%V>of152^(Q2va3__=KI$t7Fu4^teuHJuH=X-nb1UnXyyo}~seeGi_& zSe|K3t7G)VC38ls=d{Vul!F23xEWPEG5_QG*ul^~c6xh144H>M^m?6RJVx^$u78TQ z*?&V_%sm3|(Y2Eg(CF-<)ka|N!`ijRMaYq2BYC2Y)@>#=HPVb|1CVzf*i>kow>fj1 zuA1xIg38+~wpb&|lDi^z%gl0=02aC0z)Q*I!kjdvKXYBGlg|2Om#yrE?J*Cyw(}}h zgwm;-Jch?ST{8QHMboN{8R2_^nr77OjgS{k*;HaY8fBMT91I*CCvReCkHu*ZTa>Wy z4^zOjT2%poDC$Z`^t)_zL_!qTg)WHqi61_5tU+NuzFJ%DR|N3zj^^*|7{r7NF0G+^ z5ydUdiH$%3PIx(raWo1ptLE0=DX}1yUK?D5OO>*tZ9JRD%aAn&6&jD-cE)aT+w2D{ zR^p+c+-*NVs`_I!K=0{jbc79?qlkd~k@=LsK3#|84xn5*G!knxEf&5ogl=0dwkF zd$wHXP`_n+VQVW?*uc({&6yNkYhhPcA*Yp`Iki5G#Hchk7rTnitaqeRn8i068#8I4 zMNoSiC_t#U-vV}B=)KVJYmv4nTMA{gE}c&*AxZt5Kyun0XR5=;_1HT?RE{|c(_>3K z6a1Pq<|(+E$hh8Hzb0LpDV!`;2_TTXr*&F>;kPE1Ux;?4TB@s;swj)0sN#JxEbUSX z=AUJ?OK_+F@|5bLX$63l^t%9M0B$+!m8(hLsIz|gmGf)L3j8o7hX#mw z;()*nwd7=G@_H~7slXFx-0zKDgl7bT7rDiIE3gQZ3dlu+)v45`rC^7GN5vNv3N7vS zMPv9pLLT~(?SFQj|AN1n@8xqR;^9Bq#C?tz;rRrRutDYN^n1V>0MFL*2WT$LO#m;v zh!1PKaP=J_NCiopNF?ZA&tg;$2}nA5Fl7Df)^PNxY660l;eo?)YLWWw?$M+cAs4MzvHdkEpYXZ!{%?{ z+Wdp`X74d_LN5{}Z#8c9cB6;Y+^;dNj_2dRT@{fa+^XVeUUH$w)NJF|3((tl$0e^X z{x|R%6$@UdwdY7ZkXLX04z@D%m}Nk-O>{tuOOyRo-3b5fU8m%Qt5}mQ1b?<|n3~u% z^j-(Nw%Kw~L>KNJ==WN^*>4CQfqcn~UweEv*QV!l>CDSN17FB}=*l4|V9&?Pg!4(O zvhRuBwE?%f`h7pO!k6n~qk&gS;q@sO-65%&=u~|=2ISJ4#8!V>U@&;+Wdb_LQd{&; zo+I^_4v<|+F7~zHy7z(W0s4DA$c`PbQ=L5Fu+}wzW2U)|qr_jz8G}Q+`_O7+>jA|n zR>=qp3VIq_*g7t(JO|%LTj#g0FTkVh*}SPNIAuhirTEm!5{ZbC zEzXeH`<-t$S%bK0u|JV|96z8bA{_36lXgxW8SHx=A8^9&(@Er{_;K_Jo2UluXrB{D zzXF`{6Ao@@fk-^CD;-P{^sQ>JD&xTxY-G<(~h&=wp#Ymny z_5FdrcRj1H>>BvNem5&#>V?nE5-~5pH+_&3O0uCZ?$MD;XCn6)t(mLJ;g&TGcmj_l=R%FIM;FbU)*tkOZ()%0-CrD0RvVp;2C02t zSIM~D?s-kg(YF8962DgdcVGT7|CG#swJdLkUC+L{NwuxbntCi{cc7j4x`m2=oL{>; zbeUEfJYV{yU_*f~OaJkG_ZBj?O=>^ec8zx{Lw)iVF?-&_t(RitzsgSDyY|IoCI4^V zE;(n270IPeQeOBqtSyiYZFl-3e<9cR|Ib+%lXzM@yV4@~ z`1R%W;_GGvm>e$Jqu{k^QP!@+sBMp{>IB>hC#6*ehLv6}`)lC$c~hQs*FzT1i#(@4 zHfgLizkT;#fz4d~>$m@Ytl4XiOP4^;0tvqfB4-Ou6EORCVchoLkAGIx3#d&gRGhj@ zdReOVy65bPBI=pb#8X4fbFcG1Hqn2*P5ybQ{gE4sp3ia*^LOTH5OV5pP+26Gs7&)n zEou!~dM%^0s`(-dlk)-t3#Lw|_TpXs6T4pzJMH zdkg&>70tQ%{O|O^sT7^(C*{rc@IiR2!`V<1AUMZk$e5kxGU66B@16hx##<&H@_ zo>P3z@;QhQhpJL+nE+F^Gz6-CtLPI`hYk+mpxYdO*$jm@-BVf?lXd&OK;o&bZ@+hF zJ_cHU_b+pY!P84$oR3W5PK~j5YS9Eb>h&)}3tg8P0moWHZiyuMK%4=zAef=UKym7} zpN2aLI$A%7QhzK~ecq&4?$RL^A^IM0NfuSOzLaPCo6U?qXoxOz# z>ViMZwOKlVF4kFotEK3#*n)s%w;2Uj-DXzuS@C;2ldp9bBo>zVPX u?vT%lGOi;#>e`%U=ka-HT-NO{Nc^oDtmnJm$)|EB8!%LEeUo1DM;`#1x0!?h diff --git a/invidious/assets/hashtag.svg b/invidious/assets/hashtag.svg deleted file mode 100755 index 5510982..0000000 --- a/invidious/assets/hashtag.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/invidious/assets/invidious-colored-vector.svg b/invidious/assets/invidious-colored-vector.svg deleted file mode 100755 index 741a8fd..0000000 --- a/invidious/assets/invidious-colored-vector.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/invidious/assets/js/_helpers.js b/invidious/assets/js/_helpers.js deleted file mode 100755 index 8e18169..0000000 --- a/invidious/assets/js/_helpers.js +++ /dev/null @@ -1,254 +0,0 @@ -'use strict'; -// Contains only auxiliary methods -// May be included and executed unlimited number of times without any consequences - -// Polyfills for IE11 -Array.prototype.find = Array.prototype.find || function (condition) { - return this.filter(condition)[0]; -}; - -Array.from = Array.from || function (source) { - return Array.prototype.slice.call(source); -}; -NodeList.prototype.forEach = NodeList.prototype.forEach || function (callback) { - Array.from(this).forEach(callback); -}; -String.prototype.includes = String.prototype.includes || function (searchString) { - return this.indexOf(searchString) >= 0; -}; -String.prototype.startsWith = String.prototype.startsWith || function (prefix) { - return this.substr(0, prefix.length) === prefix; -}; -Math.sign = Math.sign || function(x) { - x = +x; - if (!x) return x; // 0 and NaN - return x > 0 ? 1 : -1; -}; -if (!window.hasOwnProperty('HTMLDetailsElement') && !window.hasOwnProperty('mockHTMLDetailsElement')) { - window.mockHTMLDetailsElement = true; - const style = 'details:not([open]) > :not(summary) {display: none}'; - document.head.appendChild(document.createElement('style')).textContent = style; - - addEventListener('click', function (e) { - if (e.target.nodeName !== 'SUMMARY') return; - const details = e.target.parentElement; - if (details.hasAttribute('open')) - details.removeAttribute('open'); - else - details.setAttribute('open', ''); - }); -} - -// Monstrous global variable for handy code -// Includes: clamp, xhr, storage.{get,set,remove} -window.helpers = window.helpers || { - /** - * https://en.wikipedia.org/wiki/Clamping_(graphics) - * @param {Number} num Source number - * @param {Number} min Low border - * @param {Number} max High border - * @returns {Number} Clamped value - */ - clamp: function (num, min, max) { - if (max < min) { - var t = max; max = min; min = t; // swap max and min - } - - if (max < num) - return max; - if (min > num) - return min; - return num; - }, - - /** @private */ - _xhr: function (method, url, options, callbacks) { - const xhr = new XMLHttpRequest(); - xhr.open(method, url); - - // Default options - xhr.responseType = 'json'; - xhr.timeout = 10000; - // Default options redefining - if (options.responseType) - xhr.responseType = options.responseType; - if (options.timeout) - xhr.timeout = options.timeout; - - if (method === 'POST') - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - // better than onreadystatechange because of 404 codes https://stackoverflow.com/a/36182963 - xhr.onloadend = function () { - if (xhr.status === 200) { - if (callbacks.on200) { - // fix for IE11. It doesn't convert response to JSON - if (xhr.responseType === '' && typeof(xhr.response) === 'string') - callbacks.on200(JSON.parse(xhr.response)); - else - callbacks.on200(xhr.response); - } - } else { - // handled by onerror - if (xhr.status === 0) return; - - if (callbacks.onNon200) - callbacks.onNon200(xhr); - } - }; - - xhr.ontimeout = function () { - if (callbacks.onTimeout) - callbacks.onTimeout(xhr); - }; - - xhr.onerror = function () { - if (callbacks.onError) - callbacks.onError(xhr); - }; - - if (options.payload) - xhr.send(options.payload); - else - xhr.send(); - }, - /** @private */ - _xhrRetry: function(method, url, options, callbacks) { - if (options.retries <= 0) { - console.warn('Failed to pull', options.entity_name); - if (callbacks.onTotalFail) - callbacks.onTotalFail(); - return; - } - helpers._xhr(method, url, options, callbacks); - }, - /** - * @callback callbackXhrOn200 - * @param {Object} response - xhr.response - */ - /** - * @callback callbackXhrError - * @param {XMLHttpRequest} xhr - */ - /** - * @param {'GET'|'POST'} method - 'GET' or 'POST' - * @param {String} url - URL to send request to - * @param {Object} options - other XHR options - * @param {XMLHttpRequestBodyInit} [options.payload=null] - payload for POST-requests - * @param {'arraybuffer'|'blob'|'document'|'json'|'text'} [options.responseType=json] - * @param {Number} [options.timeout=10000] - * @param {Number} [options.retries=1] - * @param {String} [options.entity_name='unknown'] - string to log - * @param {Number} [options.retry_timeout=1000] - * @param {Object} callbacks - functions to execute on events fired - * @param {callbackXhrOn200} [callbacks.on200] - * @param {callbackXhrError} [callbacks.onNon200] - * @param {callbackXhrError} [callbacks.onTimeout] - * @param {callbackXhrError} [callbacks.onError] - * @param {callbackXhrError} [callbacks.onTotalFail] - if failed after all retries - */ - xhr: function(method, url, options, callbacks) { - if (!options.retries || options.retries <= 1) { - helpers._xhr(method, url, options, callbacks); - return; - } - - if (!options.entity_name) options.entity_name = 'unknown'; - if (!options.retry_timeout) options.retry_timeout = 1000; - const retries_total = options.retries; - let currentTry = 1; - - const retry = function () { - console.warn('Pulling ' + options.entity_name + ' failed... ' + (currentTry++) + '/' + retries_total); - setTimeout(function () { - options.retries--; - helpers._xhrRetry(method, url, options, callbacks); - }, options.retry_timeout); - }; - - // Pack retry() call into error handlers - callbacks._onError = callbacks.onError; - callbacks.onError = function (xhr) { - if (callbacks._onError) - callbacks._onError(xhr); - retry(); - }; - callbacks._onTimeout = callbacks.onTimeout; - callbacks.onTimeout = function (xhr) { - if (callbacks._onTimeout) - callbacks._onTimeout(xhr); - retry(); - }; - - helpers._xhrRetry(method, url, options, callbacks); - }, - - /** - * @typedef {Object} invidiousStorage - * @property {(key:String) => Object} get - * @property {(key:String, value:Object)} set - * @property {(key:String)} remove - */ - - /** - * Universal storage, stores and returns JS objects. Uses inside localStorage or cookies - * @type {invidiousStorage} - */ - storage: (function () { - // access to localStorage throws exception in Tor Browser, so try is needed - let localStorageIsUsable = false; - try{localStorageIsUsable = !!localStorage.setItem;}catch(e){} - - if (localStorageIsUsable) { - return { - get: function (key) { - let storageItem = localStorage.getItem(key) - if (!storageItem) return; - try { - return JSON.parse(decodeURIComponent(storageItem)); - } catch(e) { - // Erase non parsable value - helpers.storage.remove(key); - } - }, - set: function (key, value) { - let encoded_value = encodeURIComponent(JSON.stringify(value)) - localStorage.setItem(key, encoded_value); - }, - remove: function (key) { localStorage.removeItem(key); } - }; - } - - // TODO: fire 'storage' event for cookies - console.info('Storage: localStorage is disabled or unaccessible. Cookies used as fallback'); - return { - get: function (key) { - const cookiePrefix = key + '='; - function findCallback(cookie) {return cookie.startsWith(cookiePrefix);} - const matchedCookie = document.cookie.split('; ').find(findCallback); - if (matchedCookie) { - const cookieBody = matchedCookie.replace(cookiePrefix, ''); - if (cookieBody.length === 0) return; - try { - return JSON.parse(decodeURIComponent(cookieBody)); - } catch(e) { - // Erase non parsable value - helpers.storage.remove(key); - } - } - }, - set: function (key, value) { - const cookie_data = encodeURIComponent(JSON.stringify(value)); - - // Set expiration in 2 year - const date = new Date(); - date.setFullYear(date.getFullYear()+2); - - document.cookie = key + '=' + cookie_data + '; expires=' + date.toGMTString(); - }, - remove: function (key) { - document.cookie = key + '=; Max-Age=0'; - } - }; - })() -}; diff --git a/invidious/assets/js/comments.js b/invidious/assets/js/comments.js deleted file mode 100755 index 35ffa96..0000000 --- a/invidious/assets/js/comments.js +++ /dev/null @@ -1,174 +0,0 @@ -var video_data = JSON.parse(document.getElementById('video_data').textContent); - -var spinnerHTML = '

'; -var spinnerHTMLwithHR = spinnerHTML + '
'; - -String.prototype.supplant = function (o) { - return this.replace(/{([^{}]*)}/g, function (a, b) { - var r = o[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - }); -}; - -function toggle_comments(event) { - var target = event.target; - var body = target.parentNode.parentNode.parentNode.children[1]; - if (body.style.display === 'none') { - target.textContent = '[ − ]'; - body.style.display = ''; - } else { - target.textContent = '[ + ]'; - body.style.display = 'none'; - } -} - -function hide_youtube_replies(event) { - var target = event.target; - - var sub_text = target.getAttribute('data-inner-text'); - var inner_text = target.getAttribute('data-sub-text'); - - var body = target.parentNode.parentNode.children[1]; - body.style.display = 'none'; - - target.textContent = sub_text; - target.onclick = show_youtube_replies; - target.setAttribute('data-inner-text', inner_text); - target.setAttribute('data-sub-text', sub_text); -} - -function show_youtube_replies(event) { - var target = event.target; - - var sub_text = target.getAttribute('data-inner-text'); - var inner_text = target.getAttribute('data-sub-text'); - - var body = target.parentNode.parentNode.children[1]; - body.style.display = ''; - - target.textContent = sub_text; - target.onclick = hide_youtube_replies; - target.setAttribute('data-inner-text', inner_text); - target.setAttribute('data-sub-text', sub_text); -} - -function get_youtube_comments() { - var comments = document.getElementById('comments'); - - var fallback = comments.innerHTML; - comments.innerHTML = spinnerHTML; - - var baseUrl = video_data.base_url || '/api/v1/comments/'+ video_data.id - var url = baseUrl + - '?format=html' + - '&hl=' + video_data.preferences.locale + - '&thin_mode=' + video_data.preferences.thin_mode; - - if (video_data.ucid) { - url += '&ucid=' + video_data.ucid - } - - var onNon200 = function (xhr) { comments.innerHTML = fallback; }; - if (video_data.params.comments[1] === 'youtube') - onNon200 = function (xhr) {}; - - helpers.xhr('GET', url, {retries: 5, entity_name: 'comments'}, { - on200: function (response) { - var commentInnerHtml = ' \ -
\ -

\ - [ − ] \ - {commentsText} \ -

\ - \ - ' - if (video_data.support_reddit) { - commentInnerHtml += ' \ - {redditComments} \ - \ - ' - } - commentInnerHtml += ' \ -
\ -
{contentHtml}
\ -
' - commentInnerHtml = commentInnerHtml.supplant({ - contentHtml: response.contentHtml, - redditComments: video_data.reddit_comments_text, - commentsText: video_data.comments_text.supplant({ - // toLocaleString correctly splits number with local thousands separator. e.g.: - // '1,234,567.89' for user with English locale - // '1 234 567,89' for user with Russian locale - // '1.234.567,89' for user with Portuguese locale - commentCount: response.commentCount.toLocaleString() - }) - }); - comments.innerHTML = commentInnerHtml; - comments.children[0].children[0].children[0].onclick = toggle_comments; - if (video_data.support_reddit) { - comments.children[0].children[1].children[0].onclick = swap_comments; - } - }, - onNon200: onNon200, // declared above - onError: function (xhr) { - comments.innerHTML = spinnerHTML; - }, - onTimeout: function (xhr) { - comments.innerHTML = spinnerHTML; - } - }); -} - -function get_youtube_replies(target, load_more, load_replies) { - var continuation = target.getAttribute('data-continuation'); - - var body = target.parentNode.parentNode; - var fallback = body.innerHTML; - body.innerHTML = spinnerHTML; - var baseUrl = video_data.base_url || '/api/v1/comments/'+ video_data.id - var url = baseUrl + - '?format=html' + - '&hl=' + video_data.preferences.locale + - '&thin_mode=' + video_data.preferences.thin_mode + - '&continuation=' + continuation; - - if (video_data.ucid) { - url += '&ucid=' + video_data.ucid - } - if (load_replies) url += '&action=action_get_comment_replies'; - - helpers.xhr('GET', url, {}, { - on200: function (response) { - if (load_more) { - body = body.parentNode.parentNode; - body.removeChild(body.lastElementChild); - body.insertAdjacentHTML('beforeend', response.contentHtml); - } else { - body.removeChild(body.lastElementChild); - - var p = document.createElement('p'); - var a = document.createElement('a'); - p.appendChild(a); - - a.href = 'javascript:void(0)'; - a.onclick = hide_youtube_replies; - a.setAttribute('data-sub-text', video_data.hide_replies_text); - a.setAttribute('data-inner-text', video_data.show_replies_text); - a.textContent = video_data.hide_replies_text; - - var div = document.createElement('div'); - div.innerHTML = response.contentHtml; - - body.appendChild(p); - body.appendChild(div); - } - }, - onNon200: function (xhr) { - body.innerHTML = fallback; - }, - onTimeout: function (xhr) { - console.warn('Pulling comments failed'); - body.innerHTML = fallback; - } - }); -} \ No newline at end of file diff --git a/invidious/assets/js/community.js b/invidious/assets/js/community.js deleted file mode 100755 index 32fe4eb..0000000 --- a/invidious/assets/js/community.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; -var community_data = JSON.parse(document.getElementById('community_data').textContent); - -function hide_youtube_replies(event) { - var target = event.target; - - var sub_text = target.getAttribute('data-inner-text'); - var inner_text = target.getAttribute('data-sub-text'); - - var body = target.parentNode.parentNode.children[1]; - body.style.display = 'none'; - - target.innerHTML = sub_text; - target.onclick = show_youtube_replies; - target.setAttribute('data-inner-text', inner_text); - target.setAttribute('data-sub-text', sub_text); -} - -function show_youtube_replies(event) { - var target = event.target; - - var sub_text = target.getAttribute('data-inner-text'); - var inner_text = target.getAttribute('data-sub-text'); - - var body = target.parentNode.parentNode.children[1]; - body.style.display = ''; - - target.innerHTML = sub_text; - target.onclick = hide_youtube_replies; - target.setAttribute('data-inner-text', inner_text); - target.setAttribute('data-sub-text', sub_text); -} - -function get_youtube_replies(target, load_more) { - var continuation = target.getAttribute('data-continuation'); - - var body = target.parentNode.parentNode; - var fallback = body.innerHTML; - body.innerHTML = - '

'; - - var url = '/api/v1/channels/comments/' + community_data.ucid + - '?format=html' + - '&hl=' + community_data.preferences.locale + - '&thin_mode=' + community_data.preferences.thin_mode + - '&continuation=' + continuation; - - helpers.xhr('GET', url, {}, { - on200: function (response) { - if (load_more) { - body = body.parentNode.parentNode; - body.removeChild(body.lastElementChild); - body.innerHTML += response.contentHtml; - } else { - body.removeChild(body.lastElementChild); - - var p = document.createElement('p'); - var a = document.createElement('a'); - p.appendChild(a); - - a.href = 'javascript:void(0)'; - a.onclick = hide_youtube_replies; - a.setAttribute('data-sub-text', community_data.hide_replies_text); - a.setAttribute('data-inner-text', community_data.show_replies_text); - a.textContent = community_data.hide_replies_text; - - var div = document.createElement('div'); - div.innerHTML = response.contentHtml; - - body.appendChild(p); - body.appendChild(div); - } - }, - onNon200: function (xhr) { - body.innerHTML = fallback; - }, - onTimeout: function (xhr) { - console.warn('Pulling comments failed'); - body.innerHTML = fallback; - } - }); -} diff --git a/invidious/assets/js/embed.js b/invidious/assets/js/embed.js deleted file mode 100755 index b11b5e5..0000000 --- a/invidious/assets/js/embed.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; -var video_data = JSON.parse(document.getElementById('video_data').textContent); - -function get_playlist(plid) { - var plid_url; - if (plid.startsWith('RD')) { - plid_url = '/api/v1/mixes/' + plid + - '?continuation=' + video_data.id + - '&format=html&hl=' + video_data.preferences.locale; - } else { - plid_url = '/api/v1/playlists/' + plid + - '?index=' + video_data.index + - '&continuation' + video_data.id + - '&format=html&hl=' + video_data.preferences.locale; - } - - helpers.xhr('GET', plid_url, {retries: 5, entity_name: 'playlist'}, { - on200: function (response) { - if (!response.nextVideo) - return; - - player.on('ended', function () { - var url = new URL('https://example.com/embed/' + response.nextVideo); - - url.searchParams.set('list', plid); - if (!plid.startsWith('RD')) - url.searchParams.set('index', response.index); - if (video_data.params.autoplay || video_data.params.continue_autoplay) - url.searchParams.set('autoplay', '1'); - if (video_data.params.listen !== video_data.preferences.listen) - url.searchParams.set('listen', video_data.params.listen); - if (video_data.params.speed !== video_data.preferences.speed) - url.searchParams.set('speed', video_data.params.speed); - if (video_data.params.local !== video_data.preferences.local) - url.searchParams.set('local', video_data.params.local); - - location.assign(url.pathname + url.search); - }); - } - }); -} - -addEventListener('load', function (e) { - if (video_data.plid) { - get_playlist(video_data.plid); - } else if (video_data.video_series) { - player.on('ended', function () { - var url = new URL('https://example.com/embed/' + video_data.video_series.shift()); - - if (video_data.params.autoplay || video_data.params.continue_autoplay) - url.searchParams.set('autoplay', '1'); - if (video_data.params.listen !== video_data.preferences.listen) - url.searchParams.set('listen', video_data.params.listen); - if (video_data.params.speed !== video_data.preferences.speed) - url.searchParams.set('speed', video_data.params.speed); - if (video_data.params.local !== video_data.preferences.local) - url.searchParams.set('local', video_data.params.local); - if (video_data.video_series.length !== 0) - url.searchParams.set('playlist', video_data.video_series.join(',')); - - location.assign(url.pathname + url.search); - }); - } -}); diff --git a/invidious/assets/js/handlers.js b/invidious/assets/js/handlers.js deleted file mode 100755 index 539974f..0000000 --- a/invidious/assets/js/handlers.js +++ /dev/null @@ -1,149 +0,0 @@ -'use strict'; - -(function () { - var video_player = document.getElementById('player_html5_api'); - if (video_player) { - video_player.onmouseenter = function () { video_player['data-title'] = video_player['title']; video_player['title'] = ''; }; - video_player.onmouseleave = function () { video_player['title'] = video_player['data-title']; video_player['data-title'] = ''; }; - video_player.oncontextmenu = function () { video_player['title'] = video_player['data-title']; }; - } - - // For dynamically inserted elements - addEventListener('click', function (e) { - if (!e || !e.target) return; - - var t = e.target; - var handler_name = t.getAttribute('data-onclick'); - - switch (handler_name) { - case 'jump_to_time': - e.preventDefault(); - var time = t.getAttribute('data-jump-time'); - player.currentTime(time); - break; - case 'get_youtube_replies': - var load_more = t.getAttribute('data-load-more') !== null; - var load_replies = t.getAttribute('data-load-replies') !== null; - get_youtube_replies(t, load_more, load_replies); - break; - case 'toggle_parent': - e.preventDefault(); - toggle_parent(t); - break; - default: - break; - } - }); - - document.querySelectorAll('[data-mouse="switch_classes"]').forEach(function (el) { - var classes = el.getAttribute('data-switch-classes').split(','); - var classOnEnter = classes[0]; - var classOnLeave = classes[1]; - function toggle_classes(toAdd, toRemove) { - el.classList.add(toAdd); - el.classList.remove(toRemove); - } - el.onmouseenter = function () { toggle_classes(classOnEnter, classOnLeave); }; - el.onmouseleave = function () { toggle_classes(classOnLeave, classOnEnter); }; - }); - - document.querySelectorAll('[data-onsubmit="return_false"]').forEach(function (el) { - el.onsubmit = function () { return false; }; - }); - - document.querySelectorAll('[data-onclick="mark_watched"]').forEach(function (el) { - el.onclick = function () { mark_watched(el); }; - }); - document.querySelectorAll('[data-onclick="mark_unwatched"]').forEach(function (el) { - el.onclick = function () { mark_unwatched(el); }; - }); - document.querySelectorAll('[data-onclick="add_playlist_video"]').forEach(function (el) { - el.onclick = function () { add_playlist_video(el); }; - }); - document.querySelectorAll('[data-onclick="add_playlist_item"]').forEach(function (el) { - el.onclick = function () { add_playlist_item(el); }; - }); - document.querySelectorAll('[data-onclick="remove_playlist_item"]').forEach(function (el) { - el.onclick = function () { remove_playlist_item(el); }; - }); - document.querySelectorAll('[data-onclick="revoke_token"]').forEach(function (el) { - el.onclick = function () { revoke_token(el); }; - }); - document.querySelectorAll('[data-onclick="remove_subscription"]').forEach(function (el) { - el.onclick = function () { remove_subscription(el); }; - }); - document.querySelectorAll('[data-onclick="notification_requestPermission"]').forEach(function (el) { - el.onclick = function () { Notification.requestPermission(); }; - }); - - document.querySelectorAll('[data-onrange="update_volume_value"]').forEach(function (el) { - function update_volume_value() { - document.getElementById('volume-value').textContent = el.value; - } - el.oninput = update_volume_value; - el.onchange = update_volume_value; - }); - - - function revoke_token(target) { - var row = target.parentNode.parentNode.parentNode.parentNode.parentNode; - row.style.display = 'none'; - var count = document.getElementById('count'); - count.textContent--; - - var url = '/token_ajax?action_revoke_token=1&redirect=false' + - '&referer=' + encodeURIComponent(location.href) + - '&session=' + target.getAttribute('data-session'); - - var payload = 'csrf_token=' + target.parentNode.querySelector('input[name="csrf_token"]').value; - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - count.textContent++; - row.style.display = ''; - } - }); - } - - function remove_subscription(target) { - var row = target.parentNode.parentNode.parentNode.parentNode.parentNode; - row.style.display = 'none'; - var count = document.getElementById('count'); - count.textContent--; - - var url = '/subscription_ajax?action_remove_subscriptions=1&redirect=false' + - '&referer=' + encodeURIComponent(location.href) + - '&c=' + target.getAttribute('data-ucid'); - - var payload = 'csrf_token=' + target.parentNode.querySelector('input[name="csrf_token"]').value; - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - count.textContent++; - row.style.display = ''; - } - }); - } - - // Handle keypresses - addEventListener('keydown', function (event) { - // Ignore modifier keys - if (event.ctrlKey || event.metaKey) return; - - // Ignore shortcuts if any text input is focused - let focused_tag = document.activeElement.tagName.toLowerCase(); - const allowed = /^(button|checkbox|file|radio|submit)$/; - - if (focused_tag === 'textarea') return; - if (focused_tag === 'input') { - let focused_type = document.activeElement.type.toLowerCase(); - if (!allowed.test(focused_type)) return; - } - - // Focus search bar on '/' - if (event.key === '/') { - document.getElementById('searchbox').focus(); - event.preventDefault(); - } - }); -})(); diff --git a/invidious/assets/js/notifications.js b/invidious/assets/js/notifications.js deleted file mode 100755 index 55b7a15..0000000 --- a/invidious/assets/js/notifications.js +++ /dev/null @@ -1,131 +0,0 @@ -'use strict'; -var notification_data = JSON.parse(document.getElementById('notification_data').textContent); - -/** Boolean meaning 'some tab have stream' */ -const STORAGE_KEY_STREAM = 'stream'; -/** Number of notifications. May be increased or reset */ -const STORAGE_KEY_NOTIF_COUNT = 'notification_count'; - -var notifications, delivered; -var notifications_mock = { close: function () { } }; - -function get_subscriptions() { - helpers.xhr('GET', '/api/v1/auth/subscriptions', { - retries: 5, - entity_name: 'subscriptions' - }, { - on200: create_notification_stream - }); -} - -function create_notification_stream(subscriptions) { - // sse.js can't be replaced to EventSource in place as it lack support of payload and headers - // see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource - notifications = new SSE( - '/api/v1/auth/notifications', { - withCredentials: true, - payload: 'topics=' + subscriptions.map(function (subscription) { return subscription.authorId; }).join(','), - headers: { 'Content-Type': 'application/x-www-form-urlencoded' } - }); - delivered = []; - - var start_time = Math.round(new Date() / 1000); - - notifications.onmessage = function (event) { - if (!event.id) return; - - var notification = JSON.parse(event.data); - console.info('Got notification:', notification); - - // Ignore not actual and delivered notifications - if (start_time > notification.published || delivered.includes(notification.videoId)) return; - - delivered.push(notification.videoId); - - let notification_count = helpers.storage.get(STORAGE_KEY_NOTIF_COUNT) || 0; - notification_count++; - helpers.storage.set(STORAGE_KEY_NOTIF_COUNT, notification_count); - - update_ticker_count(); - - // permission for notifications handled on settings page. JS handler is in handlers.js - if (window.Notification && Notification.permission === 'granted') { - var notification_text = notification.liveNow ? notification_data.live_now_text : notification_data.upload_text; - notification_text = notification_text.replace('`x`', notification.author); - - var system_notification = new Notification(notification_text, { - body: notification.title, - icon: '/ggpht' + new URL(notification.authorThumbnails[2].url).pathname, - img: '/ggpht' + new URL(notification.authorThumbnails[4].url).pathname - }); - - system_notification.onclick = function (e) { - open('/watch?v=' + notification.videoId, '_blank'); - }; - } - }; - - notifications.addEventListener('error', function (e) { - console.warn('Something went wrong with notifications, trying to reconnect...'); - notifications = notifications_mock; - setTimeout(get_subscriptions, 1000); - }); - - notifications.stream(); -} - -function update_ticker_count() { - var notification_ticker = document.getElementById('notification_ticker'); - - const notification_count = helpers.storage.get(STORAGE_KEY_STREAM); - if (notification_count > 0) { - notification_ticker.innerHTML = - '' + notification_count + ' '; - } else { - notification_ticker.innerHTML = - ''; - } -} - -function start_stream_if_needed() { - // random wait for other tabs set 'stream' flag - setTimeout(function () { - if (!helpers.storage.get(STORAGE_KEY_STREAM)) { - // if no one set 'stream', set it by yourself and start stream - helpers.storage.set(STORAGE_KEY_STREAM, true); - notifications = notifications_mock; - get_subscriptions(); - } - }, Math.random() * 1000 + 50); // [0.050 .. 1.050) second -} - - -addEventListener('storage', function (e) { - if (e.key === STORAGE_KEY_NOTIF_COUNT) - update_ticker_count(); - - // if 'stream' key was removed - if (e.key === STORAGE_KEY_STREAM && !helpers.storage.get(STORAGE_KEY_STREAM)) { - if (notifications) { - // restore it if we have active stream - helpers.storage.set(STORAGE_KEY_STREAM, true); - } else { - start_stream_if_needed(); - } - } -}); - -addEventListener('load', function () { - var notification_count_el = document.getElementById('notification_count'); - var notification_count = notification_count_el ? parseInt(notification_count_el.textContent) : 0; - helpers.storage.set(STORAGE_KEY_NOTIF_COUNT, notification_count); - - if (helpers.storage.get(STORAGE_KEY_STREAM)) - helpers.storage.remove(STORAGE_KEY_STREAM); - start_stream_if_needed(); -}); - -addEventListener('unload', function () { - // let chance to other tabs to be a streamer via firing 'storage' event - if (notifications) helpers.storage.remove(STORAGE_KEY_STREAM); -}); diff --git a/invidious/assets/js/player.js b/invidious/assets/js/player.js deleted file mode 100755 index 71c5e7d..0000000 --- a/invidious/assets/js/player.js +++ /dev/null @@ -1,784 +0,0 @@ -'use strict'; -var player_data = JSON.parse(document.getElementById('player_data').textContent); -var video_data = JSON.parse(document.getElementById('video_data').textContent); - -var options = { - preload: 'auto', - liveui: true, - playbackRates: [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0], - controlBar: { - children: [ - 'playToggle', - 'volumePanel', - 'currentTimeDisplay', - 'timeDivider', - 'durationDisplay', - 'progressControl', - 'remainingTimeDisplay', - 'Spacer', - 'captionsButton', - 'audioTrackButton', - 'qualitySelector', - 'playbackRateMenuButton', - 'fullscreenToggle' - ] - }, - html5: { - preloadTextTracks: false, - vhs: { - overrideNative: true - } - } -}; - -if (player_data.aspect_ratio) { - options.aspectRatio = player_data.aspect_ratio; -} - -var embed_url = new URL(location); -embed_url.searchParams.delete('v'); -var short_url = location.origin + '/' + video_data.id + embed_url.search; -embed_url = location.origin + '/embed/' + video_data.id + embed_url.search; - -var save_player_pos_key = 'save_player_pos'; - -videojs.Vhs.xhr.beforeRequest = function(options) { - // set local if requested not videoplayback - if (!options.uri.includes('videoplayback')) { - if (!options.uri.includes('local=true')) - options.uri += '?local=true'; - } - return options; -}; - -var player = videojs('player', options); - -player.on('error', function () { - if (video_data.params.quality === 'dash') return; - - var localNotDisabled = ( - !player.currentSrc().includes('local=true') && !video_data.local_disabled - ); - var reloadMakesSense = ( - player.error().code === MediaError.MEDIA_ERR_NETWORK || - player.error().code === MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED - ); - - if (localNotDisabled) { - // add local=true to all current sources - player.src(player.currentSources().map(function (source) { - source.src += '&local=true'; - return source; - })); - } else if (reloadMakesSense) { - setTimeout(function () { - console.warn('An error occurred in the player, reloading...'); - - // After load() all parameters are reset. Save them - var currentTime = player.currentTime(); - var playbackRate = player.playbackRate(); - var paused = player.paused(); - - player.load(); - - if (currentTime > 0.5) currentTime -= 0.5; - - player.currentTime(currentTime); - player.playbackRate(playbackRate); - if (!paused) player.play(); - }, 5000); - } -}); - -if (video_data.params.quality === 'dash') { - player.reloadSourceOnError({ - errorInterval: 10 - }); -} - -/** - * Function for add time argument to url - * - * @param {String} url - * @param {String} [base] - * @returns {URL} urlWithTimeArg - */ -function addCurrentTimeToURL(url, base) { - var urlUsed = new URL(url, base); - urlUsed.searchParams.delete('start'); - var currentTime = Math.ceil(player.currentTime()); - if (currentTime > 0) - urlUsed.searchParams.set('t', currentTime); - else if (urlUsed.searchParams.has('t')) - urlUsed.searchParams.delete('t'); - return urlUsed; -} - -/** - * Global variable to save the last timestamp (in full seconds) at which the external - * links were updated by the 'timeupdate' callback below. - * - * It is initialized to 5s so that the video will always restart from the beginning - * if the user hasn't really started watching before switching to the other website. - */ -var timeupdate_last_ts = 5; - -/** - * Callback that updates the timestamp on all external links - */ -player.on('timeupdate', function () { - // Only update once every second - let current_ts = Math.floor(player.currentTime()); - if (current_ts > timeupdate_last_ts) timeupdate_last_ts = current_ts; - else return; - - // YouTube links - - let elem_yt_watch = document.getElementById('link-yt-watch'); - let elem_yt_embed = document.getElementById('link-yt-embed'); - - let base_url_yt_watch = elem_yt_watch.getAttribute('data-base-url'); - let base_url_yt_embed = elem_yt_embed.getAttribute('data-base-url'); - - elem_yt_watch.href = addCurrentTimeToURL(base_url_yt_watch); - elem_yt_embed.href = addCurrentTimeToURL(base_url_yt_embed); - - // Invidious links - - let domain = window.location.origin; - - let elem_iv_embed = document.getElementById('link-iv-embed'); - let elem_iv_other = document.getElementById('link-iv-other'); - - let base_url_iv_embed = elem_iv_embed.getAttribute('data-base-url'); - let base_url_iv_other = elem_iv_other.getAttribute('data-base-url'); - - elem_iv_embed.href = addCurrentTimeToURL(base_url_iv_embed, domain); - elem_iv_other.href = addCurrentTimeToURL(base_url_iv_other, domain); -}); - - -var shareOptions = { - socials: ['fbFeed', 'tw', 'reddit', 'email'], - - get url() { - return addCurrentTimeToURL(short_url); - }, - title: player_data.title, - description: player_data.description, - image: player_data.thumbnail, - get embedCode() { - // Single quotes inside here required. HTML inserted as is into value attribute of input - return ""; - } -}; - -if (location.pathname.startsWith('/embed/')) { - var overlay_content = '

' + player_data.title + '

'; - player.overlay({ - overlays: [ - { start: 'loadstart', content: overlay_content, end: 'playing', align: 'top'}, - { start: 'pause', content: overlay_content, end: 'playing', align: 'top'} - ] - }); -} - -// Detect mobile users and initialize mobileUi for better UX -// Detection code taken from https://stackoverflow.com/a/20293441 - -function isMobile() { - try{ document.createEvent('TouchEvent'); return true; } - catch(e){ return false; } -} - -if (isMobile()) { - player.mobileUi({ touchControls: { seekSeconds: 5 * player.playbackRate() } }); - - var buttons = ['playToggle', 'volumePanel', 'captionsButton']; - - if (!video_data.params.listen && video_data.params.quality === 'dash') buttons.push('audioTrackButton'); - if (video_data.params.listen || video_data.params.quality !== 'dash') buttons.push('qualitySelector'); - - // Create new control bar object for operation buttons - const ControlBar = videojs.getComponent('controlBar'); - let operations_bar = new ControlBar(player, { - children: [], - playbackRates: [0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0] - }); - buttons.slice(1).forEach(function (child) {operations_bar.addChild(child);}); - - // Remove operation buttons from primary control bar - var primary_control_bar = player.getChild('controlBar'); - buttons.forEach(function (child) {primary_control_bar.removeChild(child);}); - - var operations_bar_element = operations_bar.el(); - operations_bar_element.classList.add('mobile-operations-bar'); - player.addChild(operations_bar); - - // Playback menu doesn't work when it's initialized outside of the primary control bar - var playback_element = document.getElementsByClassName('vjs-playback-rate')[0]; - operations_bar_element.append(playback_element); - - // The share and http source selector element can't be fetched till the players ready. - player.one('playing', function () { - var share_element = document.getElementsByClassName('vjs-share-control')[0]; - operations_bar_element.append(share_element); - - if (!video_data.params.listen && video_data.params.quality === 'dash') { - var http_source_selector = document.getElementsByClassName('vjs-http-source-selector vjs-menu-button')[0]; - operations_bar_element.append(http_source_selector); - } - }); -} - -// Enable VR video support -if (!video_data.params.listen && video_data.vr && video_data.params.vr_mode) { - player.crossOrigin('anonymous'); - switch (video_data.projection_type) { - case 'EQUIRECTANGULAR': - player.vr({projection: 'equirectangular'}); - default: // Should only be 'MESH' but we'll use this as a fallback. - player.vr({projection: 'EAC'}); - } -} - -// Add markers -if (video_data.params.video_start > 0 || video_data.params.video_end > 0) { - var markers = [{ time: video_data.params.video_start, text: 'Start' }]; - - if (video_data.params.video_end < 0) { - markers.push({ time: video_data.length_seconds - 0.5, text: 'End' }); - } else { - markers.push({ time: video_data.params.video_end, text: 'End' }); - } - - player.markers({ - onMarkerReached: function (marker) { - if (marker.text === 'End') - player.loop() ? player.markers.prev('Start') : player.pause(); - }, - markers: markers - }); - - player.currentTime(video_data.params.video_start); -} - -player.volume(video_data.params.volume / 100); -player.playbackRate(video_data.params.speed); - -/** - * Method for getting the contents of a cookie - * - * @param {String} name Name of cookie - * @returns {String|null} cookieValue - */ -function getCookieValue(name) { - var cookiePrefix = name + '='; - var matchedCookie = document.cookie.split(';').find(function (item) {return item.includes(cookiePrefix);}); - if (matchedCookie) - return matchedCookie.replace(cookiePrefix, ''); - return null; -} - -/** - * Method for updating the 'PREFS' cookie (or creating it if missing) - * - * @param {number} newVolume New volume defined (null if unchanged) - * @param {number} newSpeed New speed defined (null if unchanged) - */ -function updateCookie(newVolume, newSpeed) { - var volumeValue = newVolume !== null ? newVolume : video_data.params.volume; - var speedValue = newSpeed !== null ? newSpeed : video_data.params.speed; - - var cookieValue = getCookieValue('PREFS'); - var cookieData; - - if (cookieValue !== null) { - var cookieJson = JSON.parse(decodeURIComponent(cookieValue)); - cookieJson.volume = volumeValue; - cookieJson.speed = speedValue; - cookieData = encodeURIComponent(JSON.stringify(cookieJson)); - } else { - cookieData = encodeURIComponent(JSON.stringify({ 'volume': volumeValue, 'speed': speedValue })); - } - - // Set expiration in 2 year - var date = new Date(); - date.setFullYear(date.getFullYear() + 2); - - var ipRegex = /^((\d+\.){3}\d+|[\dA-Fa-f]*:[\d:A-Fa-f]*:[\d:A-Fa-f]+)$/; - var domainUsed = location.hostname; - - // Fix for a bug in FF where the leading dot in the FQDN is not ignored - if (domainUsed.charAt(0) !== '.' && !ipRegex.test(domainUsed) && domainUsed !== 'localhost') - domainUsed = '.' + location.hostname; - - var secure = location.protocol.startsWith("https") ? " Secure;" : ""; - - document.cookie = 'PREFS=' + cookieData + '; SameSite=Lax; path=/; domain=' + - domainUsed + '; expires=' + date.toGMTString() + ';' + secure; - - video_data.params.volume = volumeValue; - video_data.params.speed = speedValue; -} - -player.on('ratechange', function () { - updateCookie(null, player.playbackRate()); - if (isMobile()) { - player.mobileUi({ touchControls: { seekSeconds: 5 * player.playbackRate() } }); - } -}); - -player.on('volumechange', function () { - updateCookie(Math.ceil(player.volume() * 100), null); -}); - -player.on('waiting', function () { - if (player.playbackRate() > 1 && player.liveTracker.isLive() && player.liveTracker.atLiveEdge()) { - console.info('Player has caught up to source, resetting playbackRate'); - player.playbackRate(1); - } -}); - -if (video_data.premiere_timestamp && Math.round(new Date() / 1000) < video_data.premiere_timestamp) { - player.getChild('bigPlayButton').hide(); -} - -if (video_data.params.save_player_pos) { - const url = new URL(location); - const hasTimeParam = url.searchParams.has('t'); - const rememberedTime = get_video_time(); - let lastUpdated = 0; - - if(!hasTimeParam) set_seconds_after_start(rememberedTime); - - player.on('timeupdate', function () { - const raw = player.currentTime(); - const time = Math.floor(raw); - - if(lastUpdated !== time && raw <= video_data.length_seconds - 15) { - save_video_time(time); - lastUpdated = time; - } - }); -} -else remove_all_video_times(); - -if (video_data.params.autoplay) { - var bpb = player.getChild('bigPlayButton'); - bpb.hide(); - - player.ready(function () { - new Promise(function (resolve, reject) { - setTimeout(function () {resolve(1);}, 1); - }).then(function (result) { - var promise = player.play(); - - if (promise !== undefined) { - promise.then(function () { - }).catch(function (error) { - bpb.show(); - }); - } - }); - }); -} - -if (!video_data.params.listen && video_data.params.quality === 'dash') { - player.httpSourceSelector(); - - if (video_data.params.quality_dash !== 'auto') { - player.ready(function () { - player.on('loadedmetadata', function () { - const qualityLevels = Array.from(player.qualityLevels()).sort(function (a, b) {return a.height - b.height;}); - let targetQualityLevel; - switch (video_data.params.quality_dash) { - case 'best': - targetQualityLevel = qualityLevels.length - 1; - break; - case 'worst': - targetQualityLevel = 0; - break; - default: - const targetHeight = parseInt(video_data.params.quality_dash); - for (let i = 0; i < qualityLevels.length; i++) { - if (qualityLevels[i].height <= targetHeight) - targetQualityLevel = i; - else - break; - } - } - qualityLevels.forEach(function (level, index) { - level.enabled = (index === targetQualityLevel); - }); - }); - }); - } -} - -player.vttThumbnails({ - src: '/api/v1/storyboards/' + video_data.id + '?height=90', - showTimestamp: true -}); - -// Enable annotations -if (!video_data.params.listen && video_data.params.annotations) { - addEventListener('load', function (e) { - addEventListener('__ar_annotation_click', function (e) { - const url = e.detail.url, - target = e.detail.target, - seconds = e.detail.seconds; - var path = new URL(url); - - if (path.href.startsWith('https://www.youtube.com/watch?') && seconds) { - path.search += '&t=' + seconds; - } - - path = path.pathname + path.search; - - if (target === 'current') { - location.href = path; - } else if (target === 'new') { - open(path, '_blank'); - } - }); - - helpers.xhr('GET', '/api/v1/annotations/' + video_data.id, { - responseType: 'text', - timeout: 60000 - }, { - on200: function (response) { - var video_container = document.getElementById('player'); - videojs.registerPlugin('youtubeAnnotationsPlugin', youtubeAnnotationsPlugin); - if (player.paused()) { - player.one('play', function (event) { - player.youtubeAnnotationsPlugin({ annotationXml: response, videoContainer: video_container }); - }); - } else { - player.youtubeAnnotationsPlugin({ annotationXml: response, videoContainer: video_container }); - } - } - }); - - }); -} - -function change_volume(delta) { - const curVolume = player.volume(); - let newVolume = curVolume + delta; - newVolume = helpers.clamp(newVolume, 0, 1); - player.volume(newVolume); -} - -function toggle_muted() { - player.muted(!player.muted()); -} - -function skip_seconds(delta) { - const duration = player.duration(); - const curTime = player.currentTime(); - let newTime = curTime + delta; - newTime = helpers.clamp(newTime, 0, duration); - player.currentTime(newTime); -} - -function set_seconds_after_start(delta) { - const start = video_data.params.video_start; - player.currentTime(start + delta); -} - -function save_video_time(seconds) { - const all_video_times = get_all_video_times(); - all_video_times[video_data.id] = seconds; - helpers.storage.set(save_player_pos_key, all_video_times); -} - -function get_video_time() { - return get_all_video_times()[video_data.id] || 0; -} - -function get_all_video_times() { - return helpers.storage.get(save_player_pos_key) || {}; -} - -function remove_all_video_times() { - helpers.storage.remove(save_player_pos_key); -} - -function set_time_percent(percent) { - const duration = player.duration(); - const newTime = duration * (percent / 100); - player.currentTime(newTime); -} - -function play() { player.play(); } -function pause() { player.pause(); } -function stop() { player.pause(); player.currentTime(0); } -function toggle_play() { player.paused() ? play() : pause(); } - -const toggle_captions = (function () { - let toggledTrack = null; - - function bindChange(onOrOff) { - player.textTracks()[onOrOff]('change', function (e) { - toggledTrack = null; - }); - } - - // Wrapper function to ignore our own emitted events and only listen - // to events emitted by Video.js on click on the captions menu items. - function setMode(track, mode) { - bindChange('off'); - track.mode = mode; - setTimeout(function () { - bindChange('on'); - }, 0); - } - - bindChange('on'); - return function () { - if (toggledTrack !== null) { - if (toggledTrack.mode !== 'showing') { - setMode(toggledTrack, 'showing'); - } else { - setMode(toggledTrack, 'disabled'); - } - toggledTrack = null; - return; - } - - // Used as a fallback if no captions are currently active. - // TODO: Make this more intelligent by e.g. relying on browser language. - let fallbackCaptionsTrack = null; - - const tracks = player.textTracks(); - for (let i = 0; i < tracks.length; i++) { - const track = tracks[i]; - if (track.kind !== 'captions') continue; - - if (fallbackCaptionsTrack === null) { - fallbackCaptionsTrack = track; - } - if (track.mode === 'showing') { - setMode(track, 'disabled'); - toggledTrack = track; - return; - } - } - - // Fallback if no captions are currently active. - if (fallbackCaptionsTrack !== null) { - setMode(fallbackCaptionsTrack, 'showing'); - toggledTrack = fallbackCaptionsTrack; - } - }; -})(); - -function toggle_fullscreen() { - player.isFullscreen() ? player.exitFullscreen() : player.requestFullscreen(); -} - -function increase_playback_rate(steps) { - const maxIndex = options.playbackRates.length - 1; - const curIndex = options.playbackRates.indexOf(player.playbackRate()); - let newIndex = curIndex + steps; - newIndex = helpers.clamp(newIndex, 0, maxIndex); - player.playbackRate(options.playbackRates[newIndex]); -} - -addEventListener('keydown', function (e) { - if (e.target.tagName.toLowerCase() === 'input') { - // Ignore input when focus is on certain elements, e.g. form fields. - return; - } - // See https://github.com/ctd1500/videojs-hotkeys/blob/bb4a158b2e214ccab87c2e7b95f42bc45c6bfd87/videojs.hotkeys.js#L310-L313 - const isPlayerFocused = false - || e.target === document.querySelector('.video-js') - || e.target === document.querySelector('.vjs-tech') - || e.target === document.querySelector('.iframeblocker') - || e.target === document.querySelector('.vjs-control-bar') - ; - let action = null; - - const code = e.keyCode; - const decoratedKey = - e.key - + (e.altKey ? '+alt' : '') - + (e.ctrlKey ? '+ctrl' : '') - + (e.metaKey ? '+meta' : '') - ; - switch (decoratedKey) { - case ' ': - case 'k': - case 'MediaPlayPause': - action = toggle_play; - break; - - case 'MediaPlay': action = play; break; - case 'MediaPause': action = pause; break; - case 'MediaStop': action = stop; break; - - case 'ArrowUp': - if (isPlayerFocused) action = change_volume.bind(this, 0.1); - break; - case 'ArrowDown': - if (isPlayerFocused) action = change_volume.bind(this, -0.1); - break; - - case 'm': - action = toggle_muted; - break; - - case 'ArrowRight': - case 'MediaFastForward': - action = skip_seconds.bind(this, 5 * player.playbackRate()); - break; - case 'ArrowLeft': - case 'MediaTrackPrevious': - action = skip_seconds.bind(this, -5 * player.playbackRate()); - break; - case 'l': - action = skip_seconds.bind(this, 10 * player.playbackRate()); - break; - case 'j': - action = skip_seconds.bind(this, -10 * player.playbackRate()); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - // Ignore numpad numbers - if (code > 57) break; - - const percent = (code - 48) * 10; - action = set_time_percent.bind(this, percent); - break; - - case 'c': action = toggle_captions; break; - case 'f': action = toggle_fullscreen; break; - - case 'N': - case 'MediaTrackNext': - action = next_video; - break; - case 'P': - case 'MediaTrackPrevious': - // TODO: Add support to play back previous video. - break; - - // TODO: More precise step. Now FPS is taken equal to 29.97 - // Common FPS: https://forum.videohelp.com/threads/81868#post323588 - // Possible solution is new HTMLVideoElement.requestVideoFrameCallback() https://wicg.github.io/video-rvfc/ - case ',': action = function () { pause(); skip_seconds(-1/29.97); }; break; - case '.': action = function () { pause(); skip_seconds( 1/29.97); }; break; - - case '>': action = increase_playback_rate.bind(this, 1); break; - case '<': action = increase_playback_rate.bind(this, -1); break; - - default: - console.info('Unhandled key down event: %s:', decoratedKey, e); - break; - } - - if (action) { - e.preventDefault(); - action(); - } -}, false); - -// Add support for controlling the player volume by scrolling over it. Adapted from -// https://github.com/ctd1500/videojs-hotkeys/blob/bb4a158b2e214ccab87c2e7b95f42bc45c6bfd87/videojs.hotkeys.js#L292-L328 -(function () { - const pEl = document.getElementById('player'); - - var volumeHover = false; - var volumeSelector = pEl.querySelector('.vjs-volume-menu-button') || pEl.querySelector('.vjs-volume-panel'); - if (volumeSelector !== null) { - volumeSelector.onmouseover = function () { volumeHover = true; }; - volumeSelector.onmouseout = function () { volumeHover = false; }; - } - - function mouseScroll(event) { - // When controls are disabled, hotkeys will be disabled as well - if (!player.controls() || !volumeHover) return; - - event.preventDefault(); - var wheelMove = event.wheelDelta || -event.detail; - var volumeSign = Math.sign(wheelMove); - - change_volume(volumeSign * 0.05); // decrease/increase by 5% - } - - player.on('mousewheel', mouseScroll); - player.on('DOMMouseScroll', mouseScroll); -}()); - -// Since videojs-share can sometimes be blocked, we defer it until last -if (player.share) player.share(shareOptions); - -// show the preferred caption by default -if (player_data.preferred_caption_found) { - player.ready(function () { - if (!video_data.params.listen && video_data.params.quality === 'dash') { - // play.textTracks()[0] on DASH mode is showing some debug messages - player.textTracks()[1].mode = 'showing'; - } else { - player.textTracks()[0].mode = 'showing'; - } - }); -} - -// Safari audio double duration fix -if (navigator.vendor === 'Apple Computer, Inc.' && video_data.params.listen) { - player.on('loadedmetadata', function () { - player.on('timeupdate', function () { - if (player.remainingTime() < player.duration() / 2 && player.remainingTime() >= 2) { - player.currentTime(player.duration() - 1); - } - }); - }); -} - -// Safari screen timeout on looped video playback fix -if (navigator.vendor === 'Apple Computer, Inc.' && !video_data.params.listen && video_data.params.video_loop) { - player.loop(false); - player.ready(function () { - player.on('ended', function () { - player.currentTime(0); - player.play(); - }); - }); -} - -// Watch on Invidious link -if (location.pathname.startsWith('/embed/')) { - const Button = videojs.getComponent('Button'); - let watch_on_invidious_button = new Button(player); - - // Create hyperlink for current instance - var redirect_element = document.createElement('a'); - redirect_element.setAttribute('href', location.pathname.replace('/embed/', '/watch?v=')); - redirect_element.appendChild(document.createTextNode('Invidious')); - - watch_on_invidious_button.el().appendChild(redirect_element); - watch_on_invidious_button.addClass('watch-on-invidious'); - - var cb = player.getChild('ControlBar'); - cb.addChild(watch_on_invidious_button); -} - -addEventListener('DOMContentLoaded', function () { - // Save time during redirection on another instance - const changeInstanceLink = document.querySelector('#watch-on-another-invidious-instance > a'); - if (changeInstanceLink) changeInstanceLink.addEventListener('click', function () { - changeInstanceLink.href = addCurrentTimeToURL(changeInstanceLink.href); - }); -}); diff --git a/invidious/assets/js/playlist_widget.js b/invidious/assets/js/playlist_widget.js deleted file mode 100755 index c92592a..0000000 --- a/invidious/assets/js/playlist_widget.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; -var playlist_data = JSON.parse(document.getElementById('playlist_data').textContent); -var payload = 'csrf_token=' + playlist_data.csrf_token; - -function add_playlist_video(target) { - var select = target.parentNode.children[0].children[1]; - var option = select.children[select.selectedIndex]; - - var url = '/playlist_ajax?action_add_video=1&redirect=false' + - '&video_id=' + target.getAttribute('data-id') + - '&playlist_id=' + option.getAttribute('data-plid'); - - helpers.xhr('POST', url, {payload: payload}, { - on200: function (response) { - option.textContent = '✓' + option.textContent; - } - }); -} - -function add_playlist_item(target) { - var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode; - tile.style.display = 'none'; - - var url = '/playlist_ajax?action_add_video=1&redirect=false' + - '&video_id=' + target.getAttribute('data-id') + - '&playlist_id=' + target.getAttribute('data-plid'); - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - tile.style.display = ''; - } - }); -} - -function remove_playlist_item(target) { - var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode; - tile.style.display = 'none'; - - var url = '/playlist_ajax?action_remove_video=1&redirect=false' + - '&set_video_id=' + target.getAttribute('data-index') + - '&playlist_id=' + target.getAttribute('data-plid'); - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - tile.style.display = ''; - } - }); -} diff --git a/invidious/assets/js/post.js b/invidious/assets/js/post.js deleted file mode 100755 index fcbc915..0000000 --- a/invidious/assets/js/post.js +++ /dev/null @@ -1,3 +0,0 @@ -addEventListener('load', function (e) { - get_youtube_comments(); -}); diff --git a/invidious/assets/js/silvermine-videojs-quality-selector.min.js b/invidious/assets/js/silvermine-videojs-quality-selector.min.js deleted file mode 100755 index 1877047..0000000 --- a/invidious/assets/js/silvermine-videojs-quality-selector.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! @silvermine/videojs-quality-selector 2022-04-13 v1.1.2-43-gaa06e72-dirty */ - -!function u(o,c,a){function l(e,n){if(!c[e]){if(!o[e]){var t="function"==typeof require&&require;if(!n&&t)return t(e,!0);if(s)return s(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=c[e]={exports:{}};o[e][0].call(i.exports,function(n){return l(o[e][1][n]||n)},i,i.exports,u,o,c,a)}return c[e].exports}for(var s="function"==typeof require&&require,n=0;n":">",'"':""","'":"'","`":"`"},W=h.invert(P);h.escape=D(P),h.unescape=D(W),h.result=function(n,e,t){h.isArray(e)||(e=[e]);var r=e.length;if(!r)return h.isFunction(t)?t.call(n):t;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};function Y(n){return"\\"+K[n]}var z=/(.)^/,K={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},G=/\\|'|\r|\n|\u2028|\u2029/g;h.template=function(u,n,e){!n&&e&&(n=e),n=h.defaults({},n,h.templateSettings);var t,r=RegExp([(n.escape||z).source,(n.interpolate||z).source,(n.evaluate||z).source].join("|")+"|$","g"),o=0,c="__p+='";u.replace(r,function(n,e,t,r,i){return c+=u.slice(o,i).replace(G,Y),o=i+n.length,e?c+="'+\n((__t=("+e+"))==null?'':_.escape(__t))+\n'":t?c+="'+\n((__t=("+t+"))==null?'':__t)+\n'":r&&(c+="';\n"+r+"\n__p+='"),n}),c+="';\n",n.variable||(c="with(obj||{}){\n"+c+"}\n"),c="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+c+"return __p;\n";try{t=new Function(n.variable||"obj","_",c)}catch(n){throw n.source=c,n}function i(n){return t.call(this,n,h)}var a=n.variable||"obj";return i.source="function("+a+"){\n"+c+"}",i},h.chain=function(n){var e=h(n);return e._chain=!0,e};function H(n,e){return n._chain?h(e).chain():e}h.mixin=function(t){return h.each(h.functions(t),function(n){var e=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return i.apply(n,arguments),H(this,e.apply(h,n))}}),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=r[e];h.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==e&&"splice"!==e||0!==n.length||delete n[0],H(this,n)}}),h.each(["concat","join","slice"],function(n){var e=r[n];h.prototype[n]=function(){return H(this,e.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(n,e,t){"use strict";var i=n("underscore"),u=n("../events");e.exports=function(n){var r=n.getComponent("MenuItem");return n.extend(r,{constructor:function(n,e){var t=e.source;if(!i.isObject(t))throw new Error('was not provided a "source" object, but rather: '+typeof t);e=i.extend({selectable:!0,label:t.label},e),r.call(this,n,e),this.source=t},handleClick:function(n){r.prototype.handleClick.call(this,n),this.player().trigger(u.QUALITY_REQUESTED,this.source)}})}},{"../events":5,underscore:2}],4:[function(n,e,t){"use strict";var i=n("underscore"),u=n("../events"),o=n("./QualityOption"),c="vjs-quality-changing";e.exports=function(n){var e,r=n.getComponent("MenuButton"),t=o(n);return e=n.extend(r,{constructor:function(t,n){r.call(this,t,n),t.on(u.QUALITY_REQUESTED,function(n,e){this.setSelectedSource(e),t.addClass(c),t.one("loadeddata",function(){t.removeClass(c)})}.bind(this)),t.on(u.PLAYER_SOURCES_CHANGED,function(){this.update()}.bind(this)),t.on(u.QUALITY_SELECTED,function(n,e){this.setSelectedSource(e)}.bind(this)),t.one("ready",function(){this.selectedSrc=t.src(),this.update()}.bind(this)),this.controlText("Open quality selector menu")},setSelectedSource:function(n){var e=n?n.src:void 0;this.selectedSrc!==e&&(this.selectedSrc=e,i.each(this.items,function(n){n.selected(n.source.src===e)}))},createItems:function(){var e=this.player(),n=e.currentSources();return n=n.filter(function(n){return null==n.hidequalityoption}),i.map(n,function(n){return new t(e,{source:n,selected:n.src===this.selectedSrc})}.bind(this))},buildWrapperCSSClass:function(){return"vjs-quality-selector "+r.prototype.buildWrapperCSSClass.call(this)}}),n.registerComponent("QualitySelector",e),e}},{"../events":5,"./QualityOption":3,underscore:2}],5:[function(n,e,t){"use strict";e.exports={QUALITY_REQUESTED:"qualityRequested",QUALITY_SELECTED:"qualitySelected",PLAYER_SOURCES_CHANGED:"playerSourcesChanged"}},{}],6:[function(n,e,t){"use strict";var c=n("underscore"),r=n("./events"),i=n("./components/QualitySelector"),u=n("./middleware/SourceInterceptor"),a=n("./util/SafeSeek");e.exports=function(n){n=n||window.videojs,i(n),u(n),n.hook("setup",function(o){o.on(r.QUALITY_REQUESTED,function(n,e){var t=o.currentSources(),r=o.currentTime(),i=o.playbackRate(),u=o.paused();c.each(t,function(n){n.selected=!1}),c.findWhere(t,{src:e.src}).selected=!0,o._qualitySelectorSafeSeek&&o._qualitySelectorSafeSeek.onQualitySelectionChange(),o.src(t),o.ready(function(){o._qualitySelectorSafeSeek&&!o._qualitySelectorSafeSeek.hasFinished()||(o._qualitySelectorSafeSeek=new a(o,r),o.playbackRate(i)),u||o.play()})})})},e.exports.EVENTS=r},{"./components/QualitySelector":4,"./events":5,"./middleware/SourceInterceptor":7,"./util/SafeSeek":9,underscore:2}],7:[function(n,e,t){"use strict";var u=n("underscore"),o=n("../events");e.exports=function(n){n.use("*",function(i){return{setSource:function(n,e){var t,r=i.currentSources();i._qualitySelectorSafeSeek&&i._qualitySelectorSafeSeek.onPlayerSourcesChange(),u.isEqual(r,i._qualitySelectorPreviousSources)||(i.trigger(o.PLAYER_SOURCES_CHANGED,r),i._qualitySelectorPreviousSources=r),t=u.find(r,function(n){return!0===n.selected||"true"===n.selected||"selected"===n.selected})||n,i.trigger(o.QUALITY_SELECTED,t),e(null,t)}}})}},{"../events":5,underscore:2}],8:[function(n,e,t){"use strict";n("./index")()},{"./index":6}],9:[function(n,e,t){"use strict";var r=n("class.extend");e.exports=r.extend({init:function(n,e){this._player=n,this._seekToTime=e,this._hasFinished=!1,this._keepThisInstanceWhenPlayerSourcesChange=!1,this._seekWhenSafe()},_seekWhenSafe:function(){this._player.readyState()<3?(this._seekFn=this._seek.bind(this),this._player.one("canplay",this._seekFn)):this._seek()},onPlayerSourcesChange:function(){this._keepThisInstanceWhenPlayerSourcesChange?this._keepThisInstanceWhenPlayerSourcesChange=!1:this.cancel()},onQualitySelectionChange:function(){this.hasFinished()||(this._keepThisInstanceWhenPlayerSourcesChange=!0)},_seek:function(){this._player.currentTime(this._seekToTime),this._keepThisInstanceWhenPlayerSourcesChange=!1,this._hasFinished=!0},hasFinished:function(){return this._hasFinished},cancel:function(){this._player.off("canplay",this._seekFn),this._keepThisInstanceWhenPlayerSourcesChange=!1,this._hasFinished=!0}})},{"class.extend":1}]},{},[8]); -//# sourceMappingURL=silvermine-videojs-quality-selector.min.js.map \ No newline at end of file diff --git a/invidious/assets/js/sse.js b/invidious/assets/js/sse.js deleted file mode 100755 index 4f7320b..0000000 --- a/invidious/assets/js/sse.js +++ /dev/null @@ -1,200 +0,0 @@ -/** - * Copyright (C) 2016 Maxime Petazzoni . - * All rights reserved. - */ - -var SSE = function (url, options) { - if (!(this instanceof SSE)) { - return new SSE(url, options); - } - - this.INITIALIZING = -1; - this.CONNECTING = 0; - this.OPEN = 1; - this.CLOSED = 2; - - this.url = url; - - options = options || {}; - this.headers = options.headers || {}; - this.payload = options.payload !== undefined ? options.payload : ''; - this.method = options.method || (this.payload && 'POST' || 'GET'); - - this.FIELD_SEPARATOR = ':'; - this.listeners = {}; - - this.xhr = null; - this.readyState = this.INITIALIZING; - this.progress = 0; - this.chunk = ''; - - this.addEventListener = function(type, listener) { - if (this.listeners[type] === undefined) { - this.listeners[type] = []; - } - - if (this.listeners[type].indexOf(listener) === -1) { - this.listeners[type].push(listener); - } - }; - - this.removeEventListener = function(type, listener) { - if (this.listeners[type] === undefined) { - return; - } - - var filtered = []; - this.listeners[type].forEach(function(element) { - if (element !== listener) { - filtered.push(element); - } - }); - if (filtered.length === 0) { - delete this.listeners[type]; - } else { - this.listeners[type] = filtered; - } - }; - - this.dispatchEvent = function(e) { - if (!e) { - return true; - } - - e.source = this; - - var onHandler = 'on' + e.type; - if (this.hasOwnProperty(onHandler)) { - this[onHandler].call(this, e); - if (e.defaultPrevented) { - return false; - } - } - - if (this.listeners[e.type]) { - return this.listeners[e.type].every(function(callback) { - callback(e); - return !e.defaultPrevented; - }); - } - - return true; - }; - - this._setReadyState = function (state) { - var event = new CustomEvent('readystatechange'); - event.readyState = state; - this.readyState = state; - this.dispatchEvent(event); - }; - - this._onStreamFailure = function(e) { - this.dispatchEvent(new CustomEvent('error')); - this.close(); - } - - this._onStreamProgress = function(e) { - if (this.xhr.status !== 200 && this.readyState !== this.CLOSED) { - this._onStreamFailure(e); - return; - } - - if (this.readyState == this.CONNECTING) { - this.dispatchEvent(new CustomEvent('open')); - this._setReadyState(this.OPEN); - } - - var data = this.xhr.responseText.substring(this.progress); - this.progress += data.length; - data.split(/(\r\n|\r|\n){2}/g).forEach(function(part) { - if (part.trim().length === 0) { - this.dispatchEvent(this._parseEventChunk(this.chunk.trim())); - this.chunk = ''; - } else { - this.chunk += part; - } - }.bind(this)); - }; - - this._onStreamLoaded = function(e) { - this._onStreamProgress(e); - - // Parse the last chunk. - this.dispatchEvent(this._parseEventChunk(this.chunk)); - this.chunk = ''; - }; - - /** - * Parse a received SSE event chunk into a constructed event object. - */ - this._parseEventChunk = function(chunk) { - if (!chunk || chunk.length === 0) { - return null; - } - - var e = {'id': null, 'retry': null, 'data': '', 'event': 'message'}; - chunk.split(/\n|\r\n|\r/).forEach(function(line) { - line = line.trimRight(); - var index = line.indexOf(this.FIELD_SEPARATOR); - if (index <= 0) { - // Line was either empty, or started with a separator and is a comment. - // Either way, ignore. - return; - } - - var field = line.substring(0, index); - if (!(field in e)) { - return; - } - - var value = line.substring(index + 1).trimLeft(); - if (field === 'data') { - e[field] += value; - } else { - e[field] = value; - } - }.bind(this)); - - var event = new CustomEvent(e.event); - event.data = e.data; - event.id = e.id; - return event; - }; - - this._checkStreamClosed = function() { - if (this.xhr.readyState === XMLHttpRequest.DONE) { - this._setReadyState(this.CLOSED); - } - }; - - this.stream = function() { - this._setReadyState(this.CONNECTING); - - this.xhr = new XMLHttpRequest(); - this.xhr.addEventListener('progress', this._onStreamProgress.bind(this)); - this.xhr.addEventListener('load', this._onStreamLoaded.bind(this)); - this.xhr.addEventListener('readystatechange', this._checkStreamClosed.bind(this)); - this.xhr.addEventListener('error', this._onStreamFailure.bind(this)); - this.xhr.addEventListener('abort', this._onStreamFailure.bind(this)); - this.xhr.open(this.method, this.url); - for (var header in this.headers) { - this.xhr.setRequestHeader(header, this.headers[header]); - } - this.xhr.send(this.payload); - }; - - this.close = function() { - if (this.readyState === this.CLOSED) { - return; - } - - this.xhr.abort(); - this.xhr = null; - this._setReadyState(this.CLOSED); - }; -}; - -// Export our SSE module for npm.js -if (typeof exports !== 'undefined') { - exports.SSE = SSE; -} diff --git a/invidious/assets/js/subscribe_widget.js b/invidious/assets/js/subscribe_widget.js deleted file mode 100755 index 7665a00..0000000 --- a/invidious/assets/js/subscribe_widget.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; -var subscribe_data = JSON.parse(document.getElementById('subscribe_data').textContent); -var payload = 'csrf_token=' + subscribe_data.csrf_token; - -var subscribe_button = document.getElementById('subscribe'); -subscribe_button.parentNode.action = 'javascript:void(0)'; - -if (subscribe_button.getAttribute('data-type') === 'subscribe') { - subscribe_button.onclick = subscribe; -} else { - subscribe_button.onclick = unsubscribe; -} - -function subscribe() { - var fallback = subscribe_button.innerHTML; - subscribe_button.onclick = unsubscribe; - subscribe_button.innerHTML = '' + subscribe_data.unsubscribe_text + ' | ' + subscribe_data.sub_count_text + ''; - - var url = '/subscription_ajax?action_create_subscription_to_channel=1&redirect=false' + - '&c=' + subscribe_data.ucid; - - helpers.xhr('POST', url, {payload: payload, retries: 5, entity_name: 'subscribe request'}, { - onNon200: function (xhr) { - subscribe_button.onclick = subscribe; - subscribe_button.innerHTML = fallback; - } - }); -} - -function unsubscribe() { - var fallback = subscribe_button.innerHTML; - subscribe_button.onclick = subscribe; - subscribe_button.innerHTML = '' + subscribe_data.subscribe_text + ' | ' + subscribe_data.sub_count_text + ''; - - var url = '/subscription_ajax?action_remove_subscriptions=1&redirect=false' + - '&c=' + subscribe_data.ucid; - - helpers.xhr('POST', url, {payload: payload, retries: 5, entity_name: 'unsubscribe request'}, { - onNon200: function (xhr) { - subscribe_button.onclick = unsubscribe; - subscribe_button.innerHTML = fallback; - } - }); -} diff --git a/invidious/assets/js/themes.js b/invidious/assets/js/themes.js deleted file mode 100755 index 84a9f6d..0000000 --- a/invidious/assets/js/themes.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; -var toggle_theme = document.getElementById('toggle_theme'); -toggle_theme.href = 'javascript:void(0)'; - -const STORAGE_KEY_THEME = 'dark_mode'; -const THEME_DARK = 'dark'; -const THEME_LIGHT = 'light'; - -// TODO: theme state controlled by system -toggle_theme.addEventListener('click', function () { - const isDarkTheme = helpers.storage.get(STORAGE_KEY_THEME) === THEME_DARK; - const newTheme = isDarkTheme ? THEME_LIGHT : THEME_DARK; - setTheme(newTheme); - helpers.storage.set(STORAGE_KEY_THEME, newTheme); - helpers.xhr('GET', '/toggle_theme?redirect=false', {}, {}); -}); - -/** @param {THEME_DARK|THEME_LIGHT} theme */ -function setTheme(theme) { - // By default body element has .no-theme class that uses OS theme via CSS @media rules - // It rewrites using hard className below - if (theme === THEME_DARK) { - toggle_theme.children[0].className = 'icon ion-ios-sunny'; - document.body.className = 'dark-theme'; - } else if (theme === THEME_LIGHT) { - toggle_theme.children[0].className = 'icon ion-ios-moon'; - document.body.className = 'light-theme'; - } else { - document.body.className = 'no-theme'; - } -} - -// Handles theme change event caused by other tab -addEventListener('storage', function (e) { - if (e.key === STORAGE_KEY_THEME) - setTheme(helpers.storage.get(STORAGE_KEY_THEME)); -}); - -// Set theme from preferences on page load -addEventListener('DOMContentLoaded', function () { - const prefTheme = document.getElementById('dark_mode_pref').textContent; - if (prefTheme) { - setTheme(prefTheme); - helpers.storage.set(STORAGE_KEY_THEME, prefTheme); - } -}); diff --git a/invidious/assets/js/videojs-youtube-annotations.min.js b/invidious/assets/js/videojs-youtube-annotations.min.js deleted file mode 100755 index c93e14e..0000000 --- a/invidious/assets/js/videojs-youtube-annotations.min.js +++ /dev/null @@ -1 +0,0 @@ -class AnnotationParser{static get defaultAppearanceAttributes(){return{bgColor:16777215,bgOpacity:.8,fgColor:0,textSize:3.15}}static get attributeMap(){return{type:"tp",style:"s",x:"x",y:"y",width:"w",height:"h",sx:"sx",sy:"sy",timeStart:"ts",timeEnd:"te",text:"t",actionType:"at",actionUrl:"au",actionUrlTarget:"aut",actionSeconds:"as",bgOpacity:"bgo",bgColor:"bgc",fgColor:"fgc",textSize:"txsz"}}deserializeAnnotation(serializedAnnotation){const map=this.constructor.attributeMap;const attributes=serializedAnnotation.split(",");const annotation={};for(const attribute of attributes){const[key,value]=attribute.split("=");const mappedKey=this.getKeyByValue(map,key);let finalValue="";if(["text","actionType","actionUrl","actionUrlTarget","type","style"].indexOf(mappedKey)>-1){finalValue=decodeURIComponent(value)}else{finalValue=parseFloat(value,10)}annotation[mappedKey]=finalValue}return annotation}serializeAnnotation(annotation){const map=this.constructor.attributeMap;let serialized="";for(const key in annotation){const mappedKey=map[key];if(["text","actionType","actionUrl","actionUrlTarget"].indexOf(key)>-1&&mappedKey&&annotation.hasOwnProperty(key)){let text=encodeURIComponent(annotation[key]);serialized+=`${mappedKey}=${text},`}else if(["text","actionType","actionUrl","actionUrlTarget"].indexOf("key")===-1&&mappedKey&&annotation.hasOwnProperty(key)){serialized+=`${mappedKey}=${annotation[key]},`}}return serialized.substring(0,serialized.length-1)}deserializeAnnotationList(serializedAnnotationString){const serializedAnnotations=serializedAnnotationString.split(";");serializedAnnotations.length=serializedAnnotations.length-1;const annotations=[];for(const annotation of serializedAnnotations){annotations.push(this.deserializeAnnotation(annotation))}return annotations}serializeAnnotationList(annotations){let serialized="";for(const annotation of annotations){serialized+=this.serializeAnnotation(annotation)+";"}return serialized}xmlToDom(xml){const parser=new DOMParser;const dom=parser.parseFromString(xml,"application/xml");return dom}getAnnotationsFromXml(xml){const dom=this.xmlToDom(xml);return dom.getElementsByTagName("annotation")}parseYoutubeAnnotationList(annotationElements){const annotations=[];for(const el of annotationElements){const parsedAnnotation=this.parseYoutubeAnnotation(el);if(parsedAnnotation)annotations.push(parsedAnnotation)}return annotations}parseYoutubeAnnotation(annotationElement){const base=annotationElement;const attributes=this.getAttributesFromBase(base);if(!attributes.type||attributes.type==="pause")return null;const text=this.getTextFromBase(base);const action=this.getActionFromBase(base);const backgroundShape=this.getBackgroundShapeFromBase(base);if(!backgroundShape)return null;const timeStart=backgroundShape.timeRange.start;const timeEnd=backgroundShape.timeRange.end;if(isNaN(timeStart)||isNaN(timeEnd)||timeStart===null||timeEnd===null){return null}const appearance=this.getAppearanceFromBase(base);let annotation={type:attributes.type,x:backgroundShape.x,y:backgroundShape.y,width:backgroundShape.width,height:backgroundShape.height,timeStart:timeStart,timeEnd:timeEnd};if(attributes.style)annotation.style=attributes.style;if(text)annotation.text=text;if(action)annotation=Object.assign(action,annotation);if(appearance)annotation=Object.assign(appearance,annotation);if(backgroundShape.hasOwnProperty("sx"))annotation.sx=backgroundShape.sx;if(backgroundShape.hasOwnProperty("sy"))annotation.sy=backgroundShape.sy;return annotation}getBackgroundShapeFromBase(base){const movingRegion=base.getElementsByTagName("movingRegion")[0];if(!movingRegion)return null;const regionType=movingRegion.getAttribute("type");const regions=movingRegion.getElementsByTagName(`${regionType}Region`);const timeRange=this.extractRegionTime(regions);const shape={type:regionType,x:parseFloat(regions[0].getAttribute("x"),10),y:parseFloat(regions[0].getAttribute("y"),10),width:parseFloat(regions[0].getAttribute("w"),10),height:parseFloat(regions[0].getAttribute("h"),10),timeRange:timeRange};const sx=regions[0].getAttribute("sx");const sy=regions[0].getAttribute("sy");if(sx)shape.sx=parseFloat(sx,10);if(sy)shape.sy=parseFloat(sy,10);return shape}getAttributesFromBase(base){const attributes={};attributes.type=base.getAttribute("type");attributes.style=base.getAttribute("style");return attributes}getTextFromBase(base){const textElement=base.getElementsByTagName("TEXT")[0];if(textElement)return textElement.textContent}getActionFromBase(base){const actionElement=base.getElementsByTagName("action")[0];if(!actionElement)return null;const typeAttr=actionElement.getAttribute("type");const urlElement=actionElement.getElementsByTagName("url")[0];if(!urlElement)return null;const actionUrlTarget=urlElement.getAttribute("target");const href=urlElement.getAttribute("value");if(href.startsWith("https://www.youtube.com/")){const url=new URL(href);const srcVid=url.searchParams.get("src_vid");const toVid=url.searchParams.get("v");return this.linkOrTimestamp(url,srcVid,toVid,actionUrlTarget)}}linkOrTimestamp(url,srcVid,toVid,actionUrlTarget){if(srcVid&&toVid&&srcVid===toVid){let seconds=0;const hash=url.hash;if(hash&&hash.startsWith("#t=")){const timeString=url.hash.split("#t=")[1];seconds=this.timeStringToSeconds(timeString)}return{actionType:"time",actionSeconds:seconds}}else{return{actionType:"url",actionUrl:url.href,actionUrlTarget:actionUrlTarget}}}getAppearanceFromBase(base){const appearanceElement=base.getElementsByTagName("appearance")[0];const styles=this.constructor.defaultAppearanceAttributes;if(appearanceElement){const bgOpacity=appearanceElement.getAttribute("bgAlpha");const bgColor=appearanceElement.getAttribute("bgColor");const fgColor=appearanceElement.getAttribute("fgColor");const textSize=appearanceElement.getAttribute("textSize");if(bgOpacity)styles.bgOpacity=parseFloat(bgOpacity,10);if(bgColor)styles.bgColor=parseInt(bgColor,10);if(fgColor)styles.fgColor=parseInt(fgColor,10);if(textSize)styles.textSize=parseFloat(textSize,10)}return styles}extractRegionTime(regions){let timeStart=regions[0].getAttribute("t");timeStart=this.hmsToSeconds(timeStart);let timeEnd=regions[regions.length-1].getAttribute("t");timeEnd=this.hmsToSeconds(timeEnd);return{start:timeStart,end:timeEnd}}hmsToSeconds(hms){let p=hms.split(":");let s=0;let m=1;while(p.length>0){s+=m*parseFloat(p.pop(),10);m*=60}return s}timeStringToSeconds(time){let seconds=0;const h=time.split("h");const m=(h[1]||time).split("m");const s=(m[1]||time).split("s");if(h[0]&&h.length===2)seconds+=parseInt(h[0],10)*60*60;if(m[0]&&m.length===2)seconds+=parseInt(m[0],10)*60;if(s[0]&&s.length===2)seconds+=parseInt(s[0],10);return seconds}getKeyByValue(obj,value){for(const key in obj){if(obj.hasOwnProperty(key)){if(obj[key]===value){return key}}}}}class AnnotationRenderer{constructor(annotations,container,playerOptions,updateInterval=1e3){if(!annotations)throw new Error("Annotation objects must be provided");if(!container)throw new Error("An element to contain the annotations must be provided");if(playerOptions&&playerOptions.getVideoTime&&playerOptions.seekTo){this.playerOptions=playerOptions}else{console.info("AnnotationRenderer is running without a player. The update method will need to be called manually.")}this.annotations=annotations;this.container=container;this.annotationsContainer=document.createElement("div");this.annotationsContainer.classList.add("__cxt-ar-annotations-container__");this.annotationsContainer.setAttribute("data-layer","4");this.annotationsContainer.addEventListener("click",e=>{this.annotationClickHandler(e)});this.container.prepend(this.annotationsContainer);this.createAnnotationElements();this.updateAllAnnotationSizes();window.addEventListener("DOMContentLoaded",e=>{this.updateAllAnnotationSizes()});this.updateInterval=updateInterval;this.updateIntervalId=null}changeAnnotationData(annotations){this.stop();this.removeAnnotationElements();this.annotations=annotations;this.createAnnotationElements();this.start()}createAnnotationElements(){for(const annotation of this.annotations){const el=document.createElement("div");el.classList.add("__cxt-ar-annotation__");annotation.__element=el;el.__annotation=annotation;const closeButton=this.createCloseElement();closeButton.addEventListener("click",e=>{el.setAttribute("hidden","");el.setAttribute("data-ar-closed","");if(el.__annotation.__speechBubble){const speechBubble=el.__annotation.__speechBubble;speechBubble.style.display="none"}});el.append(closeButton);if(annotation.text){const textNode=document.createElement("span");textNode.textContent=annotation.text;el.append(textNode);el.setAttribute("data-ar-has-text","")}if(annotation.style==="speech"){const containerDimensions=this.container.getBoundingClientRect();const speechX=this.percentToPixels(containerDimensions.width,annotation.x);const speechY=this.percentToPixels(containerDimensions.height,annotation.y);const speechWidth=this.percentToPixels(containerDimensions.width,annotation.width);const speechHeight=this.percentToPixels(containerDimensions.height,annotation.height);const speechPointX=this.percentToPixels(containerDimensions.width,annotation.sx);const speechPointY=this.percentToPixels(containerDimensions.height,annotation.sy);const bubbleColor=this.getFinalAnnotationColor(annotation,false);const bubble=this.createSvgSpeechBubble(speechX,speechY,speechWidth,speechHeight,speechPointX,speechPointY,bubbleColor,annotation.__element);bubble.style.display="none";bubble.style.overflow="visible";el.style.pointerEvents="none";bubble.__annotationEl=el;annotation.__speechBubble=bubble;const path=bubble.getElementsByTagName("path")[0];path.addEventListener("mouseover",()=>{closeButton.style.display="block";closeButton.style.cursor="pointer";path.setAttribute("fill",this.getFinalAnnotationColor(annotation,true))});path.addEventListener("mouseout",e=>{if(!e.relatedTarget.classList.contains("__cxt-ar-annotation-close__")){closeButton.style.display="none";closeButton.style.cursor="default";path.setAttribute("fill",this.getFinalAnnotationColor(annotation,false))}});closeButton.addEventListener("mouseleave",()=>{closeButton.style.display="none";path.style.cursor="default";closeButton.style.cursor="default";path.setAttribute("fill",this.getFinalAnnotationColor(annotation,false))});el.prepend(bubble)}else if(annotation.type==="highlight"){el.style.backgroundColor="";el.style.border=`2.5px solid ${this.getFinalAnnotationColor(annotation,false)}`;if(annotation.actionType==="url")el.style.cursor="pointer"}else if(annotation.style!=="title"){el.style.backgroundColor=this.getFinalAnnotationColor(annotation);el.addEventListener("mouseenter",()=>{el.style.backgroundColor=this.getFinalAnnotationColor(annotation,true)});el.addEventListener("mouseleave",()=>{el.style.backgroundColor=this.getFinalAnnotationColor(annotation,false)});if(annotation.actionType==="url")el.style.cursor="pointer"}el.style.color=`#${this.decimalToHex(annotation.fgColor)}`;el.setAttribute("data-ar-type",annotation.type);el.setAttribute("hidden","");this.annotationsContainer.append(el)}}createCloseElement(){const svg=document.createElementNS("http://www.w3.org/2000/svg","svg");svg.setAttribute("viewBox","0 0 100 100");svg.classList.add("__cxt-ar-annotation-close__");const path=document.createElementNS(svg.namespaceURI,"path");path.setAttribute("d","M25 25 L 75 75 M 75 25 L 25 75");path.setAttribute("stroke","#bbb");path.setAttribute("stroke-width",10);path.setAttribute("x",5);path.setAttribute("y",5);const circle=document.createElementNS(svg.namespaceURI,"circle");circle.setAttribute("cx",50);circle.setAttribute("cy",50);circle.setAttribute("r",50);svg.append(circle,path);return svg}createSvgSpeechBubble(x,y,width,height,pointX,pointY,color="white",element,svg){const horizontalBaseStartMultiplier=.17379070765180116;const horizontalBaseEndMultiplier=.14896346370154384;const verticalBaseStartMultiplier=.12;const verticalBaseEndMultiplier=.3;let path;if(!svg){svg=document.createElementNS("http://www.w3.org/2000/svg","svg");svg.classList.add("__cxt-ar-annotation-speech-bubble__");path=document.createElementNS("http://www.w3.org/2000/svg","path");path.setAttribute("fill",color);svg.append(path)}else{path=svg.children[0]}svg.style.position="absolute";svg.setAttribute("width","100%");svg.setAttribute("height","100%");svg.style.left="0";svg.style.top="0";let positionStart;let baseStartX=0;let baseStartY=0;let baseEndX=0;let baseEndY=0;let pointFinalX=pointX;let pointFinalY=pointY;let commentRectPath;const pospad=20;let textWidth=0;let textHeight=0;let textX=0;let textY=0;let textElement;let closeElement;if(element){textElement=element.getElementsByTagName("span")[0];closeElement=element.getElementsByClassName("__cxt-ar-annotation-close__")[0]}if(pointX>x+width-width/2&&pointY>y+height){positionStart="br";baseStartX=width-width*horizontalBaseStartMultiplier*2;baseEndX=baseStartX+width*horizontalBaseEndMultiplier;baseStartY=height;baseEndY=height;pointFinalX=pointX-x;pointFinalY=pointY-y;element.style.height=pointY-y;commentRectPath=`L${width} ${height} L${width} 0 L0 0 L0 ${baseStartY} L${baseStartX} ${baseStartY}`;if(textElement){textWidth=width;textHeight=height;textX=0;textY=0}}else if(pointXy+height){positionStart="bl";baseStartX=width*horizontalBaseStartMultiplier;baseEndX=baseStartX+width*horizontalBaseEndMultiplier;baseStartY=height;baseEndY=height;pointFinalX=pointX-x;pointFinalY=pointY-y;element.style.height=`${pointY-y}px`;commentRectPath=`L${width} ${height} L${width} 0 L0 0 L0 ${baseStartY} L${baseStartX} ${baseStartY}`;if(textElement){textWidth=width;textHeight=height;textX=0;textY=0}}else if(pointX>x+width-width/2&&pointYx+width&&pointY>y-pospad&&pointYy&&pointY=start&&videoTimeend)){el.setAttribute("hidden","");if(annotation.style==="speech"&&annotation.__speechBubble){annotation.__speechBubble.style.display="none"}}}}start(){if(!this.playerOptions)throw new Error("playerOptions must be provided to use the start method");const videoTime=this.playerOptions.getVideoTime();if(!this.updateIntervalId){this.update(videoTime);this.updateIntervalId=setInterval(()=>{const videoTime=this.playerOptions.getVideoTime();this.update(videoTime);window.dispatchEvent(new CustomEvent("__ar_renderer_start"))},this.updateInterval)}}stop(){if(!this.playerOptions)throw new Error("playerOptions must be provided to use the stop method");const videoTime=this.playerOptions.getVideoTime();if(this.updateIntervalId){this.update(videoTime);clearInterval(this.updateIntervalId);this.updateIntervalId=null;window.dispatchEvent(new CustomEvent("__ar_renderer_stop"))}}updateAnnotationTextSize(annotation,containerHeight){if(annotation.textSize){const textSize=annotation.textSize/100*containerHeight;annotation.__element.style.fontSize=`${textSize}px`}}updateTextSize(){const containerHeight=this.container.getBoundingClientRect().height;for(const annotation of this.annotations){this.updateAnnotationTextSize(annotation,containerHeight)}}updateCloseSize(containerHeight){if(!containerHeight)containerHeight=this.container.getBoundingClientRect().height;const multiplier=.0423;this.annotationsContainer.style.setProperty("--annotation-close-size",`${containerHeight*multiplier}px`)}updateAnnotationDimensions(annotations,videoWidth,videoHeight){const playerWidth=this.container.getBoundingClientRect().width;const playerHeight=this.container.getBoundingClientRect().height;const widthDivider=playerWidth/videoWidth;const heightDivider=playerHeight/videoHeight;let scaledVideoWidth=playerWidth;let scaledVideoHeight=playerHeight;if(widthDivider%1!==0||heightDivider%1!==0){if(widthDivider>heightDivider){scaledVideoWidth=playerHeight/videoHeight*videoWidth;scaledVideoHeight=playerHeight}else if(heightDivider>widthDivider){scaledVideoWidth=playerWidth;scaledVideoHeight=playerWidth/videoWidth*videoHeight}}const verticalBlackBarWidth=(playerWidth-scaledVideoWidth)/2;const horizontalBlackBarHeight=(playerHeight-scaledVideoHeight)/2;const widthOffsetPercent=verticalBlackBarWidth/playerWidth*100;const heightOffsetPercent=horizontalBlackBarHeight/playerHeight*100;const widthMultiplier=scaledVideoWidth/playerWidth;const heightMultiplier=scaledVideoHeight/playerHeight;for(const annotation of annotations){const el=annotation.__element;let ax=widthOffsetPercent+annotation.x*widthMultiplier;let ay=heightOffsetPercent+annotation.y*heightMultiplier;let aw=annotation.width*widthMultiplier;let ah=annotation.height*heightMultiplier;el.style.left=`${ax}%`;el.style.top=`${ay}%`;el.style.width=`${aw}%`;el.style.height=`${ah}%`;let horizontalPadding=scaledVideoWidth*.008;let verticalPadding=scaledVideoHeight*.008;if(annotation.style==="speech"&&annotation.text){const pel=annotation.__element.getElementsByTagName("span")[0];horizontalPadding*=2;verticalPadding*=2;pel.style.paddingLeft=horizontalPadding+"px";pel.style.paddingRight=horizontalPadding+"px";pel.style.paddingBottom=verticalPadding+"px";pel.style.paddingTop=verticalPadding+"px"}else if(annotation.style!=="speech"){el.style.paddingLeft=horizontalPadding+"px";el.style.paddingRight=horizontalPadding+"px";el.style.paddingBottom=verticalPadding+"px";el.style.paddingTop=verticalPadding+"px"}if(annotation.__speechBubble){const asx=this.percentToPixels(playerWidth,ax);const asy=this.percentToPixels(playerHeight,ay);const asw=this.percentToPixels(playerWidth,aw);const ash=this.percentToPixels(playerHeight,ah);let sx=widthOffsetPercent+annotation.sx*widthMultiplier;let sy=heightOffsetPercent+annotation.sy*heightMultiplier;sx=this.percentToPixels(playerWidth,sx);sy=this.percentToPixels(playerHeight,sy);this.createSvgSpeechBubble(asx,asy,asw,ash,sx,sy,null,annotation.__element,annotation.__speechBubble)}this.updateAnnotationTextSize(annotation,scaledVideoHeight);this.updateCloseSize(scaledVideoHeight)}}updateAllAnnotationSizes(){if(this.playerOptions&&this.playerOptions.getOriginalVideoWidth&&this.playerOptions.getOriginalVideoHeight){const videoWidth=this.playerOptions.getOriginalVideoWidth();const videoHeight=this.playerOptions.getOriginalVideoHeight();this.updateAnnotationDimensions(this.annotations,videoWidth,videoHeight)}else{const playerWidth=this.container.getBoundingClientRect().width;const playerHeight=this.container.getBoundingClientRect().height;this.updateAnnotationDimensions(this.annotations,playerWidth,playerHeight)}}hideAll(){for(const annotation of this.annotations){annotation.__element.setAttribute("hidden","")}}annotationClickHandler(e){let annotationElement=e.target;if(!annotationElement.matches(".__cxt-ar-annotation__")&&!annotationElement.closest(".__cxt-ar-annotation-close__")){annotationElement=annotationElement.closest(".__cxt-ar-annotation__");if(!annotationElement)return null}let annotationData=annotationElement.__annotation;if(!annotationElement||!annotationData)return;if(annotationData.actionType==="time"){const seconds=annotationData.actionSeconds;if(this.playerOptions){this.playerOptions.seekTo(seconds);const videoTime=this.playerOptions.getVideoTime();this.update(videoTime)}window.dispatchEvent(new CustomEvent("__ar_seek_to",{detail:{seconds:seconds}}))}else if(annotationData.actionType==="url"){const data={url:annotationData.actionUrl,target:annotationData.actionUrlTarget||"current"};const timeHash=this.extractTimeHash(new URL(data.url));if(timeHash&&timeHash.hasOwnProperty("seconds")){data.seconds=timeHash.seconds}window.dispatchEvent(new CustomEvent("__ar_annotation_click",{detail:data}))}}setUpdateInterval(ms){this.updateInterval=ms;this.stop();this.start()}decimalToHex(dec){let hex=dec.toString(16);hex="000000".substr(0,6-hex.length)+hex;return hex}extractTimeHash(url){if(!url)throw new Error("A URL must be provided");const hash=url.hash;if(hash&&hash.startsWith("#t=")){const timeString=url.hash.split("#t=")[1];const seconds=this.timeStringToSeconds(timeString);return{seconds:seconds}}else{return false}}timeStringToSeconds(time){let seconds=0;const h=time.split("h");const m=(h[1]||time).split("m");const s=(m[1]||time).split("s");if(h[0]&&h.length===2)seconds+=parseInt(h[0],10)*60*60;if(m[0]&&m.length===2)seconds+=parseInt(m[0],10)*60;if(s[0]&&s.length===2)seconds+=parseInt(s[0],10);return seconds}percentToPixels(a,b){return a*b/100}}function youtubeAnnotationsPlugin(options){if(!options.annotationXml)throw new Error("Annotation data must be provided");if(!options.videoContainer)throw new Error("A video container to overlay the data on must be provided");const player=this;const xml=options.annotationXml;const parser=new AnnotationParser;const annotationElements=parser.getAnnotationsFromXml(xml);const annotations=parser.parseYoutubeAnnotationList(annotationElements);const videoContainer=options.videoContainer;const playerOptions={getVideoTime(){return player.currentTime()},seekTo(seconds){player.currentTime(seconds)},getOriginalVideoWidth(){return player.videoWidth()},getOriginalVideoHeight(){return player.videoHeight()}};raiseControls();const renderer=new AnnotationRenderer(annotations,videoContainer,playerOptions,options.updateInterval);setupEventListeners(player,renderer);renderer.start()}function setupEventListeners(player,renderer){if(!player)throw new Error("A video player must be provided");player.on("playerresize",e=>{renderer.updateAllAnnotationSizes(renderer.annotations)});player.one("loadedmetadata",e=>{renderer.updateAllAnnotationSizes(renderer.annotations)});player.on("pause",e=>{renderer.stop()});player.on("play",e=>{renderer.start()});player.on("seeking",e=>{renderer.update()});player.on("seeked",e=>{renderer.update()})}function raiseControls(){const styles=document.createElement("style");styles.textContent=`\n\t.vjs-control-bar {\n\t\tz-index: 21;\n\t}\n\t`;document.body.append(styles)} diff --git a/invidious/assets/js/watch.js b/invidious/assets/js/watch.js deleted file mode 100755 index 26ad138..0000000 --- a/invidious/assets/js/watch.js +++ /dev/null @@ -1,193 +0,0 @@ -'use strict'; - -function toggle_parent(target) { - var body = target.parentNode.parentNode.children[1]; - if (body.style.display === 'none') { - target.textContent = '[ − ]'; - body.style.display = ''; - } else { - target.textContent = '[ + ]'; - body.style.display = 'none'; - } -} - -function swap_comments(event) { - var source = event.target.getAttribute('data-comments'); - - if (source === 'youtube') { - get_youtube_comments(); - } else if (source === 'reddit') { - get_reddit_comments(); - } -} - -var continue_button = document.getElementById('continue'); -if (continue_button) { - continue_button.onclick = continue_autoplay; -} - -function next_video() { - var url = new URL('https://example.com/watch?v=' + video_data.next_video); - - if (video_data.params.autoplay || video_data.params.continue_autoplay) - url.searchParams.set('autoplay', '1'); - if (video_data.params.listen !== video_data.preferences.listen) - url.searchParams.set('listen', video_data.params.listen); - if (video_data.params.speed !== video_data.preferences.speed) - url.searchParams.set('speed', video_data.params.speed); - if (video_data.params.local !== video_data.preferences.local) - url.searchParams.set('local', video_data.params.local); - url.searchParams.set('continue', '1'); - - location.assign(url.pathname + url.search); -} - -function continue_autoplay(event) { - if (event.target.checked) { - player.on('ended', next_video); - } else { - player.off('ended'); - } -} - -function get_playlist(plid) { - var playlist = document.getElementById('playlist'); - - playlist.innerHTML = spinnerHTMLwithHR; - - var plid_url; - if (plid.startsWith('RD')) { - plid_url = '/api/v1/mixes/' + plid + - '?continuation=' + video_data.id + - '&format=html&hl=' + video_data.preferences.locale; - } else { - plid_url = '/api/v1/playlists/' + plid + - '?index=' + video_data.index + - '&continuation=' + video_data.id + - '&format=html&hl=' + video_data.preferences.locale; - } - - helpers.xhr('GET', plid_url, {retries: 5, entity_name: 'playlist'}, { - on200: function (response) { - playlist.innerHTML = response.playlistHtml; - - if (!response.nextVideo) return; - - var nextVideo = document.getElementById(response.nextVideo); - nextVideo.parentNode.parentNode.scrollTop = nextVideo.offsetTop; - - player.on('ended', function () { - var url = new URL('https://example.com/watch?v=' + response.nextVideo); - - url.searchParams.set('list', plid); - if (!plid.startsWith('RD')) - url.searchParams.set('index', response.index); - if (video_data.params.autoplay || video_data.params.continue_autoplay) - url.searchParams.set('autoplay', '1'); - if (video_data.params.listen !== video_data.preferences.listen) - url.searchParams.set('listen', video_data.params.listen); - if (video_data.params.speed !== video_data.preferences.speed) - url.searchParams.set('speed', video_data.params.speed); - if (video_data.params.local !== video_data.preferences.local) - url.searchParams.set('local', video_data.params.local); - - location.assign(url.pathname + url.search); - }); - }, - onNon200: function (xhr) { - playlist.innerHTML = ''; - document.getElementById('continue').style.display = ''; - }, - onError: function (xhr) { - playlist.innerHTML = spinnerHTMLwithHR; - }, - onTimeout: function (xhr) { - playlist.innerHTML = spinnerHTMLwithHR; - } - }); -} - -function get_reddit_comments() { - var comments = document.getElementById('comments'); - - var fallback = comments.innerHTML; - comments.innerHTML = spinnerHTML; - - var url = '/api/v1/comments/' + video_data.id + - '?source=reddit&format=html' + - '&hl=' + video_data.preferences.locale; - - var onNon200 = function (xhr) { comments.innerHTML = fallback; }; - if (video_data.params.comments[1] === 'youtube') - onNon200 = function (xhr) {}; - - helpers.xhr('GET', url, {retries: 5, entity_name: ''}, { - on200: function (response) { - comments.innerHTML = ' \ -
\ -

\ - [ − ] \ - {title} \ -

\ -

\ - \ - \ - {youtubeCommentsText} \ - \ - \ -

\ - \ - {redditPermalinkText} \ - \ -
\ -
{contentHtml}
\ -
'.supplant({ - title: response.title, - youtubeCommentsText: video_data.youtube_comments_text, - redditPermalinkText: video_data.reddit_permalink_text, - permalink: response.permalink, - contentHtml: response.contentHtml - }); - - comments.children[0].children[0].children[0].onclick = toggle_comments; - comments.children[0].children[1].children[0].onclick = swap_comments; - }, - onNon200: onNon200, // declared above - }); -} - -if (video_data.play_next) { - player.on('ended', function () { - var url = new URL('https://example.com/watch?v=' + video_data.next_video); - - if (video_data.params.autoplay || video_data.params.continue_autoplay) - url.searchParams.set('autoplay', '1'); - if (video_data.params.listen !== video_data.preferences.listen) - url.searchParams.set('listen', video_data.params.listen); - if (video_data.params.speed !== video_data.preferences.speed) - url.searchParams.set('speed', video_data.params.speed); - if (video_data.params.local !== video_data.preferences.local) - url.searchParams.set('local', video_data.params.local); - url.searchParams.set('continue', '1'); - - location.assign(url.pathname + url.search); - }); -} - -addEventListener('load', function (e) { - if (video_data.plid) - get_playlist(video_data.plid); - - if (video_data.params.comments[0] === 'youtube') { - get_youtube_comments(); - } else if (video_data.params.comments[0] === 'reddit') { - get_reddit_comments(); - } else if (video_data.params.comments[1] === 'youtube') { - get_youtube_comments(); - } else if (video_data.params.comments[1] === 'reddit') { - get_reddit_comments(); - } else { - var comments = document.getElementById('comments'); - comments.innerHTML = ''; - } -}); diff --git a/invidious/assets/js/watched_indicator.js b/invidious/assets/js/watched_indicator.js deleted file mode 100755 index e971cd8..0000000 --- a/invidious/assets/js/watched_indicator.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var save_player_pos_key = 'save_player_pos'; - -function get_all_video_times() { - return helpers.storage.get(save_player_pos_key) || {}; -} - -document.querySelectorAll('.watched-indicator').forEach(function (indicator) { - var watched_part = get_all_video_times()[indicator.dataset.id]; - var total = parseInt(indicator.dataset.length, 10); - if (watched_part === undefined) { - watched_part = total; - } - var percentage = Math.round((watched_part / total) * 100); - - if (percentage < 5) { - percentage = 5; - } - if (percentage > 90) { - percentage = 100; - } - - indicator.style.width = percentage + '%'; -}); diff --git a/invidious/assets/js/watched_widget.js b/invidious/assets/js/watched_widget.js deleted file mode 100755 index f1ac9cb..0000000 --- a/invidious/assets/js/watched_widget.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; -var watched_data = JSON.parse(document.getElementById('watched_data').textContent); -var payload = 'csrf_token=' + watched_data.csrf_token; - -function mark_watched(target) { - var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode; - tile.style.display = 'none'; - - var url = '/watch_ajax?action_mark_watched=1&redirect=false' + - '&id=' + target.getAttribute('data-id'); - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - tile.style.display = ''; - } - }); -} - -function mark_unwatched(target) { - var tile = target.parentNode.parentNode.parentNode.parentNode.parentNode; - tile.style.display = 'none'; - var count = document.getElementById('count'); - count.textContent--; - - var url = '/watch_ajax?action_mark_unwatched=1&redirect=false' + - '&id=' + target.getAttribute('data-id'); - - helpers.xhr('POST', url, {payload: payload}, { - onNon200: function (xhr) { - count.textContent++; - tile.style.display = ''; - } - }); -} diff --git a/invidious/assets/mstile-150x150.png b/invidious/assets/mstile-150x150.png deleted file mode 100755 index a16e943c7de22e22b7ea2075a36416a0e736c4fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6368 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 diff --git a/invidious/assets/robots.txt b/invidious/assets/robots.txt deleted file mode 100755 index 1f53798..0000000 --- a/invidious/assets/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: / diff --git a/invidious/assets/safari-pinned-tab.svg b/invidious/assets/safari-pinned-tab.svg deleted file mode 100755 index a0c7715..0000000 --- a/invidious/assets/safari-pinned-tab.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - - - diff --git a/invidious/assets/site.webmanifest b/invidious/assets/site.webmanifest deleted file mode 100755 index 2db6ed9..0000000 --- a/invidious/assets/site.webmanifest +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "Invidious", - "short_name": "Invidious", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#575757", - "background_color": "#575757", - "display": "standalone", - "description": "An alternative front-end to YouTube", - "start_url": "/" -} diff --git a/invidious/assets/videojs/.gitignore b/invidious/assets/videojs/.gitignore deleted file mode 100755 index 5e7d273..0000000 --- a/invidious/assets/videojs/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/invidious/config/config.example.yml b/invidious/config/config.example.yml deleted file mode 100755 index 38085a2..0000000 --- a/invidious/config/config.example.yml +++ /dev/null @@ -1,901 +0,0 @@ -######################################### -# -# Database configuration -# -######################################### - -## -## Database configuration with separate parameters. -## This setting is MANDATORY, unless 'database_url' is used. -## -db: - user: kemal - password: kemal - host: localhost - port: 5432 - dbname: invidious - -## -## Database configuration using a single URI. This is an -## alternative to the 'db' parameter above. If both forms -## are used, then only database_url is used. -## This setting is MANDATORY, unless 'db' is used. -## -## Note: The 'database_url' setting allows the use of UNIX -## sockets. To do so, remove the IP address (or FQDN) and port -## and append the 'host' parameter. E.g: -## postgres://kemal:kemal@/invidious?host=/var/run/postgresql -## -## Accepted values: a postgres:// URI -## Default: postgres://kemal:kemal@localhost:5432/invidious -## -#database_url: postgres://kemal:kemal@localhost:5432/invidious - -## -## Enable automatic table integrity check. This will create -## the required tables and columns if anything is missing. -## -## Accepted values: true, false -## Default: false -## -#check_tables: false - - - -######################################### -# -# Server config -# -######################################### - -# ----------------------------- -# Network (inbound) -# ----------------------------- - -## -## Port to listen on for incoming connections. -## -## Note: Ports lower than 1024 requires either root privileges -## (not recommended) or the "CAP_NET_BIND_SERVICE" capability -## (See https://stackoverflow.com/a/414258 and `man capabilities`) -## -## Accepted values: 1-65535 -## Default: 3000 -## -#port: 3000 - -## -## When the invidious instance is behind a proxy, and the proxy -## listens on a different port than the instance does, this lets -## invidious know about it. This is used to craft absolute URLs -## to the instance (e.g in the API). -## -## Note: This setting is MANDATORY if invidious is behind a -## reverse proxy. -## -## Accepted values: 1-65535 -## Default: -## -#external_port: - -## -## Interface address to listen on for incoming connections. -## -## Accepted values: a valid IPv4 or IPv6 address. -## default: 0.0.0.0 (listen on all interfaces) -## -#host_binding: 0.0.0.0 - -## -## Domain name under which this instance is hosted. This is -## used to craft absolute URLs to the instance (e.g in the API). -## The domain MUST be defined if your instance is accessed from -## a domain name (like 'example.com'). -## -## Accepted values: a fully qualified domain name (FQDN) -## Default: -## -domain: - -## -## Tell Invidious that it is behind a proxy that provides only -## HTTPS, so all links must use the https:// scheme. This -## setting MUST be set to true if invidious is behind a -## reverse proxy serving HTTPs. -## -## Accepted values: true, false -## Default: false -## -https_only: false - -## -## Enable/Disable 'Strict-Transport-Security'. Make sure that -## the domain specified under 'domain' is served securely. -## -## Accepted values: true, false -## Default: true -## -#hsts: true - - -# ----------------------------- -# Network (outbound) -# ----------------------------- - -## -## Disable proxying server-wide. Can be disable as a whole, or -## only for a single function. -## -## Accepted values: true, false, dash, livestreams, downloads, local -## Default: false -## -#disable_proxy: false - -## -## Size of the HTTP pool used to connect to youtube. Each -## domain ('youtube.com', 'ytimg.com', ...) has its own pool. -## -## Accepted values: a positive integer -## Default: 100 -## -#pool_size: 100 - - -## -## Additional cookies to be sent when requesting the youtube API. -## -## Accepted values: a string in the format "name1=value1; name2=value2..." -## Default: -## -#cookies: - -## -## Force connection to youtube over a specific IP family. -## -## Note: This may sometimes resolve issues involving rate-limiting. -## See https://github.com/ytdl-org/youtube-dl/issues/21729. -## -## Accepted values: ipv4, ipv6 -## Default: -## -#force_resolve: - - -## -## Use Innertube's transcripts API instead of timedtext for closed captions -## -## Useful for larger instances as InnerTube is **not ratelimited**. See https://github.com/iv-org/invidious/issues/2567 -## -## Subtitle experience may differ slightly on Invidious. -## -## Accepted values: true, false -## Default: false -## -# use_innertube_for_captions: false - - -# ----------------------------- -# Logging -# ----------------------------- - -## -## Path to log file. Can be absolute or relative to the invidious -## binary. This is overridden if "-o OUTPUT" or "--output=OUTPUT" -## are passed on the command line. -## -## Accepted values: a filesystem path or 'STDOUT' -## Default: STDOUT -## -#output: STDOUT - -## -## Logging Verbosity. This is overridden if "-l LEVEL" or -## "--log-level=LEVEL" are passed on the command line. -## -## Accepted values: All, Trace, Debug, Info, Warn, Error, Fatal, Off -## Default: Info -## -#log_level: Info - - -# ----------------------------- -# Features -# ----------------------------- - -## -## Enable/Disable the "Popular" tab on the main page. -## -## Accepted values: true, false -## Default: true -## -#popular_enabled: true - -## -## Enable/Disable statstics (available at /api/v1/stats). -## The following data is available: -## - Software name ("invidious") and version+branch (same data as -## displayed in the footer, e.g: "2021.05.13-75e5b49" / "master") -## - The value of the 'registration_enabled' config (true/false) -## - Number of currently registered users -## - Number of registered users who connected in the last month -## - Number of registered users who connected in the last 6 months -## - Timestamp of the last server restart -## - Timestamp of the last "Channel Refresh" job execution -## -## Warning: This setting MUST be set to true if you plan to run -## a public instance. It is used by api.invidious.io to refresh -## your instance's status. -## -## Accepted values: true, false -## Default: false -## -#statistics_enabled: false - - -# ----------------------------- -# Users and accounts -# ----------------------------- - -## -## Allow/Forbid Invidious (local) account creation. Invidious -## accounts allow users to subscribe to channels and to create -## playlists without a Google account. -## -## Accepted values: true, false -## Default: true -## -#registration_enabled: true - -## -## Allow/Forbid users to log-in. -## -## Accepted values: true, false -## Default: true -## -#login_enabled: true - -## -## Enable/Disable the captcha challenge on the login page. -## -## Note: this is a basic captcha challenge that doesn't -## depend on any third parties. -## -## Accepted values: true, false -## Default: true -## -#captcha_enabled: true - -## -## List of usernames that will be granted administrator rights. -## A user with administrator rights will be able to change the -## server configuration options listed below in /preferences, -## in addition to the usual user preferences. -## -## Server-wide settings: -## - popular_enabled -## - captcha_enabled -## - login_enabled -## - registration_enabled -## - statistics_enabled -## Default user preferences: -## - default_home -## - feed_menu -## -## Accepted values: an array of strings -## Default: [""] -## -#admins: [""] - -## -## Enable/Disable the user notifications for all users -## -## Note: On large instances, it is recommended to set this option to 'false' -## in order to reduce the amount of data written to the database, and hence -## improve the overall performance of the instance. -## -## Accepted values: true, false -## Default: true -## -#enable_user_notifications: true - -# ----------------------------- -# Background jobs -# ----------------------------- - -## -## Number of threads to use when crawling channel videos (during -## subscriptions update). -## -## Notes: This setting is overridden if either "-c THREADS" or -## "--channel-threads=THREADS" is passed on the command line. -## -## Accepted values: a positive integer -## Default: 1 -## -channel_threads: 1 - -## -## Time interval between two executions of the job that crawls -## channel videos (subscriptions update). -## -## Accepted values: a valid time interval (like 1h30m or 90m) -## Default: 30m -## -#channel_refresh_interval: 30m - -## -## Forcefully dump and re-download the entire list of uploaded -## videos when crawling channel (during subscriptions update). -## -## Accepted values: true, false -## Default: false -## -full_refresh: false - -## -## Number of threads to use when updating RSS feeds. -## -## Notes: This setting is overridden if either "-f THREADS" or -## "--feed-threads=THREADS" is passed on the command line. -## -## Accepted values: a positive integer -## Default: 1 -## -feed_threads: 1 - -## -## Enable/Disable the polling job that keeps the decryption -## function (for "secured" videos) up to date. -## -## Note: This part of the code generate a small amount of data every minute. -## This may not be desired if you have bandwidth limits set by your ISP. -## -## Note 2: This part of the code is currently broken, so changing -## this setting has no impact. -## -## Accepted values: true, false -## Default: false -## -#decrypt_polling: false - - -jobs: - - ## Options for the database cleaning job - clear_expired_items: - - ## Enable/Disable job - ## - ## Accepted values: true, false - ## Default: true - ## - enable: true - - ## Options for the channels updater job - refresh_channels: - - ## Enable/Disable job - ## - ## Accepted values: true, false - ## Default: true - ## - enable: true - - ## Options for the RSS feeds updater job - refresh_feeds: - - ## Enable/Disable job - ## - ## Accepted values: true, false - ## Default: true - ## - enable: true - - -# ----------------------------- -# Miscellaneous -# ----------------------------- - -## -## custom banner displayed at the top of every page. This can -## used for instance announcements, e.g. -## -## Accepted values: any string. HTML is accepted. -## Default: -## -#banner: - -## -## Subscribe to channels using PubSubHub (Google PubSubHubbub service). -## PubSubHub allows Invidious to be instantly notified when a new video -## is published on any subscribed channels. When PubSubHub is not used, -## Invidious will check for new videos every minute. -## -## Note: This setting is recommended for public instances. -## -## Note 2: -## - Requires a public instance (it uses /feed/webhook/v1) -## - Requires 'domain' and 'hmac_key' to be set. -## - Setting this parameter to any number greater than zero will -## enable channel subscriptions via PubSubHub, but will limit the -## amount of concurrent subscriptions. -## -## Accepted values: true, false, a positive integer -## Default: false -## -#use_pubsub_feeds: false - -## -## HMAC signing key used for CSRF tokens, cookies and pubsub -## subscriptions verification. -## -## Note: This parameter is mandatory and should be a random string. -## Such random string can be generated on linux with the following -## command: `pwgen 20 1` -## -## Accepted values: a string -## Default: -## -hmac_key: "CHANGE_ME!!" - -## -## List of video IDs where the "download" widget must be -## disabled, in order to comply with DMCA requests. -## -## Accepted values: an array of string -## Default: -## -#dmca_content: - -## -## Cache video annotations in the database. -## -## Warning: empty annotations or annotations that only contain -## cards won't be cached. -## -## Accepted values: true, false -## Default: false -## -#cache_annotations: false - -## -## Source code URL. If your instance is running a modified source -## code, you MUST publish it somewhere and set this option. -## -## Accepted values: a string -## Default: -## -#modified_source_code_url: "" - -## -## Maximum custom playlist length limit. -## -## Accepted values: Integer -## Default: 500 -## -#playlist_length_limit: 500 - -######################################### -# -# Default user preferences -# -######################################### - -## -## NOTE: All the settings below define the default user -## preferences. They will apply to ALL users connecting -## without a preferences cookie (so either on the first -## connection to the instance or after clearing the -## browser's cookies). -## - -default_user_preferences: - - # ----------------------------- - # Internationalization - # ----------------------------- - - ## - ## Default user interface language (locale). - ## - ## Note: When hosting a public instance, overriding the - ## default (english) is not recommended, as it may - ## people using other languages. - ## - ## Accepted values: - ## ar (Arabic) - ## da (Danish) - ## de (German) - ## en-US (english, US) - ## el (Greek) - ## eo (Esperanto) - ## es (Spanish) - ## fa (Persian) - ## fi (Finnish) - ## fr (French) - ## he (Hebrew) - ## hr (Hungarian) - ## id (Indonesian) - ## is (Icelandic) - ## it (Italian) - ## ja (Japanese) - ## nb-NO (Norwegian, Bokmål) - ## nl (Dutch) - ## pl (Polish) - ## pt-BR (Portuguese, Brazil) - ## pt-PT (Portuguese, Portugal) - ## ro (Romanian) - ## ru (Russian) - ## sv (Swedish) - ## tr (Turkish) - ## uk (Ukrainian) - ## zh-CN (Chinese, China) (a.k.a "Simplified Chinese") - ## zh-TW (Chinese, Taiwan) (a.k.a "Traditional Chinese") - ## - ## Default: en-US - ## - #locale: en-US - - ## - ## Default geographical location for content. - ## - ## Accepted values: - ## AE, AR, AT, AU, AZ, BA, BD, BE, BG, BH, BO, BR, BY, CA, CH, CL, CO, CR, - ## CY, CZ, DE, DK, DO, DZ, EC, EE, EG, ES, FI, FR, GB, GE, GH, GR, GT, HK, - ## HN, HR, HU, ID, IE, IL, IN, IQ, IS, IT, JM, JO, JP, KE, KR, KW, KZ, LB, - ## LI, LK, LT, LU, LV, LY, MA, ME, MK, MT, MX, MY, NG, NI, NL, NO, NP, NZ, - ## OM, PA, PE, PG, PH, PK, PL, PR, PT, PY, QA, RO, RS, RU, SA, SE, SG, SI, - ## SK, SN, SV, TH, TN, TR, TW, TZ, UA, UG, US, UY, VE, VN, YE, ZA, ZW - ## - ## Default: US - ## - #region: US - - ## - ## Top 3 preferred languages for video captions. - ## - ## Note: overriding the default (no preferred - ## caption language) is not recommended, in order - ## to not penalize people using other languages. - ## - ## Accepted values: a three-entries array. - ## Each entry can be one of: - ## "English", "English (auto-generated)", - ## "Afrikaans", "Albanian", "Amharic", "Arabic", - ## "Armenian", "Azerbaijani", "Bangla", "Basque", - ## "Belarusian", "Bosnian", "Bulgarian", "Burmese", - ## "Catalan", "Cebuano", "Chinese (Simplified)", - ## "Chinese (Traditional)", "Corsican", "Croatian", - ## "Czech", "Danish", "Dutch", "Esperanto", "Estonian", - ## "Filipino", "Finnish", "French", "Galician", "Georgian", - ## "German", "Greek", "Gujarati", "Haitian Creole", "Hausa", - ## "Hawaiian", "Hebrew", "Hindi", "Hmong", "Hungarian", - ## "Icelandic", "Igbo", "Indonesian", "Irish", "Italian", - ## "Japanese", "Javanese", "Kannada", "Kazakh", "Khmer", - ## "Korean", "Kurdish", "Kyrgyz", "Lao", "Latin", "Latvian", - ## "Lithuanian", "Luxembourgish", "Macedonian", - ## "Malagasy", "Malay", "Malayalam", "Maltese", "Maori", - ## "Marathi", "Mongolian", "Nepali", "Norwegian Bokmål", - ## "Nyanja", "Pashto", "Persian", "Polish", "Portuguese", - ## "Punjabi", "Romanian", "Russian", "Samoan", - ## "Scottish Gaelic", "Serbian", "Shona", "Sindhi", - ## "Sinhala", "Slovak", "Slovenian", "Somali", - ## "Southern Sotho", "Spanish", "Spanish (Latin America)", - ## "Sundanese", "Swahili", "Swedish", "Tajik", "Tamil", - ## "Telugu", "Thai", "Turkish", "Ukrainian", "Urdu", - ## "Uzbek", "Vietnamese", "Welsh", "Western Frisian", - ## "Xhosa", "Yiddish", "Yoruba", "Zulu" - ## - ## Default: ["", "", ""] - ## - #captions: ["", "", ""] - - - # ----------------------------- - # Interface - # ----------------------------- - - ## - ## Enable/Disable dark mode. - ## - ## Accepted values: "dark", "light", "auto" - ## Default: "auto" - ## - #dark_mode: "auto" - - ## - ## Enable/Disable thin mode (no video thumbnails). - ## - ## Accepted values: true, false - ## Default: false - ## - #thin_mode: false - - ## - ## List of feeds available on the home page. - ## - ## Note: "Subscriptions" and "Playlists" are only visible - ## when the user is logged in. - ## - ## Accepted values: A list of strings - ## Each entry can be one of: "Popular", "Trending", - ## "Subscriptions", "Playlists" - ## - ## Default: ["Popular", "Trending", "Subscriptions", "Playlists"] (show all feeds) - ## - #feed_menu: ["Popular", "Trending", "Subscriptions", "Playlists"] - - ## - ## Default feed to display on the home page. - ## - ## Note: setting this option to "Popular" has no - ## effect when 'popular_enabled' is set to false. - ## - ## Accepted values: Popular, Trending, Subscriptions, Playlists, - ## Default: Popular - ## - #default_home: Popular - - ## - ## Default number of results to display per page. - ## - ## Note: this affects invidious-generated pages only, such - ## as watch history and subscription feeds. Playlists, search - ## results and channel videos depend on the data returned by - ## the Youtube API. - ## - ## Accepted values: any positive integer - ## Default: 40 - ## - #max_results: 40 - - ## - ## Show/hide annotations. - ## - ## Accepted values: true, false - ## Default: false - ## - #annotations: false - - ## - ## Show/hide annotation. - ## - ## Accepted values: true, false - ## Default: false - ## - #annotations_subscribed: false - - ## - ## Type of comments to display below video. - ## - ## Accepted values: a two-entries array. - ## Each entry can be one of: "youtube", "reddit", "" - ## - ## Default: ["youtube", ""] - ## - #comments: ["youtube", ""] - - ## - ## Default player style. - ## - ## Accepted values: invidious, youtube - ## Default: invidious - ## - #player_style: invidious - - ## - ## Show/Hide the "related videos" sidebar when - ## watching a video. - ## - ## Accepted values: true, false - ## Default: true - ## - #related_videos: true - - - # ----------------------------- - # Video player behavior - # ----------------------------- - - ## - ## Automatically play videos on page load. - ## - ## Accepted values: true, false - ## Default: false - ## - #autoplay: false - - ## - ## Automatically load the "next" video (either next in - ## playlist or proposed) when the current video ends. - ## - ## Accepted values: true, false - ## Default: false - ## - #continue: false - - ## - ## Autoplay next video by default. - ## - ## Note: Only effective if 'continue' is set to true. - ## - ## Accepted values: true, false - ## Default: true - ## - #continue_autoplay: true - - ## - ## Play videos in Audio-only mode by default. - ## - ## Accepted values: true, false - ## Default: false - ## - #listen: false - - ## - ## Loop videos automatically. - ## - ## Accepted values: true, false - ## Default: false - ## - #video_loop: false - - - # ----------------------------- - # Video playback settings - # ----------------------------- - - ## - ## Default video quality. - ## - ## Accepted values: dash, hd720, medium, small - ## Default: hd720 - ## - #quality: hd720 - - ## - ## Default dash video quality. - ## - ## Note: this setting only takes effet if the - ## 'quality' parameter is set to "dash". - ## - ## Accepted values: - ## auto, best, 4320p, 2160p, 1440p, 1080p, - ## 720p, 480p, 360p, 240p, 144p, worst - ## Default: auto - ## - #quality_dash: auto - - ## - ## Default video playback speed. - ## - ## Accepted values: 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0 - ## Default: 1.0 - ## - #speed: 1.0 - - ## - ## Default volume. - ## - ## Accepted values: 0-100 - ## Default: 100 - ## - #volume: 100 - - ## - ## Allow 360° videos to be played. - ## - ## Note: This feature requires a WebGL-enabled browser. - ## - ## Accepted values: true, false - ## Default: true - ## - #vr_mode: true - - ## - ## Save the playback position - ## Allow to continue watching at the previous position when - ## watching the same video. - ## - ## Accepted values: true, false - ## Default: false - ## - #save_player_pos: false - - # ----------------------------- - # Subscription feed - # ----------------------------- - - ## - ## In the "Subscription" feed, only show the latest video - ## of each channel the user is subscribed to. - ## - ## Note: when combined with 'unseen_only', the latest unseen - ## video of each channel will be displayed instead of the - ## latest by date. - ## - ## Accepted values: true, false - ## Default: false - ## - #latest_only: false - - ## - ## Enable/Disable user subscriptions desktop notifications. - ## - ## Accepted values: true, false - ## Default: false - ## - #notifications_only: false - - ## - ## In the "Subscription" feed, Only show the videos that the - ## user haven't watched yet (i.e which are not in their watch - ## history). - ## - ## Accepted values: true, false - ## Default: false - ## - #unseen_only: false - - ## - ## Default sorting parameter for subscription feeds. - ## - ## Accepted values: - ## 'alphabetically' - ## 'alphabetically - reverse' - ## 'channel name' - ## 'channel name - reverse' - ## 'published' - ## 'published - reverse' - ## - ## Default: published - ## - #sort: published - - - # ----------------------------- - # Miscellaneous - # ----------------------------- - - ## - ## Proxy videos through instance by default. - ## - ## Warning: As most users won't change this setting in their - ## preferences, defaulting to true will significantly - ## increase the instance's network usage, so make sure that - ## your server's connection can handle it. - ## - ## Accepted values: true, false - ## Default: false - ## - #local: false - - ## - ## Show the connected user's nick at the top right. - ## - ## Accepted values: true, false - ## Default: true - ## - #show_nick: true - - ## - ## Automatically redirect to a random instance when the user uses - ## any "switch invidious instance" link (For videos, it's the plane - ## icon, next to "watch on youtube" and "listen"). When set to false, - ## the user is sent to https://redirect.invidious.io instead, where - ## they can manually select an instance. - ## - ## Accepted values: true, false - ## Default: false - ## - #automatic_instance_redirect: false - - ## - ## Show the entire video description by default (when set to 'false', - ## only the first few lines of the description are shown and a - ## "show more" button allows to expand it). - ## - ## Accepted values: true, false - ## Default: false - ## - #extend_desc: false diff --git a/invidious/config/migrate-scripts/migrate-db-17cf077.sh b/invidious/config/migrate-scripts/migrate-db-17cf077.sh deleted file mode 100755 index 1597311..0000000 --- a/invidious/config/migrate-scripts/migrate-db-17cf077.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channels ADD COLUMN subscribed bool;" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "UPDATE channels SET subscribed = false;" diff --git a/invidious/config/migrate-scripts/migrate-db-1c8075c.sh b/invidious/config/migrate-scripts/migrate-db-1c8075c.sh deleted file mode 100755 index b6f7b89..0000000 --- a/invidious/config/migrate-scripts/migrate-db-1c8075c.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos DROP COLUMN live_now CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos DROP COLUMN premiere_timestamp CASCADE" - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos ADD COLUMN live_now bool" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos ADD COLUMN premiere_timestamp timestamptz" diff --git a/invidious/config/migrate-scripts/migrate-db-1eca969.sh b/invidious/config/migrate-scripts/migrate-db-1eca969.sh deleted file mode 100755 index 770a76d..0000000 --- a/invidious/config/migrate-scripts/migrate-db-1eca969.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN title CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN views CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN likes CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN dislikes CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN wilson_score CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN published CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN description CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN language CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN author CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN ucid CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN allowed_regions CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN is_family_friendly CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN genre CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN genre_url CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN license CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN sub_count_text CASCADE" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE videos DROP COLUMN author_thumbnail CASCADE" diff --git a/invidious/config/migrate-scripts/migrate-db-30e6d29.sh b/invidious/config/migrate-scripts/migrate-db-30e6d29.sh deleted file mode 100755 index 9d0b2d3..0000000 --- a/invidious/config/migrate-scripts/migrate-db-30e6d29.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channels ADD COLUMN deleted bool;" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "UPDATE channels SET deleted = false;" diff --git a/invidious/config/migrate-scripts/migrate-db-3646395.sh b/invidious/config/migrate-scripts/migrate-db-3646395.sh deleted file mode 100755 index b6efe23..0000000 --- a/invidious/config/migrate-scripts/migrate-db-3646395.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" < config/sql/session_ids.sql -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "INSERT INTO session_ids (SELECT unnest(id), email, CURRENT_TIMESTAMP FROM users) ON CONFLICT (id) DO NOTHING" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE users DROP COLUMN id" diff --git a/invidious/config/migrate-scripts/migrate-db-3bcb98e.sh b/invidious/config/migrate-scripts/migrate-db-3bcb98e.sh deleted file mode 100755 index 444f65e..0000000 --- a/invidious/config/migrate-scripts/migrate-db-3bcb98e.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" < config/sql/annotations.sql diff --git a/invidious/config/migrate-scripts/migrate-db-52cb239.sh b/invidious/config/migrate-scripts/migrate-db-52cb239.sh deleted file mode 100755 index da977d9..0000000 --- a/invidious/config/migrate-scripts/migrate-db-52cb239.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos ADD COLUMN views bigint;" diff --git a/invidious/config/migrate-scripts/migrate-db-6e51189.sh b/invidious/config/migrate-scripts/migrate-db-6e51189.sh deleted file mode 100755 index 9132d3d..0000000 --- a/invidious/config/migrate-scripts/migrate-db-6e51189.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos ADD COLUMN live_now bool;" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "UPDATE channel_videos SET live_now = false;" diff --git a/invidious/config/migrate-scripts/migrate-db-701b5ea.sh b/invidious/config/migrate-scripts/migrate-db-701b5ea.sh deleted file mode 100755 index 46d60c0..0000000 --- a/invidious/config/migrate-scripts/migrate-db-701b5ea.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE users ADD COLUMN feed_needs_update boolean" diff --git a/invidious/config/migrate-scripts/migrate-db-88b7097.sh b/invidious/config/migrate-scripts/migrate-db-88b7097.sh deleted file mode 100755 index 146ee92..0000000 --- a/invidious/config/migrate-scripts/migrate-db-88b7097.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channel_videos ADD COLUMN premiere_timestamp timestamptz;" diff --git a/invidious/config/migrate-scripts/migrate-db-8e884fe.sh b/invidious/config/migrate-scripts/migrate-db-8e884fe.sh deleted file mode 100755 index 0d5de82..0000000 --- a/invidious/config/migrate-scripts/migrate-db-8e884fe.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -[ -z "$POSTGRES_USER" ] && POSTGRES_USER=kemal -[ -z "$POSTGRES_DB" ] && POSTGRES_DB=invidious - -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channels DROP COLUMN subscribed" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "ALTER TABLE channels ADD COLUMN subscribed timestamptz" -psql "$POSTGRES_DB" "$POSTGRES_USER" -c "UPDATE channels SET subscribed = '2019-01-01 00:00:00+00'" diff --git a/invidious/config/sql/annotations.sql b/invidious/config/sql/annotations.sql deleted file mode 100755 index 3705829..0000000 --- a/invidious/config/sql/annotations.sql +++ /dev/null @@ -1,12 +0,0 @@ --- Table: public.annotations - --- DROP TABLE public.annotations; - -CREATE TABLE IF NOT EXISTS public.annotations -( - id text NOT NULL, - annotations xml, - CONSTRAINT annotations_id_key UNIQUE (id) -); - -GRANT ALL ON TABLE public.annotations TO current_user; diff --git a/invidious/config/sql/channel_videos.sql b/invidious/config/sql/channel_videos.sql deleted file mode 100755 index cd4e0ff..0000000 --- a/invidious/config/sql/channel_videos.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Table: public.channel_videos - --- DROP TABLE public.channel_videos; - -CREATE TABLE IF NOT EXISTS public.channel_videos -( - id text NOT NULL, - title text, - published timestamp with time zone, - updated timestamp with time zone, - ucid text, - author text, - length_seconds integer, - live_now boolean, - premiere_timestamp timestamp with time zone, - views bigint, - CONSTRAINT channel_videos_id_key UNIQUE (id) -); - -GRANT ALL ON TABLE public.channel_videos TO current_user; - --- Index: public.channel_videos_ucid_idx - --- DROP INDEX public.channel_videos_ucid_idx; - -CREATE INDEX IF NOT EXISTS channel_videos_ucid_idx - ON public.channel_videos - USING btree - (ucid COLLATE pg_catalog."default"); - diff --git a/invidious/config/sql/channels.sql b/invidious/config/sql/channels.sql deleted file mode 100755 index 55772da..0000000 --- a/invidious/config/sql/channels.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Table: public.channels - --- DROP TABLE public.channels; - -CREATE TABLE IF NOT EXISTS public.channels -( - id text NOT NULL, - author text, - updated timestamp with time zone, - deleted boolean, - subscribed timestamp with time zone, - CONSTRAINT channels_id_key UNIQUE (id) -); - -GRANT ALL ON TABLE public.channels TO current_user; - --- Index: public.channels_id_idx - --- DROP INDEX public.channels_id_idx; - -CREATE INDEX IF NOT EXISTS channels_id_idx - ON public.channels - USING btree - (id COLLATE pg_catalog."default"); - diff --git a/invidious/config/sql/nonces.sql b/invidious/config/sql/nonces.sql deleted file mode 100755 index 644ac32..0000000 --- a/invidious/config/sql/nonces.sql +++ /dev/null @@ -1,22 +0,0 @@ --- Table: public.nonces - --- DROP TABLE public.nonces; - -CREATE TABLE IF NOT EXISTS public.nonces -( - nonce text, - expire timestamp with time zone, - CONSTRAINT nonces_id_key UNIQUE (nonce) -); - -GRANT ALL ON TABLE public.nonces TO current_user; - --- Index: public.nonces_nonce_idx - --- DROP INDEX public.nonces_nonce_idx; - -CREATE INDEX IF NOT EXISTS nonces_nonce_idx - ON public.nonces - USING btree - (nonce COLLATE pg_catalog."default"); - diff --git a/invidious/config/sql/playlist_videos.sql b/invidious/config/sql/playlist_videos.sql deleted file mode 100755 index 4b48b46..0000000 --- a/invidious/config/sql/playlist_videos.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Table: public.playlist_videos - --- DROP TABLE public.playlist_videos; - -CREATE TABLE IF NOT EXISTS public.playlist_videos -( - title text, - id text, - author text, - ucid text, - length_seconds integer, - published timestamptz, - plid text references playlists(id), - index int8, - live_now boolean, - PRIMARY KEY (index,plid) -); - -GRANT ALL ON TABLE public.playlist_videos TO current_user; diff --git a/invidious/config/sql/playlists.sql b/invidious/config/sql/playlists.sql deleted file mode 100755 index 83efce4..0000000 --- a/invidious/config/sql/playlists.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Type: public.privacy - --- DROP TYPE public.privacy; - -CREATE TYPE public.privacy AS ENUM -( - 'Public', - 'Unlisted', - 'Private' -); - --- Table: public.playlists - --- DROP TABLE public.playlists; - -CREATE TABLE IF NOT EXISTS public.playlists -( - title text, - id text primary key, - author text, - description text, - video_count integer, - created timestamptz, - updated timestamptz, - privacy privacy, - index int8[] -); - -GRANT ALL ON public.playlists TO current_user; diff --git a/invidious/config/sql/session_ids.sql b/invidious/config/sql/session_ids.sql deleted file mode 100755 index c493769..0000000 --- a/invidious/config/sql/session_ids.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Table: public.session_ids - --- DROP TABLE public.session_ids; - -CREATE TABLE IF NOT EXISTS public.session_ids -( - id text NOT NULL, - email text, - issued timestamp with time zone, - CONSTRAINT session_ids_pkey PRIMARY KEY (id) -); - -GRANT ALL ON TABLE public.session_ids TO current_user; - --- Index: public.session_ids_id_idx - --- DROP INDEX public.session_ids_id_idx; - -CREATE INDEX IF NOT EXISTS session_ids_id_idx - ON public.session_ids - USING btree - (id COLLATE pg_catalog."default"); - diff --git a/invidious/config/sql/users.sql b/invidious/config/sql/users.sql deleted file mode 100755 index ad002ec..0000000 --- a/invidious/config/sql/users.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Table: public.users - --- DROP TABLE public.users; - -CREATE TABLE IF NOT EXISTS public.users -( - updated timestamp with time zone, - notifications text[], - subscriptions text[], - email text NOT NULL, - preferences text, - password text, - token text, - watched text[], - feed_needs_update boolean, - CONSTRAINT users_email_key UNIQUE (email) -); - -GRANT ALL ON TABLE public.users TO current_user; - --- Index: public.email_unique_idx - --- DROP INDEX public.email_unique_idx; - -CREATE UNIQUE INDEX IF NOT EXISTS email_unique_idx - ON public.users - USING btree - (lower(email) COLLATE pg_catalog."default"); - diff --git a/invidious/config/sql/videos.sql b/invidious/config/sql/videos.sql deleted file mode 100755 index 55da396..0000000 --- a/invidious/config/sql/videos.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Table: public.videos - --- DROP TABLE public.videos; - -CREATE UNLOGGED TABLE IF NOT EXISTS public.videos -( - id text NOT NULL, - info text, - updated timestamp with time zone, - CONSTRAINT videos_pkey PRIMARY KEY (id) -); - -GRANT ALL ON TABLE public.videos TO current_user; - --- Index: public.id_idx - --- DROP INDEX public.id_idx; - -CREATE UNIQUE INDEX IF NOT EXISTS id_idx - ON public.videos - USING btree - (id COLLATE pg_catalog."default"); - diff --git a/invidious/docker-compose.yml b/invidious/docker-compose.yml deleted file mode 100755 index b0a0cde..0000000 --- a/invidious/docker-compose.yml +++ /dev/null @@ -1,73 +0,0 @@ -services: - invidious: - container_name: invidious - image: quay.io/invidious/invidious:latest - # image: quay.io/invidious/invidious:latest-arm64 # ARM64/AArch64 devices - environment: - # https://github.com/iv-org/invidious/blob/master/config/config.example.yml - INVIDIOUS_CONFIG: | - db: - dbname: invidious - user: invidious - password: cheeNahch8Iiph1auchubeLam0iek1 - host: invidious-db - port: 5432 - check_tables: true - external_port: 443 - domain: invidious.akanealw.com - # https_only: false - # statistics_enabled: false - hmac_key: "kei4irie3liiqu0ieX3OhJohraW0re" - popular_enabled: false - registration_enabled: true - login_enabled: true - captcha_enabled: false - admins: ["akanealw"] - enable_user_notifications: false - channel_threads: 1 - channel_refresh_interval: 30m - full_refresh: false - feed_threads: 1 - healthcheck: - test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/comments/jNQXAC9IVRw || exit 1 - interval: 30s - timeout: 5s - retries: 2 - logging: - options: - max-size: "1G" - max-file: "4" - depends_on: - - invidious-db - networks: - - invidious - - reverse-proxy - ports: - - "3000:3000" - restart: always - - - invidious-db: - container_name: invidious-db - image: docker.io/library/postgres:14 - environment: - POSTGRES_DB: invidious - POSTGRES_USER: invidious - POSTGRES_PASSWORD: cheeNahch8Iiph1auchubeLam0iek1 - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] - networks: - - invidious - restart: always - volumes: - - ./postgresdata:/var/lib/postgresql/data - - ./config/sql:/config/sql - - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh - - -networks: - invidious: - name: invidious - reverse-proxy: - name: reverse-proxy - external: true \ No newline at end of file diff --git a/invidious/docker/Dockerfile b/invidious/docker/Dockerfile deleted file mode 100755 index ace096b..0000000 --- a/invidious/docker/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -FROM crystallang/crystal:1.8.2-alpine AS builder - -RUN apk add --no-cache sqlite-static yaml-static - -ARG release - -WORKDIR /invidious -COPY ./shard.yml ./shard.yml -COPY ./shard.lock ./shard.lock -RUN shards install --production - -COPY ./src/ ./src/ -# TODO: .git folder is required for building – this is destructive. -# See definition of CURRENT_BRANCH, CURRENT_COMMIT and CURRENT_VERSION. -COPY ./.git/ ./.git/ - -# Required for fetching player dependencies -COPY ./scripts/ ./scripts/ -COPY ./assets/ ./assets/ -COPY ./videojs-dependencies.yml ./videojs-dependencies.yml - -RUN crystal spec --warnings all \ - --link-flags "-lxml2 -llzma" -RUN if [[ "${release}" == 1 ]] ; then \ - crystal build ./src/invidious.cr \ - --release \ - --static --warnings all \ - --link-flags "-lxml2 -llzma"; \ - else \ - crystal build ./src/invidious.cr \ - --static --warnings all \ - --link-flags "-lxml2 -llzma"; \ - fi - -FROM alpine:3.18 -RUN apk add --no-cache rsvg-convert ttf-opensans tini -WORKDIR /invidious -RUN addgroup -g 1000 -S invidious && \ - adduser -u 1000 -S invidious -G invidious -COPY --chown=invidious ./config/config.* ./config/ -RUN mv -n config/config.example.yml config/config.yml -RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: invidious-db/' config/config.yml -COPY ./config/sql/ ./config/sql/ -COPY ./locales/ ./locales/ -COPY --from=builder /invidious/assets ./assets/ -COPY --from=builder /invidious/invidious . -RUN chmod o+rX -R ./assets ./config ./locales - -EXPOSE 3000 -USER invidious -ENTRYPOINT ["/sbin/tini", "--"] -CMD [ "/invidious/invidious" ] diff --git a/invidious/docker/Dockerfile.arm64 b/invidious/docker/Dockerfile.arm64 deleted file mode 100755 index 602f3ab..0000000 --- a/invidious/docker/Dockerfile.arm64 +++ /dev/null @@ -1,52 +0,0 @@ -FROM alpine:3.18 AS builder -RUN apk add --no-cache 'crystal=1.8.2-r0' shards sqlite-static yaml-static yaml-dev libxml2-static zlib-static openssl-libs-static openssl-dev musl-dev xz-static - -ARG release - -WORKDIR /invidious -COPY ./shard.yml ./shard.yml -COPY ./shard.lock ./shard.lock -RUN shards install --production - -COPY ./src/ ./src/ -# TODO: .git folder is required for building – this is destructive. -# See definition of CURRENT_BRANCH, CURRENT_COMMIT and CURRENT_VERSION. -COPY ./.git/ ./.git/ - -# Required for fetching player dependencies -COPY ./scripts/ ./scripts/ -COPY ./assets/ ./assets/ -COPY ./videojs-dependencies.yml ./videojs-dependencies.yml - -RUN crystal spec --warnings all \ - --link-flags "-lxml2 -llzma" - -RUN if [[ "${release}" == 1 ]] ; then \ - crystal build ./src/invidious.cr \ - --release \ - --static --warnings all \ - --link-flags "-lxml2 -llzma"; \ - else \ - crystal build ./src/invidious.cr \ - --static --warnings all \ - --link-flags "-lxml2 -llzma"; \ - fi - -FROM alpine:3.18 -RUN apk add --no-cache rsvg-convert ttf-opensans tini -WORKDIR /invidious -RUN addgroup -g 1000 -S invidious && \ - adduser -u 1000 -S invidious -G invidious -COPY --chown=invidious ./config/config.* ./config/ -RUN mv -n config/config.example.yml config/config.yml -RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: invidious-db/' config/config.yml -COPY ./config/sql/ ./config/sql/ -COPY ./locales/ ./locales/ -COPY --from=builder /invidious/assets ./assets/ -COPY --from=builder /invidious/invidious . -RUN chmod o+rX -R ./assets ./config ./locales - -EXPOSE 3000 -USER invidious -ENTRYPOINT ["/sbin/tini", "--"] -CMD [ "/invidious/invidious" ] diff --git a/invidious/docker/init-invidious-db.sh b/invidious/docker/init-invidious-db.sh deleted file mode 100755 index 22b4cc5..0000000 --- a/invidious/docker/init-invidious-db.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -eou pipefail - -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/channels.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/videos.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/channel_videos.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/users.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/session_ids.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/nonces.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/annotations.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/playlists.sql -psql --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" < config/sql/playlist_videos.sql diff --git a/invidious/invidious.service b/invidious/invidious.service deleted file mode 100755 index 6ef12cc..0000000 --- a/invidious/invidious.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=Invidious (An alternative YouTube front-end) -After=syslog.target -After=network.target - -[Service] -RestartSec=2s -Type=simple - -User=invidious -Group=invidious - -WorkingDirectory=/home/invidious/invidious -ExecStart=/home/invidious/invidious/invidious -o invidious.log - -Restart=always - -[Install] -WantedBy=multi-user.target diff --git a/invidious/kubernetes/.gitignore b/invidious/kubernetes/.gitignore deleted file mode 100755 index 0ad5170..0000000 --- a/invidious/kubernetes/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/charts/*.tgz diff --git a/invidious/kubernetes/Chart.lock b/invidious/kubernetes/Chart.lock deleted file mode 100755 index ef12b0b..0000000 --- a/invidious/kubernetes/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: postgresql - repository: https://charts.bitnami.com/bitnami/ - version: 12.11.1 -digest: sha256:3c10008175c4f5c1cec38782f5a7316154b89074c77ebbd9bcc4be4f5ff21122 -generated: "2023-09-14T22:40:43.171275362Z" diff --git a/invidious/kubernetes/Chart.yaml b/invidious/kubernetes/Chart.yaml deleted file mode 100755 index d22f625..0000000 --- a/invidious/kubernetes/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v2 -name: invidious -description: Invidious is an alternative front-end to YouTube -version: 1.1.1 -appVersion: 0.20.1 -keywords: -- youtube -- proxy -- video -- privacy -home: https://invidio.us/ -icon: https://raw.githubusercontent.com/iv-org/invidious/05988c1c49851b7d0094fca16aeaf6382a7f64ab/assets/favicon-32x32.png -sources: -- https://github.com/iv-org/invidious -maintainers: -- name: Leon Klingele - email: mail@leonklingele.de -dependencies: -- name: postgresql - version: ~12.11.0 - repository: "https://charts.bitnami.com/bitnami/" -engine: gotpl diff --git a/invidious/kubernetes/README.md b/invidious/kubernetes/README.md deleted file mode 100755 index 35478f9..0000000 --- a/invidious/kubernetes/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Invidious Helm chart - -Easily deploy Invidious to Kubernetes. - -## Installing Helm chart - -```sh -# Build Helm dependencies -$ helm dep build - -# Add PostgreSQL init scripts -$ kubectl create configmap invidious-postgresql-init \ - --from-file=../config/sql/channels.sql \ - --from-file=../config/sql/videos.sql \ - --from-file=../config/sql/channel_videos.sql \ - --from-file=../config/sql/users.sql \ - --from-file=../config/sql/session_ids.sql \ - --from-file=../config/sql/nonces.sql \ - --from-file=../config/sql/annotations.sql \ - --from-file=../config/sql/playlists.sql \ - --from-file=../config/sql/playlist_videos.sql - -# Install Helm app to your Kubernetes cluster -$ helm install invidious ./ -``` - -## Upgrading - -```sh -# Upgrading is easy, too! -$ helm upgrade invidious ./ -``` - -## Uninstall - -```sh -# Get rid of everything (except database) -$ helm delete invidious - -# To also delete the database, remove all invidious-postgresql PVCs -``` diff --git a/invidious/kubernetes/templates/_helpers.tpl b/invidious/kubernetes/templates/_helpers.tpl deleted file mode 100755 index 52158b7..0000000 --- a/invidious/kubernetes/templates/_helpers.tpl +++ /dev/null @@ -1,16 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "invidious.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "invidious.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/invidious/kubernetes/templates/configmap.yaml b/invidious/kubernetes/templates/configmap.yaml deleted file mode 100755 index 58542a3..0000000 --- a/invidious/kubernetes/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "invidious.fullname" . }} - labels: - app: {{ template "invidious.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: {{ .Release.Name }} -data: - INVIDIOUS_CONFIG: | -{{ toYaml .Values.config | indent 4 }} diff --git a/invidious/kubernetes/templates/deployment.yaml b/invidious/kubernetes/templates/deployment.yaml deleted file mode 100755 index bb0b832..0000000 --- a/invidious/kubernetes/templates/deployment.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "invidious.fullname" . }} - labels: - app: {{ template "invidious.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: {{ .Release.Name }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app: {{ template "invidious.name" . }} - release: {{ .Release.Name }} - template: - metadata: - labels: - app: {{ template "invidious.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: {{ .Release.Name }} - spec: - securityContext: - runAsUser: {{ .Values.securityContext.runAsUser }} - runAsGroup: {{ .Values.securityContext.runAsGroup }} - fsGroup: {{ .Values.securityContext.fsGroup }} - initContainers: - - name: wait-for-postgresql - image: postgres - args: - - /bin/sh - - -c - - until pg_isready -h {{ .Values.config.db.host }} -p {{ .Values.config.db.port }} -U {{ .Values.config.db.user }}; do echo waiting for database; sleep 2; done; - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - containerPort: 3000 - env: - - name: INVIDIOUS_CONFIG - valueFrom: - configMapKeyRef: - key: INVIDIOUS_CONFIG - name: {{ template "invidious.fullname" . }} - securityContext: - allowPrivilegeEscalation: {{ .Values.securityContext.allowPrivilegeEscalation }} - capabilities: - drop: - - ALL - resources: -{{ toYaml .Values.resources | indent 10 }} - readinessProbe: - httpGet: - port: 3000 - path: / - livenessProbe: - httpGet: - port: 3000 - path: / - initialDelaySeconds: 15 - restartPolicy: Always diff --git a/invidious/kubernetes/templates/hpa.yaml b/invidious/kubernetes/templates/hpa.yaml deleted file mode 100755 index c6fbefe..0000000 --- a/invidious/kubernetes/templates/hpa.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v1 -kind: HorizontalPodAutoscaler -metadata: - name: {{ template "invidious.fullname" . }} - labels: - app: {{ template "invidious.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: {{ .Release.Name }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ template "invidious.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - targetCPUUtilizationPercentage: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} -{{- end }} diff --git a/invidious/kubernetes/templates/service.yaml b/invidious/kubernetes/templates/service.yaml deleted file mode 100755 index 01454d4..0000000 --- a/invidious/kubernetes/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "invidious.fullname" . }} - labels: - app: {{ template "invidious.name" . }} - chart: {{ .Chart.Name }} - release: {{ .Release.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - name: http - port: {{ .Values.service.port }} - targetPort: 3000 - selector: - app: {{ template "invidious.name" . }} - release: {{ .Release.Name }} -{{- if .Values.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.service.loadBalancerIP }} -{{- end }} diff --git a/invidious/kubernetes/values.yaml b/invidious/kubernetes/values.yaml deleted file mode 100755 index 5000c2b..0000000 --- a/invidious/kubernetes/values.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: invidious - -image: - repository: quay.io/invidious/invidious - tag: latest - pullPolicy: Always - -replicaCount: 1 - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 16 - targetCPUUtilizationPercentage: 50 - -service: - type: ClusterIP - port: 3000 - #loadBalancerIP: - -resources: {} - #requests: - # cpu: 100m - # memory: 64Mi - #limits: - # cpu: 800m - # memory: 512Mi - -securityContext: - allowPrivilegeEscalation: false - runAsUser: 1000 - runAsGroup: 1000 - fsGroup: 1000 - -# See https://github.com/bitnami/charts/tree/master/bitnami/postgresql -postgresql: - image: - tag: 13 - auth: - username: kemal - password: kemal - database: invidious - primary: - initdb: - username: kemal - password: kemal - scriptsConfigMap: invidious-postgresql-init - -# Adapted from ../config/config.yml -config: - channel_threads: 1 - feed_threads: 1 - db: - user: kemal - password: kemal - host: invidious-postgresql - port: 5432 - dbname: invidious - full_refresh: false - https_only: false - domain: diff --git a/invidious/locales/af.json b/invidious/locales/af.json deleted file mode 100755 index 35f40a1..0000000 --- a/invidious/locales/af.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "generic_views_count": "{{count}} kyk", - "generic_views_count_plural": "{{count}} kyke", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videos", - "generic_playlists_count": "{{count}} snitlys", - "generic_playlists_count_plural": "{{count}} snitlyste", - "generic_subscriptions_count": "{{count}} intekening", - "generic_subscriptions_count_plural": "{{count}} intekeninge", - "LIVE": "LEWENDIG", - "generic_subscribers_count": "{{count}} intekenaar", - "generic_subscribers_count_plural": "{{count}} intekenare", - "Shared `x` ago": "`x` gelede gedeel", - "New passwords must match": "Nuwe wagwoord moet ooreenstem" -} diff --git a/invidious/locales/ar.json b/invidious/locales/ar.json deleted file mode 100755 index 57062e8..0000000 --- a/invidious/locales/ar.json +++ /dev/null @@ -1,560 +0,0 @@ -{ - "LIVE": "مُباشِر", - "Shared `x` ago": "تمَّ الرفع مُنذ `x`", - "Unsubscribe": "إلغاء الاشتراك", - "Subscribe": "الاشتراك", - "View channel on YouTube": "زيارة القناة على يوتيوب", - "View playlist on YouTube": "عرض قائمة التشغيل على يوتيوب", - "newest": "الأحدث", - "oldest": "الأقدم", - "popular": "الأكثر شعبية", - "last": "الأخيرة", - "Next page": "الصفحة التالية", - "Previous page": "الصفحة السابقة", - "Clear watch history?": "هل تريد محو سجل المشاهدة؟", - "New password": "كلمة مرور جديدة", - "New passwords must match": "يَجبُ أن تكون كلمتا المرور متطابقتين", - "Authorize token?": "رمز التفويض؟", - "Authorize token for `x`?": "السماح بالرمز المميز ل 'x'؟", - "Yes": "نعم", - "No": "لا", - "Import and Export Data": "اِستيراد البيانات وتصديرها", - "Import": "استيراد", - "Import Invidious data": "استيراد بيانات JSON Invidious", - "Import YouTube subscriptions": "استيراد اشتراكات YouTube/OPML", - "Import FreeTube subscriptions (.db)": "استيراد اشتراكات فريتيوب (.db)", - "Import NewPipe subscriptions (.json)": "استيراد اشتراكات نيو بايب (.json)", - "Import NewPipe data (.zip)": "استيراد بيانات نيو بايب (.zip)", - "Export": "تصدير", - "Export subscriptions as OPML": "تصدير الاشتراكات كـOPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "تصدير الاشتراكات كـOPML (لِنيو بايب و فريتيوب)", - "Export data as JSON": "تصدير بيانات Invidious كـ JSON", - "Delete account?": "حذف الحساب؟", - "History": "السِّجل", - "An alternative front-end to YouTube": "واجهة أمامية بديلة لموقع يوتيوب", - "JavaScript license information": "معلومات ترخيص جافا سكربت", - "source": "المصدر", - "Log in": "تسجيل الدخول", - "Log in/register": "تسجيل الدخول \\ إنشاء حساب", - "User ID": "مُعرِّف المُستخدم", - "Password": "كلمة المرور", - "Time (h:mm:ss):": "الوقت (h:mm:ss):", - "Text CAPTCHA": "نص الكابتشا", - "Image CAPTCHA": "صورة الكابتشا", - "Sign In": "إنشاء حساب", - "Register": "التسجيل", - "E-mail": "البريد الإلكتروني", - "Preferences": "الإعدادات", - "preferences_category_player": "إعدادات المُشغِّل", - "preferences_video_loop_label": "كرر المقطع المرئيّ دائما: ", - "preferences_autoplay_label": "تشغيل تلقائي: ", - "preferences_continue_label": "تشغيل المقطع التالي تلقائيًا: ", - "preferences_continue_autoplay_label": "شغل المقطع التالي تلقائيًا: . ", - "preferences_listen_label": "تشغيل النسخة السمعية تلقائيًا: ", - "preferences_local_label": "بروكسي المقاطع المرئيّة؟ ", - "preferences_speed_label": "السرعة الافتراضية: ", - "preferences_quality_label": "الجودة المفضلة للمقاطع: ", - "preferences_volume_label": "صوت المشغل: ", - "preferences_comments_label": "التعليقات الافتراضية: ", - "youtube": "يوتيوب", - "reddit": "ريديت", - "preferences_captions_label": "التسميات التوضيحية الإفتراضية: ", - "Fallback captions: ": "التسميات التوضيحية الاحتياطيَّة: ", - "preferences_related_videos_label": "اعرض الفيديوهات ذات الصلة: ", - "preferences_annotations_label": "اعرض الملاحظات في الفيديو تلقائيا: ", - "preferences_extend_desc_label": "توسيع وصف الفيديو تلقائيا: ", - "preferences_vr_mode_label": "مقاطع فيديو تفاعلية بزاوية 360 درجة (تتطلب WebGL): ", - "preferences_category_visual": "التفضيلات المرئية", - "preferences_player_style_label": "شكل مشغل الفيديوهات: ", - "Dark mode: ": "الوضع الليلي: ", - "preferences_dark_mode_label": "المظهر: ", - "dark": "غامق (اسود)", - "light": "فاتح (ابيض)", - "preferences_thin_mode_label": "الوضع الخفيف: ", - "preferences_category_misc": "تفضيلات متنوعة", - "preferences_automatic_instance_redirect_label": "إعادة توجيه المثيل التلقائي (إعادة التوجيه إلى redirect.invidious.io): ", - "preferences_category_subscription": "تفضيلات الاشتراك", - "preferences_annotations_subscribed_label": "عرض الملاحظات في الفيديوهات تلقائيا في القنوات المشترك بها فقط: ", - "Redirect homepage to feed: ": "إعادة التوجية من الصفحة الرئيسية لصفحة المشتركين (لرؤية اخر فيديوهات المشتركين): ", - "preferences_max_results_label": "عدد الفيديوهات التى ستظهر فى صفحة المشتركين: ", - "preferences_sort_label": "ترتيب الفيديوهات بـ: ", - "published": "أحدث فيديو", - "published - reverse": "أحدث فيديو - عكسي", - "alphabetically": "ترتيب أبجدي", - "alphabetically - reverse": "أبجدي - عكسي", - "channel name": "باسم القناة", - "channel name - reverse": "باسم القناة - عكسى", - "Only show latest video from channel: ": "فقط أظهر آخر فيديو من القناة: ", - "Only show latest unwatched video from channel: ": "فقط أظهر آخر فيديو لم يتم رؤيته من القناة: ", - "preferences_unseen_only_label": "فقط أظهر الذي لم يتم رؤيته: ", - "preferences_notifications_only_label": "إظهار الإشعارات فقط (إذا كان هناك أي): ", - "Enable web notifications": "تفعيل إشعارات المتصفح", - "`x` uploaded a video": "`x` رفع فيديو", - "`x` is live": "`x` في بث مباشر", - "preferences_category_data": "إعدادات التفضيلات", - "Clear watch history": "حذف سجل المشاهدة", - "Import/export data": "إستيراد و تصدير البيانات", - "Change password": "تغير كلمة السر", - "Manage subscriptions": "إدارة الاشتراكات", - "Manage tokens": "إدارة الرموز", - "Watch history": "سجل المشاهدة", - "Delete account": "حذف الحساب", - "preferences_category_admin": "إعدادات المدير", - "preferences_default_home_label": "الصفحة الرئيسية الافتراضية: ", - "preferences_feed_menu_label": "قائمة التدفقات: ", - "preferences_show_nick_label": "إظهار اللقب في الأعلى: ", - "Top enabled: ": "تفعيل 'الأفضل' ؟ ", - "CAPTCHA enabled: ": "تفعيل الكابتشا: ", - "Login enabled: ": "تمكين تسجيل الدخول: ", - "Registration enabled: ": "تفعيل التسجيل: ", - "Report statistics: ": "تقرير الإحصائيات: ", - "Save preferences": "حفظ الإعدادات", - "Subscription manager": "مدير الاشتراكات", - "Token manager": "إداره الرمز", - "Token": "الرمز", - "Import/export": "استيراد/تصدير", - "unsubscribe": "إلغاء الاشتراك", - "revoke": "مسح", - "Subscriptions": "الاشتراكات", - "search": "بحث", - "Log out": "تسجيل الخروج", - "Released under the AGPLv3 on Github.": "صدر تحت AGPLv3 على GitHub.", - "Source available here.": "الأكواد متوفرة هنا.", - "View JavaScript license information.": "مشاهدة معلومات حول تراخيص الجافاسكريبت.", - "View privacy policy.": "عرض سياسة الخصوصية.", - "Trending": "الشائع", - "Public": "عام", - "Unlisted": "غير مصنف", - "Private": "خاص", - "View all playlists": "عرض جميع قوائم التشغيل", - "Updated `x` ago": "تم تحديثه منذ `x`", - "Delete playlist `x`?": "حذف قائمة التشغيل `x`؟", - "Delete playlist": "حذف قائمة التغشيل", - "Create playlist": "إنشاء قائمة تشغيل", - "Title": "العنوان", - "Playlist privacy": "إعدادات الخصوصية", - "Editing playlist `x`": "تعديل قائمة التشغيل `x`", - "Show more": "عرض المزيد", - "Show less": "عرض اقل", - "Watch on YouTube": "مشاهدة الفيديو على اليوتيوب", - "Switch Invidious Instance": "تبديل المثيل Invidious", - "Hide annotations": "إخفاء الملاحظات في الفيديو", - "Show annotations": "عرض الملاحظات في الفيديو", - "Genre: ": "النوع: ", - "License: ": "التراخيص: ", - "Family friendly? ": "محتوى عائلي؟ ", - "Wilson score: ": "درجة ويلسون: ", - "Engagement: ": "نسبة التفاعل: ", - "Whitelisted regions: ": "الدول المسموح فيها هذا الفيديو: ", - "Blacklisted regions: ": "الدول المحظور فيها هذا الفيديو: ", - "Shared `x`": "تمت المشاركة في `x`", - "Premieres in `x`": "يعرض فى `x`", - "Premieres `x`": "يعرض `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "أهلًا! يبدو أن جافاسكريبت معطلٌ لديك. اضغط هنا لعرض التعليقات، وَضَع في اعتبارك أنها ستأخذ وقتًا أطول للتحميل.", - "View YouTube comments": "عرض تعليقات اليوتيوب", - "View more comments on Reddit": "عرض المزيد من التعليقات على\\من موقع ريديت", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "عرض `x` تعليقات", - "": "عرض `x` تعليقات." - }, - "View Reddit comments": "عرض تعليقات ريديت", - "Hide replies": "إخفاء الردود", - "Show replies": "عرض الردود", - "Incorrect password": "كلمة السر غير صحيحة", - "Wrong answer": "إجابة خاطئة", - "Erroneous CAPTCHA": "الكابتشا CAPTCHA غير صاحلة", - "CAPTCHA is a required field": "مكان الكابتشا CAPTCHA مطلوب", - "User ID is a required field": "مكان اسم المستخدم مطلوب", - "Password is a required field": "مكان كلمة السر مطلوب", - "Wrong username or password": "اسم المستخدم او كلمة السر غير صحيح", - "Password cannot be empty": "لا يمكن أن تكون كلمة السر فارغة", - "Password cannot be longer than 55 characters": "يجب أن لا تتعدى كلمة السر 55 حرفًا", - "Please log in": "الرجاء تسجيل الدخول", - "Invidious Private Feed for `x`": "تغذية Invidious خاصة ل 'x'", - "channel:`x`": "قناة:`x`", - "Deleted or invalid channel": "قناة ممسوحة او غير صالحة", - "This channel does not exist.": "هذه القناة غير موجودة.", - "Could not get channel info.": "لم يتمكن الحصول على معلومات القناة.", - "Could not fetch comments": "لا يتمكن إحضار التعليقات", - "`x` ago": "`x` منذ", - "Load more": "تحميل المزيد", - "Could not create mix.": "تعذر إنشاء مزيج.", - "Empty playlist": "قائمة التشغيل فارغة", - "Not a playlist.": "قائمة التشغيل غير صالحة.", - "Playlist does not exist.": "قائمة التشغيل غير موجودة.", - "Could not pull trending pages.": "لا يتمكن عرض الصفحات الراجئة.", - "Hidden field \"challenge\" is a required field": "الحقل المخفي \"تحدي\" حقل مطلوب", - "Hidden field \"token\" is a required field": "الحقل المخفي \"رمز\" حقل مطلوب", - "Erroneous challenge": "تحدي خاطئ", - "Erroneous token": "رمز مميز خاطئ", - "No such user": "مستخدم غير موجود", - "Token is expired, please try again": "الرمز منتهى الصلاحية، الرجاء المحاولة مرة اخرى", - "English": "إنجليزي", - "English (auto-generated)": "إنجليزي (تم إنشائه تلقائيًا)", - "Afrikaans": "الأفريكانية", - "Albanian": "الألبانية", - "Amharic": "الأمهرية", - "Arabic": "العربية", - "Armenian": "الأرمينية", - "Azerbaijani": "أذربيجانية", - "Bangla": "البنغالية", - "Basque": "الباسكية", - "Belarusian": "البيلاروسية", - "Bosnian": "البوسنية", - "Bulgarian": "البلغارية", - "Burmese": "البورمية", - "Catalan": "الكاتالونية", - "Cebuano": "السيبيونو", - "Chinese (Simplified)": "الصينية (المبسطة)", - "Chinese (Traditional)": "الصينية (التقليدية)", - "Corsican": "الكورسيكية", - "Croatian": "الكرواتية", - "Czech": "تشيكي", - "Danish": "دانماركي", - "Dutch": "هولندي", - "Esperanto": "الاسبرانتو", - "Estonian": "الإستونية", - "Filipino": "الفلبينية", - "Finnish": "الفنلندية", - "French": "الفرنسية", - "Galician": "الجاليكية", - "Georgian": "الجورجية", - "German": "ألمانية", - "Greek": "الإغريقي", - "Gujarati": "الغوجاراتية", - "Haitian Creole": "الكاثوليكية الهايتية", - "Hausa": "الهوسا", - "Hawaiian": "هاواي", - "Hebrew": "العبرية", - "Hindi": "الهندية", - "Hmong": "همونغ", - "Hungarian": "الهنغارية", - "Icelandic": "أيسلندي", - "Igbo": "الإيبو", - "Indonesian": "الأندونيسية", - "Irish": "الأيرلندية", - "Italian": "الإيطالي", - "Japanese": "اليابانية", - "Javanese": "جاوي", - "Kannada": "الكانادا", - "Kazakh": "الكازاخية", - "Khmer": "الخمير", - "Korean": "الكورية", - "Kurdish": "كردي", - "Kyrgyz": "قيرغيزستان", - "Lao": "لاو", - "Latin": "لاتينية", - "Latvian": "اللاتفية", - "Lithuanian": "اللتوانية", - "Luxembourgish": "اللوكسمبرجية", - "Macedonian": "المقدونية", - "Malagasy": "مدجشقر\\مدغشقر", - "Malay": "الملايو", - "Malayalam": "المالايالامية", - "Maltese": "المالطية", - "Maori": "الماوري", - "Marathi": "المهاراتية", - "Mongolian": "المنغولية", - "Nepali": "النيبالية", - "Norwegian Bokmål": "النرويجية", - "Nyanja": "نيانجا", - "Pashto": "الباشتو", - "Persian": "الفارسية", - "Polish": "البولندي", - "Portuguese": "البرتغالية", - "Punjabi": "البنجابية", - "Romanian": "روماني", - "Russian": "الروسية", - "Samoan": "ساموا", - "Scottish Gaelic": "الغيلية الاسكتلندية", - "Serbian": "صربي", - "Shona": "شونا", - "Sindhi": "السندية", - "Sinhala": "السنهالية", - "Slovak": "السلوفاكية", - "Slovenian": "سلوفيني", - "Somali": "الصومالية", - "Southern Sotho": "جنوب سوثو", - "Spanish": "الأسبانية", - "Spanish (Latin America)": "الأسبانية (أمريكا اللاتينية)", - "Sundanese": "السودانية", - "Swahili": "السواحلية", - "Swedish": "السويدية", - "Tajik": "الطاجيكية", - "Tamil": "التاميل", - "Telugu": "التيلجو", - "Thai": "التايلاندية", - "Turkish": "التركية", - "Ukrainian": "الأوكراني", - "Urdu": "الأردية", - "Uzbek": "الأوزبكي", - "Vietnamese": "الفيتنامية", - "Welsh": "الولزية", - "Western Frisian": "الفريزية الغربية", - "Xhosa": "زوسا", - "Yiddish": "اليديشية", - "Yoruba": "اليوروبا", - "Zulu": "الزولو", - "Fallback comments: ": "التعليقات البديلة: ", - "Popular": "الأكثر شعبية", - "Search": "بحث", - "Top": "الأفضل", - "About": "حول", - "Rating: ": "التقييم: ", - "preferences_locale_label": "اللغة: ", - "View as playlist": "عرض كا قائمة التشغيل", - "Default": "الكل", - "Music": "الاغانى", - "Gaming": "الألعاب", - "News": "الأخبار", - "Movies": "الأفلام", - "Download": "نزّل", - "Download as: ": "نزله كـ: ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(معدّل)", - "YouTube comment permalink": "رابط التعليق على اليوتيوب", - "permalink": "الرابط", - "`x` marked it with a ❤": "`x` أعجب بهذا", - "Audio mode": "الوضع الصوتي", - "Video mode": "وضع الفيديو", - "channel_tab_videos_label": "الفيديوهات", - "Playlists": "قوائم التشغيل", - "channel_tab_community_label": "المجتمع", - "search_filters_sort_option_relevance": "ملائمة", - "search_filters_sort_option_rating": "تقييم", - "search_filters_sort_option_date": "التاريخ", - "search_filters_sort_option_views": "مشاهدات", - "search_filters_type_label": "نوع المحتوى", - "search_filters_duration_label": "المدة", - "search_filters_features_label": "الميزات", - "search_filters_sort_label": "فرز", - "search_filters_date_option_hour": "آخر ساعة", - "search_filters_date_option_today": "اليوم", - "search_filters_date_option_week": "هذا الأسبوع", - "search_filters_date_option_month": "هذا الشهر", - "search_filters_date_option_year": "هذه السنة", - "search_filters_type_option_video": "فيديو", - "search_filters_type_option_channel": "قناة", - "search_filters_type_option_playlist": "قائمة التشغيل", - "search_filters_type_option_movie": "فيلم", - "search_filters_type_option_show": "عرض", - "search_filters_features_option_hd": "عالية الدقة", - "search_filters_features_option_subtitles": "ترجمات", - "search_filters_features_option_c_commons": "المشاع الإبداعي", - "search_filters_features_option_three_d": "ثلاثي الأبعاد", - "search_filters_features_option_live": "مباشر", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "المكان", - "search_filters_features_option_hdr": "وضع التباين العالي", - "Current version: ": "الإصدار الحالي: ", - "next_steps_error_message": "بعد ذلك يجب أن تحاول: ", - "next_steps_error_message_refresh": "تحديث", - "next_steps_error_message_go_to_youtube": "انتقل إلى يوتيوب", - "search_filters_duration_option_short": "قصير (< 4 دقائق)", - "search_filters_duration_option_long": "طويل (> 20 دقيقة)", - "footer_source_code": "الكود المصدر", - "footer_original_source_code": "الكود المصدر الأصلي", - "footer_modfied_source_code": "الكود المصدر المعدل", - "adminprefs_modified_source_code_url_label": "URL إلى مستودع الكود المصدر المعدل", - "footer_documentation": "التوثيق", - "footer_donate_page": "تبرّع", - "preferences_region_label": "بلد المحتوى: ", - "preferences_quality_dash_label": "جودة فيديو DASH المفضلة: ", - "preferences_quality_option_dash": "DASH (الجودة التلقائية)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "متوسطة", - "preferences_quality_option_small": "صغيرة", - "preferences_quality_dash_option_auto": "تلقائي", - "preferences_quality_dash_option_best": "الأفضل", - "preferences_quality_dash_option_worst": "أسوأ", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "search_filters_features_option_purchased": "تم شراؤها", - "none": "لاشيء", - "videoinfo_started_streaming_x_ago": "بدأ البث منذ `x`", - "videoinfo_watch_on_youTube": "مشاهدة على يوتيوب", - "videoinfo_youTube_embed_link": "مضمن", - "videoinfo_invidious_embed_link": "رابط مضمن", - "user_created_playlists": "'x' إنشاء قوائم التشغيل", - "user_saved_playlists": "قوائم التشغيل المحفوظة 'x'", - "Video unavailable": "الفيديو غير متوفر", - "search_filters_features_option_three_sixty": "360°", - "download_subtitles": "ترجمات - 'x' (.vtt)", - "invidious": "الخيالي", - "preferences_save_player_pos_label": "حفظ موضع التشغيل: ", - "crash_page_you_found_a_bug": "يبدو أنك قد وجدت خطأً برمجيًّا في Invidious!", - "generic_videos_count_0": "لا يوجد فيديوهات", - "generic_videos_count_1": "فيديو واحد", - "generic_videos_count_2": "فيديوهين", - "generic_videos_count_3": "{{count}} فيديوهات", - "generic_videos_count_4": "{{count}} فيديو", - "generic_videos_count_5": "{{count}} فيديو", - "generic_subscribers_count_0": "لا يوجد مشترك", - "generic_subscribers_count_1": "مشترك واحد", - "generic_subscribers_count_2": "مشتركان", - "generic_subscribers_count_3": "{{count}} مشتركين", - "generic_subscribers_count_4": "{{count}} مشترك", - "generic_subscribers_count_5": "{{count}} مشترك", - "generic_views_count_0": "لا يوجد مشاهدة", - "generic_views_count_1": "مشاهدة واحدة", - "generic_views_count_2": "مشاهدتان", - "generic_views_count_3": "{{count}} مشاهدات", - "generic_views_count_4": "{{count}} مشاهدة", - "generic_views_count_5": "{{count}} مشاهدة", - "generic_subscriptions_count_0": "لا يوجد اشتراك", - "generic_subscriptions_count_1": "اشتراك واحد", - "generic_subscriptions_count_2": "اشتراكان", - "generic_subscriptions_count_3": "{{count}} اشتراكات", - "generic_subscriptions_count_4": "{{count}} اشتراك", - "generic_subscriptions_count_5": "{{count}} اشتراك", - "generic_playlists_count_0": "لا يوجد قوائم تشغيل", - "generic_playlists_count_1": "قائمة تشغيل واحدة", - "generic_playlists_count_2": "قائمتا تشغيل", - "generic_playlists_count_3": "{{count}} قوائم تشغيل", - "generic_playlists_count_4": "{{count}} قائمة تشغيل", - "generic_playlists_count_5": "{{count}} قائمة تشغيل", - "English (United States)": "الإنجليزية (الولايات المتحدة)", - "Indonesian (auto-generated)": "إندونيسي (مُنشأ تلقائيًا)", - "Interlingue": "إنترلينغوي", - "Italian (auto-generated)": "الإيطالية (مُنشأة تلقائيًا)", - "Spanish (auto-generated)": "الأسبانية (تم إنشاؤه تلقائيًا)", - "crash_page_before_reporting": "قبل الإبلاغ عن خطأ، تأكد من وجود:", - "French (auto-generated)": "الفرنسية (مُنشأة تلقائيًا)", - "Portuguese (auto-generated)": "البرتغالية (تم إنشاؤه تلقائيًا)", - "Turkish (auto-generated)": "التركية (تم إنشاؤها تلقائيًا)", - "crash_page_refresh": "حاول تحديث الصفحة ", - "crash_page_switch_instance": "حاول استخدام مثيل آخر ", - "Korean (auto-generated)": "كوري (تم إنشاؤه تلقائيًا)", - "Spanish (Mexico)": "الإسبانية (المكسيك)", - "Vietnamese (auto-generated)": "فيتنامي (تم إنشاؤه تلقائيًا)", - "crash_page_report_issue": "إذا لم يساعد أي مما سبق، يرجى فتح مشكلة جديدة على GitHub (ويفضل أن يكون باللغة الإنجليزية) وتضمين النص التالي في رسالتك (لا تترجم هذا النص):", - "crash_page_read_the_faq": "قراءة الأسئلة المتكررة (الأسئلة الشائعة) ", - "preferences_watch_history_label": "تمكين سجل المشاهدة: ", - "English (United Kingdom)": "الإنجليزية (المملكة المتحدة)", - "Cantonese (Hong Kong)": "الكانتونية (هونغ كونغ)", - "Chinese": "الصينية", - "Chinese (China)": "الصينية (الصين)", - "Chinese (Hong Kong)": "الصينية (هونج كونج)", - "Chinese (Taiwan)": "الصينية (تايوان)", - "Dutch (auto-generated)": "هولندي (تم إنشاؤه تلقائيًا)", - "German (auto-generated)": "ألماني (تم إنشاؤه تلقائيًا)", - "Japanese (auto-generated)": "اليابانية (مُنشأة تلقائيًا)", - "Portuguese (Brazil)": "البرتغالية (البرازيل)", - "Russian (auto-generated)": "الروسية (منشأة تلقائيا)", - "Spanish (Spain)": "الإسبانية (إسبانيا)", - "crash_page_search_issue": "بحثت عن المشكلات الموجودة على GitHub ", - "search_filters_title": "معامل الفرز", - "search_message_no_results": "لا توجد نتائج.", - "search_message_change_filters_or_query": "حاول توسيع استعلام البحث و / أو تغيير عوامل التصفية.", - "search_filters_date_label": "تاريخ الرفع", - "generic_count_weeks_0": "{{count}} أسبوع", - "generic_count_weeks_1": "أسبوع واحد", - "generic_count_weeks_2": "أسبوعين", - "generic_count_weeks_3": "{{count}} أسابيع", - "generic_count_weeks_4": "{{count}} أسبوع", - "generic_count_weeks_5": "{{count}} أسبوع", - "Popular enabled: ": "تم تمكين الشعبية: ", - "search_filters_duration_option_medium": "متوسط (4-20 دقيقة)", - "search_filters_date_option_none": "أي تاريخ", - "search_filters_type_option_all": "أي نوع", - "search_filters_features_option_vr180": "VR180", - "generic_count_minutes_0": "{{count}} دقيقة", - "generic_count_minutes_1": "دقيقة واحدة", - "generic_count_minutes_2": "دقيقتين", - "generic_count_minutes_3": "{{count}} دقائق", - "generic_count_minutes_4": "{{count}} دقيقة", - "generic_count_minutes_5": "{{count}} دقيقة", - "generic_count_hours_0": "{{count}} ساعة", - "generic_count_hours_1": "ساعة واحدة", - "generic_count_hours_2": "ساعتين", - "generic_count_hours_3": "{{count}} ساعات", - "generic_count_hours_4": "{{count}} ساعة", - "generic_count_hours_5": "{{count}} ساعة", - "comments_view_x_replies_0": "عرض رد {{count}}", - "comments_view_x_replies_1": "عرض رد {{count}}", - "comments_view_x_replies_2": "عرض رد {{count}}", - "comments_view_x_replies_3": "عرض رد {{count}}", - "comments_view_x_replies_4": "عرض الردود {{count}}", - "comments_view_x_replies_5": "عرض رد {{count}}", - "search_message_use_another_instance": " يمكنك أيضًا البحث عن في مثيل آخر .", - "comments_points_count_0": "{{count}} نقطة", - "comments_points_count_1": "نقطة واحدة", - "comments_points_count_2": "نقطتان", - "comments_points_count_3": "{{count}} نقط", - "comments_points_count_4": "{{count}} نقطة", - "comments_points_count_5": "{{count}} نقطة", - "generic_count_years_0": "{{count}} السنة", - "generic_count_years_1": "{{count}} السنة", - "generic_count_years_2": "{{count}} السنة", - "generic_count_years_3": "{{count}} السنة", - "generic_count_years_4": "{{count}} سنوات", - "generic_count_years_5": "{{count}} السنة", - "tokens_count_0": "الرمز المميز {{count}}", - "tokens_count_1": "الرمز المميز {{count}}", - "tokens_count_2": "الرمز المميز {{count}}", - "tokens_count_3": "الرمز المميز {{count}}", - "tokens_count_4": "الرموز المميزة {{count}}", - "tokens_count_5": "الرمز المميز {{count}}", - "search_filters_apply_button": "تطبيق الفلاتر المحددة", - "search_filters_duration_option_none": "أي مدة", - "subscriptions_unseen_notifs_count_0": "{{count}} إشعار جديد", - "subscriptions_unseen_notifs_count_1": "إشعار واحد جديد", - "subscriptions_unseen_notifs_count_2": "إشعارين جديدين", - "subscriptions_unseen_notifs_count_3": "{{count}} إشعارات جديدة", - "subscriptions_unseen_notifs_count_4": "{{count}} إشعارا جديد", - "subscriptions_unseen_notifs_count_5": "{{count}} إشعار جديد", - "generic_count_days_0": "{{count}} يوم", - "generic_count_days_1": "يوم واحد", - "generic_count_days_2": "يومين", - "generic_count_days_3": "{{count}} أيام", - "generic_count_days_4": "{{count}} يوم", - "generic_count_days_5": "{{count}} يوم", - "generic_count_months_0": "{{count}} شهر", - "generic_count_months_1": "{{count}} شهر", - "generic_count_months_2": "{{count}} شهر", - "generic_count_months_3": "{{count}} شهر", - "generic_count_months_4": "{{count}} شهور", - "generic_count_months_5": "{{count}} شهر", - "generic_count_seconds_0": "{{count}} ثانية", - "generic_count_seconds_1": "ثانية واحدة", - "generic_count_seconds_2": "ثانيتين", - "generic_count_seconds_3": "{{count}} ثوانٍ", - "generic_count_seconds_4": "{{count}} ثانية", - "generic_count_seconds_5": "{{count}} ثانية", - "error_video_not_in_playlist": "الفيديو المطلوب غير موجود في قائمة التشغيل هذه. انقر هنا للحصول على الصفحة الرئيسية لقائمة التشغيل. ", - "channel_tab_shorts_label": "الفيديوهات القصيرة", - "channel_tab_streams_label": "البث المباشر", - "channel_tab_playlists_label": "قوائم التشغيل", - "channel_tab_channels_label": "القنوات", - "Music in this video": "الموسيقى في هذا الفيديو", - "Album: ": "الألبوم: ", - "Artist: ": "الفنان: ", - "Song: ": "أغنية: ", - "Channel Sponsor": "راعي القناة", - "Standard YouTube license": "ترخيص YouTube القياسي", - "Download is disabled": "تم تعطيل التحميلات", - "Import YouTube playlist (.csv)": "استيراد قائمة تشغيل YouTube (.csv)", - "generic_button_save": "حفظ", - "generic_button_delete": "حذف", - "generic_button_edit": "تحرير", - "generic_button_cancel": "الغاء", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "الإصدارات", - "playlist_button_add_items": "إضافة مقاطع فيديو", - "channel_tab_podcasts_label": "البودكاست", - "generic_channels_count_0": "{{count}} قناة", - "generic_channels_count_1": "{{count}} قناة", - "generic_channels_count_2": "{{count}} قناتان", - "generic_channels_count_3": "{{count}} قنوات", - "generic_channels_count_4": "{{count}} قنوات", - "generic_channels_count_5": "{{count}} قناة", - "Import YouTube watch history (.json)": "استيراد سجل مشاهدة YouTube بصيغة (.json)", - "toggle_theme": "تبديل الموضوع" -} diff --git a/invidious/locales/az.json b/invidious/locales/az.json deleted file mode 100755 index 0967ef4..0000000 --- a/invidious/locales/az.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/invidious/locales/be.json b/invidious/locales/be.json deleted file mode 100755 index 0967ef4..0000000 --- a/invidious/locales/be.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/invidious/locales/bg.json b/invidious/locales/bg.json deleted file mode 100755 index bcce6a7..0000000 --- a/invidious/locales/bg.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "Korean (auto-generated)": "Корейски (автоматично генерирано)", - "search_filters_features_option_three_sixty": "360°", - "published - reverse": "публикувани - в обратен ред", - "preferences_quality_dash_option_worst": "Най-ниско качество", - "Password is a required field": "Парола е задължитело поле", - "channel_tab_podcasts_label": "Подкасти", - "Token is expired, please try again": "Токенът е изтекъл, моля опитайте отново", - "Turkish": "Турски", - "preferences_save_player_pos_label": "Запази позицията на плейъра: ", - "View Reddit comments": "Виж Reddit коментари", - "Export data as JSON": "Експортиране на Invidious информацията като JSON", - "About": "За сайта", - "Save preferences": "Запази промените", - "Load more": "Зареди още", - "Import/export": "Импортиране/експортиране", - "Albanian": "Албански", - "New password": "Нова парола", - "Southern Sotho": "Южен Сото", - "channel_tab_videos_label": "Видеа", - "Spanish (Mexico)": "Испански (Мексико)", - "preferences_player_style_label": "Стил на плейъра: ", - "preferences_region_label": "Държавата на съдържанието: ", - "Premieres in `x`": "Премиера в `x`", - "Watch history": "История на гледане", - "generic_subscriptions_count": "{{count}} абонамент", - "generic_subscriptions_count_plural": "{{count}} абонамента", - "preferences_continue_label": "Пускай следващото видео автоматично: ", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Здравей! Изглежда си изключил JavaScript. Натисни тук за да видиш коментарите, но обърни внимание, че може да отнеме повече време да заредят.", - "Polish": "Полски", - "Icelandic": "Исландски", - "preferences_local_label": "Пускане на видеа през прокси: ", - "Hebrew": "Иврит", - "Fallback captions: ": "Резервни надписи: ", - "search_filters_title": "Филтри", - "search_filters_apply_button": "Приложете избрани филтри", - "Download is disabled": "Изтеглянето е деактивирано", - "User ID is a required field": "Потребителско име е задължително поле", - "comments_points_count": "{{count}} точка", - "comments_points_count_plural": "{{count}} точки", - "next_steps_error_message_go_to_youtube": "Отидеш в YouTube", - "preferences_quality_dash_option_2160p": "2160p", - "search_filters_type_option_video": "Видео", - "Spanish (Latin America)": "Испански (Латинска Америка)", - "Download as: ": "Изтегли като: ", - "Default": "По подразбиране", - "search_filters_sort_option_views": "Гледания", - "search_filters_features_option_four_k": "4K", - "Igbo": "Игбо", - "Subscriptions": "Абонаменти", - "German (auto-generated)": "Немски (автоматично генерирано)", - "`x` is live": "`x` е на живо", - "Azerbaijani": "Азербайджански", - "Premieres `x`": "Премиера `x`", - "Japanese (auto-generated)": "Японски (автоматично генерирано)", - "preferences_quality_option_medium": "Средно", - "footer_donate_page": "Даряване", - "Show replies": "Покажи отговорите", - "Esperanto": "Есперанто", - "search_message_change_filters_or_query": "Опитай да разшириш търсенето си и/или да смениш филтрите.", - "CAPTCHA enabled: ": "Активиране на CAPTCHA: ", - "View playlist on YouTube": "Виж плейлиста в YouTube", - "crash_page_before_reporting": "Преди докладването на бъг, бъди сигурен, че си:", - "Top enabled: ": "Активиране на страница с топ видеа: ", - "preferences_quality_dash_option_best": "Най-високо", - "search_filters_duration_label": "Продължителност", - "Slovak": "Словашки", - "Channel Sponsor": "Канален спонсор", - "generic_videos_count": "{{count}} видео", - "generic_videos_count_plural": "{{count}} видеа", - "videoinfo_started_streaming_x_ago": "Започна да излъчва преди `x`", - "videoinfo_youTube_embed_link": "Вграждане", - "channel_tab_streams_label": "Стриймове", - "oldest": "най-стари", - "playlist_button_add_items": "Добавяне на видеа", - "Import NewPipe data (.zip)": "Импортиране на NewPipe информация (.zip)", - "Clear watch history": "Изчистване на историята на гледане", - "generic_count_minutes": "{{count}} минута", - "generic_count_minutes_plural": "{{count}} минути", - "published": "публикувани", - "Show annotations": "Покажи анотации", - "Login enabled: ": "Активиране на впизване: ", - "Somali": "Сомалийски", - "YouTube comment permalink": "Постоянна връзка на коментарите на YouTube", - "Kurdish": "Кюрдски", - "search_filters_date_option_hour": "Последния час", - "Lao": "Лаоски", - "Maltese": "Малтийски", - "Register": "Регистрация", - "View channel on YouTube": "Виж канала в YouTube", - "Playlist privacy": "Поверителен плейлист", - "preferences_unseen_only_label": "Показвай само негледаните: ", - "Gujarati": "Гуджарати", - "Please log in": "Моля влезте", - "search_filters_sort_option_rating": "Рейтинг", - "Manage subscriptions": "Управление на абонаментите", - "preferences_quality_dash_option_720p": "720p", - "preferences_watch_history_label": "Активирай историята на гледане: ", - "user_saved_playlists": "`x` запази плейлисти", - "preferences_extend_desc_label": "Автоматично разшири описанието на видеото ", - "preferences_max_results_label": "Брой видеа показани на началната страница: ", - "Spanish (Spain)": "Испански (Испания)", - "invidious": "Invidious", - "crash_page_refresh": "пробвал да опресниш страницата", - "Image CAPTCHA": "CAPTCHA с Изображение", - "search_filters_features_option_hd": "HD", - "Chinese (Hong Kong)": "Китайски (Хонг Конг)", - "Import Invidious data": "Импортиране на Invidious JSON информацията", - "Blacklisted regions: ": "Неразрешени региони: ", - "Only show latest video from channel: ": "Показвай само най-новите видеа в канала: ", - "Hmong": "Хмонг", - "French": "Френски", - "search_filters_type_option_channel": "Канал", - "Artist: ": "Артист: ", - "generic_count_months": "{{count}} месец", - "generic_count_months_plural": "{{count}} месеца", - "preferences_annotations_subscribed_label": "Показвай анотаций по подразбиране за абонирани канали? ", - "search_message_use_another_instance": " Можеш също да търсиш на друга инстанция.", - "Danish": "Датски", - "generic_subscribers_count": "{{count}} абонат", - "generic_subscribers_count_plural": "{{count}} абоната", - "Galician": "Галисий", - "newest": "най-нови", - "Empty playlist": "Плейлиста е празен", - "download_subtitles": "Субритри - `x` (.vtt)", - "preferences_category_misc": "Различни предпочитания", - "Uzbek": "Узбекски", - "View JavaScript license information.": "Виж Javascript лиценза.", - "Filipino": "Филипински", - "Malagasy": "Мадагаскарски", - "generic_button_save": "Запиши", - "Dark mode: ": "Тъмен режим: ", - "Public": "Публичен", - "Basque": "Баскски", - "channel:`x`": "Канал:`x`", - "Armenian": "Арменски", - "This channel does not exist.": "Този канал не съществува.", - "Luxembourgish": "Люксембургски", - "preferences_related_videos_label": "Покажи подобни видеа: ", - "English": "Английски", - "Delete account": "Изтриване на акаунт", - "Gaming": "Игри", - "Video mode": "Видео режим", - "preferences_dark_mode_label": "Тема: ", - "crash_page_search_issue": "потърсил за съществуващи проблеми в GitHub", - "preferences_category_subscription": "Предпочитания за абонаменти", - "last": "най-скорощни", - "Chinese (Simplified)": "Китайски (Опростен)", - "Could not create mix.": "Създаването на микс е неуспешно.", - "generic_button_cancel": "Отказ", - "search_filters_type_option_movie": "Филм", - "search_filters_date_option_year": "Тази година", - "Swedish": "Шведски", - "Previous page": "Предишна страница", - "none": "нищо", - "popular": "най-популярни", - "Unsubscribe": "Отписване", - "Slovenian": "Словенски", - "Nepali": "Непалски", - "Time (h:mm:ss):": "Време (h:mm:ss):", - "English (auto-generated)": "Английски (автоматично генерирано)", - "search_filters_sort_label": "Сортирай по", - "View more comments on Reddit": "Виж повече коментари в Reddit", - "Sinhala": "Синхалски", - "preferences_feed_menu_label": "Меню с препоръки: ", - "preferences_autoplay_label": "Автоматично пускане: ", - "Pashto": "Пущунски", - "English (United States)": "Английски (САЩ)", - "Sign In": "Вход", - "subscriptions_unseen_notifs_count": "{{count}} невидяно известие", - "subscriptions_unseen_notifs_count_plural": "{{count}} невидяни известия", - "Log in": "Вход", - "Engagement: ": "Участие: ", - "Album: ": "Албум: ", - "preferences_speed_label": "Скорост по подразбиране: ", - "Import FreeTube subscriptions (.db)": "Импортиране на FreeTube абонаменти (.db)", - "preferences_quality_option_dash": "DASH (адаптивно качество)", - "preferences_show_nick_label": "Показвай потребителското име отгоре: ", - "Private": "Частен", - "Samoan": "Самоански", - "preferences_notifications_only_label": "Показвай само известията (ако има такива): ", - "Create playlist": "Създаване на плейлист", - "next_steps_error_message_refresh": "Опресниш", - "Top": "Топ", - "preferences_quality_dash_option_1080p": "1080p", - "Malayalam": "Малаялам", - "Token": "Токен", - "preferences_comments_label": "Коментари по подразбиране: ", - "Movies": "Филми", - "light": "светла", - "Unlisted": "Скрит", - "preferences_category_admin": "Администраторни предпочитания", - "Erroneous token": "Невалиден токен", - "No": "Не", - "CAPTCHA is a required field": "CAPTCHA е задължително поле", - "Video unavailable": "Неналично видео", - "footer_source_code": "Изходен код", - "New passwords must match": "Новите пароли трябва да съвпадат", - "Playlist does not exist.": "Плейлиста не съществува.", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Експортиране на абонаментите като OPML (за NewPipe и FreeTube)", - "search_filters_duration_option_short": "Кратко (< 4 минути)", - "search_filters_duration_option_long": "Дълго (> 20 минути)", - "tokens_count": "{{count}} токен", - "tokens_count_plural": "{{count}} токена", - "Yes": "Да", - "Dutch": "Холандски", - "Arabic": "Арабски", - "An alternative front-end to YouTube": "Алтернативен преден план на YouTube", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Виж `x` коментар", - "": "Виж `x` коментари" - }, - "Chinese (China)": "Китайски (Китай)", - "Italian (auto-generated)": "Италиански (автоматично генерирано)", - "alphabetically - reverse": "обратно на азбучния ред", - "channel_tab_shorts_label": "Shorts", - "`x` marked it with a ❤": "`x` го маркира със ❤", - "Current version: ": "Текуща версия: ", - "channel_tab_community_label": "Общност", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_360p": "360p", - "`x` uploaded a video": "`x` качи видео", - "Welsh": "Уелски", - "search_message_no_results": "Няма намерени резултати.", - "channel_tab_releases_label": "Версии", - "Bangla": "Бенгалски", - "preferences_quality_dash_option_144p": "144p", - "Indonesian": "Индонезийски", - "`x` ago": "преди `x`", - "Invidious Private Feed for `x`": "Invidious персонални видеа за `x`", - "Finnish": "Финландски", - "Amharic": "Амхарски", - "Malay": "Малайски", - "Interlingue": "Интерлинг", - "search_filters_date_option_month": "Този месец", - "Georgian": "Грузински", - "Xhosa": "Кхоса", - "Marathi": "Маратхи", - "Yoruba": "Йоруба", - "Song: ": "Музика: ", - "Scottish Gaelic": "Шотландски гелски", - "search_filters_features_label": "Функции", - "preferences_quality_label": "Предпочитано качество на видеото: ", - "generic_channels_count": "{{count}} канал", - "generic_channels_count_plural": "{{count}} канала", - "Croatian": "Хърватски", - "Thai": "Тайски", - "Chinese (Taiwan)": "Китайски (Тайван)", - "youtube": "YouTube", - "Source available here.": "Източник наличен тук.", - "LIVE": "На живо", - "Ukrainian": "Украински", - "Russian": "Руски", - "Tajik": "Таджикски", - "Token manager": "Управляване на токени", - "preferences_quality_dash_label": "Предпочитано DASH качество на видеото: ", - "adminprefs_modified_source_code_url_label": "URL до хранилището на променения изходен код", - "Japanese": "Японски", - "Title": "Заглавие", - "Authorize token for `x`?": "Разреши токена за `x`?", - "reddit": "Reddit", - "permalink": "постоянна връзка", - "Trending": "На върха", - "Turkish (auto-generated)": "Турски (автоматично генерирано)", - "Bulgarian": "Български", - "Indonesian (auto-generated)": "Индонезийски (автоматично генерирано)", - "Enable web notifications": "Активирай уеб известия", - "Western Frisian": "Западен фризски", - "search_filters_date_option_week": "Тази седмица", - "Yiddish": "Идиш", - "preferences_category_player": "Предпочитания за плейъра", - "Shared `x` ago": "Споделено преди `x`", - "Swahili": "Суахили", - "Portuguese (auto-generated)": "Португалски (автоматично генерирано)", - "generic_count_years": "{{count}} година", - "generic_count_years_plural": "{{count}} години", - "Wilson score: ": "Wilson оценка: ", - "Genre: ": "Жанр: ", - "videoinfo_invidious_embed_link": "Вграждане на линк", - "Popular enabled: ": "Активиране на популярната страница: ", - "Wrong username or password": "Грешно потребителско име или парола", - "Vietnamese": "Виетнамски", - "alphabetically": "по азбучен ред", - "Afrikaans": "Африкаанс", - "Zulu": "Зулуски", - "(edited)": "(редактирано)", - "Whitelisted regions: ": "Разрешени региони: ", - "Spanish (auto-generated)": "Испански (автоматично генерирано)", - "Could not fetch comments": "Получаването на коментарите е неуспешно", - "Sindhi": "Синдхи", - "News": "Новини", - "preferences_video_loop_label": "Винаги повтаряй: ", - "%A %B %-d, %Y": "%-d %B %Y, %A", - "preferences_quality_option_small": "Ниско", - "English (United Kingdom)": "Английски (Великобритания)", - "Rating: ": "Рейтинг: ", - "channel_tab_playlists_label": "Плейлисти", - "generic_button_edit": "Редактирай", - "Report statistics: ": "Активиране на статистики за репортиране: ", - "Cebuano": "Себуано", - "Chinese (Traditional)": "Китайски (Традиционен)", - "generic_playlists_count": "{{count}} плейлист", - "generic_playlists_count_plural": "{{count}} плейлиста", - "Import NewPipe subscriptions (.json)": "Импортиране на NewPipe абонаменти (.json)", - "Preferences": "Предпочитания", - "Subscribe": "Абониране", - "Import and Export Data": "Импортиране и експортиране на информация", - "preferences_quality_option_hd720": "HD720", - "search_filters_type_option_playlist": "Плейлист", - "Serbian": "Сръбски", - "Kazakh": "Казахски", - "Telugu": "Телугу", - "search_filters_features_option_purchased": "Купено", - "revoke": "отмяна", - "search_filters_sort_option_date": "Дата на качване", - "preferences_category_data": "Предпочитания за информацията", - "search_filters_date_option_none": "Всякаква дата", - "Log out": "Излизане", - "Search": "Търсене", - "preferences_quality_dash_option_auto": "Автоматично", - "dark": "тъмна", - "Cantonese (Hong Kong)": "Кантонски (Хонг Конг)", - "crash_page_report_issue": "Ако никои от горепосочените не помогнаха, моля отворете нов проблем в GitHub (предпочитано на Английски) и добавете следния текст в съобщението (НЕ превеждайте този текст):", - "Czech": "Чешки", - "crash_page_switch_instance": "пробвал да ползваш друга инстанция", - "generic_count_weeks": "{{count}} седмица", - "generic_count_weeks_plural": "{{count}} седмици", - "search_filters_features_option_subtitles": "Субтитри", - "videoinfo_watch_on_youTube": "Виж в YouTube", - "Portuguese": "Португалски", - "Music in this video": "Музика в това видео", - "Hide replies": "Скрий отговорите", - "Password cannot be longer than 55 characters": "Паролата не може да бъде по-дълга от 55 символа", - "footer_modfied_source_code": "Променен изходен код", - "Bosnian": "Босненски", - "Deleted or invalid channel": "Изтрит или невалиден канал", - "Popular": "Популярно", - "search_filters_type_label": "Тип", - "preferences_locale_label": "Език: ", - "Playlists": "Плейлисти", - "generic_button_rss": "RSS", - "Export": "Експортиране", - "preferences_quality_dash_option_4320p": "4320p", - "Erroneous challenge": "Невалиден тест", - "History": "История", - "generic_count_hours": "{{count}} час", - "generic_count_hours_plural": "{{count}} часа", - "Registration enabled: ": "Активиране на регистрация: ", - "Music": "Музика", - "Incorrect password": "Грешна парола", - "Persian": "Перскийски", - "Import": "Импортиране", - "Import/export data": "Импортиране/Експортиране на информация", - "Shared `x`": "Споделено `x`", - "Javanese": "Явански", - "French (auto-generated)": "Френски (автоматично генерирано)", - "Norwegian Bokmål": "Норвежки", - "Catalan": "Каталунски", - "Hindi": "Хинди", - "Tamil": "Тамилски", - "search_filters_features_option_live": "На живо", - "crash_page_read_the_faq": "прочел Често задавани въпроси (FAQ)", - "preferences_default_home_label": "Начална страница по подразбиране: ", - "Download": "Изтегляне", - "Show less": "Покажи по-малко", - "Password": "Парола", - "User ID": "Потребителско име", - "Subscription manager": "Управляване на абонаменти", - "search": "търсене", - "No such user": "Няма такъв потребител", - "View privacy policy.": "Виж политиката за поверителност.", - "Only show latest unwatched video from channel: ": "Показвай само най-новите негледани видеа в канала: ", - "user_created_playlists": "`x` създаде плейлисти", - "Editing playlist `x`": "Редактиране на плейлист `x`", - "preferences_thin_mode_label": "Тънък режим: ", - "E-mail": "Имейл", - "Haitian Creole": "Хаитянски креол", - "Irish": "Ирландски", - "channel_tab_channels_label": "Канали", - "Delete account?": "Изтрий акаунта?", - "Redirect homepage to feed: ": "Препращане на началната страница до препоръки ", - "Urdu": "Урду", - "preferences_vr_mode_label": "Интерактивни 360 градусови видеа (изисква WebGL): ", - "Password cannot be empty": "Паролата не може да бъде празна", - "Mongolian": "Монголски", - "Authorize token?": "Разреши токена?", - "search_filters_type_option_all": "Всякакъв тип", - "Romanian": "Румънски", - "Belarusian": "Беларуски", - "channel name - reverse": "име на канал - в обратен ред", - "Erroneous CAPTCHA": "Невалидна CAPTCHA", - "Watch on YouTube": "Гледай в YouTube", - "search_filters_features_option_location": "Местоположение", - "Could not pull trending pages.": "Получаването на трендинг страниците е неуспешно.", - "German": "Немски", - "search_filters_features_option_c_commons": "Creative Commons", - "Family friendly? ": "За всяка възраст? ", - "Hidden field \"token\" is a required field": "Скритото поле \"токен\" е задължително поле", - "Russian (auto-generated)": "Руски (автоматично генерирано)", - "preferences_quality_dash_option_480p": "480p", - "Corsican": "Корсикански", - "Macedonian": "Македонски", - "comments_view_x_replies": "Виж {{count}} отговор", - "comments_view_x_replies_plural": "Виж {{count}} отговора", - "footer_original_source_code": "Оригинален изходен код", - "Import YouTube subscriptions": "Импортиране на YouTube/OPML абонаменти", - "Lithuanian": "Литовски", - "Nyanja": "Нянджа", - "Updated `x` ago": "Актуализирано преди `x`", - "JavaScript license information": "Информация за Javascript лиценза", - "Spanish": "Испански", - "Latin": "Латински", - "Shona": "Шона", - "Portuguese (Brazil)": "Португалски (Бразилия)", - "Show more": "Покажи още", - "Clear watch history?": "Изчисти историята на търсене?", - "Manage tokens": "Управление на токени", - "Hausa": "Хауса", - "search_filters_features_option_vr180": "VR180", - "preferences_category_visual": "Визуални предпочитания", - "Italian": "Италиански", - "preferences_volume_label": "Сила на звука на плейъра: ", - "error_video_not_in_playlist": "Заявеното видео не съществува в този плейлист. Натиснете тук за началната страница на плейлиста.", - "preferences_listen_label": "Само звук по подразбиране: ", - "Dutch (auto-generated)": "Холандски (автоматично генерирано)", - "preferences_captions_label": "Надписи по подразбиране: ", - "generic_count_days": "{{count}} ден", - "generic_count_days_plural": "{{count}} дни", - "Hawaiian": "Хавайски", - "Could not get channel info.": "Получаването на информация за канала е неуспешно.", - "View as playlist": "Виж като плейлист", - "Vietnamese (auto-generated)": "Виетнамски (автоматично генерирано)", - "search_filters_duration_option_none": "Всякаква продължителност", - "preferences_quality_dash_option_240p": "240p", - "Latvian": "Латвийски", - "search_filters_features_option_hdr": "HDR", - "preferences_sort_label": "Сортирай видеата по: ", - "Estonian": "Естонски", - "Hidden field \"challenge\" is a required field": "Скритото поле \"тест\" е задължително поле", - "footer_documentation": "Документация", - "Kyrgyz": "Киргизски", - "preferences_continue_autoplay_label": "Пускай следващотото видео автоматично: ", - "Chinese": "Китайски", - "search_filters_sort_option_relevance": "Уместност", - "source": "източник", - "Fallback comments: ": "Резервни коментари: ", - "preferences_automatic_instance_redirect_label": "Автоматично препращане на инстанция (чрез redirect.invidious.io): ", - "Maori": "Маори", - "generic_button_delete": "Изтрий", - "Import YouTube playlist (.csv)": "Импортиране на YouTube плейлист (.csv)", - "Switch Invidious Instance": "Смени Invidious инстанция", - "channel name": "име на канал", - "Audio mode": "Аудио режим", - "search_filters_type_option_show": "Сериал", - "search_filters_date_option_today": "Днес", - "search_filters_features_option_three_d": "3D", - "next_steps_error_message": "След което можеш да пробваш да: ", - "Hide annotations": "Скрий анотации", - "Standard YouTube license": "Стандартен YouTube лиценз", - "Text CAPTCHA": "Текст CAPTCHA", - "Log in/register": "Вход/регистрация", - "Punjabi": "Пенджаби", - "Change password": "Смяна на паролата", - "License: ": "Лиценз: ", - "search_filters_duration_option_medium": "Средно (4 - 20 минути)", - "Delete playlist": "Изтриване на плейлист", - "Delete playlist `x`?": "Изтрий плейлиста `x`?", - "Korean": "Корейски", - "Export subscriptions as OPML": "Експортиране на абонаментите като OPML", - "unsubscribe": "отписване", - "View YouTube comments": "Виж YouTube коментарите", - "Kannada": "Каннада", - "Not a playlist.": "Невалиден плейлист.", - "Wrong answer": "Грешен отговор", - "Released under the AGPLv3 on Github.": "Публикувано под AGPLv3 в GitHub.", - "Burmese": "Бирмански", - "Sundanese": "Сундански", - "Hungarian": "Унгарски", - "generic_count_seconds": "{{count}} секунда", - "generic_count_seconds_plural": "{{count}} секунди", - "search_filters_date_label": "Дата на качване", - "Greek": "Гръцки", - "crash_page_you_found_a_bug": "Изглежда намери бъг в Invidious!", - "View all playlists": "Виж всички плейлисти", - "Khmer": "Кхмерски", - "preferences_annotations_label": "Покажи анотаций по подразбиране: ", - "generic_views_count": "{{count}} гледане", - "generic_views_count_plural": "{{count}} гледания", - "Next page": "Следваща страница", - "Import YouTube watch history (.json)": "Импортиране на историята на гледане от YouTube (.json)" -} diff --git a/invidious/locales/bn.json b/invidious/locales/bn.json deleted file mode 100755 index 9d1c7b2..0000000 --- a/invidious/locales/bn.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "Subscribe": "সাবস্ক্রাইব", - "View channel on YouTube": "ইউটিউবে চ্যানেল দেখুন", - "View playlist on YouTube": "ইউটিউবে প্লেলিস্ট দেখুন", - "newest": "সর্ব-নতুন", - "oldest": "পুরানতম", - "popular": "জনপ্রিয়", - "last": "শেষটা", - "Next page": "পরের পৃষ্ঠা", - "Previous page": "আগের পৃষ্ঠা", - "Clear watch history?": "দেখার ইতিহাস সাফ করবেন?", - "New password": "নতুন পাসওয়ার্ড", - "New passwords must match": "নতুন পাসওয়ার্ড অবশ্যই মিলতে হবে", - "Authorize token?": "টোকেন অনুমোদন করবেন?", - "Authorize token for `x`?": "`x` -এর জন্য টোকেন অনুমোদন?", - "Yes": "হ্যাঁ", - "No": "না", - "Import and Export Data": "তথ্য আমদানি ও রপ্তানি", - "Import": "আমদানি", - "Import Invidious data": "ইনভিডিয়াস তথ্য আমদানি", - "Import YouTube subscriptions": "ইউটিউব সাবস্ক্রিপশন আনুন", - "Import FreeTube subscriptions (.db)": "ফ্রিটিউব সাবস্ক্রিপশন (.db) আনুন", - "Import NewPipe subscriptions (.json)": "নতুন পাইপ সাবস্ক্রিপশন আনুন (.json)", - "Import NewPipe data (.zip)": "নিউপাইপ তথ্য আনুন (.zip)", - "Export": "তথ্য বের করুন", - "Export subscriptions as OPML": "সাবস্ক্রিপশন OPML হিসাবে আনুন", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML-এ সাবস্ক্রিপশন বের করুন(নিউ পাইপ এবং ফ্রিউটিউব এর জন্য)", - "Export data as JSON": "JSON হিসাবে তথ্য বের করুন", - "Delete account?": "অ্যাকাউন্ট মুছে ফেলবেন?", - "History": "ইতিহাস", - "An alternative front-end to YouTube": "ইউটিউবের একটি বিকল্পস্বরূপ সম্মুখ-প্রান্ত", - "JavaScript license information": "জাভাস্ক্রিপ্ট লাইসেন্সের তথ্য", - "source": "সূত্র", - "Log in": "লগ ইন", - "Log in/register": "লগ ইন/রেজিস্টার", - "User ID": "ইউজার আইডি", - "Password": "পাসওয়ার্ড", - "Time (h:mm:ss):": "সময় (ঘণ্টা:মিনিট:সেকেন্ড):", - "Text CAPTCHA": "টেক্সট ক্যাপচা", - "Image CAPTCHA": "চিত্র ক্যাপচা", - "Sign In": "সাইন ইন", - "Register": "নিবন্ধন", - "E-mail": "ই-মেইল", - "Preferences": "পছন্দসমূহ", - "preferences_category_player": "প্লেয়ারের পছন্দসমূহ", - "preferences_video_loop_label": "সর্বদা লুপ: ", - "preferences_autoplay_label": "স্বয়ংক্রিয় চালু: ", - "preferences_continue_label": "ডিফল্টভাবে পরবর্তী চালাও: ", - "preferences_continue_autoplay_label": "পরবর্তী ভিডিও স্বয়ংক্রিয়ভাবে চালাও: ", - "preferences_listen_label": "সহজাতভাবে শোনো: ", - "preferences_local_label": "ভিডিও প্রক্সি করো: ", - "preferences_speed_label": "সহজাত গতি: ", - "preferences_quality_label": "পছন্দের ভিডিও মান: ", - "preferences_volume_label": "প্লেয়ার শব্দের মাত্রা: ", - "LIVE": "লাইভ", - "Shared `x` ago": "`x` আগে শেয়ার করা হয়েছে", - "Unsubscribe": "আনসাবস্ক্রাইব", - "generic_views_count": "{{count}}জন দেখেছে", - "generic_views_count_plural": "{{count}}জন দেখেছে", - "generic_videos_count": "{{count}}টি ভিডিও", - "generic_videos_count_plural": "{{count}}টি ভিডিও", - "generic_subscribers_count": "{{count}}জন অনুসরণকারী", - "generic_subscribers_count_plural": "{{count}}জন অনুসরণকারী", - "preferences_watch_history_label": "দেখার ইতিহাস চালু করো: ", - "preferences_quality_option_dash": "ড্যাশ (সময়োপযোগী মান)", - "preferences_quality_dash_option_auto": "স্বয়ংক্রিয়", - "preferences_quality_dash_option_best": "সেরা", - "preferences_quality_dash_option_worst": "মন্দতম", - "preferences_quality_dash_option_4320p": "৪৩২০পি", - "preferences_quality_dash_option_2160p": "২১৬০পি", - "preferences_quality_dash_option_1440p": "১৪৪০পি", - "preferences_quality_dash_option_480p": "৪৮০পি", - "preferences_quality_dash_option_360p": "৩৬০পি", - "preferences_quality_dash_option_240p": "২৪০পি", - "preferences_quality_dash_option_144p": "১৪৪পি", - "preferences_comments_label": "সহজাত মন্তব্য: ", - "youtube": "ইউটিউব", - "Fallback captions: ": "বিকল্প উপাখ্যান: ", - "preferences_related_videos_label": "সম্পর্কিত ভিডিও দেখাও: ", - "preferences_annotations_label": "সহজাতভাবে টীকা দেখাও ", - "preferences_quality_option_hd720": "উচ্চ৭২০", - "preferences_quality_dash_label": "পছন্দের ড্যাশ ভিডিও মান: ", - "preferences_captions_label": "সহজাত উপাখ্যান: ", - "generic_playlists_count": "{{count}}টি চালুতালিকা", - "generic_playlists_count_plural": "{{count}}টি চালুতালিকা", - "reddit": "রেডিট", - "invidious": "ইনভিডিয়াস", - "generic_subscriptions_count": "{{count}}টি অনুসরণ", - "generic_subscriptions_count_plural": "{{count}}টি অনুসরণ", - "preferences_quality_option_medium": "মধ্যম", - "preferences_quality_option_small": "ছোট", - "preferences_quality_dash_option_1080p": "১০৮০পি", - "preferences_quality_dash_option_720p": "৭২০পি" -} diff --git a/invidious/locales/bn_BD.json b/invidious/locales/bn_BD.json deleted file mode 100755 index a82b0da..0000000 --- a/invidious/locales/bn_BD.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "LIVE": "লাইভ", - "Shared `x` ago": "`x` আগে শেয়ার করা হয়েছে", - "Unsubscribe": "আনসাবস্ক্রাইব", - "Subscribe": "সাবস্ক্রাইব", - "View channel on YouTube": "ইউটিউবে চ্যানেল দেখুন", - "View playlist on YouTube": "ইউটিউবে প্লেলিস্ট দেখুন", - "newest": "সর্ব-নতুন", - "oldest": "পুরানতম", - "popular": "জনপ্রিয়", - "last": "শেষটা", - "Next page": "পরের পৃষ্ঠা", - "Previous page": "আগের পৃষ্ঠা", - "Clear watch history?": "দেখার ইতিহাস সাফ করবেন?", - "New password": "নতুন পাসওয়ার্ড", - "New passwords must match": "নতুন পাসওয়ার্ড অবশ্যই মিলতে হবে", - "Authorize token?": "টোকেন অনুমোদন করবেন?", - "Authorize token for `x`?": "`x` -এর জন্য টোকেন অনুমোদন?", - "Yes": "হ্যাঁ", - "No": "না", - "Import and Export Data": "তথ্য আমদানি ও রপ্তানি", - "Import": "আমদানি", - "Import Invidious data": "ইনভিডিয়াস তথ্য আমদানি", - "Import YouTube subscriptions": "ইউটিউব সাবস্ক্রিপশন আনুন", - "Import FreeTube subscriptions (.db)": "ফ্রিটিউব সাবস্ক্রিপশন (.db) আনুন", - "Import NewPipe subscriptions (.json)": "নতুন পাইপ সাবস্ক্রিপশন আনুন (.json)", - "Import NewPipe data (.zip)": "নিউপাইপ তথ্য আনুন (.zip)", - "Export": "তথ্য বের করুন", - "Export subscriptions as OPML": "সাবস্ক্রিপশন OPML হিসাবে আনুন", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML-এ সাবস্ক্রিপশন বের করুন(নিউ পাইপ এবং ফ্রিউটিউব এর জন্য)", - "Export data as JSON": "JSON হিসাবে তথ্য বের করুন", - "Delete account?": "অ্যাকাউন্ট মুছে ফেলবেন?", - "History": "ইতিহাস", - "An alternative front-end to YouTube": "ইউটিউবের একটি বিকল্পস্বরূপ সম্মুখ-প্রান্ত", - "JavaScript license information": "জাভাস্ক্রিপ্ট লাইসেন্সের তথ্য", - "source": "সূত্র", - "Log in": "লগ ইন", - "Log in/register": "লগ ইন/রেজিস্টার", - "User ID": "ইউজার আইডি", - "Password": "পাসওয়ার্ড", - "Time (h:mm:ss):": "সময় (ঘণ্টা:মিনিট:সেকেন্ড):", - "Text CAPTCHA": "টেক্সট ক্যাপচা", - "Image CAPTCHA": "চিত্র ক্যাপচা", - "Sign In": "সাইন ইন", - "Register": "নিবন্ধন", - "E-mail": "ই-মেইল", - "Preferences": "পছন্দসমূহ", - "preferences_category_player": "প্লেয়ারের পছন্দসমূহ", - "preferences_video_loop_label": "সর্বদা লুপ: ", - "preferences_autoplay_label": "স্বয়ংক্রিয় চালু: ", - "preferences_continue_label": "ডিফল্টভাবে পরবর্তী চালাও: ", - "preferences_continue_autoplay_label": "পরবর্তী ভিডিও স্বয়ংক্রিয়ভাবে চালাও: ", - "preferences_listen_label": "সহজাতভাবে শোনো: ", - "preferences_local_label": "ভিডিও প্রক্সি করো: ", - "preferences_speed_label": "সহজাত গতি: ", - "preferences_quality_label": "পছন্দের ভিডিও মান: ", - "preferences_volume_label": "প্লেয়ার শব্দের মাত্রা: " -} diff --git a/invidious/locales/ca.json b/invidious/locales/ca.json deleted file mode 100755 index 4ae5580..0000000 --- a/invidious/locales/ca.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "oldest": "més antic", - "Yes": "Sí", - "preferences_quality_label": "Qualitat de vídeo preferida: ", - "newest": "més nou", - "No": "No", - "User ID": "ID d'usuari", - "Preferences": "Preferències", - "Dark mode: ": "Mode fosc: ", - "dark": "fosc", - "light": "clar", - "published": "publicat", - "published - reverse": "publicat - invers", - "alphabetically": "alfabèticament", - "alphabetically - reverse": "alfabèticament - invers", - "channel name - reverse": "nom del canal - invers", - "preferences_category_data": "Preferències de dades", - "Delete account": "Elimina compte", - "Save preferences": "Guarda preferències", - "Private": "Privat", - "Show more": "Mostra'n més", - "Show less": "Mostra'n menys", - "Hide replies": "Amaga respostes", - "Arabic": "Àrab", - "Armenian": "Armeni", - "Basque": "Basc", - "Filipino": "Filipí", - "Finnish": "Finès", - "German": "Alemany", - "Greek": "Grec", - "Hungarian": "Hongarès", - "Icelandic": "Islandès", - "Italian": "Italià", - "Japanese": "Japonès", - "Korean": "Coreà", - "Kurdish": "Kurd", - "Lithuanian": "Lituà", - "Luxembourgish": "Luxemburguès", - "Macedonian": "Macedoni", - "Polish": "Polonès", - "Portuguese": "Portuguès", - "Romanian": "Romanès", - "Russian": "Rus", - "Serbian": "Serbi", - "Spanish (Latin America)": "Castellà (Amèrica llatina)", - "Turkish": "Turc", - "Ukrainian": "Ucraïnès", - "preferences_locale_label": "Idioma: ", - "Gaming": "Jocs", - "Movies": "Películes", - "Download": "Descarrega", - "Download as: ": "Descarrega com: ", - "channel_tab_videos_label": "Vídeos", - "search_filters_type_label": "Tipus", - "search_filters_duration_label": "Duració", - "search_filters_sort_label": "Ordena per", - "search_filters_date_option_week": "Aquesta setmana", - "search_filters_date_option_month": "Aquest mes", - "search_filters_date_option_year": "Aquest any", - "search_filters_type_option_video": "Vídeo", - "search_filters_type_option_channel": "Canal", - "search_filters_duration_option_short": "Curt (< 4 minuts)", - "search_filters_duration_option_long": "Llarg (> 20 minuts)", - "Current version: ": "Versió actual: ", - "Malay": "Malai", - "Persian": "Persa", - "Slovak": "Eslovac", - "Search": "Cerca", - "Show annotations": "Mostra anotacions", - "preferences_region_label": "País del contingut: ", - "preferences_sort_label": "Ordena vídeos per: ", - "Import/export": "Importa/exporta", - "channel name": "nom del canal", - "Title": "Títol", - "Belarusian": "Bielorús", - "Enable web notifications": "Activa notificacions web", - "search": "Cerca", - "Catalan": "Català", - "Croatian": "Croat", - "preferences_category_admin": "Preferències d'administrador", - "Hide annotations": "Amaga anotacions", - "Show replies": "Mostra respostes", - "Bulgarian": "Búlgar", - "Albanian": "Albanès", - "French": "Francès", - "Irish": "Irlandès", - "Maltese": "Maltès", - "Danish": "Danès", - "Galician": "Gallec", - "Hebrew": "Hebreu", - "Indonesian": "Indonesi", - "Spanish": "Castellà", - "Vietnamese": "Vietnamita", - "News": "Notícies", - "search_filters_type_option_show": "Mostra", - "footer_documentation": "Documentació", - "Thai": "Tailandès", - "Music": "Música", - "search_filters_sort_option_relevance": "Rellevància", - "search_filters_date_option_hour": "Última hora", - "search_filters_date_option_today": "Avui", - "preferences_volume_label": "Volum del reproductor: ", - "invidious": "Invidious", - "preferences_quality_dash_option_144p": "144p", - "Turkish (auto-generated)": "Turc (generat automàticament)", - "Urdu": "Urdú", - "Vietnamese (auto-generated)": "Vietnamita (generat automàticament)", - "Welsh": "Gal·lès", - "Yoruba": "Ioruba", - "YouTube comment permalink": "Enllaç permanent de comentari de YouTube", - "Channel Sponsor": "Patrocinador del canal", - "Audio mode": "Mode d'àudio", - "search_filters_date_option_none": "Qualsevol data", - "search_filters_type_option_playlist": "Llista de reproducció", - "search_filters_type_option_movie": "Pel·lícula", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_subtitles": "Subtítols/CC", - "search_filters_features_option_live": "Directe", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_hdr": "HDR", - "search_filters_features_option_location": "Ubicació", - "search_filters_apply_button": "Aplica els filtres seleccionats", - "videoinfo_started_streaming_x_ago": "Ha començat el directe fa `x`", - "next_steps_error_message_go_to_youtube": "Vés a YouTube", - "footer_donate_page": "Feu un donatiu", - "footer_original_source_code": "Codi font original", - "videoinfo_watch_on_youTube": "Veure a YouTube", - "user_saved_playlists": "`x` llistes de reproducció guardades", - "adminprefs_modified_source_code_url_label": "URL al repositori de codi font modificat", - "none": "cap", - "footer_modfied_source_code": "Codi font modificat", - "videoinfo_invidious_embed_link": "Incrusta l'enllaç", - "download_subtitles": "Subtítols - `x` (.vtt)", - "user_created_playlists": "`x`llistes de reproducció creades", - "Video unavailable": "Vídeo no disponible", - "channel_tab_channels_label": "Canals", - "channel_tab_playlists_label": "Llistes de reproducció", - "channel_tab_community_label": "Comunitat", - "Czech": "Txec", - "Default": "Per defecte", - "Amharic": "Amàric", - "preferences_automatic_instance_redirect_label": "Redirecció automàtica d'instàncies (retorna a redirect.invidious.io): ", - "Login enabled: ": "Activa inici de sessió: ", - "Registration enabled: ": "Activa registre: ", - "Whitelisted regions: ": "Regions a la llista blanca: ", - "Chinese (Simplified)": "Xinès (Simplificat)", - "Corsican": "Cors", - "Estonian": "Estonià", - "Japanese (auto-generated)": "Japonès (generat automàticament)", - "English (United States)": "Anglès (Estats Units)", - "English (auto-generated)": "Anglès (generat automàticament)", - "Cebuano": "Cebuà", - "Esperanto": "Esperanto", - "Scottish Gaelic": "Gaèlic escocès", - "Playlists": "Llistes de reproducció", - "search_filters_title": "Filtres", - "search_filters_type_option_all": "Qualsevol tipus", - "search_filters_duration_option_none": "Qualsevol duració", - "next_steps_error_message": "Després d'això, hauríeu d'intentar: ", - "next_steps_error_message_refresh": "Recarregar la pàgina", - "crash_page_refresh": "ha intentat actualitzar la pàgina", - "crash_page_report_issue": "Si cap de les anteriors no ha ajudat, obre un nou issue a GitHub (preferiblement en anglès) i inclou el text següent al missatge (NO tradueixis aquest text):", - "generic_subscriptions_count": "{{count}} subscripció", - "generic_subscriptions_count_plural": "{{count}} subscripcions", - "error_video_not_in_playlist": "El vídeo sol·licitat no existeix en aquesta llista de reproducció. Feu clic aquí per a la pàgina d'inici de la llista de reproducció.", - "comments_points_count": "{{count}} punt", - "comments_points_count_plural": "{{count}} punts", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "Create playlist": "Crear llista de reproducció", - "Text CAPTCHA": "Text CAPTCHA", - "Next page": "Pàgina següent", - "preferences_category_visual": "Preferències visuals", - "preferences_unseen_only_label": "Mostra només no vistos: ", - "preferences_listen_label": "Escolta per defecte: ", - "Import": "Importar", - "Token": "Testimoni", - "Wilson score: ": "Puntuació de Wilson: ", - "search_filters_date_label": "Data de càrrega", - "search_filters_features_option_three_sixty": "360°", - "source": "font", - "preferences_default_home_label": "Pàgina d'inici per defecte: ", - "preferences_comments_label": "Comentaris per defecte: ", - "`x` uploaded a video": "`x` ha penjat un vídeo", - "Released under the AGPLv3 on Github.": "Publicat sota l'AGPLv3 a GitHub.", - "Token manager": "Gestor de testimonis", - "Watch history": "Historial de reproduccions", - "Authorize token?": "Autoritzar testimoni?", - "Source available here.": "Font disponible aquí.", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exporta subscripcions com a OPML (per a NewPipe i FreeTube)", - "Log in": "Inicia sessió", - "search_filters_sort_option_date": "Data de càrrega", - "Unlisted": "No llistat", - "View privacy policy.": "Veure política de privadesa.", - "Public": "Públic", - "View all playlists": "Veure totes les llistes de reproducció", - "reddit": "Reddit", - "Manage tokens": "Gestiona testimonis", - "Not a playlist.": "No és una llista de reproducció.", - "preferences_local_label": "Vídeos de Proxy: ", - "View channel on YouTube": "Veure canal a Youtube", - "preferences_quality_dash_option_1080p": "1080p", - "Top enabled: ": "Activa top: ", - "Delete playlist `x`?": "Eliminar llista de reproducció `x`?", - "View JavaScript license information.": "Consulta la informació de la llicència de JavaScript.", - "Playlist privacy": "Privacitat de la llista de reproducció", - "search_message_no_results": "No s'han trobat resultats.", - "search_message_use_another_instance": " També es pot buscar en una altra instància.", - "Genre: ": "Gènere: ", - "Hidden field \"challenge\" is a required field": "El camp ocult \"repte\" és un camp obligatori", - "Burmese": "Birmà", - "View as playlist": "Mostra com a llista de reproducció", - "preferences_category_subscription": "Preferències de subscripció", - "Music in this video": "Música en aquest vídeo", - "Artist: ": "Artista: ", - "Album: ": "Àlbum: ", - "Shared `x`": "Compartit `x`", - "Premieres `x`": "Estrena `x`", - "View more comments on Reddit": "Veure més comentaris a Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Veure `x` comentari", - "": "Veure `x` comentaris" - }, - "View Reddit comments": "Veure comentaris de Reddit", - "Incorrect password": "Contrasenya incorrecta", - "Erroneous CAPTCHA": "CAPTCHA erroni", - "CAPTCHA is a required field": "El CAPTCHA és un camp obligatori", - "Korean (auto-generated)": "Coreà (generat automàticament)", - "Kyrgyz": "Kirguís", - "Latin": "Llatí", - "Malagasy": "Malgaix", - "Maori": "Maori", - "Marathi": "Marathi", - "Norwegian Bokmål": "Bokmål Noruec", - "Nyanja": "Nyanja", - "Portuguese (Brazil)": "Portuguès (Brazil)", - "Punjabi": "Panjabi", - "Russian (auto-generated)": "Rus (generat automàticament)", - "Samoan": "Samoà", - "Somali": "Somali", - "Southern Sotho": "Sesotho", - "Spanish (Mexico)": "Espanyol (Mèxic)", - "Spanish (Spain)": "Espanyol (Espanya)", - "Sundanese": "Sondanès", - "Swahili": "Suahili", - "Tamil": "Tàmil", - "Telugu": "Telugu", - "Zulu": "Zulu", - "generic_count_months": "{{count}} mes", - "generic_count_months_plural": "{{count}} mesos", - "generic_count_weeks": "{{count}} setmana", - "generic_count_weeks_plural": "{{count}} setmanes", - "About": "Sobre", - "`x` marked it with a ❤": "`x`marca'l amb un ❤", - "Video mode": "Mode de vídeo", - "search_filters_features_label": "Característiques", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_vr180": "VR180", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_purchased": "Comprat", - "Chinese (Hong Kong)": "Xinès (Hong Kong)", - "Chinese (Taiwan)": "Xinès (Taiwan)", - "Hmong": "Hmong", - "Kazakh": "Kazakh", - "Igbo": "Igbo", - "Javanese": "Javanès", - "Indonesian (auto-generated)": "Indonesi (generat automàticament)", - "Interlingue": "Interlingüe", - "Khmer": "Khmer", - "This channel does not exist.": "Aquest canal no existeix.", - "Song: ": "Cançó: ", - "channel:`x`": "canal: `x`", - "Deleted or invalid channel": "Canal suprimit o no vàlid", - "Could not get channel info.": "No s'ha pogut obtenir la informació del canal.", - "Could not pull trending pages.": "No s'han pogut extreure les pàgines de tendència.", - "comments_view_x_replies": "Veure {{count}} resposta", - "comments_view_x_replies_plural": "Veure {{count}} respostes", - "Subscriptions": "Subscripcions", - "generic_count_seconds": "{{count}} segon", - "generic_count_seconds_plural": "{{count}} segons", - "channel_tab_shorts_label": "Vídeos curts", - "preferences_save_player_pos_label": "Desa la posició de reproducció: ", - "crash_page_before_reporting": "Abans d'informar d'un error, assegureu-vos que teniu:", - "crash_page_switch_instance": "ha intentat utilitzar una altra instància", - "crash_page_read_the_faq": "heu llegit les Preguntes més freqüents (FAQ)", - "crash_page_search_issue": "ha cercat problemes existents a GitHub", - "User ID is a required field": "L'identificador d'usuari és un camp obligatori", - "Password is a required field": "La contrasenya és un camp obligatori", - "Wrong username or password": "Nom d'usuari o contrasenya incorrectes", - "Password cannot be longer than 55 characters": "La contrasenya no pot tenir més de 55 caràcters", - "Invidious Private Feed for `x`": "Feed privat Invidious per a `x`", - "generic_views_count": "{{count}} visualització", - "generic_views_count_plural": "{{count}} visualitzacions", - "generic_videos_count": "{{count}} vídeo", - "generic_videos_count_plural": "{{count}} vídeos", - "Token is expired, please try again": "El testimoni ha caducat, torna-ho a provar", - "English": "Anglès", - "Kannada": "Kanarès", - "Erroneous token": "Testimoni erroni", - "`x` ago": "fa `x`", - "Empty playlist": "Llista de reproducció buida", - "Playlist does not exist.": "La llista de reproducció no existeix.", - "No such user": "No hi ha tal usuari", - "Afrikaans": "Afrikàans", - "Azerbaijani": "Azerbaidjana", - "Cantonese (Hong Kong)": "Cantonès (Hong Kong)", - "Chinese": "Xinès", - "Chinese (China)": "Xinès (Xina)", - "Chinese (Traditional)": "Xinès (Tradicional)", - "Dutch": "Holandès", - "Dutch (auto-generated)": "Holandès (generat automàticament)", - "French (auto-generated)": "Francès (generat automàticament)", - "Georgian": "Georgià", - "German (auto-generated)": "Alemany (generat automàticament)", - "Gujarati": "Gujarati", - "Hawaiian": "Hawaià", - "generic_count_years": "{{count}} any", - "generic_count_years_plural": "{{count}} anys", - "Popular": "Popular", - "Rating: ": "Valoració: ", - "permalink": "enllaç permanent", - "preferences_quality_dash_option_worst": "Pitjor", - "Yiddish": "Ídix", - "preferences_quality_dash_option_auto": "Automàtic", - "Western Frisian": "Frisó occidental", - "Swedish": "Suec", - "Only show latest unwatched video from channel: ": "Mostra només l'últim vídeo no vist del canal: ", - "preferences_continue_label": "Reprodueix el següent per defecte: ", - "Import YouTube subscriptions": "Importar subscripcions de YouTube", - "search_filters_sort_option_rating": "Valoració", - "preferences_thin_mode_label": "Mode prim: ", - "preferences_quality_option_small": "Petit", - "CAPTCHA enabled: ": "activa CAPTCHA: ", - "Import and Export Data": "Importar i exportar dades", - "preferences_quality_dash_option_360p": "360p", - "Popular enabled: ": "Activa popular: ", - "Password": "Contrasenya", - "Blacklisted regions: ": "Regions a la llista negra: ", - "Register": "Registra't", - "Shared `x` ago": "Compartit fa `x`", - "search_filters_sort_option_views": "Recompte de visualitzacions", - "Import Invidious data": "Importa dades JSON d'Invidious", - "preferences_related_videos_label": "Mostra vídeos relacionats: ", - "preferences_show_nick_label": "Mostra l'àlies a la part superior: ", - "Time (h:mm:ss):": "Temps (h:mm:ss):", - "Could not fetch comments": "No s'han pogut obtenir els comentaris", - "New password": "Nova contrasenya", - "preferences_notifications_only_label": "Mostra només notificacions (si n'hi ha): ", - "preferences_annotations_label": "Mostra anotacions per defecte: ", - "Import FreeTube subscriptions (.db)": "Importar subscripcions de FreeTube (.db)", - "Fallback captions: ": "Subtítols alternatius: ", - "Log out": "Tancar sessió", - "preferences_quality_dash_option_2160p": "2160p", - "Unsubscribe": "Cancel·la la subscripció", - "Log in/register": "Inicia sessió/registra't", - "Nepali": "Nepalí", - "Xhosa": "Xosa", - "preferences_captions_label": "Subtítols per defecte: ", - "preferences_autoplay_label": "Reproducció automàtica: ", - "`x` is live": "`x` està en directe", - "Uzbek": "Uzbek", - "Hausa": "Haussa", - "Bosnian": "Bosnià", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hola! Sembla que tens JavaScript desactivat. Feu clic aquí per veure els comentaris, tingueu en compte que poden trigar una mica més a carregar-se.", - "Password cannot be empty": "La contrasenya no pot estar buida", - "preferences_video_loop_label": "Sempre en bucle: ", - "preferences_quality_option_dash": "DASH (qualitat adaptativa)", - "Change password": "Canvia la contrasenya", - "Export data as JSON": "Exporta dades d'Invidious com a JSON", - "Wrong answer": "Resposta incorrecta", - "Clear watch history": "Neteja l'historial de reproduccions", - "Mongolian": "Mongol", - "preferences_quality_dash_option_best": "Millor", - "Authorize token for `x`?": "Autoritzar testimoni per a `x`?", - "Report statistics: ": "Estadístiques de l'informe: ", - "Switch Invidious Instance": "Canvia la instància d'Invidious", - "History": "Historial", - "Portuguese (auto-generated)": "Portuguès (generat automàticament)", - "footer_source_code": "Codi font", - "videoinfo_youTube_embed_link": "Insereix", - "generic_count_minutes": "{{count}} minut", - "generic_count_minutes_plural": "{{count}} minuts", - "preferences_category_player": "Preferències del reproductor", - "Sign In": "Inicia Sessió", - "preferences_continue_autoplay_label": "Reprodueix automàticament el següent vídeo: ", - "generic_playlists_count": "{{count}} llista de reproducció", - "generic_playlists_count_plural": "{{count}} llistes de reproducció", - "Delete account?": "Esborrar compte?", - "Please log in": "Si us plau inicieu sessió", - "Import NewPipe data (.zip)": "Importar dades de NewPipe (.zip)", - "Image CAPTCHA": "Imatge CAPTCHA", - "channel_tab_streams_label": "Transmissions en directe", - "preferences_category_misc": "Preferències diverses", - "preferences_annotations_subscribed_label": "Mostra les anotacions per defecte dels canals subscrits? ", - "Tajik": "Tadjik", - "preferences_player_style_label": "Estil del reproductor: ", - "Load more": "Carrega més", - "preferences_vr_mode_label": "Vídeos interactius de 360 graus (requereix WebGL): ", - "Manage subscriptions": "Gestionar les subscripcions", - "preferences_quality_option_medium": "Mitjà", - "Editing playlist `x`": "Editant la llista de reproducció `x`", - "search_filters_duration_option_medium": "Mitjà (4 - 20 minuts)", - "E-mail": "Correu electrònic", - "Spanish (auto-generated)": "Castellà (generat automàticament)", - "Export": "Exportar", - "preferences_quality_dash_option_4320p": "4320p", - "JavaScript license information": "Informació de la llicència de JavaScript", - "Hidden field \"token\" is a required field": "El camp ocult \"testimoni\" és un camp obligatori", - "Shona": "Xona", - "Family friendly? ": "Apte per a tots els públics? ", - "preferences_quality_dash_label": "Qualitat de vídeo DASH preferida: ", - "Hindi": "Hindi", - "An alternative front-end to YouTube": "Una interfície alternativa a YouTube", - "Export subscriptions as OPML": "Exporta subscripcions com a OPML", - "Watch on YouTube": "Veure a YouTube", - "Lao": "Laosià", - "search_message_change_filters_or_query": "Proveu d'ampliar la vostra consulta de cerca i/o canviar els filtres.", - "View YouTube comments": "Veure comentaris de YouTube", - "New passwords must match": "Les contrasenyes noves han de coincidir", - "Subscription manager": "Gestor de subscripcions", - "Premieres in `x`": "Estrena en `x`", - "youtube": "YouTube", - "Latvian": "Letó", - "LIVE": "EN VIU", - "Could not create mix.": "No s'ha pogut crear la barreja.", - "preferences_speed_label": "Velocitat per defecte: ", - "preferences_extend_desc_label": "Amplieu automàticament la descripció del vídeo: ", - "popular": "popular", - "Erroneous challenge": "Repte erroni", - "last": "darrer", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_1440p": "1440p", - "Previous page": "Pàgina anterior", - "Only show latest video from channel: ": "Mostra només l'últim vídeo del canal: ", - "unsubscribe": "cancel·la la subscripció", - "View playlist on YouTube": "Veure llista de reproducció a YouTube", - "Import NewPipe subscriptions (.json)": "Importar subscripcions de NewPipe (.json)", - "crash_page_you_found_a_bug": "Heu trobat un error a Invidious!", - "Subscribe": "Subscriu-me", - "generic_count_days": "{{count}} dia", - "generic_count_days_plural": "{{count}} dies", - "Trending": "Tendència", - "Updated `x` ago": "Actualitzat fa `x`", - "Haitian Creole": "Crioll Haitià", - "preferences_watch_history_label": "Habilita historial de reproduccions: ", - "generic_count_hours": "{{count}} hora", - "generic_count_hours_plural": "{{count}} hores", - "Malayalam": "Maialàiam", - "Clear watch history?": "Neteja historial de reproduccions?", - "Import/export data": "Importa/exporta dades", - "Sinhala": "Singalès", - "Delete playlist": "Eliminar llista de reproducció", - "Bangla": "Bengalí", - "Italian (auto-generated)": "Italià (generat automàticament)", - "License: ": "Llicència: ", - "(edited)": "(editat)", - "Pashto": "Paixtu", - "preferences_dark_mode_label": "Tema: ", - "revoke": "revocar", - "English (United Kingdom)": "Anglès (Regne Unit)", - "preferences_quality_option_hd720": "HD720", - "tokens_count": "{{count}} testimoni", - "tokens_count_plural": "{{count}} testimonis", - "subscriptions_unseen_notifs_count": "{{count}} notificació no vista", - "subscriptions_unseen_notifs_count_plural": "{{count}} notificacions no vistes", - "generic_subscribers_count": "{{count}} subscriptor", - "generic_subscribers_count_plural": "{{count}} subscriptors", - "Sindhi": "Sindhi", - "Slovenian": "Eslovè", - "preferences_feed_menu_label": "Menú del feed: ", - "Fallback comments: ": "Comentaris alternatius: ", - "Top": "Millors", - "preferences_max_results_label": "Nombre de vídeos mostrats al feed: ", - "Engagement: ": "Atracció: ", - "Redirect homepage to feed: ": "Redirigeix la pàgina d'inici al feed: ", - "Standard YouTube license": "Llicència estàndard de YouTube", - "Download is disabled": "Les baixades s'han inhabilitat", - "Import YouTube playlist (.csv)": "Importar llista de reproducció de YouTube (.csv)", - "channel_tab_podcasts_label": "Podcasts", - "playlist_button_add_items": "Afegeix vídeos", - "generic_button_save": "Desa", - "generic_button_cancel": "Cancel·la", - "channel_tab_releases_label": "Publicacions", - "generic_channels_count": "{{count}} canal", - "generic_channels_count_plural": "{{count}} canals", - "generic_button_edit": "Edita", - "generic_button_rss": "RSS", - "generic_button_delete": "Suprimeix", - "Import YouTube watch history (.json)": "Importa l'historial de visualitzacions de YouTube (.json)" -} diff --git a/invidious/locales/cs.json b/invidious/locales/cs.json deleted file mode 100755 index 4aa20f2..0000000 --- a/invidious/locales/cs.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "ŽIVĚ", - "Shared `x` ago": "Zveřejněno před `x`", - "Unsubscribe": "Odhlásit odběr", - "Subscribe": "Odebírat", - "View channel on YouTube": "Otevřít kanál na YouTube", - "View playlist on YouTube": "Zobrazit playlist na YouTube", - "newest": "nejnovější", - "oldest": "nejstarší", - "popular": "populární", - "last": "poslední", - "Next page": "Další strana", - "Previous page": "Předchozí strana", - "Clear watch history?": "Smazat historii?", - "New password": "Nové heslo", - "New passwords must match": "Hesla se musí shodovat", - "Authorize token?": "Autorizovat token?", - "Authorize token for `x`?": "Autorizovat token pro `x`?", - "Yes": "Ano", - "No": "Ne", - "Import and Export Data": "Import a export dat", - "Import": "Importovat", - "Import Invidious data": "Importovat JSON údaje Invidious", - "Import YouTube subscriptions": "Importovat odběry z YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importovat odběry z FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importovat odběry z NewPipe (.json)", - "Import NewPipe data (.zip)": "Importovat údeje z NewPipe (.zip)", - "Export": "Exportovat", - "Export subscriptions as OPML": "Exportovat odběry jako OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportovat údaje jako OPML (na NewPipe a FreeTube)", - "Export data as JSON": "Exportovat data Invidious jako JSON", - "Delete account?": "Smazat účet?", - "History": "Historie", - "An alternative front-end to YouTube": "Alternativní front-end pro YouTube", - "JavaScript license information": "Informace o licenci JavaScript", - "source": "zdrojový kód", - "Log in": "Přihlásit se", - "Log in/register": "Přihlásit se/vytvořit účet", - "User ID": "ID uživatele", - "Password": "Heslo", - "Time (h:mm:ss):": "Čas (h:mm:ss):", - "Text CAPTCHA": "Textové CAPTCHA", - "Image CAPTCHA": "Obrázkové CAPTCHA", - "Sign In": "Přihlásit se", - "Register": "Vytvořit účet", - "E-mail": "E-mail", - "Preferences": "Nastavení", - "preferences_category_player": "Nastavení přehravače", - "preferences_video_loop_label": "Vždy opakovat: ", - "preferences_autoplay_label": "Automatické přehrávání: ", - "preferences_continue_label": "Automaticky přehrát další: ", - "preferences_continue_autoplay_label": "Automaticky přehrát další video: ", - "preferences_listen_label": "Poslouchat ve výchozím nastavení: ", - "preferences_local_label": "Video přes proxy: ", - "preferences_speed_label": "Výchozí rychlost: ", - "preferences_quality_label": "Preferovaná kvalita videa: ", - "preferences_volume_label": "Hlasitost přehrávače: ", - "preferences_comments_label": "Předpřipravené komentáře: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Výchozí titulky: ", - "Fallback captions: ": "Záložní titulky: ", - "preferences_related_videos_label": "Zobrazit podobná videa: ", - "preferences_annotations_label": "Zobrazovat poznámky ve výchozím nastavení: ", - "preferences_extend_desc_label": "Rozšířit automaticky popis u videa: ", - "preferences_category_visual": "Nastavení vzhledu", - "preferences_player_style_label": "Styl přehrávače ", - "Dark mode: ": "Tmavý režim ", - "preferences_dark_mode_label": "Vzhled: ", - "dark": "tmavý", - "light": "světlý", - "preferences_thin_mode_label": "Kompaktní režim: ", - "preferences_category_subscription": "Nastavení předplatných", - "preferences_annotations_subscribed_label": "Ve výchozím nastavení zobrazovat poznámky u odebíraných kanálů: ", - "Redirect homepage to feed: ": "Přesměrovávat domovskou stránku na informační kanál: ", - "preferences_max_results_label": "Počet videí zobrazovaných v informačním kanále: ", - "preferences_sort_label": "Roztřídit videa podle: ", - "published": "publikováno", - "published - reverse": "podle publikování - obrátit", - "alphabetically": "podle abecedy", - "alphabetically - reverse": "podle abecedy - převrátit", - "channel name": "název kanálu", - "channel name - reverse": "podle jména kanálu - převrátit", - "Only show latest video from channel: ": "Jenom zobrazit nejnovjejší video z kanálu: ", - "Only show latest unwatched video from channel: ": "Zobrazit jen nejnovější nezhlédnuté video z daného kanálu: ", - "preferences_unseen_only_label": "Zobrazit jen již nezhlédnuté: ", - "preferences_notifications_only_label": "Zobrazit pouze upozornění (pokud nějaká jsou): ", - "Enable web notifications": "Povolit webová upozornění", - "`x` uploaded a video": "`x` nahrál(a) video", - "`x` is live": "`x` je živě", - "preferences_category_data": "Nastavení dat", - "Clear watch history": "Smazat historii", - "Import/export data": "Importovat/exportovat data", - "Change password": "Změnit heslo", - "Manage subscriptions": "Spravovat odebírané kanály", - "Manage tokens": "Spravovat tokeny", - "Watch history": "Historie sledování", - "Delete account": "Smazat účet", - "preferences_category_admin": "Administrátorská nastavení", - "preferences_default_home_label": "Základní domovská stránka: ", - "preferences_feed_menu_label": "Menu doporučených: ", - "CAPTCHA enabled: ": "CAPTCHA povolena: ", - "Login enabled: ": "Přihlášení povoleno: ", - "Registration enabled: ": "Registrace povolena ", - "Report statistics: ": "Oznámit statistiky: ", - "Save preferences": "Uložit nastavení", - "Subscription manager": "Správa odběrů", - "Token manager": "Správa tokenů", - "Token": "Token", - "Import/export": "Importovat/exportovat", - "unsubscribe": "odhlásit odběr", - "revoke": "vrátit zpět", - "Subscriptions": "Odběry", - "search": "hledat", - "Log out": "Odhlásit se", - "Source available here.": "Zdrojový kód dostupný zde.", - "View JavaScript license information.": "Zobrazit informace o licenci JavaScript .", - "View privacy policy.": "Zobrazit zásady ochrany osobních údajů.", - "Trending": "Trendy", - "Public": "Veřejné", - "Unlisted": "Neveřejné", - "Private": "Soukromé", - "View all playlists": "Zobrazit všechny playlisty", - "Updated `x` ago": "Aktualizováno před `x`", - "Delete playlist `x`?": "Smazat playlist `x`?", - "Delete playlist": "Smazat playlist", - "Create playlist": "Vytvořit playlist", - "Title": "Název", - "Editing playlist `x`": "Upravování playlistu `x`", - "Show more": "Zobrazit více", - "Show less": "Zobrazit méně", - "Watch on YouTube": "Sledovat na YouTube", - "Hide annotations": "Skrýt poznámky", - "Show annotations": "Zobrazit poznámky", - "Genre: ": "Žánr: ", - "License: ": "Licence: ", - "Family friendly? ": "Vhodné pro rodiny? ", - "Engagement: ": "Zapojení: ", - "English": "Angličtina", - "English (auto-generated)": "Angličtina (automaticky generováno)", - "Afrikaans": "Afrikánština", - "Albanian": "Albánština", - "Amharic": "Amharština", - "Arabic": "Arabština", - "Armenian": "Arménština", - "Azerbaijani": "Azerbajdžánština", - "Bangla": "Bengálština", - "Basque": "Baskičtina", - "Belarusian": "Běloruština", - "Bosnian": "Bosenština", - "Bulgarian": "Bulharština", - "Burmese": "Barmština", - "Catalan": "Katalánština", - "Cebuano": "Cebuánština", - "Chinese (Simplified)": "Čínština (zjednodušená)", - "Chinese (Traditional)": "Čínština (tradiční)", - "Corsican": "Korsičtina", - "Croatian": "Chorvatština", - "Czech": "Čeština", - "Danish": "Dánština", - "Dutch": "Nizozemština", - "Esperanto": "Esperanto", - "Estonian": "Estonština", - "Filipino": "Filipínština", - "Finnish": "Finština", - "French": "Francouzština", - "Galician": "Galicijština", - "Georgian": "Gruzínština", - "German": "Němčina", - "Greek": "Řečtina", - "Gujarati": "Gudžarátština", - "Haitian Creole": "Haitská kreolština", - "Hausa": "Hauština", - "Hawaiian": "Havajština", - "Hebrew": "Hebrejština", - "Hindi": "Hindština", - "Hmong": "Hmongština", - "Hungarian": "Maďarština", - "Icelandic": "Islandština", - "Igbo": "Igboština", - "Indonesian": "Indonéština", - "Irish": "Irština", - "Italian": "Italština", - "Japanese": "Japonština", - "Javanese": "Javánština", - "Kannada": "Kannadština", - "Kazakh": "Kazaština", - "Khmer": "Khmerština", - "Korean": "Korejština", - "Kurdish": "Kurdština", - "Kyrgyz": "Kyrgyzština", - "Lao": "Laoština", - "Latin": "Latina", - "Latvian": "Lotyština", - "Lithuanian": "Litevština", - "Luxembourgish": "Lucemburština", - "Macedonian": "Makedonština", - "Malagasy": "Malgaština", - "Malay": "Malajština", - "Malayalam": "Malajálamština", - "Maltese": "Maltština", - "Maori": "Maorština", - "Marathi": "Maráthština", - "Mongolian": "Mongolština", - "Nepali": "Nepálština", - "Norwegian Bokmål": "Norština Bokmål", - "Nyanja": "Čičevština", - "Pashto": "Paštština", - "Persian": "Perština", - "Polish": "Polština", - "Portuguese": "Portugalština", - "Punjabi": "Paňdžábština", - "Romanian": "Rumunština", - "Russian": "Ruština", - "Samoan": "Samojština", - "Scottish Gaelic": "Skotská gaelština", - "Serbian": "Srbština", - "Shona": "Shona", - "Sindhi": "Sindhština", - "Sinhala": "Sinhálština", - "Slovak": "Slovenština", - "Slovenian": "Slovinština", - "Somali": "Somálština", - "Southern Sotho": "Sesothština", - "Spanish": "Španělština", - "Spanish (Latin America)": "Španělština (Latinská Amerika)", - "Sundanese": "Sundština", - "Swahili": "Svahilština", - "Swedish": "Švédština", - "Tajik": "Tádžičtina", - "Tamil": "Tamilština", - "Telugu": "Telugština", - "Thai": "Thajština", - "Turkish": "Turečtina", - "Ukrainian": "Ukrajinština", - "Urdu": "Urdština", - "Uzbek": "Uzbečtina", - "Vietnamese": "Vietnamština", - "Welsh": "Velština", - "Western Frisian": "Západofríština", - "Xhosa": "Xhoština", - "Yiddish": "Jidiš", - "Yoruba": "Jorubština", - "Zulu": "Zuluština", - "Popular": "Populární", - "About": "Informace", - "Rating: ": "Hodnocení: ", - "preferences_locale_label": "Jazyk: ", - "Default": "Výchozí", - "Music": "Hudba", - "Gaming": "Hry", - "News": "Zprávy", - "Movies": "Filmy", - "Download": "Stáhnout", - "Download as: ": "Stáhnout jako: ", - "(edited)": "(upraveno)", - "`x` marked it with a ❤": "`x` to označil(a) se ❤", - "Audio mode": "Audiový režim", - "Video mode": "Videový režim", - "channel_tab_videos_label": "Videa", - "channel_tab_community_label": "Komunita", - "search_filters_sort_option_rating": "Hodnocení", - "search_filters_sort_option_date": "Datum nahrání", - "search_filters_sort_option_views": "Počet zhlédnutí", - "search_filters_duration_label": "Délka", - "search_filters_date_option_hour": "Poslední hodina", - "search_filters_date_option_today": "Dnes", - "search_filters_date_option_week": "Tento týden", - "search_filters_date_option_month": "Tento měsíc", - "search_filters_date_option_year": "Tento rok", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanál", - "search_filters_type_option_playlist": "Playlist", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Seriál", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Titulky", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Živě", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Umístění", - "search_filters_features_option_hdr": "HDR", - "generic_count_days_0": "{{count}} dnem", - "generic_count_days_1": "{{count}} dny", - "generic_count_days_2": "{{count}} dny", - "generic_count_hours_0": "{{count}} hodinou", - "generic_count_hours_1": "{{count}} hodinami", - "generic_count_hours_2": "{{count}} hodinami", - "crash_page_refresh": "zkusili obnovit stránku", - "crash_page_switch_instance": "zkusili použít jinou instanci", - "preferences_vr_mode_label": "Interaktivní 360-stupňová videa (vyžaduje WebGL): ", - "English (United Kingdom)": "Angličtina (Spojené království)", - "Chinese (China)": "Čínština (Čína)", - "Chinese (Hong Kong)": "Čínština (Hong Kong)", - "Chinese (Taiwan)": "Čínština (Taiwan)", - "Portuguese (auto-generated)": "Portugalština (automaticky generováno)", - "Spanish (auto-generated)": "Španělština (automaticky generováno)", - "Spanish (Mexico)": "Španělština (Mexiko)", - "Spanish (Spain)": "Španělština (Španělsko)", - "generic_count_years_0": "{{count}} rokem", - "generic_count_years_1": "{{count}} lety", - "generic_count_years_2": "{{count}} lety", - "Fallback comments: ": "Záložní komentáře: ", - "Search": "Hledat", - "Top": "Nejlepší", - "Playlists": "Playlisty", - "videoinfo_started_streaming_x_ago": "Stream spuštěn před `x`", - "videoinfo_watch_on_youTube": "Sledovat na YouTube", - "videoinfo_youTube_embed_link": "Vložení", - "crash_page_read_the_faq": "si přečetli často kladené otázky (FAQ)", - "crash_page_before_reporting": "Před nahlášením chyby se ujistěte, že jste:", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_dash": "DASH (adaptivní kvalita)", - "generic_views_count_0": "{{count}} zhlédnutí", - "generic_views_count_1": "{{count}} zhlédnutí", - "generic_views_count_2": "{{count}} zhlédnutí", - "generic_subscriptions_count_0": "{{count}} odběr", - "generic_subscriptions_count_1": "{{count}} odběry", - "generic_subscriptions_count_2": "{{count}} odběrů", - "preferences_quality_dash_option_4320p": "4320p", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} videa", - "generic_videos_count_2": "{{count}} videí", - "preferences_quality_option_small": "Nízká", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_option_medium": "Střední", - "preferences_quality_dash_option_1440p": "1440p", - "invidious": "Invidious", - "View more comments on Reddit": "Zobrazit více komentářů na Redditu", - "generic_playlists_count_0": "{{count}} playlist", - "generic_playlists_count_1": "{{count}} playlisty", - "generic_playlists_count_2": "{{count}} playlistů", - "generic_subscribers_count_0": "{{count}} odběratel", - "generic_subscribers_count_1": "{{count}} odběratelé", - "generic_subscribers_count_2": "{{count}} odběratelů", - "preferences_watch_history_label": "Povolit historii sledování: ", - "preferences_quality_dash_option_240p": "240p", - "preferences_region_label": "Země obsahu: ", - "subscriptions_unseen_notifs_count_0": "{{count}} nezobrazené oznámení", - "subscriptions_unseen_notifs_count_1": "{{count}} nezobrazená oznámení", - "subscriptions_unseen_notifs_count_2": "{{count}} nezobrazených oznámení", - "Show replies": "Zobrazit odpovědi", - "Password cannot be longer than 55 characters": "Heslo nesmí být delší než 55 znaků", - "comments_view_x_replies_0": "Zobrazit {{count}} odpověď", - "comments_view_x_replies_1": "Zobrazit {{count}} odpovědi", - "comments_view_x_replies_2": "Zobrazit {{count}} odpovědí", - "comments_points_count_0": "{{count}} bod", - "comments_points_count_1": "{{count}} body", - "comments_points_count_2": "{{count}} bodů", - "German (auto-generated)": "Němčina (automaticky generováno)", - "Indonesian (auto-generated)": "Indonéština (automaticky generováno)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italština (automaticky generováno)", - "Japanese (auto-generated)": "Japonština (automaticky generováno)", - "Korean (auto-generated)": "Korejština (automaticky generováno)", - "Russian (auto-generated)": "Ruština (automaticky generováno)", - "generic_count_months_0": "{{count}} měsícem", - "generic_count_months_1": "{{count}} měsíci", - "generic_count_months_2": "{{count}} měsíci", - "generic_count_weeks_0": "{{count}} týdnem", - "generic_count_weeks_1": "{{count}} týdny", - "generic_count_weeks_2": "{{count}} týdny", - "generic_count_minutes_0": "{{count}} minutou", - "generic_count_minutes_1": "{{count}} minutami", - "generic_count_minutes_2": "{{count}} minutami", - "footer_documentation": "Dokumentace", - "next_steps_error_message_refresh": "Obnovit stránku", - "Chinese": "Čínština", - "Dutch (auto-generated)": "Nizozemština (automaticky generováno)", - "Erroneous token": "Chybný token", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokeny", - "tokens_count_2": "{{count}} tokenů", - "Portuguese (Brazil)": "Portugalština (Brazílie)", - "Token is expired, please try again": "Token vypršel, zkuste to prosím znovu", - "English (United States)": "Angličtina (Spojené státy)", - "Cantonese (Hong Kong)": "Kantonština (Hong Kong)", - "French (auto-generated)": "Francouzština (automaticky generováno)", - "Turkish (auto-generated)": "Turečtina (automaticky generováno)", - "Vietnamese (auto-generated)": "Vietnamština (automaticky generováno)", - "Current version: ": "Aktuální verze: ", - "next_steps_error_message": "Měli byste zkusit: ", - "footer_donate_page": "Přispět", - "download_subtitles": "Titulky - `x` (.vtt)", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "YouTube comment permalink": "Permanentní odkaz YouTube komentáře", - "permalink": "permalink", - "footer_original_source_code": "Původní zdrojový kód", - "adminprefs_modified_source_code_url_label": "URL repozitáře s upraveným zdrojovým kódem", - "Video unavailable": "Video není dostupné", - "next_steps_error_message_go_to_youtube": "Jít na YouTube", - "footer_modfied_source_code": "Upravený zdrojový kód", - "none": "žádné", - "videoinfo_invidious_embed_link": "Odkaz na vložení", - "user_saved_playlists": "`x` uložených playlistů", - "crash_page_you_found_a_bug": "Vypadá to, že jste našli chybu v Invidious!", - "user_created_playlists": "`x` vytvořených playlistů", - "crash_page_search_issue": "vyhledali existující problémy na GitHubu", - "crash_page_report_issue": "Pokud nepomohlo nic z výše uvedeného, otevřete prosím nový problém na GitHubu (pokud možno v angličtině) a zahrňte do zprávy následující text (NEpřekládejte jej):", - "preferences_quality_dash_label": "Preferovaná kvalita videí DASH: ", - "preferences_quality_dash_option_auto": "Automatická", - "preferences_quality_dash_option_best": "Nejlepší", - "preferences_quality_dash_option_worst": "Nejhorší", - "preferences_quality_dash_option_480p": "480p", - "Top enabled: ": "Povoleny nejlepší: ", - "generic_count_seconds_0": "{{count}} sekundou", - "generic_count_seconds_1": "{{count}} sekundami", - "generic_count_seconds_2": "{{count}} sekundami", - "preferences_save_player_pos_label": "Uložit pozici přehrávání: ", - "Incorrect password": "Nesprávné heslo", - "View as playlist": "Zobrazit jako playlist", - "View Reddit comments": "Zobrazit komentáře z Redditu", - "No such user": "Uživatel nenalezen", - "Playlist privacy": "Soukromí playlistu", - "Wrong answer": "Špatná odpověď", - "Could not pull trending pages.": "Nepodařilo se získat trendy stránky.", - "Erroneous CAPTCHA": "Chybná CAPTCHA", - "Password is a required field": "Heslo je vyžadované pole", - "preferences_automatic_instance_redirect_label": "Automatické přesměrování instance (fallback na redirect.invidious.io): ", - "Switch Invidious Instance": "Přepnout instanci Invidious", - "Empty playlist": "Prázdný playlist", - "footer_source_code": "Zdrojový kód", - "View YouTube comments": "Zobrazit YouTube komentáře", - "Blacklisted regions: ": "Oblasti na černé listině: ", - "Wrong username or password": "Nesprávné uživatelské jméno nebo heslo", - "Password cannot be empty": "Heslo nemůže být prázné", - "preferences_category_misc": "Různá nastavení", - "preferences_show_nick_label": "Zobrazit přezdívku na vrchu: ", - "Whitelisted regions: ": "Oblasti na bílé listině: ", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Zdravíme! Zdá se, že máte vypnutý JavaScript. Klikněte sem pro zobrazení komentářů - nezapomeňte, že se mohou načítat trochu déle.", - "User ID is a required field": "ID uživatele je vyžadované pole", - "Please log in": "Přihlaste se prosím", - "Invidious Private Feed for `x`": "Soukromý kanál Invidious pro `x`", - "Deleted or invalid channel": "Smazaný nebo neplatný kanál", - "This channel does not exist.": "Tento kanál neexistuje.", - "Hidden field \"token\" is a required field": "Skryté pole \"token\" je vyžadované", - "Wilson score: ": "Skóre Wilson: ", - "Shared `x`": "Zveřejněno `x`", - "Premieres in `x`": "Premiéra za `x`", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Zobrazit `x` komentář", - "": "Zobrazit `x` komentářů" - }, - "Could not get channel info.": "Nepodařilo se získat informace o kanálu.", - "Could not fetch comments": "Nepodařilo se získat komentáře", - "Could not create mix.": "Nepodařilo se vytvořit mix.", - "Hidden field \"challenge\" is a required field": "Skryté pole \"challenge\" je vyžadované", - "Released under the AGPLv3 on Github.": "Vydáno pod licencí AGPLv3 na GitHubu.", - "Hide replies": "Skrýt odpovědi", - "channel:`x`": "kanál: `x`", - "Load more": "Načíst další", - "Not a playlist.": "Není playlist.", - "Playlist does not exist.": "Playlist neexistuje.", - "Erroneous challenge": "Chybná výzva", - "Premieres `x`": "Premiéra `x`", - "CAPTCHA is a required field": "CAPTCHA je vyžadované pole", - "`x` ago": "Před `x`", - "search_message_change_filters_or_query": "Zkuste rozšířit vyhledávaný dotaz a/nebo změnit filtry.", - "search_filters_date_option_none": "Jakékoli datum", - "search_filters_date_label": "Datum nahrání", - "search_filters_type_option_all": "Jakýkoli typ", - "search_filters_duration_option_none": "Jakákoli délka", - "search_filters_type_label": "Typ", - "search_filters_duration_option_short": "Krátká (< 4 minuty)", - "search_message_no_results": "Nenalezeny žádné výsledky.", - "search_filters_title": "Filtry", - "search_filters_duration_option_medium": "Střední (4 - 20 minut)", - "search_filters_duration_option_long": "Dlouhá (> 20 minut)", - "search_message_use_another_instance": " Můžete také hledat na jiné instanci.", - "search_filters_features_label": "Vlastnosti", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_vr180": "VR180", - "search_filters_features_option_purchased": "Zakoupeno", - "search_filters_sort_label": "Řadit dle", - "search_filters_sort_option_relevance": "Relevantnost", - "search_filters_apply_button": "Použít vybrané filtry", - "Popular enabled: ": "Populární povoleno: ", - "error_video_not_in_playlist": "Požadované video v tomto playlistu neexistuje. Klikněte sem pro navštívení domovské stránky playlistu.", - "channel_tab_shorts_label": "Shorts", - "channel_tab_playlists_label": "Playlisty", - "channel_tab_channels_label": "Kanály", - "channel_tab_streams_label": "Živé přenosy", - "Music in this video": "Hudba v tomto videu", - "Artist: ": "Umělec: ", - "Album: ": "Album: ", - "Channel Sponsor": "Sponzor kanálu", - "Song: ": "Skladba: ", - "Standard YouTube license": "Standardní licence YouTube", - "Download is disabled": "Stahování je zakázáno", - "Import YouTube playlist (.csv)": "Importovat YouTube playlist (.csv)", - "generic_button_save": "Uložit", - "generic_button_delete": "Odstranit", - "generic_button_cancel": "Zrušit", - "channel_tab_podcasts_label": "Podcasty", - "channel_tab_releases_label": "Vydání", - "generic_button_edit": "Upravit", - "generic_button_rss": "RSS", - "playlist_button_add_items": "Přidat videa", - "generic_channels_count_0": "{{count}} kanál", - "generic_channels_count_1": "{{count}} kanály", - "generic_channels_count_2": "{{count}} kanálů", - "Import YouTube watch history (.json)": "Importovat historii sledování z YouTube (.json)", - "toggle_theme": "Přepnout motiv" -} diff --git a/invidious/locales/da.json b/invidious/locales/da.json deleted file mode 100755 index 019f1c5..0000000 --- a/invidious/locales/da.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "LIVE": "LIVE", - "Shared `x` ago": "Delt for `x` siden", - "Unsubscribe": "Opsig abonnement", - "Subscribe": "Abonner", - "View channel on YouTube": "Vis kanal på YouTube", - "View playlist on YouTube": "Vis afspilningsliste på YouTube", - "newest": "nyeste", - "oldest": "ældste", - "popular": "populært", - "last": "sidste", - "Next page": "Næste side", - "Previous page": "Forrige side", - "Clear watch history?": "Ryd afspilningshistorik?", - "New password": "Nyt kodeord", - "New passwords must match": "Nye kodeord skal matche", - "Authorize token?": "Godkend token?", - "Authorize token for `x`?": "Godkend token til `x`?", - "Yes": "Ja", - "No": "Nej", - "Import and Export Data": "Importer og Eksporter Data", - "Import": "Importer", - "Import Invidious data": "Importer Invidious JSON-data", - "Import YouTube subscriptions": "Importer YouTube/OPML-abonnementer", - "Import FreeTube subscriptions (.db)": "Importer FreeTube abonnementer (.db)", - "Import NewPipe subscriptions (.json)": "Importer NewPipe abonnementer (.json)", - "Import NewPipe data (.zip)": "Importer NewPipe data (.zip)", - "Export": "Exporter", - "Export subscriptions as OPML": "Exporter abonnementer som OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exporter abonnementer som OPML (til NewPipe & FreeTube)", - "Export data as JSON": "Eksporter Invidious-data som JSON", - "Delete account?": "Slet konto?", - "History": "Historik", - "An alternative front-end to YouTube": "Et alternativt front-end til YouTube", - "JavaScript license information": "JavaScript licens information", - "source": "kilde", - "Log in": "Log på", - "Log in/register": "Log på/registrer", - "User ID": "Bruger ID", - "Password": "Kodeord", - "Time (h:mm:ss):": "Tid (t:mm:ss):", - "Text CAPTCHA": "Tekst CAPTCHA", - "Image CAPTCHA": "Billede CAPTCHA", - "Sign In": "Log ind", - "Register": "Registrer", - "E-mail": "E-mail", - "Preferences": "Præferencer", - "preferences_category_player": "Afspillerindstillinger", - "preferences_video_loop_label": "Altid gentag: ", - "preferences_autoplay_label": "Auto afspil: ", - "preferences_continue_label": "Afspil næste som standard: ", - "preferences_continue_autoplay_label": "Auto afspil næste video: ", - "preferences_listen_label": "Lyt som standard: ", - "preferences_local_label": "Proxy videoer: ", - "preferences_speed_label": "Standard hastighed: ", - "preferences_quality_label": "Foretrukken video kvalitet: ", - "preferences_volume_label": "Lydstyrke: ", - "preferences_comments_label": "Standard kommentarer: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Standard undertekster: ", - "Fallback captions: ": "Alternative undertekster: ", - "preferences_related_videos_label": "Vis relaterede videoer: ", - "preferences_annotations_label": "Vis annotationer som standard: ", - "preferences_extend_desc_label": "Automatisk udvid videoens beskrivelse: ", - "preferences_vr_mode_label": "Interaktive 360 graders videoer (kræver WebGL): ", - "preferences_category_visual": "Visuelle præferencer", - "preferences_player_style_label": "Afspiller stil: ", - "Dark mode: ": "Mørk tilstand: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "mørk", - "light": "lys", - "preferences_thin_mode_label": "Tynd tilstand: ", - "preferences_category_subscription": "Abonnements præferencer", - "preferences_annotations_subscribed_label": "Vis annotationer som standard for abonnerede kanaler: ", - "Redirect homepage to feed: ": "Omdiriger startside til feed: ", - "preferences_max_results_label": "Antal videoer vist i feed: ", - "preferences_sort_label": "Sorter videoer efter: ", - "published": "offentliggjort", - "published - reverse": "offentliggjort - omvendt", - "alphabetically": "alfabetisk", - "alphabetically - reverse": "alfabetisk - omvendt", - "channel name": "kanalnavn", - "channel name - reverse": "kanalnavn - omvendt", - "Only show latest video from channel: ": "Vis kun seneste video fra kanal: ", - "Only show latest unwatched video from channel: ": "Vis kun seneste usete video fra kanal: ", - "preferences_unseen_only_label": "Vis kun usete: ", - "preferences_notifications_only_label": "Vis kun notifikationer (hvis der er nogle): ", - "Enable web notifications": "Aktiver webnotifikationer", - "`x` uploaded a video": "`x` uploadede en video", - "`x` is live": "`x` er live", - "preferences_category_data": "Data præferencer", - "Clear watch history": "Ryd afspilningshistorik", - "Import/export data": "Importer/exporter data", - "Change password": "Skift adgangskode", - "Manage subscriptions": "Administrer abonnementer", - "Manage tokens": "Administrer tokens", - "Watch history": "Afspilningshistorik", - "Delete account": "Slet konto", - "preferences_category_admin": "Administrator præferencer", - "preferences_default_home_label": "Standard startside: ", - "preferences_feed_menu_label": "Feed menu: ", - "Top enabled: ": "Top aktiveret: ", - "CAPTCHA enabled: ": "CAPTCHA aktiveret: ", - "Login enabled: ": "Login aktiveret: ", - "Registration enabled: ": "Registrering aktiveret: ", - "Report statistics: ": "Indsend statistik: ", - "Save preferences": "Gem præferencer", - "Subscription manager": "Abonnementsmanager", - "Token manager": "Tokenmanager", - "Token": "Token", - "Import/export": "Importer/eksporter", - "unsubscribe": "opsig abonnement", - "revoke": "tilbagekald", - "Subscriptions": "Abonnementer", - "search": "søg", - "Log out": "Log ud", - "Source available here.": "Kilde tilgængelig her.", - "View JavaScript license information.": "Vis JavaScriptlicensinformation.", - "View privacy policy.": "Vis privatpolitik.", - "Trending": "Trending", - "Public": "Offentlig", - "Unlisted": "Skjult", - "Private": "Privat", - "View all playlists": "Vis alle afspilningslister", - "Updated `x` ago": "Opdateret for `x` siden", - "Delete playlist `x`?": "Fjern spilleliste `x`?", - "Delete playlist": "Slet afspilningsliste", - "Create playlist": "Opret afspilningsliste", - "Title": "Titel", - "Playlist privacy": "Privatlivsindstillinger for afspilningsliste", - "Editing playlist `x`": "Redigerer afspilningsliste `x`", - "Show more": "Vis mere", - "Show less": "Vis mindre", - "Watch on YouTube": "Se på YouTube", - "Hide annotations": "Skjul annotationer", - "Show annotations": "Vis annotationer", - "Genre: ": "Genre: ", - "License: ": "Licens: ", - "Family friendly? ": "Familievenlig? ", - "Wilson score: ": "Wilson score: ", - "Engagement: ": "Engagement: ", - "Whitelisted regions: ": "Whitelistede regioner: ", - "Blacklisted regions: ": "Blacklistede regioner: ", - "Shared `x`": "Delt `x`", - "Premieres in `x`": "Har premiere om `x`", - "Premieres `x`": "Har premiere om `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hej! Det ser ud til at du har JavaScript slået fra. Klik her for at se kommentarer, vær opmærksom på at de kan tage længere om at indlæse.", - "View YouTube comments": "Vis YouTube kommentarer", - "View more comments on Reddit": "Se flere kommentarer på Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Vis `x` kommentarer.([^.,0-9]|^)1([^.,0-9]|$)", - "": "Vis `x` kommentarer" - }, - "View Reddit comments": "Vis Reddit kommentarer", - "Hide replies": "Skjul svar", - "Show replies": "Vis svar", - "Incorrect password": "Forkert adgangskode", - "Wrong answer": "Forkert svar", - "Erroneous CAPTCHA": "Fejlagtig CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA er et obligatorisk felt", - "User ID is a required field": "Bruger ID er et krævet felt", - "Password is a required field": "Adgangskode er et obligatorisk felt", - "Wrong username or password": "Forkert brugernavn eller adgangskode", - "Password cannot be empty": "Adgangskoden må ikke være tom", - "Password cannot be longer than 55 characters": "Adgangskoden må ikke være længere end 55 tegn", - "Please log in": "Venligst log ind", - "channel:`x`": "kanal: 'x'", - "Deleted or invalid channel": "Slettet eller invalid kanal", - "This channel does not exist.": "Denne kanal eksisterer ikke.", - "Could not get channel info.": "Kunne ikke hente kanal info.", - "Could not fetch comments": "Kunne ikke hente kommentarer", - "`x` ago": "'x' siden", - "Load more": "Hent flere", - "Could not create mix.": "Kunne ikke skabe blanding.", - "Empty playlist": "Tom playliste", - "Not a playlist.": "Ikke en playliste.", - "Playlist does not exist.": "Playlist eksisterer ikke.", - "Esperanto": "Esperanto", - "Czech": "Tjekkisk", - "Danish": "Dansk", - "channel_tab_community_label": "Samfund", - "Afrikaans": "Afrikansk", - "Portuguese": "Portugisisk", - "Ukrainian": "Ukrainsk", - "Fallback comments: ": "Fallback kommentarer: ", - "Popular": "Populær", - "footer_donate_page": "Doner", - "Gujarati": "Gujarati", - "Punjabi": "Punjabi", - "Sundanese": "Sundanesisk", - "Urdu": "Urdu", - "preferences_region_label": "Indhold land: ", - "Hidden field \"challenge\" is a required field": "Det skjulte felt \"challenge\" er et påkrævet felt", - "Albanian": "Albansk", - "preferences_quality_dash_label": "Fortrukket DASH video kvalitet: ", - "search_filters_features_option_live": "Direkte", - "Lao": "Lao-tse", - "Filipino": "Filippinsk", - "Greek": "Græsk", - "Kurdish": "Kurdisk", - "Malay": "Malaysisk", - "Romanian": "Rumænsk", - "Somali": "Somalisk", - "preferences_locale_label": "Sprog: ", - "News": "Nyheder", - "permalink": "permalink", - "search_filters_sort_option_date": "Upload dato", - "search_filters_features_label": "Funktioner", - "Khmer": "Khmer", - "Finnish": "Finsk", - "search_filters_date_option_week": "Denne uge", - "Korean": "Koreansk", - "Telugu": "Telugu", - "Malayalam": "Malayalam", - "View as playlist": "Se som spilleliste", - "Hungarian": "Ungarsk", - "Welsh": "Walisisk", - "search_filters_features_option_subtitles": "Undertekster/CC", - "Bosnian": "Bosnisk", - "Yiddish": "Jiddisch", - "Belarusian": "Belarussisk", - "search_filters_date_option_today": "I dag", - "Shona": "Shona", - "Slovenian": "Slovensk", - "Gaming": "Gaming", - "Bangla": "Bengali", - "Swahili": "Swahili", - "`x` marked it with a ❤": "`x`markeret med et ❤", - "Kyrgyz": "Kirgisisk", - "Turkish": "Tyrkisk", - "adminprefs_modified_source_code_url_label": "URL-adresse til modificeret kildekodelager", - "Switch Invidious Instance": "Skift Invidious instans", - "Samoan": "Samoansk", - "Spanish": "Spansk", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "footer_documentation": "Dokumentation", - "Pashto": "Pashto", - "footer_modfied_source_code": "Modificeret Kildekode", - "Released under the AGPLv3 on Github.": "Udgivet under AGPLv3 på GitHub.", - "Tajik": "Tadsjikisk", - "search_filters_date_option_month": "Denne måned", - "Hebrew": "Hebraisk", - "Kannada": "Kannada", - "Current version: ": "Nuværende version: ", - "Amharic": "Amharisk", - "Swedish": "Svensk", - "Corsican": "Korsikansk", - "search_filters_type_option_movie": "Film", - "Could not pull trending pages.": "Kunne ikke hente trending sider.", - "English": "Engelsk", - "search_filters_features_option_hd": "HD", - "Hausa": "Islandsk", - "search_filters_date_option_year": "Dette år", - "Japanese": "Japansk", - "search_filters_type_label": "Type", - "Icelandic": "Islandsk", - "Basque": "Baskisk", - "search_filters_sort_option_rating": "Bedømmelse", - "Yoruba": "Yoruba", - "Erroneous token": "Fejlagtig token", - "channel_tab_videos_label": "Videoer", - "search_filters_type_option_show": "Vis", - "Luxembourgish": "Luxemboursk", - "Vietnamese": "Vietnamesisk", - "Latvian": "Lettisk", - "Indonesian": "Indonesisk", - "search_filters_duration_label": "Varighed", - "footer_original_source_code": "Original kildekode", - "Search": "Søg", - "Serbian": "Serbisk", - "Armenian": "Armensk", - "Bulgarian": "Bulgarsk", - "French": "Fransk", - "Burmese": "Burmesisk", - "Macedonian": "Makedonsk", - "Southern Sotho": "Sydlige Sotho", - "About": "Omkring", - "Malagasy": "Madagaskiske", - "Rating: ": "Bedømmelse: ", - "Movies": "Film", - "YouTube comment permalink": "Youtube kommentarer permalink", - "search_filters_features_option_location": "Lokation", - "search_filters_features_option_hdr": "HDR", - "Cebuano": "Cebuano (Sugbuanon)", - "Nyanja": "Nyanja", - "Chinese (Simplified)": "Kinesisk (forenklet)", - "Chinese (Traditional)": "Kinesisk (traditionelt)", - "Dutch": "Hollandsk", - "Estonian": "Estisk", - "preferences_automatic_instance_redirect_label": "Automatisk eksempel omdirigering (Fallback til redirect.invidious.io): ", - "Nepali": "Nepalesisk", - "Norwegian Bokmål": "Norsk Bokmål", - "(edited)": "(ændret)", - "preferences_show_nick_label": "Vis kælenavn på toppen: ", - "Galician": "Galisisk", - "German": "Tysk", - "Maori": "Maori", - "Slovak": "Slovakisk", - "search_filters_sort_option_relevance": "Relevans", - "search_filters_date_option_hour": "Sidste time", - "search_filters_type_option_playlist": "Spilleliste", - "search_filters_duration_option_long": "Lang (> 20 minutter)", - "search_filters_features_option_c_commons": "Creative Commons", - "Marathi": "Marathi", - "Sindhi": "Sindhi", - "preferences_category_misc": "Diverse indstillinger", - "Erroneous challenge": "Fejlagtig udfordring", - "Hindi": "Hindi", - "Igbo": "Igbo", - "Javanese": "Javanesisk", - "Kazakh": "Kasabhisk", - "Latin": "Latinsk", - "Lithuanian": "Lituaisk", - "Mongolian": "Mongolsk", - "Spanish (Latin America)": "Spansk (Latinamerika)", - "Uzbek": "Usbekisk", - "Western Frisian": "Vestfrisisk", - "Top": "Top", - "Music": "Musik", - "search_filters_sort_option_views": "Antal visninger", - "search_filters_sort_label": "Sorter efter", - "Zulu": "Zulu", - "Invidious Private Feed for `x`": "Invidious Privat Feed til `x`", - "English (auto-generated)": "Engelsk (autogenereret)", - "Arabic": "Arabisk", - "Croatian": "Kroatisk", - "Hawaiian": "Hawaiiansk", - "Maltese": "Maltesisk", - "Polish": "Polsk", - "Russian": "Russisk", - "Download": "Hent", - "Download as: ": "Hent som: ", - "Playlists": "Spillelister", - "next_steps_error_message_refresh": "Opdater", - "next_steps_error_message_go_to_youtube": "Gå til Youtube", - "footer_source_code": "Kildekode", - "Tamil": "Tamil", - "Xhosa": "Xhosa", - "next_steps_error_message": "Efter det burde du prøve at: ", - "Sinhala": "Singalesisk (Sinhala)", - "Thai": "Thai", - "No such user": "Brugeren findes ikke", - "Token is expired, please try again": "Token er udløbet, prøv igen", - "Catalan": "Catalansk", - "Haitian Creole": "Haitiansk", - "Irish": "Irsk", - "Persian": "Persisk", - "Scottish Gaelic": "Skotsk Gælisk", - "Default": "Standard", - "Video mode": "Videotilstand", - "search_filters_duration_option_short": "Kort (< 4 minutter)", - "Hidden field \"token\" is a required field": "Det skjulte felt \"token\" er et påkrævet felt", - "Azerbaijani": "Aserbajdsjansk", - "Georgian": "Georgisk", - "Italian": "Italiensk", - "Audio mode": "Lydtilstand", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_four_k": "4K", - "Hmong": "Hmong", - "preferences_quality_option_medium": "Medium", - "preferences_quality_option_small": "Lille", - "preferences_quality_dash_option_best": "Bedste", - "preferences_quality_dash_option_worst": "Værste", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_purchased": "Købt", - "search_filters_features_option_three_sixty": "360°", - "none": "ingen", - "videoinfo_started_streaming_x_ago": "Streamen blev startet for `x`siden", - "videoinfo_watch_on_youTube": "Se på YouTube", - "videoinfo_youTube_embed_link": "Integrer", - "videoinfo_invidious_embed_link": "Integrer Link", - "download_subtitles": "Undertekster - `x`(.vtt)", - "user_created_playlists": "`x`opretede spillelister", - "user_saved_playlists": "´x`gemte spillelister", - "Video unavailable": "Video ikke tilgængelig", - "preferences_save_player_pos_label": "Gem afspilningsposition: ", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_option_dash": "DASH (adaptiv kvalitet)", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_240p": "240p", - "subscriptions_unseen_notifs_count": "{{count}} uset notifikation", - "subscriptions_unseen_notifs_count_plural": "{{count}} usete notifikationer", - "comments_view_x_replies": "Vis {{count}} svar", - "comments_view_x_replies_plural": "Vis {{count}} svar", - "comments_points_count": "{{count}} point", - "comments_points_count_plural": "{{count}} point", - "generic_count_years": "{{count}} år", - "generic_count_years_plural": "{{count}} år", - "generic_count_months": "{{count}} måned", - "generic_count_months_plural": "{{count}} måneder", - "generic_count_days": "{{count}} dag", - "generic_count_days_plural": "{{count}} dage", - "generic_count_minutes": "{{count}} minut", - "generic_count_minutes_plural": "{{count}} minutter", - "generic_count_seconds": "{{count}} sekund", - "generic_count_seconds_plural": "{{count}} sekunder", - "generic_subscribers_count": "{{count}} abonnent", - "generic_subscribers_count_plural": "{{count}} abonnenter", - "generic_subscriptions_count": "{{count}} abonnement", - "generic_subscriptions_count_plural": "{{count}} abonnementer", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videoer", - "English (United States)": "Engelsk (USA)", - "French (auto-generated)": "Fransk (autogenereret)", - "Spanish (auto-generated)": "Spansk (autogenereret)", - "crash_page_before_reporting": "Før du rapporterer en fejl, skal du sikre dig, at du har:", - "crash_page_refresh": "forsøgte at opdatere siden", - "generic_playlists_count": "{{count}} spilleliste", - "generic_playlists_count_plural": "{{count}} spillelister", - "preferences_watch_history_label": "Aktiver afspilningshistorik: ", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokens", - "Cantonese (Hong Kong)": "Kantonesisk (Hongkong)", - "Chinese": "Kinesisk", - "Chinese (China)": "Kinesisk (Kina)", - "Chinese (Hong Kong)": "Kinesisk (Hongkong)", - "Chinese (Taiwan)": "Kinesisk (Taiwan)", - "Dutch (auto-generated)": "Hollandsk (autogenereret)", - "Indonesian (auto-generated)": "Indonesisk (autogenereret)", - "Interlingue": "Interlingue", - "Japanese (auto-generated)": "Japansk (autogenereret)", - "Korean (auto-generated)": "Koreansk (autogenereret)", - "Russian (auto-generated)": "Russisk (autogenereret)", - "Turkish (auto-generated)": "Tyrkisk (autogenereret)", - "Vietnamese (auto-generated)": "Vietnamesisk (autogenereret)", - "crash_page_report_issue": "Hvis intet af ovenstående hjalp, bedes du åbne et nyt problem på GitHub (helst på engelsk) og inkludere følgende tekst i din besked (oversæt IKKE denne tekst):", - "English (United Kingdom)": "Engelsk (Storbritannien)", - "Italian (auto-generated)": "Italiensk (autogenereret)", - "Portuguese (auto-generated)": "Portugisisk (autogenereret)", - "Portuguese (Brazil)": "Portugisisk (Brasilien)", - "generic_views_count": "{{count}} visning", - "generic_views_count_plural": "{{count}} visninger", - "generic_count_hours": "{{count}} time", - "generic_count_hours_plural": "{{count}} timer", - "Spanish (Spain)": "Spansk (Spanien)", - "crash_page_switch_instance": "forsøgte at bruge en anden instans", - "German (auto-generated)": "Tysk (autogenereret)", - "Spanish (Mexico)": "Spansk (Mexico)", - "generic_count_weeks": "{{count}} uge", - "generic_count_weeks_plural": "{{count}} uger", - "crash_page_you_found_a_bug": "Det ser ud til, at du har fundet en fejl i Invidious!", - "crash_page_read_the_faq": "læs Ofte stillede spørgsmål (FAQ)", - "crash_page_search_issue": "søgte efter eksisterende problemer på GitHub", - "search_filters_title": "Filter", - "playlist_button_add_items": "Tilføj videoer", - "search_message_no_results": "Ingen resultater fundet.", - "Import YouTube watch history (.json)": "Importer YouTube afspilningshistorik (.json)", - "search_message_change_filters_or_query": "Prøv at udvide din søgeforspørgsel og/eller ændre filtrene.", - "search_message_use_another_instance": " Du kan også søge på en anden instans.", - "Music in this video": "Musik i denne video", - "search_filters_date_option_none": "Enhver dato", - "search_filters_type_option_all": "Enhver type", - "search_filters_duration_option_none": "Enhver varighed", - "search_filters_duration_option_medium": "Medium (4 - 20 minutter)", - "search_filters_features_option_vr180": "VR180", - "generic_channels_count": "{{count}} kanal", - "generic_channels_count_plural": "{{count}} kanaler", - "Import YouTube playlist (.csv)": "Importer YouTube playliste (.csv)", - "Standard YouTube license": "Standard Youtube-licens", - "Album: ": "Album: ", - "Channel Sponsor": "Kanal-sponsor", - "Song: ": "Sang: ", - "channel_tab_playlists_label": "Playlister", - "channel_tab_channels_label": "Kanaler", - "Artist: ": "Kunstner: ", - "search_filters_date_label": "Uploaddato", - "generic_button_delete": "Slet", - "generic_button_edit": "Rediger", - "generic_button_save": "Gem", - "generic_button_cancel": "Afbryd", - "generic_button_rss": "RSS", - "Popular enabled: ": "Populær aktiveret: ", - "search_filters_apply_button": "Anvend udvalgte filtre", - "channel_tab_shorts_label": "Shorts", - "channel_tab_streams_label": "Livestreams", - "channel_tab_podcasts_label": "Podcasts", - "channel_tab_releases_label": "Udgivelser", - "Download is disabled": "Download er slået fra", - "error_video_not_in_playlist": "Den ønskede video findes ikke i denne playliste. Klik her for playlistens startside." -} diff --git a/invidious/locales/de.json b/invidious/locales/de.json deleted file mode 100755 index 756aff7..0000000 --- a/invidious/locales/de.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "LIVE": "LIVE", - "Shared `x` ago": "Vor `x` geteilt", - "Unsubscribe": "Abo beenden", - "Subscribe": "Abonnieren", - "View channel on YouTube": "Kanal auf YouTube anzeigen", - "View playlist on YouTube": "Wiedergabeliste auf YouTube anzeigen", - "newest": "neueste", - "oldest": "älteste", - "popular": "beliebteste", - "last": "neueste", - "Next page": "Nächste Seite", - "Previous page": "Vorherige Seite", - "Clear watch history?": "Verlauf löschen?", - "New password": "Neues Passwort", - "New passwords must match": "Neue Passwörter müssen übereinstimmen", - "Authorize token?": "Token autorisieren?", - "Authorize token for `x`?": "Token für `x` autorisieren?", - "Yes": "Ja", - "No": "Nein", - "Import and Export Data": "Daten importieren und exportieren", - "Import": "Importieren", - "Import Invidious data": "Invidious-JSON-Daten importieren", - "Import YouTube subscriptions": "YouTube-/OPML-Abonnements importieren", - "Import FreeTube subscriptions (.db)": "FreeTube Abonnements importieren (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe Abonnements importieren (.json)", - "Import NewPipe data (.zip)": "NewPipe Daten importieren (.zip)", - "Export": "Exportieren", - "Export subscriptions as OPML": "Abonnements als OPML exportieren", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Abonnements als OPML exportieren (für NewPipe & FreeTube)", - "Export data as JSON": "Invidious-Daten als JSON exportieren", - "Delete account?": "Konto löschen?", - "History": "Verlauf", - "An alternative front-end to YouTube": "Eine alternative Oberfläche für YouTube", - "JavaScript license information": "JavaScript Lizenzinformationen", - "source": "Quelle", - "Log in": "Anmelden", - "Log in/register": "Anmelden/registrieren", - "User ID": "Benutzer-ID", - "Password": "Passwort", - "Time (h:mm:ss):": "Zeit (h:mm:ss):", - "Text CAPTCHA": "Text CAPTCHA", - "Image CAPTCHA": "Bild CAPTCHA", - "Sign In": "Anmelden", - "Register": "Registrieren", - "E-mail": "E-Mail", - "Preferences": "Einstellungen", - "preferences_category_player": "Wiedergabeeinstellungen", - "preferences_video_loop_label": "Immer wiederholen: ", - "preferences_autoplay_label": "Automatisch abspielen: ", - "preferences_continue_label": "Immer automatisch nächstes Video abspielen: ", - "preferences_continue_autoplay_label": "Nächstes Video automatisch abspielen: ", - "preferences_listen_label": "Nur Ton als Standard: ", - "preferences_local_label": "Videos durch Proxy leiten: ", - "preferences_speed_label": "Standardgeschwindigkeit: ", - "preferences_quality_label": "Bevorzugte Videoqualität: ", - "preferences_volume_label": "Wiedergabelautstärke: ", - "preferences_comments_label": "Standardkommentare: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Standarduntertitel: ", - "Fallback captions: ": "Ersatzuntertitel: ", - "preferences_related_videos_label": "Ähnliche Videos anzeigen: ", - "preferences_annotations_label": "Anmerkungen standardmäßig anzeigen: ", - "preferences_extend_desc_label": "Videobeschreibung automatisch erweitern: ", - "preferences_vr_mode_label": "Interaktive 360-Grad-Videos (erfordert WebGL): ", - "preferences_category_visual": "Anzeigeeinstellungen", - "preferences_player_style_label": "Player-Stil: ", - "Dark mode: ": "Nachtmodus: ", - "preferences_dark_mode_label": "Modus: ", - "dark": "Nachtmodus", - "light": "hell", - "preferences_thin_mode_label": "Schlanker Modus: ", - "preferences_category_misc": "Sonstige Einstellungen", - "preferences_automatic_instance_redirect_label": "Automatische Instanzweiterleitung (über redirect.invidious.io): ", - "preferences_category_subscription": "Abonnementeinstellungen", - "preferences_annotations_subscribed_label": "Anmerkungen für abonnierte Kanäle standardmäßig anzeigen? ", - "Redirect homepage to feed: ": "Startseite zu Feed umleiten: ", - "preferences_max_results_label": "Anzahl von Videos die im Feed angezeigt werden: ", - "preferences_sort_label": "Videos sortieren nach: ", - "published": "veröffentlicht", - "published - reverse": "veröffentlicht - invertiert", - "alphabetically": "alphabetisch", - "alphabetically - reverse": "alphabetisch - invertiert", - "channel name": "Kanalname", - "channel name - reverse": "Kanalname - invertiert", - "Only show latest video from channel: ": "Nur neueste Videos des Kanals anzeigen: ", - "Only show latest unwatched video from channel: ": "Nur neueste ungesehene Videos des Kanals anzeigen: ", - "preferences_unseen_only_label": "Nur ungesehene anzeigen: ", - "preferences_notifications_only_label": "Nur Benachrichtigungen anzeigen (wenn es welche gibt): ", - "Enable web notifications": "Webbenachrichtigungen aktivieren", - "`x` uploaded a video": "`x` hat ein Video hochgeladen", - "`x` is live": "`x` ist live", - "preferences_category_data": "Dateneinstellungen", - "Clear watch history": "Verlauf löschen", - "Import/export data": "Daten importieren/exportieren", - "Change password": "Passwort ändern", - "Manage subscriptions": "Abonnements verwalten", - "Manage tokens": "Tokens verwalten", - "Watch history": "Wiedergabeverlauf", - "Delete account": "Account löschen", - "preferences_category_admin": "Administrator-Einstellungen", - "preferences_default_home_label": "Standard-Startseite: ", - "preferences_feed_menu_label": "Feed-Menü: ", - "preferences_show_nick_label": "Nutzernamen oben anzeigen: ", - "Top enabled: ": "Top aktiviert? ", - "CAPTCHA enabled: ": "CAPTCHA aktiviert? ", - "Login enabled: ": "Anmeldung aktiviert: ", - "Registration enabled: ": "Registrierung aktiviert? ", - "Report statistics: ": "Statistiken berichten? ", - "Save preferences": "Einstellungen speichern", - "Subscription manager": "Abonnementverwaltung", - "Token manager": "Tokenverwalter", - "Token": "Token", - "Import/export": "Importieren/Exportieren", - "unsubscribe": "abbestellen", - "revoke": "widerrufen", - "Subscriptions": "Abonnements", - "search": "Suchen", - "Log out": "Abmelden", - "Released under the AGPLv3 on Github.": "Auf GitHub unter der AGPLv3 Lizenz veröffentlicht.", - "Source available here.": "Quellcode verfügbar hier.", - "View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.", - "View privacy policy.": "Datenschutzerklärung einsehen.", - "Trending": "Angesagt", - "Public": "Öffentlich", - "Unlisted": "Nicht aufgeführt", - "Private": "Privat", - "View all playlists": "Alle Wiedergabelisten anzeigen", - "Updated `x` ago": "Aktualisiert `x` vor", - "Delete playlist `x`?": "Wiedergabeliste löschen `x`?", - "Delete playlist": "Wiedergabeliste löschen", - "Create playlist": "Wiedergabeliste erstellen", - "Title": "Titel", - "Playlist privacy": "Vertrauliche Wiedergabeliste", - "Editing playlist `x`": "Wiedergabeliste bearbeiten `x`", - "Show more": "Mehr anzeigen", - "Show less": "Weniger anzeigen", - "Watch on YouTube": "Video auf YouTube ansehen", - "Switch Invidious Instance": "Invidious Instanz wechseln", - "Hide annotations": "Anmerkungen ausblenden", - "Show annotations": "Anmerkungen anzeigen", - "Genre: ": "Genre: ", - "License: ": "Lizenz: ", - "Family friendly? ": "Familienfreundlich? ", - "Wilson score: ": "Wilson-Score: ", - "Engagement: ": "Engagement: ", - "Whitelisted regions: ": "Erlaubte Regionen: ", - "Blacklisted regions: ": "Unerlaubte Regionen: ", - "Shared `x`": "Geteilt `x`", - "Premieres in `x`": "Premiere in `x`", - "Premieres `x`": "Erster Start `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hallo! Anscheinend haben Sie JavaScript deaktiviert. Klicken Sie hier um Kommentare anzuzeigen, beachten sie dass es etwas länger dauern kann um sie zu laden.", - "View YouTube comments": "YouTube Kommentare anzeigen", - "View more comments on Reddit": "Mehr Kommentare auf Reddit anzeigen", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Kommentare anzeigen", - "": "`x` Kommentare anzeigen" - }, - "View Reddit comments": "Reddit Kommentare anzeigen", - "Hide replies": "Antworten verstecken", - "Show replies": "Antworten anzeigen", - "Incorrect password": "Falsches Passwort", - "Wrong answer": "Ungültige Antwort", - "Erroneous CAPTCHA": "Ungültiges CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA ist eine erforderliche Eingabe", - "User ID is a required field": "Benutzer ID ist eine erforderliche Eingabe", - "Password is a required field": "Passwort ist eine erforderliche Eingabe", - "Wrong username or password": "Ungültiger Benutzername oder Passwort", - "Password cannot be empty": "Passwort darf nicht leer sein", - "Password cannot be longer than 55 characters": "Passwort darf nicht länger als 55 Zeichen sein", - "Please log in": "Bitte anmelden", - "Invidious Private Feed for `x`": "Invidious Persönlicher Feed für `x`", - "channel:`x`": "Kanal:`x`", - "Deleted or invalid channel": "Gelöschter oder ungültiger Kanal", - "This channel does not exist.": "Dieser Kanal existiert nicht.", - "Could not get channel info.": "Kanalinformationen konnten nicht geladen werden.", - "Could not fetch comments": "Kommentare konnten nicht geladen werden", - "`x` ago": "vor `x`", - "Load more": "Mehr laden", - "Could not create mix.": "Mix konnte nicht erstellt werden.", - "Empty playlist": "Wiedergabeliste ist leer", - "Not a playlist.": "Ungültige Wiedergabeliste.", - "Playlist does not exist.": "Wiedergabeliste existiert nicht.", - "Could not pull trending pages.": "Trendenz-Seiten konnten nicht geladen werden.", - "Hidden field \"challenge\" is a required field": "Verstecktes Feld „challenge“ ist eine erforderliche Eingabe", - "Hidden field \"token\" is a required field": "Verstecktes Feld „token“ ist eine erforderliche Eingabe", - "Erroneous challenge": "Ungültiger Test", - "Erroneous token": "Ungültiger Token", - "No such user": "Ungültiger Benutzer", - "Token is expired, please try again": "Token ist abgelaufen, bitte erneut versuchen", - "English": "Englisch", - "English (auto-generated)": "Englisch (automatisch erzeugt)", - "Afrikaans": "Afrikaans", - "Albanian": "Albanisch", - "Amharic": "Amharisch", - "Arabic": "Arabisch", - "Armenian": "Armenisch", - "Azerbaijani": "Aserbaidschanisch", - "Bangla": "Bengalisch", - "Basque": "Baskisch", - "Belarusian": "Weißrussisch", - "Bosnian": "Bosnisch", - "Bulgarian": "Bulgarisch", - "Burmese": "Burmesisch", - "Catalan": "Katalanisch", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chinesisch (vereinfacht)", - "Chinese (Traditional)": "Chinesisch (traditionell)", - "Corsican": "Korsisch", - "Croatian": "Kroatisch", - "Czech": "Tschechisch", - "Danish": "Dänisch", - "Dutch": "Niederländisch", - "Esperanto": "Esperanto", - "Estonian": "Estnisch", - "Filipino": "Philippinisch", - "Finnish": "Finnisch", - "French": "Französisch", - "Galician": "Galizisch", - "Georgian": "Georgisch", - "German": "Deutsch", - "Greek": "Griechisch", - "Gujarati": "Gujarati", - "Haitian Creole": "Haitianisches Kreolisch", - "Hausa": "Hausa", - "Hawaiian": "Hawaiianisch", - "Hebrew": "Hebräisch", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Ungarisch", - "Icelandic": "Isländisch", - "Igbo": "Igbo", - "Indonesian": "Indonesisch", - "Irish": "Irisch", - "Italian": "Italienisch", - "Japanese": "Japanisch", - "Javanese": "Javanisch", - "Kannada": "Kannada", - "Kazakh": "Kasachisch", - "Khmer": "Khmer", - "Korean": "Koreanisch", - "Kurdish": "Kurdisch", - "Kyrgyz": "Kirgisisch", - "Lao": "Laotisch", - "Latin": "Lateinisch", - "Latvian": "Lettisch", - "Lithuanian": "Litauisch", - "Luxembourgish": "Luxemburgisch", - "Macedonian": "Mazedonisch", - "Malagasy": "Madagassisch", - "Malay": "Malaiisch", - "Malayalam": "Malayalam", - "Maltese": "Maltesisch", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongolisch", - "Nepali": "Nepalesisch", - "Norwegian Bokmål": "Norwegisch", - "Nyanja": "Nyanja", - "Pashto": "Paschtunisch", - "Persian": "Persisch", - "Polish": "Polnisch", - "Portuguese": "Portugiesisch", - "Punjabi": "Pandschabi", - "Romanian": "Rumänisch", - "Russian": "Russisch", - "Samoan": "Samoanisch", - "Scottish Gaelic": "Schottisches Gälisch", - "Serbian": "Serbisch", - "Shona": "Schona", - "Sindhi": "Sindhi", - "Sinhala": "Singhalesisch", - "Slovak": "Slowakisch", - "Slovenian": "Slowenisch", - "Somali": "Somali", - "Southern Sotho": "Südliches Sotho", - "Spanish": "Spanisch", - "Spanish (Latin America)": "Spanisch (Lateinamerika)", - "Sundanese": "Sundanesisch", - "Swahili": "Suaheli", - "Swedish": "Schwedisch", - "Tajik": "Tadschikisch", - "Tamil": "Tamilisch", - "Telugu": "Telugu", - "Thai": "Thailändisch", - "Turkish": "Türkisch", - "Ukrainian": "Ukrainisch", - "Urdu": "Urdu", - "Uzbek": "Usbekisch", - "Vietnamese": "Vietnamesisch", - "Welsh": "Walisisch", - "Western Frisian": "Westfriesisch", - "Xhosa": "Xhosa", - "Yiddish": "Jiddisch", - "Yoruba": "Joruba", - "Zulu": "Zulu", - "Fallback comments: ": "Alternative Kommentare: ", - "Popular": "Populär", - "Search": "Suchen", - "Top": "Top", - "About": "Über", - "Rating: ": "Bewertung: ", - "preferences_locale_label": "Sprache: ", - "View as playlist": "Als Wiedergabeliste anzeigen", - "Default": "Standard", - "Music": "Musik", - "Gaming": "Videospiele", - "News": "Neuigkeiten", - "Movies": "Filme", - "Download": "Herunterladen", - "Download as: ": "Herunterladen als: ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(editiert)", - "YouTube comment permalink": "YouTube-Kommentar Permalink", - "permalink": "Permalink", - "`x` marked it with a ❤": "`x` markierte es mit einem ❤", - "Audio mode": "Audiomodus", - "Video mode": "Videomodus", - "channel_tab_videos_label": "Videos", - "Playlists": "Wiedergabelisten", - "channel_tab_community_label": "Gemeinschaft", - "search_filters_sort_option_relevance": "Relevanz", - "search_filters_sort_option_rating": "Bewertung", - "search_filters_sort_option_date": "Datum", - "search_filters_sort_option_views": "Aufrufe", - "search_filters_type_label": "Inhaltstyp", - "search_filters_duration_label": "Dauer", - "search_filters_features_label": "Eigenschaften", - "search_filters_sort_label": "sortieren", - "search_filters_date_option_hour": "Letzte Stunde", - "search_filters_date_option_today": "Heute", - "search_filters_date_option_week": "Diese Woche", - "search_filters_date_option_month": "Diesen Monat", - "search_filters_date_option_year": "Dieses Jahr", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Wiedergabeliste", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Anzeigen", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Untertitel / CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Live", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Standort", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Aktuelle Version: ", - "next_steps_error_message": "Danach folgendes versuchen: ", - "next_steps_error_message_refresh": "Aktualisieren", - "next_steps_error_message_go_to_youtube": "Zu YouTube gehen", - "footer_donate_page": "Spende", - "search_filters_duration_option_long": "Lang (> 20 Minuten)", - "footer_original_source_code": "Original Quellcode", - "footer_modfied_source_code": "Modifizierter Quellcode", - "footer_documentation": "Dokumentation", - "footer_source_code": "Quellcode", - "adminprefs_modified_source_code_url_label": "URL zum Repositorie des modifizierten Quellcodes", - "search_filters_duration_option_short": "Kurz (< 4 Minuten)", - "preferences_region_label": "Land der Inhalte: ", - "preferences_quality_option_dash": "DASH (adaptive Qualität)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Mittel", - "preferences_quality_option_small": "Niedrig", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "videoinfo_invidious_embed_link": "Link zum Einbetten", - "download_subtitles": "Untertitel - `x` (.vtt)", - "Video unavailable": "Video nicht verfügbar", - "user_created_playlists": "`x` Wiedergabelisten erstellt", - "user_saved_playlists": "`x` Wiedergabelisten gespeichert", - "preferences_save_player_pos_label": "Wiedergabeposition speichern: ", - "search_filters_features_option_three_sixty": "360°", - "preferences_quality_dash_option_best": "Höchste", - "preferences_quality_dash_option_worst": "Niedrigste", - "preferences_quality_dash_option_1440p": "1440p", - "videoinfo_youTube_embed_link": "Eingebettet", - "search_filters_features_option_purchased": "Gekauft", - "none": "keine", - "videoinfo_started_streaming_x_ago": "Stream begann vor `x`", - "videoinfo_watch_on_youTube": "Auf YouTube ansehen", - "preferences_quality_dash_label": "Bevorzugte DASH-Videoqualität: ", - "generic_subscribers_count": "{{count}} Abonnent", - "generic_subscribers_count_plural": "{{count}} Abonnenten", - "generic_videos_count": "{{count}} Video", - "generic_videos_count_plural": "{{count}} Videos", - "subscriptions_unseen_notifs_count": "{{count}} ungesehene Benachrichtung", - "subscriptions_unseen_notifs_count_plural": "{{count}} ungesehene Benachrichtungen", - "crash_page_refresh": "Versucht haben, die Seite neu zu laden", - "comments_view_x_replies": "{{count}} Antwort anzeigen", - "comments_view_x_replies_plural": "{{count}} Antworten anzeigen", - "generic_count_years": "{{count}} Jahr", - "generic_count_years_plural": "{{count}} Jahre", - "generic_count_weeks": "{{count}} Woche", - "generic_count_weeks_plural": "{{count}} Wochen", - "generic_count_days": "{{count}} Tag", - "generic_count_days_plural": "{{count}} Tage", - "crash_page_before_reporting": "Bevor Sie einen Bug melden, stellen Sie sicher, dass Sie:", - "crash_page_switch_instance": "Eine andere Instanz versucht haben", - "generic_count_hours": "{{count}} Stunde", - "generic_count_hours_plural": "{{count}} Stunden", - "generic_count_minutes": "{{count}} Minute", - "generic_count_minutes_plural": "{{count}} Minuten", - "crash_page_read_the_faq": "Das FAQ gelesen haben", - "crash_page_search_issue": "Nach bereits gemeldeten Bugs auf GitHub gesucht haben", - "crash_page_report_issue": "Wenn all dies nicht geholfen hat, öffnen Sie bitte ein neues Problem (issue) auf Github (vorzugsweise auf Englisch) und fügen Sie den folgenden Text in Ihre Nachricht ein (bitte übersetzen Sie diesen Text NICHT):", - "generic_views_count": "{{count}} Aufruf", - "generic_views_count_plural": "{{count}} Aufrufe", - "generic_count_seconds": "{{count}} Sekunde", - "generic_count_seconds_plural": "{{count}} Sekunden", - "generic_subscriptions_count": "{{count}} Abo", - "generic_subscriptions_count_plural": "{{count}} Abos", - "tokens_count": "{{count}} Token", - "tokens_count_plural": "{{count}} Tokens", - "comments_points_count": "{{count}} Punkt", - "comments_points_count_plural": "{{count}} Punkte", - "crash_page_you_found_a_bug": "Anscheinend haben Sie einen Fehler in Invidious gefunden!", - "generic_count_months": "{{count}} Monat", - "generic_count_months_plural": "{{count}} Monaten", - "Cantonese (Hong Kong)": "Kantonesisch (Hong Kong)", - "Chinese (Hong Kong)": "Chinesisch (Hong Kong)", - "generic_playlists_count": "{{count}} Wiedergabeliste", - "generic_playlists_count_plural": "{{count}} Wiedergabelisten", - "preferences_watch_history_label": "Wiedergabeverlauf aktivieren: ", - "English (United Kingdom)": "Englisch (Vereinigtes Königreich)", - "English (United States)": "Englisch (Vereinigte Staaten)", - "Dutch (auto-generated)": "Niederländisch (automatisch generiert)", - "French (auto-generated)": "Französisch (automatisch generiert)", - "German (auto-generated)": "Deutsch (automatisch generiert)", - "Indonesian (auto-generated)": "Indonesisch (automatisch generiert)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italienisch (automatisch generiert)", - "Japanese (auto-generated)": "Japanisch (automatisch generiert)", - "Spanish (Mexico)": "Spanisch (Mexiko)", - "Spanish (Spain)": "Spanisch (Spanien)", - "Vietnamese (auto-generated)": "Vietnamesisch (automatisch generiert)", - "Russian (auto-generated)": "Russisch (automatisch generiert)", - "Chinese": "Chinesisch", - "Portuguese (Brazil)": "Portugiesisch (Brasilien)", - "Spanish (auto-generated)": "Spanisch (automatisch generiert)", - "Turkish (auto-generated)": "Türkisch (automatisch generiert)", - "Chinese (China)": "Chinesisch (China)", - "Chinese (Taiwan)": "Chinesisch (Taiwan)", - "Korean (auto-generated)": "Koreanisch (automatisch generiert)", - "Portuguese (auto-generated)": "Portugiesisch (automatisch generiert)", - "search_filters_title": "Filtern", - "search_message_change_filters_or_query": "Versuchen Sie, Ihre Suchanfrage zu erweitern und/oder die Filter zu ändern.", - "search_message_use_another_instance": " Sie können auch auf einer anderen Instanz suchen.", - "Popular enabled: ": "„Beliebt“-Seite aktiviert: ", - "search_message_no_results": "Keine Ergebnisse gefunden.", - "search_filters_duration_option_medium": "Mittel (4 - 20 Minuten)", - "search_filters_features_option_vr180": "VR180", - "search_filters_type_option_all": "Beliebiger Typ", - "search_filters_apply_button": "Ausgewählte Filter anwenden", - "search_filters_duration_option_none": "Beliebige Länge", - "search_filters_date_label": "Upload-Datum", - "search_filters_date_option_none": "Beliebiges Datum", - "error_video_not_in_playlist": "Das angeforderte Video existiert nicht in dieser Wiedergabeliste. Klicken Sie hier, um zur Startseite der Wiedergabeliste zu gelangen.", - "channel_tab_shorts_label": "Shorts", - "channel_tab_streams_label": "Livestreams", - "Music in this video": "Musik in diesem Video", - "Artist: ": "Künstler: ", - "Album: ": "Album: ", - "channel_tab_playlists_label": "Wiedergabelisten", - "channel_tab_channels_label": "Kanäle", - "Channel Sponsor": "Kanalsponsor", - "Standard YouTube license": "Standard YouTube-Lizenz", - "Song: ": "Musik: ", - "Download is disabled": "Herunterladen ist deaktiviert", - "Import YouTube playlist (.csv)": "YouTube Wiedergabeliste importieren (.csv)", - "generic_button_delete": "Löschen", - "generic_button_edit": "Bearbeiten", - "generic_button_save": "Speichern", - "generic_button_cancel": "Abbrechen", - "generic_button_rss": "RSS", - "playlist_button_add_items": "Videos hinzufügen", - "channel_tab_podcasts_label": "Podcasts", - "channel_tab_releases_label": "Veröffentlichungen", - "generic_channels_count": "{{count}} Kanal", - "generic_channels_count_plural": "{{count}} Kanäle", - "Import YouTube watch history (.json)": "YouTube Wiedergabeverlauf importieren (.json)" -} diff --git a/invidious/locales/el.json b/invidious/locales/el.json deleted file mode 100755 index 1d827eb..0000000 --- a/invidious/locales/el.json +++ /dev/null @@ -1,490 +0,0 @@ -{ - "LIVE": "ΖΩΝΤΑΝΑ", - "Shared `x` ago": "Μοιράστηκε πριν από `x`", - "Unsubscribe": "Απεγγραφή", - "Subscribe": "Εγγραφή", - "View channel on YouTube": "Προβολή καναλιού στο YouTube", - "View playlist on YouTube": "Προβολή καταλόγου αναπαραγωγής στο YouTube", - "newest": "νεότερα", - "oldest": "παλιότερα", - "popular": "δημοφιλή", - "last": "τελευταία", - "Next page": "Επόμενη σελίδα", - "Previous page": "Προηγούμενη σελίδα", - "Clear watch history?": "Διαγραφή ιστορικού προβολής;", - "New password": "Νέος κωδικός πρόσβασης", - "New passwords must match": "Οι νέοι κωδικοί πρόσβασης πρέπει να ταιριάζουν", - "Authorize token?": "Εξουσιοδότηση διασύνδεσης;", - "Authorize token for `x`?": "Εξουσιοδότηση διασύνδεσης με `x`;", - "Yes": "Ναι", - "No": "Όχι", - "Import and Export Data": "Εισαγωγή και Εξαγωγή Δεδομένων", - "Import": "Εισαγωγή", - "Import Invidious data": "Εsαγωγή δεδομένων Invidious JSON", - "Import YouTube subscriptions": "Εισαγωγή συνδρομών YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Εισαγωγή συνδρομών FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Εισαγωγή συνδρομών NewPipe (.json)", - "Import NewPipe data (.zip)": "Εισαγωγή δεδομένων NewPipe (.zip)", - "Export": "Εξαγωγή", - "Export subscriptions as OPML": "Εξαγωγή συνδρομών ως OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Εξαγωγή συνδρομών ως OPML (για NewPipe & FreeTube)", - "Export data as JSON": "Εξαγωγή δεδομένων Invidious ως JSON", - "Delete account?": "Διαγραφή λογαριασμού;", - "History": "Ιστορικό", - "An alternative front-end to YouTube": "Μία εναλλακτική πλατφόρμα για το YouTube", - "JavaScript license information": "Πληροφορίες άδειας JavaScript", - "source": "πηγή", - "Log in": "Σύνδεση", - "Log in/register": "Σύνδεση/εγγραφή", - "User ID": "Ταυτότητα χρήστη", - "Password": "Κωδικός πρόσβασης", - "Time (h:mm:ss):": "Ώρα (ω:λλ:δδ):", - "Text CAPTCHA": "Κείμενο CAPTCHA", - "Image CAPTCHA": "Εικόνα CAPTCHA", - "Sign In": "Εγγραφή", - "Register": "Εγγραφή", - "E-mail": "Ηλεκτρονικό ταχυδρομείο", - "Preferences": "Προτιμήσεις", - "preferences_category_player": "Προτιμήσεις αναπαραγωγής", - "preferences_video_loop_label": "Αυτόματη επανάληψη: ", - "preferences_autoplay_label": "Αυτόματη αναπαραγωγή: ", - "preferences_continue_label": "Αναπαραγωγή επόμενου: ", - "preferences_continue_autoplay_label": "Αυτόματη αναπαραγωγή επόμενου: ", - "preferences_listen_label": "Φόρτωση μόνο ήχου: ", - "preferences_local_label": "Αναπαραγωγή με διακομιστή μεσολάβησης (proxy): ", - "preferences_speed_label": "Προεπιλεγμένη ταχύτητα: ", - "preferences_quality_label": "Προτιμώμενη ανάλυση: ", - "preferences_volume_label": "Ένταση αναπαραγωγής: ", - "preferences_comments_label": "Προεπιλεγμένα σχόλια: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Προεπιλεγμένοι υπότιτλοι: ", - "Fallback captions: ": "Εναλλακτικοί υπότιτλοι: ", - "preferences_related_videos_label": "Προβολή σχετικών βίντεο; ", - "preferences_annotations_label": "Αυτόματη προβολή σημειώσεων: ", - "preferences_category_visual": "Προτιμήσεις εμφάνισης", - "preferences_player_style_label": "Τεχνοτροπία της συσκευής αναπαραγωγης: ", - "Dark mode: ": "Σκοτεινή λειτουργία: ", - "preferences_dark_mode_label": "Θέμα: ", - "dark": "σκοτεινό", - "light": "φωτεινό", - "preferences_thin_mode_label": "Ελαφριά λειτουργία: ", - "preferences_category_subscription": "Προτιμήσεις συνδρομών", - "preferences_annotations_subscribed_label": "Προβολή σημειώσεων μόνο για κανάλια στα οποία είστε συνδρομητής; ", - "Redirect homepage to feed: ": "Ανακατεύθυνση αρχικής στη ροή συνδρομών: ", - "preferences_max_results_label": "Αριθμός βίντεο ανά σελίδα ροής συνδρομών: ", - "preferences_sort_label": "Ταξινόμηση ανά: ", - "published": "ημερομηνία δημοσίευσης", - "published - reverse": "ημερομηνία δημοσίευσης - ανάποδα", - "alphabetically": "αλφαβητικά", - "alphabetically - reverse": "αλφαβητικά - ανάποδα", - "channel name": "όνομα καναλιού", - "channel name - reverse": "όνομα καναλιού - ανάποδα", - "Only show latest video from channel: ": "Προβολή μόνο του τελευταίου βίντεο του καναλιού: ", - "Only show latest unwatched video from channel: ": "Προβολή μόνο του τελευταίου μη-προβεβλημένου βίντεο του καναλιού: ", - "preferences_unseen_only_label": "Προβολή μόνο μη-προβεβλημένων: ", - "preferences_notifications_only_label": "Προβολή μόνο ειδοποιήσεων (αν υπάρχουν): ", - "Enable web notifications": "Ενεργοποίηση ειδοποιήσεων δικτύου", - "`x` uploaded a video": "`x` κοινοποίησε ένα βίντεο", - "`x` is live": "`x` κάνει live", - "preferences_category_data": "Προτιμήσεις δεδομένων", - "Clear watch history": "Εκκαθάριση ιστορικού προβολής", - "Import/export data": "Εισαγωγή/εξαγωγή δεδομένων", - "Change password": "Αλλαγή κωδικού πρόσβασης", - "Manage subscriptions": "Διαχείριση συνδρομών", - "Manage tokens": "Διαχείριση διασυνδέσεων", - "Watch history": "Ιστορικό προβολής", - "Delete account": "Διαγραφή λογαριασμού", - "preferences_category_admin": "Προτιμήσεις διαχειριστή", - "preferences_default_home_label": "Προεπιλεγμένη αρχική: ", - "preferences_feed_menu_label": "Μενού ροής συνδρομών: ", - "Top enabled: ": "Ενεργοποίηση κορυφαίων; ", - "CAPTCHA enabled: ": "Ενεργοποίηση CAPTCHA; ", - "Login enabled: ": "Ενεργοποίηση σύνδεσης; ", - "Registration enabled: ": "Ενεργοποίηση εγγραφής; ", - "Report statistics: ": "Αναφορά στατιστικών; ", - "Save preferences": "Αποθήκευση προτιμήσεων", - "Subscription manager": "Διαχειριστής συνδρομών", - "Token manager": "Διαχειριστής διασυνδέσεων", - "Token": "Διασύνδεση", - "Import/export": "Εισαγωγή/εξαγωγή", - "unsubscribe": "κατάργηση συνδρομής", - "revoke": "ανάκληση", - "Subscriptions": "Συνδρομές", - "search": "αναζήτηση", - "Log out": "Αποσύνδεση", - "Source available here.": "Προβολή πηγαίου κώδικα εδώ.", - "View JavaScript license information.": "Προβολή πληροφοριών άδειας JavaScript.", - "View privacy policy.": "Προβολή πολιτικής απορρήτου.", - "Trending": "Τάσεις", - "Public": "Δημόσιο", - "Unlisted": "Κρυφό", - "Private": "Ιδιωτικό", - "View all playlists": "Προβολή όλων των καταλόγων αναπαραγωγής", - "Updated `x` ago": "Ενημερώθηκε πριν από `x`", - "Delete playlist `x`?": "Διαγραφή `x` καταλόγου αναπαραγωγής;", - "Delete playlist": "Διαγραφή καταλόγου αναπαραγωγής", - "Create playlist": "Δημιουργία καταλόγου αναπαραγωγής", - "Title": "Τίτλος", - "Playlist privacy": "Ιδιωτικότητα καταλόγων αναπαραγωγής", - "Editing playlist `x`": "Επεξεργασία `x` καταλόγου αναπαραγωγής", - "Watch on YouTube": "Προβολή στο YouTube", - "Hide annotations": "Απόκρυψη σημειώσεων", - "Show annotations": "Προβολή σημειώσεων", - "Genre: ": "Είδος: ", - "License: ": "Άδεια: ", - "Family friendly? ": "Φιλικό προς την οικογένεια; ", - "Wilson score: ": "Αποτελέσματα Wilson: ", - "Engagement: ": "Ενδιαφέρον: ", - "Whitelisted regions: ": "Επιτρεπτές περιοχές: ", - "Blacklisted regions: ": "Μη-επιτρεπτές περιοχές: ", - "Shared `x`": "Μοιράστηκε το `x`", - "Premieres in `x`": "Πρώτη προβολή σε `x`", - "Premieres `x`": "Επίσημη πρώτη παράσταση του `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Γεια! Φαίνεται πως έχετε απενεργοποιήσει το JavaScript. Πατήστε εδώ για προβολή σχολίων, αλλά έχετε υπ'όψιν σας πως ίσως φορτώσουν πιο αργά.", - "View YouTube comments": "Προβολή σχολίων από το YouTube", - "View more comments on Reddit": "Προβολή περισσότερων σχολίων στο Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Προβολή `x` σχολίου", - "": "Προβολή `x` σχολίων" - }, - "View Reddit comments": "Προβολή σχολίων από το Reddit", - "Hide replies": "Απόκρυψη απαντήσεων", - "Show replies": "Προβολή απαντήσεων", - "Incorrect password": "Λανθασμένος κωδικός πρόσβασης", - "Wrong answer": "Λανθασμένη απάντηση", - "Erroneous CAPTCHA": "Λανθασμένο CAPTCHA", - "CAPTCHA is a required field": "Το CAPTCHA είναι απαιτούμενο πεδίο", - "User ID is a required field": "Η ταυτότητα χρήστη είναι απαιτούμενο πεδίο", - "Password is a required field": "Ο κωδικός πρόσβασης είναι απαιτούμενο πεδίο", - "Wrong username or password": "Λανθασμένο όνομα χρήστη ή κωδικός πρόσβασης", - "Password cannot be empty": "Ο κωδικός πρόσβασης δεν γίνεται να είναι κενός", - "Password cannot be longer than 55 characters": "Ο κωδικός πρόσβασης δεν γίνεται να υπερβαίνει τους 55 χαρακτήρες", - "Please log in": "Συνδεθείτε", - "Invidious Private Feed for `x`": "Ροή RSS του Invidious για το χρήστη `x`", - "channel:`x`": "κανάλι:`x`", - "Deleted or invalid channel": "Διαγραμμένο ή μη έγκυρο κανάλι", - "This channel does not exist.": "Αυτό το κανάλι δεν υπάρχει.", - "Could not get channel info.": "Αδύναμια εύρεσης πληροφοριών καναλιού.", - "Could not fetch comments": "Αδυναμία λήψης σχολίων", - "`x` ago": "Πριν `x`", - "Load more": "Φόρτωση περισσότερων", - "Could not create mix.": "Αδυναμία δημιουργίας μίξης.", - "Empty playlist": "Κενή λίστα αναπαραγωγής", - "Not a playlist.": "Μη έγκυρη λίστα αναπαραγωγής.", - "Playlist does not exist.": "Μη υπαρκτή λίστα αναπαραγωγής.", - "Could not pull trending pages.": "Αδυναμία λήψης σελίδας τάσεων.", - "Hidden field \"challenge\" is a required field": "Το Κρυφό πεδίο \"δοκιμασία\" είναι απαραίτητο", - "Hidden field \"token\" is a required field": "Το κρυφό πεδίο \"αναγνωριστικό διασύνδεσης\" είναι απαραίτητο", - "Erroneous challenge": "Λανθασμένη δοκιμασία", - "Erroneous token": "Λανθασμένο αναγνωριστικό διασύνδεσης", - "No such user": "Μη υπαρκτός χρήστης", - "Token is expired, please try again": "Το αναγνωριστικό διασύνδεσης έχει λήξει, παρακαλώ ξαναπροσπαθήστε", - "English": "Αγγλικά", - "English (auto-generated)": "Αγγλικά (αυτόματα)", - "Afrikaans": "Αφρικάανς", - "Albanian": "Αλβανικά", - "Amharic": "Αμχαρικά", - "Arabic": "Αραβικά", - "Armenian": "Αρμένικα", - "Azerbaijani": "Αζερικά", - "Bangla": "Μπενγκάλι", - "Basque": "Βασκικά", - "Belarusian": "Λευκορωσικά", - "Bosnian": "Βοσνιακά", - "Bulgarian": "Βουλγάρικα", - "Burmese": "Βιρμανικά", - "Catalan": "Καταλανικά", - "Cebuano": "Κεμπουάνο", - "Chinese (Simplified)": "Κινέζικα (Απλοποιημένα)", - "Chinese (Traditional)": "Κινέζικα (Παραδοσιακά)", - "Corsican": "Κορσικανικά", - "Croatian": "Κροατικά", - "Czech": "Τσέχικα", - "Danish": "Δανέζικα", - "Dutch": "Ολλανδικά", - "Esperanto": "Εσπεράντο", - "Estonian": "Εσθονικά", - "Filipino": "Φιλιππινέζικα", - "Finnish": "Φινλανδικά", - "French": "Γαλλικά", - "Galician": "Γαλικιακά", - "Georgian": "Γεωργιανά", - "German": "Γερμανικά", - "Greek": "Ελληνικά", - "Gujarati": "Γκουτζαρατικά", - "Haitian Creole": "Κρεόλ Αϊτής", - "Hausa": "Χάουσα", - "Hawaiian": "Χαβανέζικα", - "Hebrew": "Εβραϊκά", - "Hindi": "Χίντι", - "Hmong": "Χμονγκ", - "Hungarian": "Ουγγαρέζικα", - "Icelandic": "Ισλανδικά", - "Igbo": "Ιγκμπό", - "Indonesian": "Ινδονησιακά", - "Irish": "Ιρλανδικά", - "Italian": "Ιταλικά", - "Japanese": "Ιαπωνικά", - "Javanese": "Ιαβανέζικα", - "Kannada": "Κανάντα", - "Kazakh": "Καζακικά", - "Khmer": "Χμερ", - "Korean": "Κορεάτικα", - "Kurdish": "Κούρδικα", - "Kyrgyz": "Κιργιστανικά", - "Lao": "Lao", - "Latin": "Λατινικά", - "Latvian": "Λετονικά", - "Lithuanian": "Λιθουανικά", - "Luxembourgish": "Λουξεμβουργιανά", - "Macedonian": "Μακεδονικά", - "Malagasy": "Μαλαγασικά", - "Malay": "Μαλαισιανά", - "Malayalam": "Μαλαγιαλάμ", - "Maltese": "Μαλτέζικα", - "Maori": "Μαορί", - "Marathi": "Μαράτι", - "Mongolian": "Μογγολικά", - "Nepali": "Νεπαλικά", - "Norwegian Bokmål": "Νορβηγικά Μποκμάλ", - "Nyanja": "Νιάντζα", - "Pashto": "Αφγανικά", - "Persian": "Περσικά", - "Polish": "Πολωνικά", - "Portuguese": "Πορτογαλικά", - "Punjabi": "Παντζάμπι", - "Romanian": "Ρουμανικά", - "Russian": "Ρώσικα", - "Samoan": "Σαμόα", - "Scottish Gaelic": "Σκωτικά Γαελικά", - "Serbian": "Σέρβικα", - "Shona": "Σόνα", - "Sindhi": "Σίντι", - "Sinhala": "Σιναλεζικά", - "Slovak": "Σλοβακικά", - "Slovenian": "ΣΛοβενικά", - "Somali": "Σομαλικά", - "Southern Sotho": "Νότια Σούτου", - "Spanish": "Ισπανικά", - "Spanish (Latin America)": "Ισπανικά (Λατινική Αμερική)", - "Sundanese": "Σουντανέζικα", - "Swahili": "Σουαχίλι", - "Swedish": "Σουηδικά", - "Tajik": "Τατζικικά", - "Tamil": "Ταμίλ", - "Telugu": "Τελούγκου", - "Thai": "Ταϊλανδικά", - "Turkish": "Τούρκικα", - "Ukrainian": "Ουκρανικά", - "Urdu": "Ουρντού", - "Uzbek": "Ουζμπεκικά", - "Vietnamese": "Βιετναμέζικα", - "Welsh": "Ουαλικά", - "Western Frisian": "Δυτική Φριζική", - "Xhosa": "Xhosa", - "Yiddish": "Γίντις", - "Yoruba": "Γιορούμπα", - "Zulu": "Ζουλού", - "Fallback comments: ": "Εναλλακτικά σχόλια: ", - "Popular": "Δημοφιλή", - "Top": "Κορυφαία", - "About": "Σχετικά", - "Rating: ": "Aξιολόγηση: ", - "preferences_locale_label": "Γλώσσα: ", - "View as playlist": "Προβολή ως λίστα αναπαραγωγής", - "Default": "Προεπιλογή", - "Music": "Μουσική", - "Gaming": "Παιχνίδια", - "News": "Ειδήσεις", - "Movies": "Ταινίες", - "Download": "Λήψη", - "Download as: ": "Λήψη ως: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(τροποποιημένο)", - "YouTube comment permalink": "Σύνδεσμος YouTube σχολίου", - "permalink": "μόνιμος σύνδεσμος", - "`x` marked it with a ❤": "Ο χρηστης `x` έβαλε ❤", - "Audio mode": "Λειτουργία ήχου", - "Video mode": "Λειτουργία βίντεο", - "channel_tab_videos_label": "Βίντεο", - "Playlists": "Λίστες Αναπαραγωγής", - "channel_tab_community_label": "Κοινότητα", - "Current version: ": "Τρέχουσα έκδοση: ", - "generic_playlists_count": "{{count}} λίστα αναπαραγωγής", - "generic_playlists_count_plural": "{{count}} λίστες αναπαραγωγής", - "preferences_quality_dash_option_worst": "Χειρότερη", - "preferences_quality_dash_option_2160p": "2160 p", - "Video unavailable": "Το βίντεο δεν είναι διαθέσιμο", - "preferences_quality_dash_option_auto": "Αυτόματη", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "comments_view_x_replies": "Προβολή {{count}} απάντησης", - "comments_view_x_replies_plural": "Προβολή {{count}} απαντήσεων", - "crash_page_report_issue": "Εάν κανένα από τα παραπάνω δεν βοήθησε, παρακαλούμε ανοίξτε ένα νέο θέμα στο GitHub (κατά προτίμηση στα αγγλικά) και συμπεριλάβετε το ακόλουθο κείμενο στο μήνυμά σας (ΜΗΝ μεταφράζετε αυτό το κείμενο):", - "generic_count_hours": "{{count}} ώρα", - "generic_count_hours_plural": "{{count}} ώρες", - "generic_count_minutes": "{{count}} λεπτό", - "generic_count_minutes_plural": "{{count}} λεπτά", - "generic_count_seconds": "{{count}} δευτερόλεπτο", - "generic_count_seconds_plural": "{{count}} δευτερόλεπτα", - "preferences_quality_dash_label": "Προτιμώμενη ποιότητα βίντεο DASH: ", - "preferences_quality_dash_option_best": "Καλύτερη", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "generic_subscribers_count": "{{count}} συνδρομητής", - "generic_subscribers_count_plural": "{{count}} συνδρομητές", - "generic_subscriptions_count": "{{count}} συνδρομή", - "generic_subscriptions_count_plural": "{{count}} συνδρομές", - "generic_count_years": "{{count}} έτος", - "generic_count_years_plural": "{{count}} έτη", - "generic_count_months": "{{count}} μήνας", - "generic_count_months_plural": "{{count}} μήνες", - "generic_count_weeks": "{{count}} εβδομάδα", - "generic_count_weeks_plural": "{{count}} εβδομάδες", - "generic_count_days": "{{count}} ημέρα", - "generic_count_days_plural": "{{count}} ημέρες", - "crash_page_you_found_a_bug": "Φαίνεται ότι βρήκατε ένα σφάλμα στο Invidious!", - "crash_page_before_reporting": "Πριν αναφέρετε ένα σφάλμα, βεβαιωθείτε ότι έχετε:", - "crash_page_refresh": "προσπαθήσει να ανανεώσετε τη σελίδα", - "crash_page_read_the_faq": "διαβάστε τις Συχνές Ερωτήσεις (ΣΕ)", - "crash_page_search_issue": "αναζητήσει για υπάρχοντα θέματα στο GitHub", - "generic_views_count": "{{count}} προβολή", - "generic_views_count_plural": "{{count}} προβολές", - "generic_videos_count": "{{count}} βίντεο", - "generic_videos_count_plural": "{{count}} βίντεο", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Μεσαία", - "preferences_quality_option_small": "Μικρό", - "preferences_quality_option_dash": "DASH (προσαρμόσιμη ποιότητα)", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_720p": "720p", - "invidious": "Invidious", - "preferences_region_label": "Χώρα περιεχομένου: ", - "preferences_category_misc": "Διάφορες προτιμήσεις", - "Show more": "Εμφάνιση περισσότερων", - "search_filters_date_option_today": "Σήμερα", - "search_filters_features_option_three_sixty": "360°", - "videoinfo_started_streaming_x_ago": "Ξεκίνησε η ροή `x` πριν από", - "videoinfo_watch_on_youTube": "Παρακολουθήστε στο YouTube", - "download_subtitles": "Υπότιτλοι - `x` (.vtt)", - "user_created_playlists": "`x` δημιουργημένες λίστες αναπαραγωγής", - "user_saved_playlists": "`x` αποθηκευμένες λίστες αναπαραγωγής", - "search_filters_sort_option_rating": "Αξιολόγηση", - "search_filters_sort_option_relevance": "Συνάφεια", - "search_filters_features_option_purchased": "Αγορασμένο", - "search_filters_sort_option_date": "Ημερομηνία μεταφόρτωσης", - "search_filters_type_label": "Τύπος", - "search_filters_duration_label": "Διάρκεια", - "search_filters_date_option_week": "Αυτή την εβδομάδα", - "search_filters_date_option_year": "Φέτος", - "search_filters_type_option_channel": "Κανάλι", - "search_filters_type_option_playlist": "Λίστα αναπαραγωγής", - "search_filters_duration_option_long": "Μεγάλο (> 20 λεπτά)", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_location": "Τοποθεσία", - "search_filters_features_option_three_d": "3D", - "next_steps_error_message": "Μετά από αυτό θα πρέπει να προσπαθήσετε να: ", - "next_steps_error_message_go_to_youtube": "Μεταβείτε στο YouTube", - "footer_donate_page": "Δωρεά", - "footer_original_source_code": "Πρωτότυπος πηγαίος κώδικας", - "preferences_show_nick_label": "Εμφάνιση ψευδώνυμου στην κορυφή: ", - "search_filters_date_option_hour": "Τελευταία ώρα", - "adminprefs_modified_source_code_url_label": "URL σε αποθετήριο τροποποιημένου πηγαίου κώδικα", - "search_filters_features_option_subtitles": "Υπότιτλοι/CC", - "search_filters_date_option_month": "Αυτόν τον μήνα", - "Released under the AGPLv3 on Github.": "Κυκλοφορεί υπό την AGPLv3 στο GitHub.", - "search_filters_sort_label": "Ταξινόμηση κατά", - "search_filters_type_option_movie": "Ταινία", - "footer_modfied_source_code": "Τροποποιημένος πηγαίος κώδικας", - "search_filters_features_label": "Χαρακτηριστικά", - "search_filters_features_option_four_k": "4K", - "footer_documentation": "Τεκμηρίωση", - "search_filters_duration_option_short": "Σύντομο (< 4 λεπτά)", - "next_steps_error_message_refresh": "Ανανέωση", - "search_filters_type_option_video": "Βίντεο", - "search_filters_features_option_live": "Ζωντανά", - "search_filters_features_option_c_commons": "Creative Commons", - "Search": "Αναζήτηση", - "search_filters_features_option_hdr": "HDR", - "preferences_extend_desc_label": "Αυτόματη επέκταση της περιγραφής του βίντεο: ", - "preferences_vr_mode_label": "Διαδραστικά βίντεο 360 μοιρών (απαιτεί WebGL): ", - "Show less": "Εμφάνιση λιγότερων", - "footer_source_code": "Πηγαίος κώδικας", - "Chinese (Taiwan)": "Κινέζικα (Ταϊβάν)", - "Portuguese (Brazil)": "Πορτογαλικά (Βραζιλία)", - "German (auto-generated)": "Γερμανικά (αυτόματη παραγωγή)", - "Korean (auto-generated)": "Κορεάτικα (αυτόματη παραγωγή)", - "Russian (auto-generated)": "Ρωσικά (αυτόματη παραγωγή)", - "Spanish (auto-generated)": "Ισπανικά (αυτόματη παραγωγή)", - "Vietnamese (auto-generated)": "Βιετναμέζικα (αυτόματη παραγωγή)", - "English (United Kingdom)": "Αγγλικά (Ηνωμένο Βασίλειο)", - "English (United States)": "Αγγλικά (Ηνωμένων Πολιτειών)", - "Cantonese (Hong Kong)": "Καντονέζικα (Χονγκ Κονγκ)", - "Chinese": "Κινεζικά", - "Chinese (China)": "Κινέζικα (Κίνα)", - "Chinese (Hong Kong)": "Κινεζικά (Χονγκ Κονγκ)", - "Dutch (auto-generated)": "Ολαμδικά (αυτόματη παραγωγή)", - "French (auto-generated)": "Γαλλικά (αυτόματη παραγωγή)", - "Interlingue": "Ιντερλίνγκουα", - "Indonesian (auto-generated)": "Ινδονησιακά (αυτόματη παραγωγή)", - "Italian (auto-generated)": "Ιταλικά (αυτόματη παραγωγή)", - "Japanese (auto-generated)": "Ιαπωνικά (αυτόματη παραγωγή)", - "Portuguese (auto-generated)": "Πορτογαλικά (αυτόματη παραγωγή)", - "Spanish (Mexico)": "Ισπανικά (Μεξικό)", - "Spanish (Spain)": "Ισπανικά (Ισπανία)", - "Turkish (auto-generated)": "Τούρκικα (αυτόματη παραγωγή)", - "none": "κανένα", - "videoinfo_youTube_embed_link": "Ενσωμάτωση", - "videoinfo_invidious_embed_link": "Σύνδεσμος Ενσωμάτωσης", - "search_filters_type_option_show": "Μπάρα προόδου διαβάσματος", - "preferences_watch_history_label": "Ενεργοποίηση ιστορικού παρακολούθησης: ", - "search_filters_title": "Φίλτρο", - "search_message_no_results": "Δε βρέθηκαν αποτελέσματα.", - "channel_tab_podcasts_label": "Podcast", - "preferences_save_player_pos_label": "Αποθήκευση σημείου αναπαραγωγής: ", - "search_filters_apply_button": "Εφαρμογή επιλεγμένων φίλτρων", - "Download is disabled": "Είναι απενεργοποιημένη η λήψη", - "comments_points_count": "{{count}} βαθμός", - "comments_points_count_plural": "{{count}} βαθμοί", - "search_filters_sort_option_views": "Προβολές", - "search_message_change_filters_or_query": "Προσπαθήστε να διευρύνετε το ερώτημα αναζήτησης ή/και να αλλάξετε τα φίλτρα.", - "Channel Sponsor": "Χορηγός Καναλιού", - "channel_tab_streams_label": "Ζωντανή μετάδοση", - "playlist_button_add_items": "Προσθήκη βίντεο", - "Artist: ": "Καλλιτέχνης: ", - "search_message_use_another_instance": " Μπορείτε επίσης να αναζητήσετε σε άλλο instance.", - "generic_button_save": "Αποθήκευση", - "generic_button_cancel": "Ακύρωση", - "subscriptions_unseen_notifs_count": "{{count}} μη αναγνωσμένη ειδοποίηση", - "subscriptions_unseen_notifs_count_plural": "{{count}} μη αναγνωσμένες ειδοποιήσεις", - "Album: ": "Δίσκος: ", - "tokens_count": "{{count}} σύμβολο", - "tokens_count_plural": "{{count}} σύμβολα", - "channel_tab_shorts_label": "Short", - "channel_tab_releases_label": "Κυκλοφορίες", - "Song: ": "Τραγούδι: ", - "generic_channels_count": "{{count}} κανάλι", - "generic_channels_count_plural": "{{count}} κανάλια", - "Popular enabled: ": "Ενεργοποιημένα Δημοφιλή: ", - "channel_tab_playlists_label": "Λίστες αναπαραγωγής", - "generic_button_edit": "Επεξεργασία", - "search_filters_date_option_none": "Οποιαδήποτε ημερομηνία", - "crash_page_switch_instance": "προσπάθεια χρήσης άλλου instance", - "Music in this video": "Μουσική σε αυτό το βίντεο", - "generic_button_rss": "RSS", - "channel_tab_channels_label": "Κανάλια", - "search_filters_type_option_all": "Οποιοσδήποτε τύπος", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Το αιτούμενο βίντεο δεν υπάρχει στη δεδομένη λίστα αναπαραγωγής. Πατήστε εδώ για επιστροφή στη κεντρική σελίδα λιστών αναπαραγωγής.", - "search_filters_duration_option_none": "Οποιαδήποτε διάρκεια", - "preferences_automatic_instance_redirect_label": "Αυτόματη ανακατεύθυνση instance (εναλλακτική σε redirect.invidious.io): ", - "generic_button_delete": "Διαγραφή", - "Import YouTube playlist (.csv)": "Εισαγωγή λίστας αναπαραγωγής YouTube (.csv)", - "Switch Invidious Instance": "Αλλαγή Instance Invidious", - "Standard YouTube license": "Τυπική άδεια YouTube", - "search_filters_duration_option_medium": "Μεσαία (4 - 20 λεπτά)", - "search_filters_date_label": "Ημερομηνία αναφόρτωσης" -} diff --git a/invidious/locales/en-US.json b/invidious/locales/en-US.json deleted file mode 100755 index 1088761..0000000 --- a/invidious/locales/en-US.json +++ /dev/null @@ -1,500 +0,0 @@ -{ - "Add to playlist": "Add to playlist", - "Add to playlist: ": "Add to playlist: ", - "Answer": "Answer", - "Search for videos": "Search for videos", - "The Popular feed has been disabled by the administrator.": "The Popular feed has been disabled by the administrator.", - "generic_channels_count": "{{count}} channel", - "generic_channels_count_plural": "{{count}} channels", - "generic_views_count": "{{count}} view", - "generic_views_count_plural": "{{count}} views", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videos", - "generic_playlists_count": "{{count}} playlist", - "generic_playlists_count_plural": "{{count}} playlists", - "generic_subscribers_count": "{{count}} subscriber", - "generic_subscribers_count_plural": "{{count}} subscribers", - "generic_subscriptions_count": "{{count}} subscription", - "generic_subscriptions_count_plural": "{{count}} subscriptions", - "generic_button_delete": "Delete", - "generic_button_edit": "Edit", - "generic_button_save": "Save", - "generic_button_cancel": "Cancel", - "generic_button_rss": "RSS", - "LIVE": "LIVE", - "Shared `x` ago": "Shared `x` ago", - "Unsubscribe": "Unsubscribe", - "Subscribe": "Subscribe", - "View channel on YouTube": "View channel on YouTube", - "View playlist on YouTube": "View playlist on YouTube", - "newest": "newest", - "oldest": "oldest", - "popular": "popular", - "last": "last", - "Next page": "Next page", - "Previous page": "Previous page", - "Clear watch history?": "Clear watch history?", - "New password": "New password", - "New passwords must match": "New passwords must match", - "Authorize token?": "Authorize token?", - "Authorize token for `x`?": "Authorize token for `x`?", - "Yes": "Yes", - "No": "No", - "Import and Export Data": "Import and Export Data", - "Import": "Import", - "Import Invidious data": "Import Invidious JSON data", - "Import YouTube subscriptions": "Import YouTube/OPML subscriptions", - "Import YouTube playlist (.csv)": "Import YouTube playlist (.csv)", - "Import YouTube watch history (.json)": "Import YouTube watch history (.json)", - "Import FreeTube subscriptions (.db)": "Import FreeTube subscriptions (.db)", - "Import NewPipe subscriptions (.json)": "Import NewPipe subscriptions (.json)", - "Import NewPipe data (.zip)": "Import NewPipe data (.zip)", - "Export": "Export", - "Export subscriptions as OPML": "Export subscriptions as OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Export subscriptions as OPML (for NewPipe & FreeTube)", - "Export data as JSON": "Export Invidious data as JSON", - "Delete account?": "Delete account?", - "History": "History", - "An alternative front-end to YouTube": "An alternative front-end to YouTube", - "JavaScript license information": "JavaScript license information", - "source": "source", - "Log in": "Log in", - "Log in/register": "Log in/register", - "User ID": "User ID", - "Password": "Password", - "Time (h:mm:ss):": "Time (h:mm:ss):", - "Text CAPTCHA": "Text CAPTCHA", - "Image CAPTCHA": "Image CAPTCHA", - "Sign In": "Sign In", - "Register": "Register", - "E-mail": "E-mail", - "Preferences": "Preferences", - "preferences_category_player": "Player preferences", - "preferences_video_loop_label": "Always loop: ", - "preferences_autoplay_label": "Autoplay: ", - "preferences_continue_label": "Play next by default: ", - "preferences_continue_autoplay_label": "Autoplay next video: ", - "preferences_listen_label": "Listen by default: ", - "preferences_local_label": "Proxy videos: ", - "preferences_watch_history_label": "Enable watch history: ", - "preferences_speed_label": "Default speed: ", - "preferences_quality_label": "Preferred video quality: ", - "preferences_quality_option_dash": "DASH (adaptive quality)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Medium", - "preferences_quality_option_small": "Small", - "preferences_quality_dash_label": "Preferred DASH video quality: ", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "Best", - "preferences_quality_dash_option_worst": "Worst", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "preferences_volume_label": "Player volume: ", - "preferences_comments_label": "Default comments: ", - "youtube": "YouTube", - "reddit": "Reddit", - "invidious": "Invidious", - "preferences_captions_label": "Default captions: ", - "Fallback captions: ": "Fallback captions: ", - "preferences_related_videos_label": "Show related videos: ", - "preferences_annotations_label": "Show annotations by default: ", - "preferences_extend_desc_label": "Automatically extend video description: ", - "preferences_vr_mode_label": "Interactive 360 degree videos (requires WebGL): ", - "preferences_category_visual": "Visual preferences", - "preferences_region_label": "Content country: ", - "preferences_player_style_label": "Player style: ", - "Dark mode: ": "Dark mode: ", - "preferences_dark_mode_label": "Theme: ", - "dark": "dark", - "light": "light", - "preferences_thin_mode_label": "Thin mode: ", - "preferences_category_misc": "Miscellaneous preferences", - "preferences_automatic_instance_redirect_label": "Automatic instance redirection (fallback to redirect.invidious.io): ", - "preferences_category_subscription": "Subscription preferences", - "preferences_annotations_subscribed_label": "Show annotations by default for subscribed channels? ", - "Redirect homepage to feed: ": "Redirect homepage to feed: ", - "preferences_max_results_label": "Number of videos shown in feed: ", - "preferences_sort_label": "Sort videos by: ", - "published": "published", - "published - reverse": "published - reverse", - "alphabetically": "alphabetically", - "alphabetically - reverse": "alphabetically - reverse", - "channel name": "channel name", - "channel name - reverse": "channel name - reverse", - "Only show latest video from channel: ": "Only show latest video from channel: ", - "Only show latest unwatched video from channel: ": "Only show latest unwatched video from channel: ", - "preferences_unseen_only_label": "Only show unwatched: ", - "preferences_notifications_only_label": "Only show notifications (if there are any): ", - "Enable web notifications": "Enable web notifications", - "`x` uploaded a video": "`x` uploaded a video", - "`x` is live": "`x` is live", - "preferences_category_data": "Data preferences", - "Clear watch history": "Clear watch history", - "Import/export data": "Import/export data", - "Change password": "Change password", - "Manage subscriptions": "Manage subscriptions", - "Manage tokens": "Manage tokens", - "Watch history": "Watch history", - "Delete account": "Delete account", - "preferences_category_admin": "Administrator preferences", - "preferences_default_home_label": "Default homepage: ", - "preferences_feed_menu_label": "Feed menu: ", - "preferences_show_nick_label": "Show nickname on top: ", - "Popular enabled: ": "Popular enabled: ", - "Top enabled: ": "Top enabled: ", - "CAPTCHA enabled: ": "CAPTCHA enabled: ", - "Login enabled: ": "Login enabled: ", - "Registration enabled: ": "Registration enabled: ", - "Report statistics: ": "Report statistics: ", - "Save preferences": "Save preferences", - "Subscription manager": "Subscription manager", - "Token manager": "Token manager", - "Token": "Token", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokens", - "Import/export": "Import/export", - "unsubscribe": "unsubscribe", - "revoke": "revoke", - "Subscriptions": "Subscriptions", - "subscriptions_unseen_notifs_count": "{{count}} unseen notification", - "subscriptions_unseen_notifs_count_plural": "{{count}} unseen notifications", - "search": "search", - "Log out": "Log out", - "Released under the AGPLv3 on Github.": "Released under the AGPLv3 on GitHub.", - "Source available here.": "Source available here.", - "View JavaScript license information.": "View JavaScript license information.", - "View privacy policy.": "View privacy policy.", - "Trending": "Trending", - "Public": "Public", - "Unlisted": "Unlisted", - "Private": "Private", - "View all playlists": "View all playlists", - "Updated `x` ago": "Updated `x` ago", - "Delete playlist `x`?": "Delete playlist `x`?", - "Delete playlist": "Delete playlist", - "Create playlist": "Create playlist", - "Title": "Title", - "Playlist privacy": "Playlist privacy", - "Editing playlist `x`": "Editing playlist `x`", - "playlist_button_add_items": "Add videos", - "Show more": "Show more", - "Show less": "Show less", - "Watch on YouTube": "Watch on YouTube", - "Switch Invidious Instance": "Switch Invidious Instance", - "search_message_no_results": "No results found.", - "search_message_change_filters_or_query": "Try widening your search query and/or changing the filters.", - "search_message_use_another_instance": " You can also search on another instance.", - "Hide annotations": "Hide annotations", - "Show annotations": "Show annotations", - "Genre: ": "Genre: ", - "License: ": "License: ", - "Standard YouTube license": "Standard YouTube license", - "Family friendly? ": "Family friendly? ", - "Wilson score: ": "Wilson score: ", - "Engagement: ": "Engagement: ", - "Whitelisted regions: ": "Whitelisted regions: ", - "Blacklisted regions: ": "Blacklisted regions: ", - "Music in this video": "Music in this video", - "Artist: ": "Artist: ", - "Song: ": "Song: ", - "Album: ": "Album: ", - "Shared `x`": "Shared `x`", - "Premieres in `x`": "Premieres in `x`", - "Premieres `x`": "Premieres `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.", - "View YouTube comments": "View YouTube comments", - "View more comments on Reddit": "View more comments on Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "View `x` comment", - "": "View `x` comments" - }, - "View Reddit comments": "View Reddit comments", - "Hide replies": "Hide replies", - "Show replies": "Show replies", - "Incorrect password": "Incorrect password", - "Wrong answer": "Wrong answer", - "Erroneous CAPTCHA": "Erroneous CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA is a required field", - "User ID is a required field": "User ID is a required field", - "Password is a required field": "Password is a required field", - "Wrong username or password": "Wrong username or password", - "Password cannot be empty": "Password cannot be empty", - "Password cannot be longer than 55 characters": "Password cannot be longer than 55 characters", - "Please log in": "Please log in", - "Invidious Private Feed for `x`": "Invidious Private Feed for `x`", - "channel:`x`": "channel:`x`", - "Deleted or invalid channel": "Deleted or invalid channel", - "This channel does not exist.": "This channel does not exist.", - "Could not get channel info.": "Could not get channel info.", - "Could not fetch comments": "Could not fetch comments", - "comments_view_x_replies": "View {{count}} reply", - "comments_view_x_replies_plural": "View {{count}} replies", - "`x` ago": "`x` ago", - "Load more": "Load more", - "comments_points_count": "{{count}} point", - "comments_points_count_plural": "{{count}} points", - "Could not create mix.": "Could not create mix.", - "Empty playlist": "Empty playlist", - "Not a playlist.": "Not a playlist.", - "Playlist does not exist.": "Playlist does not exist.", - "Could not pull trending pages.": "Could not pull trending pages.", - "Hidden field \"challenge\" is a required field": "Hidden field \"challenge\" is a required field", - "Hidden field \"token\" is a required field": "Hidden field \"token\" is a required field", - "Erroneous challenge": "Erroneous challenge", - "Erroneous token": "Erroneous token", - "No such user": "No such user", - "Token is expired, please try again": "Token is expired, please try again", - "English": "English", - "English (United Kingdom)": "English (United Kingdom)", - "English (United States)": "English (United States)", - "English (auto-generated)": "English (auto-generated)", - "Afrikaans": "Afrikaans", - "Albanian": "Albanian", - "Amharic": "Amharic", - "Arabic": "Arabic", - "Armenian": "Armenian", - "Azerbaijani": "Azerbaijani", - "Bangla": "Bangla", - "Basque": "Basque", - "Belarusian": "Belarusian", - "Bosnian": "Bosnian", - "Bulgarian": "Bulgarian", - "Burmese": "Burmese", - "Cantonese (Hong Kong)": "Cantonese (Hong Kong)", - "Catalan": "Catalan", - "Cebuano": "Cebuano", - "Chinese": "Chinese", - "Chinese (China)": "Chinese (China)", - "Chinese (Hong Kong)": "Chinese (Hong Kong)", - "Chinese (Simplified)": "Chinese (Simplified)", - "Chinese (Taiwan)": "Chinese (Taiwan)", - "Chinese (Traditional)": "Chinese (Traditional)", - "Corsican": "Corsican", - "Croatian": "Croatian", - "Czech": "Czech", - "Danish": "Danish", - "Dutch": "Dutch", - "Dutch (auto-generated)": "Dutch (auto-generated)", - "Esperanto": "Esperanto", - "Estonian": "Estonian", - "Filipino": "Filipino", - "Finnish": "Finnish", - "French": "French", - "French (auto-generated)": "French (auto-generated)", - "Galician": "Galician", - "Georgian": "Georgian", - "German": "German", - "German (auto-generated)": "German (auto-generated)", - "Greek": "Greek", - "Gujarati": "Gujarati", - "Haitian Creole": "Haitian Creole", - "Hausa": "Hausa", - "Hawaiian": "Hawaiian", - "Hebrew": "Hebrew", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Hungarian", - "Icelandic": "Icelandic", - "Igbo": "Igbo", - "Indonesian": "Indonesian", - "Indonesian (auto-generated)": "Indonesian (auto-generated)", - "Interlingue": "Interlingue", - "Irish": "Irish", - "Italian": "Italian", - "Italian (auto-generated)": "Italian (auto-generated)", - "Japanese": "Japanese", - "Japanese (auto-generated)": "Japanese (auto-generated)", - "Javanese": "Javanese", - "Kannada": "Kannada", - "Kazakh": "Kazakh", - "Khmer": "Khmer", - "Korean": "Korean", - "Korean (auto-generated)": "Korean (auto-generated)", - "Kurdish": "Kurdish", - "Kyrgyz": "Kyrgyz", - "Lao": "Lao", - "Latin": "Latin", - "Latvian": "Latvian", - "Lithuanian": "Lithuanian", - "Luxembourgish": "Luxembourgish", - "Macedonian": "Macedonian", - "Malagasy": "Malagasy", - "Malay": "Malay", - "Malayalam": "Malayalam", - "Maltese": "Maltese", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongolian", - "Nepali": "Nepali", - "Norwegian Bokmål": "Norwegian Bokmål", - "Nyanja": "Nyanja", - "Pashto": "Pashto", - "Persian": "Persian", - "Polish": "Polish", - "Portuguese": "Portuguese", - "Portuguese (auto-generated)": "Portuguese (auto-generated)", - "Portuguese (Brazil)": "Portuguese (Brazil)", - "Punjabi": "Punjabi", - "Romanian": "Romanian", - "Russian": "Russian", - "Russian (auto-generated)": "Russian (auto-generated)", - "Samoan": "Samoan", - "Scottish Gaelic": "Scottish Gaelic", - "Serbian": "Serbian", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Sinhala", - "Slovak": "Slovak", - "Slovenian": "Slovenian", - "Somali": "Somali", - "Southern Sotho": "Southern Sotho", - "Spanish": "Spanish", - "Spanish (auto-generated)": "Spanish (auto-generated)", - "Spanish (Latin America)": "Spanish (Latin America)", - "Spanish (Mexico)": "Spanish (Mexico)", - "Spanish (Spain)": "Spanish (Spain)", - "Sundanese": "Sundanese", - "Swahili": "Swahili", - "Swedish": "Swedish", - "Tajik": "Tajik", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Thai", - "Turkish": "Turkish", - "Turkish (auto-generated)": "Turkish (auto-generated)", - "Ukrainian": "Ukrainian", - "Urdu": "Urdu", - "Uzbek": "Uzbek", - "Vietnamese": "Vietnamese", - "Vietnamese (auto-generated)": "Vietnamese (auto-generated)", - "Welsh": "Welsh", - "Western Frisian": "Western Frisian", - "Xhosa": "Xhosa", - "Yiddish": "Yiddish", - "Yoruba": "Yoruba", - "Zulu": "Zulu", - "generic_count_years": "{{count}} year", - "generic_count_years_plural": "{{count}} years", - "generic_count_months": "{{count}} month", - "generic_count_months_plural": "{{count}} months", - "generic_count_weeks": "{{count}} week", - "generic_count_weeks_plural": "{{count}} weeks", - "generic_count_days": "{{count}} day", - "generic_count_days_plural": "{{count}} days", - "generic_count_hours": "{{count}} hour", - "generic_count_hours_plural": "{{count}} hours", - "generic_count_minutes": "{{count}} minute", - "generic_count_minutes_plural": "{{count}} minutes", - "generic_count_seconds": "{{count}} second", - "generic_count_seconds_plural": "{{count}} seconds", - "Fallback comments: ": "Fallback comments: ", - "Popular": "Popular", - "Search": "Search", - "Top": "Top", - "About": "About", - "Rating: ": "Rating: ", - "preferences_locale_label": "Language: ", - "View as playlist": "View as playlist", - "Default": "Default", - "Music": "Music", - "Gaming": "Gaming", - "News": "News", - "Movies": "Movies", - "Download": "Download", - "Download as: ": "Download as: ", - "Download is disabled": "Download is disabled", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(edited)", - "YouTube comment permalink": "YouTube comment permalink", - "permalink": "permalink", - "`x` marked it with a ❤": "`x` marked it with a ❤", - "Channel Sponsor": "Channel Sponsor", - "Audio mode": "Audio mode", - "Video mode": "Video mode", - "Playlists": "Playlists", - "search_filters_title": "Filters", - "search_filters_date_label": "Upload date", - "search_filters_date_option_none": "Any date", - "search_filters_date_option_hour": "Last Hour", - "search_filters_date_option_today": "Today", - "search_filters_date_option_week": "This week", - "search_filters_date_option_month": "This month", - "search_filters_date_option_year": "This year", - "search_filters_type_label": "Type", - "search_filters_type_option_all": "Any type", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Channel", - "search_filters_type_option_playlist": "Playlist", - "search_filters_type_option_movie": "Movie", - "search_filters_type_option_show": "Show", - "search_filters_duration_label": "Duration", - "search_filters_duration_option_none": "Any duration", - "search_filters_duration_option_short": "Short (< 4 minutes)", - "search_filters_duration_option_medium": "Medium (4 - 20 minutes)", - "search_filters_duration_option_long": "Long (> 20 minutes)", - "search_filters_features_label": "Features", - "search_filters_features_option_live": "Live", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Subtitles/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_vr180": "VR180", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_hdr": "HDR", - "search_filters_features_option_location": "Location", - "search_filters_features_option_purchased": "Purchased", - "search_filters_sort_label": "Sort By", - "search_filters_sort_option_relevance": "Relevance", - "search_filters_sort_option_rating": "Rating", - "search_filters_sort_option_date": "Upload Date", - "search_filters_sort_option_views": "View count", - "search_filters_apply_button": "Apply selected filters", - "Current version: ": "Current version: ", - "next_steps_error_message": "After which you should try to: ", - "next_steps_error_message_refresh": "Refresh", - "next_steps_error_message_go_to_youtube": "Go to YouTube", - "footer_donate_page": "Donate", - "footer_documentation": "Documentation", - "footer_source_code": "Source code", - "footer_original_source_code": "Original source code", - "footer_modfied_source_code": "Modified source code", - "adminprefs_modified_source_code_url_label": "URL to modified source code repository", - "none": "none", - "videoinfo_started_streaming_x_ago": "Started streaming `x` ago", - "videoinfo_watch_on_youTube": "Watch on YouTube", - "videoinfo_youTube_embed_link": "Embed", - "videoinfo_invidious_embed_link": "Embed Link", - "download_subtitles": "Subtitles - `x` (.vtt)", - "user_created_playlists": "`x` created playlists", - "user_saved_playlists": "`x` saved playlists", - "Video unavailable": "Video unavailable", - "preferences_save_player_pos_label": "Save playback position: ", - "crash_page_you_found_a_bug": "It looks like you found a bug in Invidious!", - "crash_page_before_reporting": "Before reporting a bug, make sure that you have:", - "crash_page_refresh": "tried to refresh the page", - "crash_page_switch_instance": "tried to use another instance", - "crash_page_read_the_faq": "read the Frequently Asked Questions (FAQ)", - "crash_page_search_issue": "searched for existing issues on GitHub", - "crash_page_report_issue": "If none of the above helped, please open a new issue on GitHub (preferably in English) and include the following text in your message (do NOT translate that text):", - "error_video_not_in_playlist": "The requested video doesn't exist in this playlist. Click here for the playlist home page.", - "channel_tab_videos_label": "Videos", - "channel_tab_shorts_label": "Shorts", - "channel_tab_streams_label": "Livestreams", - "channel_tab_podcasts_label": "Podcasts", - "channel_tab_releases_label": "Releases", - "channel_tab_playlists_label": "Playlists", - "channel_tab_community_label": "Community", - "channel_tab_channels_label": "Channels", - "toggle_theme": "Toggle Theme", - "carousel_slide": "Slide {{current}} of {{total}}", - "carousel_skip": "Skip the Carousel", - "carousel_go_to": "Go to slide `x`" -} diff --git a/invidious/locales/eo.json b/invidious/locales/eo.json deleted file mode 100755 index 7276c89..0000000 --- a/invidious/locales/eo.json +++ /dev/null @@ -1,490 +0,0 @@ -{ - "LIVE": "NUNA", - "Shared `x` ago": "Konigita antaŭ `x`", - "Unsubscribe": "Malabonu", - "Subscribe": "Abonu", - "View channel on YouTube": "Vidu kanalon en JuTubo", - "View playlist on YouTube": "Vidu ludliston en JuTubo", - "newest": "plej novaj", - "oldest": "plej malnovaj", - "popular": "popularaj", - "last": "lasta", - "Next page": "Sekva paĝo", - "Previous page": "Antaŭa paĝo", - "Clear watch history?": "Ĉu forigi vidohistorion?", - "New password": "Nova pasvorto", - "New passwords must match": "Novaj pasvortoj devas kongrui", - "Authorize token?": "Ĉu rajtigi ĵetonon?", - "Authorize token for `x`?": "Ĉu rajtigi ĵetonon por `x`?", - "Yes": "Jes", - "No": "Ne", - "Import and Export Data": "Importi kaj Eksporti Datumojn", - "Import": "Importi", - "Import Invidious data": "Importi JSON-datumojn de Invidious", - "Import YouTube subscriptions": "Importi abonojn de YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importi abonojn de FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importi abonojn de NewPipe (.json)", - "Import NewPipe data (.zip)": "Importi datumojn de NewPipe (.zip)", - "Export": "Eksporti", - "Export subscriptions as OPML": "Eksporti abonojn kiel OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Eksporti abonojn kiel OPML (por NewPipe kaj FreeTube)", - "Export data as JSON": "Eksporti Invidious-datumojn kiel JSON", - "Delete account?": "Ĉu forigi konton?", - "History": "Historio", - "An alternative front-end to YouTube": "Alternativa fasado al JuTubo", - "JavaScript license information": "Ĝavoskripta licenca informo", - "source": "fonto", - "Log in": "Ensaluti", - "Log in/register": "Ensaluti/Registriĝi", - "User ID": "Uzula identigilo", - "Password": "Pasvorto", - "Time (h:mm:ss):": "Horo (h:mm:ss):", - "Text CAPTCHA": "Teksta CAPTCHA", - "Image CAPTCHA": "Bilda CAPTCHA", - "Sign In": "Ensaluti", - "Register": "Registriĝi", - "E-mail": "Retpoŝto", - "Preferences": "Agordoj", - "preferences_category_player": "Spektilaj agordoj", - "preferences_video_loop_label": "Ĉiam ripeti: ", - "preferences_autoplay_label": "Aŭtomate ludi: ", - "preferences_continue_label": "Ludi sekvan defaŭlte: ", - "preferences_continue_autoplay_label": "Aŭtomate ludi sekvan filmeton: ", - "preferences_listen_label": "Aŭskulti defaŭlte: ", - "preferences_local_label": "Ĉu uzi prokuran servilon por filmetojn? ", - "preferences_speed_label": "Defaŭlta rapido: ", - "preferences_quality_label": "Preferita filmetkvalito: ", - "preferences_volume_label": "Ludila sonforteco: ", - "preferences_comments_label": "Defaŭltaj komentoj: ", - "youtube": "JuTubo", - "reddit": "Reddit", - "preferences_captions_label": "Defaŭltaj subtekstoj: ", - "Fallback captions: ": "Retrodefaŭltaj subtekstoj: ", - "preferences_related_videos_label": "Ĉu montri rilatajn filmetojn? ", - "preferences_annotations_label": "Ĉu montri prinotojn defaŭlte? ", - "preferences_extend_desc_label": "Aŭtomate etendi priskribon de filmeto: ", - "preferences_vr_mode_label": "Interagaj 360-gradaj filmoj (postulas WebGL-n): ", - "preferences_category_visual": "Vidaj preferoj", - "preferences_player_style_label": "Ludila stilo: ", - "Dark mode: ": "Malhela reĝimo: ", - "preferences_dark_mode_label": "Etoso: ", - "dark": "malhela", - "light": "hela", - "preferences_thin_mode_label": "Maldika reĝimo: ", - "preferences_category_misc": "Aliaj agordoj", - "preferences_automatic_instance_redirect_label": "Aŭtomata alidirektado de nodo (retropaŝo al redirect.invidious.io): ", - "preferences_category_subscription": "Abonaj agordoj", - "preferences_annotations_subscribed_label": "Ĉu montri prinotojn defaŭlte por abonitaj kanaloj? ", - "Redirect homepage to feed: ": "Alidirekti hejmpâgon al fluo: ", - "preferences_max_results_label": "Nombro da filmetoj montritaj en fluo: ", - "preferences_sort_label": "Ordi filmetojn per: ", - "published": "publikigo", - "published - reverse": "publitigo - renverse", - "alphabetically": "alfabete", - "alphabetically - reverse": "alfabete - renverse", - "channel name": "kanala nombro", - "channel name - reverse": "kanala nombro - renverse", - "Only show latest video from channel: ": "Nur montri pli novan filmeton el kanalo: ", - "Only show latest unwatched video from channel: ": "Nur montri pli novan malviditan filmeton el kanalo: ", - "preferences_unseen_only_label": "Nur montri malviditajn: ", - "preferences_notifications_only_label": "Nur montri sciigojn (se estas): ", - "Enable web notifications": "Ebligi retejajn sciigojn", - "`x` uploaded a video": "`x` alŝutis filmeton", - "`x` is live": "`x` estas nuna", - "preferences_category_data": "Datumagordoj", - "Clear watch history": "Forigi vidohistorion", - "Import/export data": "Importi/Eksporti datumojn", - "Change password": "Ŝanĝi pasvorton", - "Manage subscriptions": "Administri abonojn", - "Manage tokens": "Administri ĵetonojn", - "Watch history": "Vidohistorio", - "Delete account": "Forigi konton", - "preferences_category_admin": "Agordoj de administranto", - "preferences_default_home_label": "Defaŭlta hejmpaĝo: ", - "preferences_feed_menu_label": "Flua menuo: ", - "preferences_show_nick_label": "Montri kromnomon supre: ", - "Top enabled: ": "Ĉu pli bonaj ŝaltitaj? ", - "CAPTCHA enabled: ": "Ĉu CAPTCHA ŝaltita? ", - "Login enabled: ": "Ĉu ensaluto aktivita? ", - "Registration enabled: ": "Ĉu registriĝo aktivita? ", - "Report statistics: ": "Ĉu raporti statistikojn? ", - "Save preferences": "Konservi agordojn", - "Subscription manager": "Administrilo de abonoj", - "Token manager": "Ĵetona administrilo", - "Token": "Ĵetono", - "Import/export": "Importi/Eksporti", - "unsubscribe": "malabonu", - "revoke": "senvalidigi", - "Subscriptions": "Abonoj", - "search": "serĉi", - "Log out": "Elsaluti", - "Released under the AGPLv3 on Github.": "Eldonita sub la AGPLv3 en GitHub.", - "Source available here.": "Fonto havebla ĉi tie.", - "View JavaScript license information.": "Vidi Ĝavoskriptan licencan informon.", - "View privacy policy.": "Vidi regularon pri privateco.", - "Trending": "Tendencoj", - "Public": "Publika", - "Unlisted": "Ne listigita", - "Private": "Privata", - "View all playlists": "Vidi ĉiujn ludlistojn", - "Updated `x` ago": "Ĝisdatigita antaŭ `x`", - "Delete playlist `x`?": "Ĉu forigi ludliston `x`?", - "Delete playlist": "Forigi ludliston", - "Create playlist": "Krei ludliston", - "Title": "Titolo", - "Playlist privacy": "Privateco de ludlisto", - "Editing playlist `x`": "Redaktante ludlisto `x`", - "Show more": "Montri pli", - "Show less": "Montri malpli", - "Watch on YouTube": "Vidi filmeton en JuTubo", - "Switch Invidious Instance": "Ŝanĝi nodon de Indivious", - "Hide annotations": "Kaŝi prinotojn", - "Show annotations": "Montri prinotojn", - "Genre: ": "Ĝenro: ", - "License: ": "Licenco: ", - "Family friendly? ": "Ĉu familie amika? ", - "Wilson score: ": "Poentaro de Wilson: ", - "Engagement: ": "Intereso: ", - "Whitelisted regions: ": "Regionoj listigitaj en blanka listo: ", - "Blacklisted regions: ": "Regionoj listigitaj en nigra listo: ", - "Shared `x`": "Konigita `x`", - "Premieres in `x`": "Premieras en `x`", - "Premieres `x`": "Premieras `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Saluton! Ŝajnas, ke vi havas Ĝavoskripton malebligitan. Klaku ĉi tie por vidi komentojn, memoru, ke la ŝargado povus daŭri iom pli.", - "View YouTube comments": "Vidi komentojn de JuTubo", - "View more comments on Reddit": "Vidi pli komentoj en Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Vidi `x` komenton", - "": "Vidi `x` komentojn" - }, - "View Reddit comments": "Vidi komentojn de Reddit", - "Hide replies": "Kaŝi respondojn", - "Show replies": "Montri respondojn", - "Incorrect password": "Malbona pasvorto", - "Wrong answer": "Nevalida respondo", - "Erroneous CAPTCHA": "Nevalida CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA estas deviga kampo", - "User ID is a required field": "Uzula identigilo estas deviga kampo", - "Password is a required field": "Pasvorto estas deviga kampo", - "Wrong username or password": "Nevalida uzantnomo aŭ pasvorto", - "Password cannot be empty": "Pasvorto ne povas esti malplena", - "Password cannot be longer than 55 characters": "Pasvorto ne povas esti pli longa ol 55 signoj", - "Please log in": "Bonvolu ensaluti", - "Invidious Private Feed for `x`": "Privata Fluo de Invidious por `x`", - "channel:`x`": "kanalo:`x`", - "Deleted or invalid channel": "Forigita aŭ nevalida kanalo", - "This channel does not exist.": "Ĉi tiu kanalo ne ekzistas.", - "Could not get channel info.": "Ne povis havigi kanalan informon.", - "Could not fetch comments": "Ne povis venigi komentojn", - "`x` ago": "antaŭ `x`", - "Load more": "Ŝarĝi pli", - "Could not create mix.": "Ne povis krei mikson.", - "Empty playlist": "Ludlisto estas malplena", - "Not a playlist.": "Nevalida ludlisto.", - "Playlist does not exist.": "Ludlisto ne ekzistas.", - "Could not pull trending pages.": "Ne povis venigi tendencajn paĝojn.", - "Hidden field \"challenge\" is a required field": "Kaŝita kampo \"challenge\" estas deviga kampo", - "Hidden field \"token\" is a required field": "Kaŝita kampo \"token\" estas deviga kampo", - "Erroneous challenge": "Nevalida defio", - "Erroneous token": "Nevalida ĵetono", - "No such user": "Nevalida uzanto", - "Token is expired, please try again": "Ĵetono senvalidiĝis, bonvolu provi denove", - "English": "Angla", - "English (auto-generated)": "Angla (aŭtomate generita)", - "Afrikaans": "Afrikansa", - "Albanian": "Albana", - "Amharic": "Amhara", - "Arabic": "Araba", - "Armenian": "Armena", - "Azerbaijani": "Azerbajĝana", - "Bangla": "Bengala", - "Basque": "Eŭska", - "Belarusian": "Belorusa", - "Bosnian": "Bosna", - "Bulgarian": "Bulgara", - "Burmese": "Birma", - "Catalan": "Kataluna", - "Cebuano": "Cebua", - "Chinese (Simplified)": "Ĉina (simpligita)", - "Chinese (Traditional)": "Ĉina (tradicia)", - "Corsican": "Korsika", - "Croatian": "Kroata", - "Czech": "Ĉeĥa", - "Danish": "Dana", - "Dutch": "Nederlanda", - "Esperanto": "Esperanto", - "Estonian": "Estona", - "Filipino": "Filipina", - "Finnish": "Finna", - "French": "Franca", - "Galician": "Galega", - "Georgian": "Kartvela", - "German": "Germana", - "Greek": "Greka", - "Gujarati": "Guĝarata", - "Haitian Creole": "Haitia kreola", - "Hausa": "Haŭsa", - "Hawaiian": "Havaja", - "Hebrew": "Hebrea", - "Hindi": "Hindia", - "Hmong": "Miaa", - "Hungarian": "Hungara", - "Icelandic": "Islanda", - "Igbo": "Igba", - "Indonesian": "Indonezia", - "Irish": "Irlanda", - "Italian": "Itala", - "Japanese": "Japana", - "Javanese": "Java", - "Kannada": "Kanara", - "Kazakh": "Kazaĥa", - "Khmer": "Kmera", - "Korean": "Korea", - "Kurdish": "Kurda", - "Kyrgyz": "Kirgiza", - "Lao": "Laosa", - "Latin": "Latina", - "Latvian": "Latva", - "Lithuanian": "Litova", - "Luxembourgish": "Luksemburga", - "Macedonian": "Makedona", - "Malagasy": "Malagasa", - "Malay": "Malaja", - "Malayalam": "Malajala", - "Maltese": "Malta", - "Maori": "Maoria", - "Marathi": "Marata", - "Mongolian": "Mongola", - "Nepali": "Nepala", - "Norwegian Bokmål": "Norvega", - "Nyanja": "Njanĝa", - "Pashto": "Paŝtuna", - "Persian": "Persa", - "Polish": "Pola", - "Portuguese": "Portugala", - "Punjabi": "Panĝaba", - "Romanian": "Rumana", - "Russian": "Rusa", - "Samoan": "Samoa", - "Scottish Gaelic": "Skotgaela", - "Serbian": "Serba", - "Shona": "Ŝona", - "Sindhi": "Sinda", - "Sinhala": "Sinhala", - "Slovak": "Slovaka", - "Slovenian": "Slovena", - "Somali": "Somala", - "Southern Sotho": "Sota", - "Spanish": "Hispana", - "Spanish (Latin America)": "Hispana (Latinameriko)", - "Sundanese": "Sunda", - "Swahili": "Svahila", - "Swedish": "Sveda", - "Tajik": "Taĝika", - "Tamil": "Tamila", - "Telugu": "Telugua", - "Thai": "Taja", - "Turkish": "Turka", - "Ukrainian": "Ukraina", - "Urdu": "Urduo", - "Uzbek": "Uzbeka", - "Vietnamese": "Vjetnama", - "Welsh": "Kimra", - "Western Frisian": "Okcidentfrisa", - "Xhosa": "Kosa", - "Yiddish": "Jida", - "Yoruba": "Joruba", - "Zulu": "Zulua", - "Fallback comments: ": "Retrodefaŭltaj komentoj: ", - "Popular": "Popularaj", - "Search": "Serĉi", - "Top": "Supraj", - "About": "Pri", - "Rating: ": "Takso: ", - "preferences_locale_label": "Lingvo: ", - "View as playlist": "Vidi kiel ludlisto", - "Default": "Defaŭlte", - "Music": "Muziko", - "Gaming": "Komputiloludoj", - "News": "Novaĵoj", - "Movies": "Filmoj", - "Download": "Elŝuti", - "Download as: ": "Elŝuti kiel: ", - "%A %B %-d, %Y": "%A %-d de %B %Y", - "(edited)": "(redaktita)", - "YouTube comment permalink": "Fiksligilo de la komento en JuTubo", - "permalink": "konstanta ligilo", - "`x` marked it with a ❤": "`x` markis ĝin per ❤", - "Audio mode": "Aŭda reĝimo", - "Video mode": "Videa reĝimo", - "channel_tab_videos_label": "Videoj", - "Playlists": "Ludlistoj", - "channel_tab_community_label": "Komunumo", - "search_filters_sort_option_relevance": "rilateco", - "search_filters_sort_option_rating": "takso", - "search_filters_sort_option_date": "dato", - "search_filters_sort_option_views": "vidoj", - "search_filters_type_label": "enhavtipo", - "search_filters_duration_label": "daŭro", - "search_filters_features_label": "trajtoj", - "search_filters_sort_label": "ordigi", - "search_filters_date_option_hour": "horo", - "search_filters_date_option_today": "hodiaŭ", - "search_filters_date_option_week": "semajno", - "search_filters_date_option_month": "monato", - "search_filters_date_option_year": "jaro", - "search_filters_type_option_video": "filmeto", - "search_filters_type_option_channel": "kanalo", - "search_filters_type_option_playlist": "ludlisto", - "search_filters_type_option_movie": "filmo", - "search_filters_type_option_show": "spektaĵo", - "search_filters_features_option_hd": "altdistingiva", - "search_filters_features_option_subtitles": "subtekstoj", - "search_filters_features_option_c_commons": "Krea Komunaĵo", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "nuna", - "search_filters_features_option_four_k": "4k", - "search_filters_features_option_location": "loko", - "search_filters_features_option_hdr": "granddinamikgama", - "Current version: ": "Nuna versio: ", - "next_steps_error_message": "Poste, vi provu: ", - "next_steps_error_message_refresh": "Reŝargi", - "next_steps_error_message_go_to_youtube": "Iri al JuTubo", - "search_filters_duration_option_long": "Longa (> 20 minutos)", - "search_filters_duration_option_short": "Mallonga (< 4 minutos)", - "footer_documentation": "Dokumentaro", - "footer_source_code": "Fontkodo", - "adminprefs_modified_source_code_url_label": "URL al modifita deponejo de fontkodo", - "footer_modfied_source_code": "Modifita Fontkodo", - "footer_original_source_code": "Originala fontkodo", - "footer_donate_page": "Donaci", - "preferences_region_label": "Lando de la enhavo: ", - "preferences_quality_dash_label": "Preferata DASH-a videkvalito: ", - "search_filters_title": "Filtri", - "preferences_quality_dash_option_best": "Plej bona", - "preferences_quality_dash_option_worst": "Malplej bona", - "Popular enabled: ": "Populara sekcio ebligita: ", - "search_message_no_results": "Neniu rezulto trovita.", - "search_message_use_another_instance": " Vi ankaŭ povas serĉi en alia nodo.", - "tokens_count": "{{count}} ĵetono", - "tokens_count_plural": "{{count}} ĵetonoj", - "subscriptions_unseen_notifs_count": "{{count}} nevidita sciigo", - "subscriptions_unseen_notifs_count_plural": "{{count}} neviditaj sciigoj", - "Indonesian (auto-generated)": "Indonezia (aŭtomate generita)", - "Interlingue": "Interlingvo", - "Italian (auto-generated)": "Itala (aŭtomate generita)", - "Korean (auto-generated)": "Korea (aŭtomate generita)", - "Portuguese (Brazil)": "Portugala (Brazilo)", - "Portuguese (auto-generated)": "Portugala (aŭtomate generita)", - "Russian (auto-generated)": "Rusa (aŭtomate generita)", - "Spanish (Spain)": "Hispana (Hispanio)", - "generic_count_years": "{{count}} jaro", - "generic_count_years_plural": "{{count}} jaroj", - "Turkish (auto-generated)": "Turka (aŭtomate generita)", - "Vietnamese (auto-generated)": "Vjetnama (aŭtomate generita)", - "generic_count_hours": "{{count}} horo", - "generic_count_hours_plural": "{{count}} horoj", - "generic_count_minutes": "{{count}} minuto", - "generic_count_minutes_plural": "{{count}} minutoj", - "search_filters_date_label": "Alŝutdato", - "search_filters_date_option_none": "Ajna dato", - "search_filters_duration_option_medium": "Meza (4 - 20 minutoj)", - "search_filters_features_option_three_sixty": "360º", - "search_filters_features_option_vr180": "VR180", - "user_created_playlists": "`x`kreitaj ludlistoj", - "user_saved_playlists": "`x`konservitaj ludlistoj", - "crash_page_switch_instance": "klopodis uzi alian nodon", - "crash_page_read_the_faq": "legis la oftajn demandojn", - "error_video_not_in_playlist": "La petita video ne ekzistas en ĉi tiu ludlisto. Alklaku ĉi tie por iri al la ludlista hejmpaĝo.", - "crash_page_search_issue": "serĉis por ekzistantaj problemoj en GitHub", - "generic_count_seconds": "{{count}} sekundo", - "generic_count_seconds_plural": "{{count}} sekundoj", - "preferences_quality_dash_option_144p": "144p", - "comments_view_x_replies": "Vidi {{count}} respondon", - "comments_view_x_replies_plural": "Vidi {{count}} respondojn", - "preferences_quality_dash_option_360p": "360p", - "invidious": "Invidious", - "Chinese (Taiwan)": "Ĉina (Tajvano)", - "English (United Kingdom)": "Angla (Britio)", - "search_filters_features_option_purchased": "Aĉetita", - "Japanese (auto-generated)": "Japana (aŭtomate generita)", - "search_message_change_filters_or_query": "Provu vastigi vian serĉpeton kaj/aŭ ŝanĝi la filtrilojn.", - "preferences_quality_dash_option_1080p": "1080p", - "generic_count_weeks": "{{count}} semajno", - "generic_count_weeks_plural": "{{count}} semajnoj", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_auto": "Aŭtomate", - "preferences_quality_dash_option_2160p": "2160p", - "English (United States)": "Angla (Usono)", - "Chinese": "Ĉina", - "videoinfo_watch_on_youTube": "Vidi en YouTube", - "crash_page_you_found_a_bug": "Ŝajnas, ke vi trovis eraron en Invidious!", - "comments_points_count": "{{count}} poento", - "comments_points_count_plural": "{{count}} poentoj", - "Cantonese (Hong Kong)": "Kantona (Honkongo)", - "preferences_watch_history_label": "Ebligi vidohistorion: ", - "preferences_quality_option_small": "Eta", - "generic_playlists_count": "{{count}} ludlisto", - "generic_playlists_count_plural": "{{count}} ludlistoj", - "videoinfo_youTube_embed_link": "Enigi", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Meza", - "generic_subscriptions_count": "{{count}} abono", - "generic_subscriptions_count_plural": "{{count}} abonoj", - "videoinfo_started_streaming_x_ago": "Komercis elsendi antaŭ `x`", - "download_subtitles": "Subtitoloj - `x` (.vtt)", - "videoinfo_invidious_embed_link": "Enigi Ligilon", - "crash_page_report_issue": "Se neniu el la antaŭaj agoj helpis, bonvolu estigi novan problemon en GitHub (prefere angle) kaj inkludi la jenan tekston en via mesaĝo (NE traduku tiun tekston):", - "preferences_quality_option_dash": "DASH (adapta kvalito)", - "Chinese (Hong Kong)": "Ĉina (Honkongo)", - "Chinese (China)": "Ĉina (Ĉinio)", - "Dutch (auto-generated)": "Nederlanda (aŭtomate generita)", - "German (auto-generated)": "Germana (aŭtomate generita)", - "French (auto-generated)": "Franca (aŭtomate generita)", - "Spanish (Mexico)": "Hispana (Meksiko)", - "Spanish (auto-generated)": "Hispana (aŭtomate generita)", - "generic_count_days": "{{count}} tago", - "generic_count_days_plural": "{{count}} tagoj", - "search_filters_type_option_all": "Ajna speco", - "search_filters_duration_option_none": "Ajna daŭro", - "search_filters_apply_button": "Uzi elektitajn filtrilojn", - "none": "neniu", - "Video unavailable": "Nedisponebla video", - "crash_page_before_reporting": "Antaŭ ol informi pri eraro certigu, ke vi:", - "crash_page_refresh": "klopodis reŝarĝi la paĝon", - "generic_views_count": "{{count}} spekto", - "generic_views_count_plural": "{{count}} spektoj", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videoj", - "generic_subscribers_count": "{{count}} abonanto", - "generic_subscribers_count_plural": "{{count}} abonantoj", - "generic_count_months": "{{count}} monato", - "generic_count_months_plural": "{{count}} monatoj", - "preferences_save_player_pos_label": "Konservi ludadan pozicion: ", - "channel_tab_streams_label": "Tujelsendoj", - "channel_tab_playlists_label": "Ludlistoj", - "channel_tab_channels_label": "Kanaloj", - "channel_tab_shorts_label": "Mallongaj", - "Music in this video": "Muziko en ĉi tiu video", - "Artist: ": "Artisto: ", - "Album: ": "Albumo: ", - "Channel Sponsor": "Kanala sponsoro", - "Song: ": "Muzikaĵo: ", - "Standard YouTube license": "Implicita YouTube-licenco", - "Download is disabled": "Elŝuto estas malebligita", - "Import YouTube playlist (.csv)": "Importi YouTube-ludliston (.csv)", - "generic_button_edit": "Redakti", - "playlist_button_add_items": "Aldoni videojn", - "generic_button_rss": "RSS", - "generic_button_delete": "Forigi", - "channel_tab_podcasts_label": "Podkastoj", - "generic_button_cancel": "Nuligi", - "channel_tab_releases_label": "Eldonoj", - "generic_button_save": "Konservi", - "generic_channels_count": "{{count}} kanalo", - "generic_channels_count_plural": "{{count}} kanaloj" -} diff --git a/invidious/locales/es.json b/invidious/locales/es.json deleted file mode 100755 index 7a41710..0000000 --- a/invidious/locales/es.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "DIRECTO", - "Shared `x` ago": "Compartido hace `x`", - "Unsubscribe": "Desuscribirse", - "Subscribe": "Suscribirse", - "View channel on YouTube": "Ver el canal en YouTube", - "View playlist on YouTube": "Ver lista de reproducción en YouTube", - "newest": "más nuevos", - "oldest": "más viejos", - "popular": "populares", - "last": "último", - "Next page": "Página siguiente", - "Previous page": "Página anterior", - "Clear watch history?": "¿Quiere borrar el historial de reproducción?", - "New password": "Nueva contraseña", - "New passwords must match": "Las nuevas contraseñas deben coincidir", - "Authorize token?": "¿Autorizar el token?", - "Authorize token for `x`?": "¿Autorizar el token para `x`?", - "Yes": "Sí", - "No": "No", - "Import and Export Data": "Importación y exportación de datos", - "Import": "Importar", - "Import Invidious data": "Importar datos JSON de Invidious", - "Import YouTube subscriptions": "Importar suscripciones de YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importar suscripciones de FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importar suscripciones de NewPipe (.json)", - "Import NewPipe data (.zip)": "Importar datos de NewPipe (.zip)", - "Export": "Exportar", - "Export subscriptions as OPML": "Exportar suscripciones como OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportar suscripciones como OPML (para NewPipe y FreeTube)", - "Export data as JSON": "Exportar datos de Invidious como JSON", - "Delete account?": "¿Quiere borrar la cuenta?", - "History": "Historial", - "An alternative front-end to YouTube": "Una interfaz alternativa para YouTube", - "JavaScript license information": "Información de licencia de JavaScript", - "source": "código fuente", - "Log in": "Iniciar sesión", - "Log in/register": "Iniciar sesión/Registrarse", - "User ID": "Nombre", - "Password": "Contraseña", - "Time (h:mm:ss):": "Hora (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA en texto", - "Image CAPTCHA": "CAPTCHA en imagen", - "Sign In": "Iniciar sesión", - "Register": "Registrarse", - "E-mail": "Correo", - "Preferences": "Preferencias", - "preferences_category_player": "Preferencias del reproductor", - "preferences_video_loop_label": "Repetir siempre: ", - "preferences_autoplay_label": "Reproducción automática: ", - "preferences_continue_label": "Reproducir siguiente por defecto: ", - "preferences_continue_autoplay_label": "Reproducir automáticamente el video siguiente: ", - "preferences_listen_label": "Activar el sonido por defecto: ", - "preferences_local_label": "¿Usar un proxy para los videos? ", - "preferences_speed_label": "Velocidad por defecto: ", - "preferences_quality_label": "Calidad de video preferida: ", - "preferences_volume_label": "Volumen del reproductor: ", - "preferences_comments_label": "Comentarios por defecto: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Subtítulos por defecto: ", - "Fallback captions: ": "Subtítulos alternativos: ", - "preferences_related_videos_label": "¿Mostrar videos relacionados? ", - "preferences_annotations_label": "¿Mostrar anotaciones por defecto? ", - "preferences_extend_desc_label": "Extender automáticamente la descripción del video: ", - "preferences_vr_mode_label": "Videos interactivos de 360 grados (necesita WebGL): ", - "preferences_category_visual": "Preferencias visuales", - "preferences_player_style_label": "Estilo de reproductor: ", - "Dark mode: ": "Modo oscuro: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "oscuro", - "light": "claro", - "preferences_thin_mode_label": "Modo compacto: ", - "preferences_category_misc": "Preferencias misceláneas", - "preferences_automatic_instance_redirect_label": "Redirección automática de instancia (segunda opción a redirect.invidious.io): ", - "preferences_category_subscription": "Preferencias de la suscripción", - "preferences_annotations_subscribed_label": "¿Mostrar anotaciones por defecto para los canales suscritos? ", - "Redirect homepage to feed: ": "Redirigir la página de inicio a la fuente: ", - "preferences_max_results_label": "Número de videos mostrados en la fuente: ", - "preferences_sort_label": "Ordenar los videos por: ", - "published": "fecha de publicación", - "published - reverse": "fecha de publicación: orden inverso", - "alphabetically": "alfabéticamente", - "alphabetically - reverse": "alfabéticamente: orden inverso", - "channel name": "nombre del canal", - "channel name - reverse": "nombre del canal: orden inverso", - "Only show latest video from channel: ": "Mostrar solo el último video del canal: ", - "Only show latest unwatched video from channel: ": "Mostrar solo el último video sin ver del canal: ", - "preferences_unseen_only_label": "Mostrar solo los no vistos: ", - "preferences_notifications_only_label": "Mostrar solo notificaciones (si hay alguna): ", - "Enable web notifications": "Habilitar notificaciones web", - "`x` uploaded a video": "`x` subió un video", - "`x` is live": "`x` está en directo", - "preferences_category_data": "Preferencias de los datos", - "Clear watch history": "Borrar el historial de reproducción", - "Import/export data": "Importar/Exportar datos", - "Change password": "Cambiar contraseña", - "Manage subscriptions": "Gestionar las suscripciones", - "Manage tokens": "Gestionar tokens", - "Watch history": "Historial de reproducción", - "Delete account": "Borrar cuenta", - "preferences_category_admin": "Preferencias de administrador", - "preferences_default_home_label": "Página de inicio por defecto: ", - "preferences_feed_menu_label": "Menú de fuentes: ", - "preferences_show_nick_label": "Mostrar nombre de usuario encima: ", - "Top enabled: ": "¿Habilitar los destacados? ", - "CAPTCHA enabled: ": "¿Habilitar los CAPTCHA? ", - "Login enabled: ": "¿Habilitar el inicio de sesión? ", - "Registration enabled: ": "¿Habilitar el registro? ", - "Report statistics: ": "¿Enviar estadísticas? ", - "Save preferences": "Guardar las preferencias", - "Subscription manager": "Gestor de suscripciones", - "Token manager": "Gestor de tokens", - "Token": "Ficha", - "Import/export": "Importar/Exportar", - "unsubscribe": "desuscribirse", - "revoke": "revocar", - "Subscriptions": "Suscripciones", - "search": "buscar", - "Log out": "Cerrar la sesión", - "Released under the AGPLv3 on Github.": "Publicado bajo la AGPLv3 en GitHub.", - "Source available here.": "Código fuente disponible aquí.", - "View JavaScript license information.": "Ver información de licencia de JavaScript.", - "View privacy policy.": "Ver la política de privacidad.", - "Trending": "Tendencias", - "Public": "Público", - "Unlisted": "No listado", - "Private": "Privado", - "View all playlists": "Ver todas las listas de reproducción", - "Updated `x` ago": "Actualizado hace `x`", - "Delete playlist `x`?": "¿Borrar la lista de reproducción `x`?", - "Delete playlist": "Borrar lista de reproducción", - "Create playlist": "Crear lista de reproducción", - "Title": "Título", - "Playlist privacy": "Privacidad de la lista de reproducción", - "Editing playlist `x`": "Editando la lista de reproducción 'x'", - "Show more": "Mostrar más", - "Show less": "Mostrar menos", - "Watch on YouTube": "Ver en YouTube", - "Switch Invidious Instance": "Cambiar Instancia de Invidious", - "Hide annotations": "Ocultar anotaciones", - "Show annotations": "Mostrar anotaciones", - "Genre: ": "Género: ", - "License: ": "Licencia: ", - "Family friendly? ": "¿Filtrar contenidos? ", - "Wilson score: ": "Puntuación Wilson: ", - "Engagement: ": "Retención: ", - "Whitelisted regions: ": "Regiones permitidas: ", - "Blacklisted regions: ": "Regiones bloqueadas: ", - "Shared `x`": "Compartido `x`", - "Premieres in `x`": "Se estrena en `x`", - "Premieres `x`": "Estrenos `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "¡Hola! Parece que tienes JavaScript desactivado. Haz clic aquí para ver los comentarios, ten en cuenta que pueden tardar un poco más en cargar.", - "View YouTube comments": "Ver los comentarios de YouTube", - "View more comments on Reddit": "Ver más comentarios en Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentario", - "": "Ver `x` comentarios" - }, - "View Reddit comments": "Ver los comentarios de Reddit", - "Hide replies": "Ocultar las respuestas", - "Show replies": "Mostrar las respuestas", - "Incorrect password": "Contraseña incorrecta", - "Wrong answer": "Respuesta no válida", - "Erroneous CAPTCHA": "CAPTCHA no válido", - "CAPTCHA is a required field": "El CAPTCHA es un campo obligatorio", - "User ID is a required field": "El nombre es un campo obligatorio", - "Password is a required field": "La contraseña es un campo obligatorio", - "Wrong username or password": "Nombre o contraseña incorrecto", - "Password cannot be empty": "La contraseña no puede estar en blanco", - "Password cannot be longer than 55 characters": "La contraseña no debe tener más de 55 caracteres", - "Please log in": "Inicie sesión, por favor", - "Invidious Private Feed for `x`": "Fuente privada de Invidious para `x`", - "channel:`x`": "canal: `x`", - "Deleted or invalid channel": "El canal no es válido o ha sido borrado", - "This channel does not exist.": "El canal no existe.", - "Could not get channel info.": "No se ha podido obtener información del canal.", - "Could not fetch comments": "No se han podido recuperar los comentarios", - "`x` ago": "hace `x`", - "Load more": "Cargar más", - "Could not create mix.": "No se ha podido crear la mezcla.", - "Empty playlist": "La lista de reproducción está vacía", - "Not a playlist.": "Lista de reproducción no válida.", - "Playlist does not exist.": "La lista de reproducción no existe.", - "Could not pull trending pages.": "No se han podido obtener las páginas de tendencias.", - "Hidden field \"challenge\" is a required field": "El campo oculto «desafío» es un campo obligatorio", - "Hidden field \"token\" is a required field": "El campo oculto «símbolo» es un campo obligatorio", - "Erroneous challenge": "Desafío no válido", - "Erroneous token": "Símbolo no válido", - "No such user": "Usuario no existe", - "Token is expired, please try again": "El símbolo ha caducado, inténtelo de nuevo", - "English": "Inglés", - "English (auto-generated)": "Inglés (generado automáticamente)", - "Afrikaans": "Afrikáans", - "Albanian": "Albanés", - "Amharic": "Amárico", - "Arabic": "Árabe", - "Armenian": "Armenio", - "Azerbaijani": "Azerbaiyano", - "Bangla": "Bengalí", - "Basque": "Euskera", - "Belarusian": "Bielorruso", - "Bosnian": "Bosnio", - "Bulgarian": "Búlgaro", - "Burmese": "Birmano", - "Catalan": "Catalán", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chino (simplificado)", - "Chinese (Traditional)": "Chino (tradicional)", - "Corsican": "Corso", - "Croatian": "Croata", - "Czech": "Checo", - "Danish": "Danés", - "Dutch": "Holandés", - "Esperanto": "Esperanto", - "Estonian": "Estonio", - "Filipino": "Filipino", - "Finnish": "Finés", - "French": "Francés", - "Galician": "Gallego", - "Georgian": "Georgiano", - "German": "Alemán", - "Greek": "Griego", - "Gujarati": "Guyaratí", - "Haitian Creole": "Criollo haitiano", - "Hausa": "Hausa", - "Hawaiian": "Hawaiano", - "Hebrew": "Hebreo", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Húngaro", - "Icelandic": "Islandés", - "Igbo": "Igbo", - "Indonesian": "Indonesio", - "Irish": "Irlandés", - "Italian": "Italiano", - "Japanese": "Japonés", - "Javanese": "Javanés", - "Kannada": "Canarés", - "Kazakh": "Kazajo", - "Khmer": "Camboyano", - "Korean": "Coreano", - "Kurdish": "Kurdo", - "Kyrgyz": "Kirguís", - "Lao": "Laosiano", - "Latin": "Latín", - "Latvian": "Letón", - "Lithuanian": "Lituano", - "Luxembourgish": "Luxemburgués", - "Macedonian": "Macedonio", - "Malagasy": "Malgache", - "Malay": "Malayo", - "Malayalam": "Malabar", - "Maltese": "Maltés", - "Maori": "Maorí", - "Marathi": "Maratí", - "Mongolian": "Mongol", - "Nepali": "Nepalí", - "Norwegian Bokmål": "Noruego", - "Nyanja": "Chichewa", - "Pashto": "Pastún", - "Persian": "Persa", - "Polish": "Polaco", - "Portuguese": "Portugués", - "Punjabi": "Panyabí", - "Romanian": "Rumano", - "Russian": "Ruso", - "Samoan": "Samoano", - "Scottish Gaelic": "Gaélico escocés", - "Serbian": "Serbio", - "Shona": "Shona", - "Sindhi": "Sindi", - "Sinhala": "Cingalés", - "Slovak": "Eslovaco", - "Slovenian": "Esloveno", - "Somali": "Somalí", - "Southern Sotho": "Sesoto", - "Spanish": "Español", - "Spanish (Latin America)": "Español (Hispanoamérica)", - "Sundanese": "Sondanés", - "Swahili": "Suajili", - "Swedish": "Sueco", - "Tajik": "Tayiko", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Tailandés", - "Turkish": "Turco", - "Ukrainian": "Ucraniano", - "Urdu": "Urdu", - "Uzbek": "Uzbeko", - "Vietnamese": "Vietnamita", - "Welsh": "Galés", - "Western Frisian": "Frisón", - "Xhosa": "Xhosa", - "Yiddish": "Yidis", - "Yoruba": "Yoruba", - "Zulu": "Zulú", - "Fallback comments: ": "Comentarios alternativos: ", - "Popular": "Populares", - "Search": "Buscar", - "Top": "Destacados", - "About": "Acerca de", - "Rating: ": "Valoración: ", - "preferences_locale_label": "Idioma: ", - "View as playlist": "Ver como lista de reproducción", - "Default": "Por defecto", - "Music": "Música", - "Gaming": "Videojuegos", - "News": "Noticias", - "Movies": "Películas", - "Download": "Descargar", - "Download as: ": "Descargar como: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(editado)", - "YouTube comment permalink": "Enlace permanente de comentario de YouTube", - "permalink": "enlace permanente", - "`x` marked it with a ❤": "`x` lo ha marcado con un ❤", - "Audio mode": "Modo de audio", - "Video mode": "Modo de video", - "channel_tab_videos_label": "Videos", - "Playlists": "Listas de reproducción", - "channel_tab_community_label": "Comunidad", - "search_filters_sort_option_relevance": "Relevancia", - "search_filters_sort_option_rating": "Valoración", - "search_filters_sort_option_date": "Fecha de subida", - "search_filters_sort_option_views": "Visualizaciones", - "search_filters_type_label": "Tipo de contenido", - "search_filters_duration_label": "Duración", - "search_filters_features_label": "Funcionalidades", - "search_filters_sort_label": "Ordenar", - "search_filters_date_option_hour": "Última hora", - "search_filters_date_option_today": "Hoy", - "search_filters_date_option_week": "Esta semana", - "search_filters_date_option_month": "Este mes", - "search_filters_date_option_year": "Este año", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Canal", - "search_filters_type_option_playlist": "Lista de reproducción", - "search_filters_type_option_movie": "Película", - "search_filters_type_option_show": "Programa", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Subtítulos", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "En directo", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Ubicación", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Versión actual: ", - "next_steps_error_message": "Después de lo cual debes intentar: ", - "next_steps_error_message_refresh": "Recargar la página", - "next_steps_error_message_go_to_youtube": "Ir a YouTube", - "search_filters_duration_option_short": "Menos de 4 minutos", - "search_filters_duration_option_medium": "De 4 a 20 minutos", - "search_filters_duration_option_long": "Más de 20 minutos", - "footer_documentation": "Documentación", - "footer_original_source_code": "Código fuente original", - "adminprefs_modified_source_code_url_label": "Enlace al repositorio de código fuente modificado", - "footer_source_code": "Código fuente", - "footer_modfied_source_code": "Código fuente modificado", - "footer_donate_page": "Donar", - "preferences_region_label": "País del contenido: ", - "preferences_quality_dash_label": "Calidad de video DASH preferida: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Intermedia", - "preferences_quality_dash_option_auto": "Automática", - "none": "ninguno", - "videoinfo_started_streaming_x_ago": "Comenzó difusión hace `x`", - "download_subtitles": "Subtítulos- `x` (.vtt)", - "user_created_playlists": "`x` listas de reproducción creadas", - "user_saved_playlists": "`x` listas de reproducción guardadas", - "Video unavailable": "Video no disponible", - "videoinfo_youTube_embed_link": "Insertar", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_4320p": "4320p", - "invidious": "Invidious", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_option_dash": "DASH (calidad adaptativa)", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_option_small": "Pequeña", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_best": "La mejor", - "preferences_quality_dash_option_worst": "La peor", - "videoinfo_invidious_embed_link": "Enlace para Insertar", - "preferences_quality_dash_option_1080p": "1080p", - "search_filters_features_option_purchased": "Comprado", - "search_filters_features_option_three_sixty": "360°", - "videoinfo_watch_on_youTube": "Ver en YouTube", - "preferences_save_player_pos_label": "Guardar posición de reproducción: ", - "generic_views_count_0": "{{count}} visualización", - "generic_views_count_1": "{{count}} visualizaciones", - "generic_views_count_2": "{{count}} visualizaciones", - "generic_subscribers_count_0": "{{count}} suscriptor", - "generic_subscribers_count_1": "{{count}} suscriptores", - "generic_subscribers_count_2": "{{count}} suscriptores", - "generic_subscriptions_count_0": "{{count}} suscripción", - "generic_subscriptions_count_1": "{{count}} suscripciones", - "generic_subscriptions_count_2": "{{count}} suscripciones", - "subscriptions_unseen_notifs_count_0": "{{count}} notificación sin ver", - "subscriptions_unseen_notifs_count_1": "{{count}} notificaciones sin ver", - "subscriptions_unseen_notifs_count_2": "{{count}} notificaciones sin ver", - "generic_count_days_0": "{{count}} día", - "generic_count_days_1": "{{count}} días", - "generic_count_days_2": "{{count}} días", - "comments_view_x_replies_0": "Ver {{count}} respuesta", - "comments_view_x_replies_1": "Ver {{count}} respuestas", - "comments_view_x_replies_2": "Ver {{count}} respuestas", - "generic_count_weeks_0": "{{count}} semana", - "generic_count_weeks_1": "{{count}} semanas", - "generic_count_weeks_2": "{{count}} semanas", - "generic_playlists_count_0": "{{count}} lista de reproducción", - "generic_playlists_count_1": "{{count}} listas de reproducciones", - "generic_playlists_count_2": "{{count}} listas de reproducciones", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} videos", - "generic_videos_count_2": "{{count}} videos", - "generic_count_months_0": "{{count}} mes", - "generic_count_months_1": "{{count}} meses", - "generic_count_months_2": "{{count}} meses", - "comments_points_count_0": "{{count}} punto", - "comments_points_count_1": "{{count}} puntos", - "comments_points_count_2": "{{count}} puntos", - "generic_count_years_0": "{{count}} año", - "generic_count_years_1": "{{count}} años", - "generic_count_years_2": "{{count}} años", - "generic_count_hours_0": "{{count}} hora", - "generic_count_hours_1": "{{count}} horas", - "generic_count_hours_2": "{{count}} horas", - "generic_count_minutes_0": "{{count}} minuto", - "generic_count_minutes_1": "{{count}} minutos", - "generic_count_minutes_2": "{{count}} minutos", - "generic_count_seconds_0": "{{count}} segundo", - "generic_count_seconds_1": "{{count}} segundos", - "generic_count_seconds_2": "{{count}} segundos", - "crash_page_before_reporting": "Antes de notificar un error asegúrate de que has:", - "crash_page_switch_instance": "probado a usar otra instancia", - "crash_page_read_the_faq": "leído las Preguntas Frecuentes", - "crash_page_search_issue": "buscado problemas existentes en GitHub", - "crash_page_you_found_a_bug": "¡Parece que has encontrado un error en Invidious!", - "crash_page_refresh": "probado a recargar la página", - "crash_page_report_issue": "Si nada de lo anterior ha sido de ayuda, por favor, abre una nueva incidencia en GitHub (preferiblemente en inglés) e incluye el siguiente texto en tu mensaje (NO traduzcas este texto):", - "English (United States)": "Inglés (Estados Unidos)", - "Cantonese (Hong Kong)": "Cantonés (Hong Kong)", - "Dutch (auto-generated)": "Neerlandés (generados automáticamente)", - "French (auto-generated)": "Francés (generados automáticamente)", - "Interlingue": "Occidental", - "Japanese (auto-generated)": "Japonés (generados automáticamente)", - "Russian (auto-generated)": "Ruso (generados automáticamente)", - "Spanish (Spain)": "Español (España)", - "Vietnamese (auto-generated)": "Vietnamita (generados automáticamente)", - "English (United Kingdom)": "Inglés (Reino Unido)", - "Chinese (Taiwan)": "Chino (Taiwán)", - "German (auto-generated)": "Alemán (generados automáticamente)", - "Italian (auto-generated)": "Italiano (generados automáticamente)", - "Turkish (auto-generated)": "Turco (generados automáticamente)", - "Portuguese (Brazil)": "Portugués (Brasil)", - "Indonesian (auto-generated)": "Indonesio (generados automáticamente)", - "Portuguese (auto-generated)": "Portugués (generados automáticamente)", - "Chinese": "Chino", - "Chinese (Hong Kong)": "Chino (Hong Kong)", - "Chinese (China)": "Chino (China)", - "Korean (auto-generated)": "Coreano (generados automáticamente)", - "Spanish (Mexico)": "Español (Méjico)", - "Spanish (auto-generated)": "Español (generados automáticamente)", - "preferences_watch_history_label": "Habilitar historial de reproducciones: ", - "search_message_no_results": "No se han encontrado resultados.", - "search_message_change_filters_or_query": "Pruebe ampliar la consulta de búsqueda y/o a cambiar los filtros.", - "search_filters_title": "Filtros", - "search_filters_date_label": "Fecha de subida", - "search_filters_date_option_none": "Cualquier fecha", - "search_filters_type_option_all": "Cualquier tipo", - "search_filters_duration_option_none": "Cualquier duración", - "search_filters_features_option_vr180": "VR180", - "search_filters_apply_button": "Aplicar filtros", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokens", - "tokens_count_2": "{{count}} tokens", - "search_message_use_another_instance": " También puede buscar en otra instancia.", - "Popular enabled: ": "¿Habilitar la sección popular? ", - "error_video_not_in_playlist": "El video que solicitaste no existe en esta lista de reproducción. Haz clic aquí para acceder a la página de inicio de la lista de reproducción.", - "channel_tab_streams_label": "Directos", - "channel_tab_channels_label": "Canales", - "channel_tab_shorts_label": "Cortos", - "channel_tab_playlists_label": "Listas de reproducción", - "Music in this video": "Música en este video", - "Artist: ": "Artista: ", - "Album: ": "Álbum: ", - "Song: ": "Canción: ", - "Channel Sponsor": "Patrocinador del canal", - "Standard YouTube license": "Licencia de YouTube estándar", - "Download is disabled": "La descarga está deshabilitada", - "Import YouTube playlist (.csv)": "Importar lista de reproducción de YouTube (.csv)", - "playlist_button_add_items": "Añadir vídeos", - "generic_button_edit": "Editar", - "generic_button_save": "Guardar", - "generic_button_delete": "Borrar", - "generic_button_cancel": "Cancelar", - "generic_button_rss": "RSS", - "channel_tab_podcasts_label": "Podcasts", - "channel_tab_releases_label": "Publicaciones", - "generic_channels_count_0": "{{count}} canal", - "generic_channels_count_1": "{{count}} canales", - "generic_channels_count_2": "{{count}} canales", - "Import YouTube watch history (.json)": "Importar el historial de las visualizaciones de YouTube (.json)", - "toggle_theme": "Alternar tema" -} diff --git a/invidious/locales/et.json b/invidious/locales/et.json deleted file mode 100755 index 7f65281..0000000 --- a/invidious/locales/et.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "generic_playlists_count": "{{count}} esitusloend", - "generic_playlists_count_plural": "{{count}} esindusloendit", - "LIVE": "OTSEÜLEKANNE", - "View channel on YouTube": "Vaata kanalit YouTube'is", - "Log in": "Logi sisse", - "Log in/register": "Logi sisse/registreeru", - "Dark mode: ": "Tume režiim: ", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videot", - "generic_subscribers_count": "{{count}} tellija", - "generic_subscribers_count_plural": "{{count}} tellijat", - "generic_subscriptions_count": "{{count}} tellimus", - "generic_subscriptions_count_plural": "{{count}} tellimust", - "Shared `x` ago": "Jagatud `x` tagasi", - "Unsubscribe": "Loobu tellimusest", - "Subscribe": "Telli", - "View playlist on YouTube": "Vaata esitusloendit YouTube'is", - "newest": "uusimad", - "oldest": "vanimad", - "popular": "populaarsed", - "last": "viimane", - "Next page": "Järgmine leht", - "Previous page": "Eelmine leht", - "Clear watch history?": "Kustuta vaatamiste ajalugu?", - "New password": "Uus salasõna", - "New passwords must match": "Uued salasõnad peavad ühtima", - "Import and Export Data": "Impordi ja ekspordi andmed", - "Import": "Impordi", - "Import YouTube subscriptions": "Impordi tellimused Youtube'ist/OPML-ist", - "Import FreeTube subscriptions (.db)": "Impordi tellimused FreeTube'ist (.db)", - "Import NewPipe data (.zip)": "Impordi NewPipe'i andmed (.zip)", - "Export": "Ekspordi", - "Export subscriptions as OPML": "Ekspordi tellimused OPML-ina", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Ekspordi tellimused OPML-ina (NewPipe'i ja FreeTube'i jaoks)", - "Delete account?": "Kustuta kasutaja?", - "History": "Ajalugu", - "JavaScript license information": "JavaScripti litsentsi info", - "source": "allikas", - "User ID": "Kasutada ID", - "Password": "Salasõna", - "Time (h:mm:ss):": "Aeg (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA-tekst", - "Image CAPTCHA": "CAPTCHA-foto", - "Sign In": "Logi sisse", - "Register": "Registreeru", - "E-mail": "E-post", - "Preferences": "Eelistused", - "preferences_category_player": "Mängija eelistused", - "preferences_continue_autoplay_label": "Mängi järgmine video automaatselt: ", - "preferences_quality_label": "Eelistatud videokvaliteet: ", - "preferences_quality_option_dash": "DASH (kohanduv kvaliteet)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Keskmine", - "preferences_quality_option_small": "Väike", - "preferences_quality_dash_label": "Eelistatav DASH-video kvaliteet: ", - "preferences_quality_dash_option_auto": "Automaatne", - "preferences_quality_dash_option_best": "Parim", - "preferences_quality_dash_option_worst": "Halvim", - "preferences_volume_label": "Video helitugevus: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_related_videos_label": "Näita sarnaseid videosid: ", - "preferences_vr_mode_label": "Interaktiivne 360-kraadine video (vajalik WebGL): ", - "preferences_dark_mode_label": "Teema: ", - "dark": "tume", - "light": "hele", - "preferences_category_subscription": "Tellimuse seaded", - "preferences_max_results_label": "Avalehel näidatavate videote arv: ", - "preferences_sort_label": "Sorteeri: ", - "published": "avaldatud", - "alphabetically": "tähestikulises järjekorras", - "alphabetically - reverse": "vastupidi tähestikulises järjekorras", - "channel name": "kanali nimi", - "preferences_unseen_only_label": "Näita ainult vaatamata videosid: ", - "Only show latest video from channel: ": "Näita ainult viimast videot: ", - "preferences_notifications_only_label": "Näita ainult teavitusi (kui neid on): ", - "Enable web notifications": "Luba veebiteavitused", - "`x` uploaded a video": "`x` laadis video üles", - "`x` is live": "`x` teeb otseülekannet", - "preferences_category_data": "Andme-eelistused", - "Clear watch history": "Puhasta vaatamisajalugu", - "Import/export data": "Impordi/ekspordi andmed", - "Change password": "Muuda salasõna", - "Watch history": "Vaatamisajalugu", - "Delete account": "Kustuta kasutaja", - "Save preferences": "Salvesta eelistused", - "Token": "Token", - "Import/export": "Imprort/eksport", - "unsubscribe": "loobu tellimusest", - "Subscriptions": "Tellimused", - "search": "otsi", - "Source available here.": "Allikas on kättesaadaval siin.", - "View privacy policy.": "Vaata privaatsuspoliitikat.", - "Public": "Avalik", - "Private": "Privaatne", - "View all playlists": "Vaata kõiki esitusloendeid", - "Updated `x` ago": "Uuendas `x` tagasi", - "Delete playlist `x`?": "Kustuta esitusloend `x`?", - "Delete playlist": "Kustuta esitusloend", - "Create playlist": "Loo esitlusloend", - "Title": "Pealkiri", - "Playlist privacy": "Esitusloendi privaatsus", - "Show more": "Näita rohkem", - "Show less": "Näita vähem", - "Watch on YouTube": "Vaata YouTube'is", - "search_message_no_results": "Tulemusi ei leitud.", - "search_message_change_filters_or_query": "Proovi otsingut laiendada või filtreid muuta.", - "Genre: ": "Žanr: ", - "License: ": "Litsents: ", - "Family friendly? ": "Peresõbralik? ", - "Shared `x`": "Jagas `x`", - "Premieres in `x`": "Esilinastub `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Tundub, et oled JavaScripti välja lülitanud. Vajuta siia, et kommentaare vaadata; nende laadimine võib võtta natukene rohkem aega.", - "View Reddit comments": "Vaata Redditi kommentaare", - "Hide replies": "Peida vastused", - "Show replies": "Näita vastuseid", - "Incorrect password": "Vale salasõna", - "Wrong answer": "Vale vastus", - "User ID is a required field": "Kasutaja ID on kohustuslik väli", - "Password is a required field": "Salasõna on kohustuslik väli", - "Wrong username or password": "Vale kasutajanimi või salasõna", - "Password cannot be longer than 55 characters": "Salasõna ei tohi olla pikem kui 55 tähemärki", - "Password cannot be empty": "Salasõna ei tohi olla tühi", - "Please log in": "Palun logige sisse", - "channel:`x`": "kanal:`x`", - "Deleted or invalid channel": "Kanal on kustutatud või seda ei leitud", - "This channel does not exist.": "Sellist kanalit pole olemas.", - "comments_view_x_replies": "{{count}} vastus", - "comments_view_x_replies_plural": "{{count}} vastust", - "`x` ago": "`x` tagasi", - "Load more": "Laadi rohkem", - "Empty playlist": "Tühi esitusloend", - "Not a playlist.": "Tegu pole esitusloendiga.", - "Playlist does not exist.": "Seda esitusloendit pole olemas.", - "No such user": "Sellist kasutajat pole", - "English": "Inglise", - "English (United Kingdom)": "Inglise (Suurbritannia)", - "English (United States)": "Inglise (USA)", - "English (auto-generated)": "Inglise (automaatselt koostatud)", - "Afrikaans": "Afrikaani", - "Albanian": "Albaania", - "Arabic": "Araabia", - "Armenian": "Armeenia", - "Bangla": "Bengali", - "Basque": "Baski", - "Belarusian": "Valgevene", - "Bulgarian": "Bulgaaria", - "Burmese": "Birma", - "Cantonese (Hong Kong)": "Kantoni (Hong Konk)", - "Chinese (China)": "Hiina (Hiina)", - "Chinese (Hong Kong)": "Hiina (Hong Kong)", - "Chinese (Simplified)": "Hiina (lihtsustatud)", - "Chinese (Taiwan)": "Hiina (Taiwan)", - "Croatian": "Horvaatia", - "Czech": "Tšehhi", - "Danish": "Taani", - "Dutch": "Hollandi", - "Esperanto": "Esperanto", - "Estonian": "Eesti", - "Filipino": "Filipiini", - "Finnish": "Soome", - "French": "Prantsuse", - "French (auto-generated)": "Prantsuse (automaatne)", - "Dutch (auto-generated)": "Hollandi (automaatne)", - "Galician": "Kaliitsia", - "Georgian": "Gruusia", - "Haitian Creole": "Haiti kreool", - "Hausa": "Hausa", - "Hawaiian": "Havaii", - "Hebrew": "Heebrea", - "Hindi": "Hindi", - "Hungarian": "Ungari", - "Icelandic": "Islandi", - "Indonesian": "Indoneesia", - "Japanese (auto-generated)": "Jaapani (automaatne)", - "Kannada": "Kannada", - "Kazakh": "Kasahhi", - "Luxembourgish": "Luksemburgi", - "Macedonian": "Makedoonia", - "Malay": "Malai", - "Maltese": "Malta", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongoli", - "Nepali": "Nepaali", - "Norwegian Bokmål": "Norra (Bokmål)", - "Persian": "Pärsia", - "Polish": "Poola", - "Portuguese": "Portugali", - "Portuguese (auto-generated)": "Portugali (automaatne)", - "Portuguese (Brazil)": "Portugali (Brasiilia)", - "Romanian": "Rumeenia", - "Russian": "Vene", - "Russian (auto-generated)": "Vene (automaatne)", - "Scottish Gaelic": "Šoti (Gaeli)", - "Serbian": "Serbia", - "Slovak": "Slovaki", - "Slovenian": "Sloveeni", - "Somali": "Somaali", - "Spanish": "Hispaania", - "Spanish (auto-generated)": "Hispaania (automaatne)", - "Spanish (Latin America)": "Hispaania (Ladina-Ameerika)", - "Spanish (Mexico)": "Hispaania (Mehhiko)", - "Spanish (Spain)": "Hispaania (Hispaania)", - "Swahili": "Suahili", - "Swedish": "Rootsi", - "Tajik": "Tadžiki", - "Tamil": "Tamiili", - "Thai": "Tai", - "Turkish": "Türgi", - "Turkish (auto-generated)": "Türgi (automaatne)", - "Ukrainian": "Ukraina", - "Uzbek": "Usbeki", - "Vietnamese": "Vietnami", - "Vietnamese (auto-generated)": "Vietnami (automaatne)", - "generic_count_years": "{{count}} aasta", - "generic_count_years_plural": "{{count}} aastat", - "generic_count_months": "{{count}} kuu", - "generic_count_months_plural": "{{count}} kuud", - "generic_count_weeks": "{{count}} nädal", - "generic_count_weeks_plural": "{{count}} nädalat", - "generic_count_days": "{{count}} päev", - "generic_count_days_plural": "{{count}} päeva", - "generic_count_hours": "{{count}} tund", - "generic_count_hours_plural": "{{count}} tundi", - "generic_count_minutes": "{{count}} minut", - "generic_count_minutes_plural": "{{count}} minutit", - "Popular": "Populaarne", - "Search": "Otsi", - "Top": "Top", - "About": "Leheküljest", - "preferences_locale_label": "Keel: ", - "View as playlist": "Vaata esitusloendina", - "Movies": "Filmid", - "Download as: ": "Laadi kui: ", - "(edited)": "(muudetud)", - "`x` marked it with a ❤": "`x` märkis ❤", - "Audio mode": "Audiorežiim", - "Video mode": "Videorežiim", - "search_filters_date_label": "Üleslaadimise kuupäev", - "search_filters_date_option_none": "Ükskõik mis kuupäev", - "search_filters_date_option_today": "Täna", - "search_filters_date_option_week": "Sel nädalal", - "search_filters_date_option_hour": "Viimasel tunnil", - "search_filters_date_option_month": "Sel kuul", - "search_filters_date_option_year": "Sel aastal", - "search_filters_type_label": "Tüüp", - "search_filters_type_option_all": "Ükskõik mis tüüp", - "search_filters_duration_label": "Kestus", - "search_filters_type_option_show": "Näita", - "search_filters_duration_option_none": "Ükskõik mis kestus", - "search_filters_duration_option_short": "Lühike (alla 4 minuti)", - "search_filters_duration_option_medium": "Keskmine (4 - 20 minutit)", - "search_filters_duration_option_long": "Pikk (üle 20 minuti)", - "search_filters_features_option_live": "Otseülekanne", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Subtiitrid", - "search_filters_features_option_location": "Asukoht", - "search_filters_sort_label": "Sorteeri", - "search_filters_sort_option_views": "Vaatamiste arv", - "next_steps_error_message": "Pärast mida võiksite proovida: ", - "videoinfo_started_streaming_x_ago": "Alustas otseülekannet `x` tagasi", - "Yes": "Jah", - "generic_views_count": "{{count}} vaatamine", - "generic_views_count_plural": "{{count}} vaatamist", - "Import NewPipe subscriptions (.json)": "Impordi tellimused NewPipe'ist (.json)", - "No": "Ei", - "preferences_region_label": "Riik: ", - "View YouTube comments": "Vaata YouTube'i kommentaare", - "preferences_extend_desc_label": "Ava video kirjeldus automaatselt: ", - "German (auto-generated)": "Saksa (automaatne)", - "Italian": "Itaalia", - "preferences_player_style_label": "Mängija stiil: ", - "subscriptions_unseen_notifs_count": "{{count}} lugemata teavitus", - "subscriptions_unseen_notifs_count_plural": "{{count}} lugemata teavitust", - "View more comments on Reddit": "Vaata teisi kommentaare Redditis", - "Only show latest unwatched video from channel: ": "Näita ainult viimast vaatamata videot: ", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokenit", - "Log out": "Logi välja", - "Premieres `x`": "Linastub`x`", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Vaata `x` kommentaari", - "": "Vaata `x` kommentaare" - }, - "Khmer": "Khmeeri", - "Bosnian": "Bosnia", - "Corsican": "Korsika", - "Javanese": "Jaava", - "Lithuanian": "Leedu", - "channel_tab_videos_label": "Videod", - "channel_tab_community_label": "Kogukond", - "CAPTCHA is a required field": "CAPTCHA on kohustuslik väli", - "comments_points_count": "{{count}} punkt", - "comments_points_count_plural": "{{count}} punkti", - "Chinese": "Hiina", - "German": "Saksa", - "Indonesian (auto-generated)": "Indoneesia (automaatne)", - "Italian (auto-generated)": "Itaalia (automaatne)", - "Kyrgyz": "Kirkiisi", - "Latin": "Ladina", - "generic_count_seconds": "{{count}} sekund", - "generic_count_seconds_plural": "{{count}} sekundit", - "Catalan": "Katalaani", - "Chinese (Traditional)": "Hiina (traditsiooniline)", - "Greek": "Kreeka", - "Kurdish": "Kurdi", - "Latvian": "Läti", - "Irish": "Iiri", - "Korean": "Korea", - "Japanese": "Jaapani", - "Korean (auto-generated)": "Korea (automaatne)", - "Music": "Muusika", - "Playlists": "Esitusloendid", - "search_filters_type_option_video": "Video", - "search_filters_sort_option_date": "Üleslaadimise kuupäev", - "Current version: ": "Praegune versioon: ", - "footer_documentation": "Dokumentatsioon", - "Gaming": "Mängud", - "News": "Uudised", - "Download": "Laadi alla", - "search_filters_title": "Filtrid", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Esitusloend", - "search_filters_type_option_movie": "Film", - "next_steps_error_message_go_to_youtube": "Minna YouTube'i", - "next_steps_error_message_refresh": "Laadida uuesti", - "footer_donate_page": "Anneta", - "videoinfo_watch_on_youTube": "Vaata YouTube'is" -} diff --git a/invidious/locales/eu.json b/invidious/locales/eu.json deleted file mode 100755 index 8b36527..0000000 --- a/invidious/locales/eu.json +++ /dev/null @@ -1,269 +0,0 @@ -{ - "LIVE": "ZUZENEAN", - "Shared `x` ago": "Duela `x` partekatua", - "Unsubscribe": "Harpidetza kendu", - "Subscribe": "Harpidetu", - "View channel on YouTube": "Ikusi kanala YouTuben", - "View playlist on YouTube": "Ikusi erreprodukzio-zerrenda YouTuben", - "newest": "berrienak", - "oldest": "zaharrenak", - "popular": "ospetsuenak", - "last": "azkena", - "Next page": "Hurrengo orria", - "Previous page": "Aurreko orria", - "Clear watch history?": "Garbitu ikusitakoen historia?", - "New password": "Pasahitz berria", - "New passwords must match": "Pasahitza berriek bat egin behar dute", - "Authorize token?": "Baimendu tokena?", - "Yes": "Bai", - "No": "Ez", - "Import and Export Data": "Datuak inportatu eta esportatu", - "Import": "Inportatu", - "Import Invidious data": "Inportatu Invidiouseko JSON datuak", - "Import YouTube subscriptions": "Inportatu YouTubeko/OPML harpidetzak", - "Import FreeTube subscriptions (.db)": "Inportatu FreeTubeko harpidetzak (.db)", - "Import NewPipe subscriptions (.json)": "Inportatu NewPipeko harpidetzak (.json)", - "Import NewPipe data (.zip)": "Inportatu NewPipeko datuak (.zip)", - "Export": "Esportatu", - "Export subscriptions as OPML": "Esportatu harpidetzak OPML bezala", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Esportatu harpidetzak OPML bezala (NewPipe eta FreeTuberako)", - "Export data as JSON": "Esportatu Invidious datuak JSON gisa", - "Delete account?": "Kontua ezabatu?", - "History": "Historia", - "An alternative front-end to YouTube": "YouTuberako interfaze alternatibo bat", - "JavaScript license information": "JavaScript lizentzia informazioa", - "source": "iturburua", - "Log in": "Saioa hasi", - "Log in/register": "Hasi saioa / Eman izena", - "User ID": "Erabiltzaile IDa", - "Password": "Pasahitza", - "Time (h:mm:ss):": "Denbora (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA testua", - "Image CAPTCHA": "CAPTCHA irudia", - "Sign In": "Hasi saioa", - "Register": "Eman izena", - "E-mail": "E-posta", - "Preferences": "Hobespenak", - "preferences_category_player": "Erreproduzigailuaren hobespenak", - "preferences_autoplay_label": "Automatikoki erreproduzitu: ", - "preferences_continue_autoplay_label": "Erreproduzitu automatikoki hurrengo bideoa: ", - "preferences_quality_label": "Hobetsitako bideoaren kalitatea: ", - "preferences_volume_label": "Erreproduzigailuaren bolumena: ", - "preferences_comments_label": "Lehenetsitako iruzkinak: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Lehenetsitako azpitituluak: ", - "preferences_related_videos_label": "Erakutsi erlazionatutako bideoak: ", - "preferences_annotations_label": "Erakutsi oharrak modu lehenetsian: ", - "preferences_category_visual": "Hobespen bisualak", - "preferences_player_style_label": "Erreproduzigailu mota: ", - "Dark mode: ": "Gai iluna: ", - "preferences_dark_mode_label": "Gaia: ", - "dark": "iluna", - "light": "argia", - "generic_subscriptions_count": "{{count}} harpidetza", - "generic_subscriptions_count_plural": "{{count}} harpidetzak", - "tokens_count": "{{count}} tokena", - "tokens_count_plural": "{{count}} tokenak", - "comments_points_count": "{{count}} puntua", - "comments_points_count_plural": "{{count}} puntuak", - "View more comments on Reddit": "Iruzkin gehiago Redditen", - "Fallback captions: ": "Ordezko azpitituluak: ", - "generic_subscribers_count": "{{count}} harpidedun", - "generic_subscribers_count_plural": "{{count}} harpidedunak", - "preferences_quality_option_dash": "DASH (kalitate egokitua)", - "preferences_listen_label": "Lehenetsiz jo: ", - "preferences_speed_label": "Abiadura lehenetsia: ", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_worst": "Txarrena", - "preferences_quality_dash_option_best": "Hoberena", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_240p": "240p", - "preferences_extend_desc_label": "Bideoaren azalpena automatikoki zabaldu: ", - "preferences_annotations_subscribed_label": "Harpidetutako kanalen oharrak erakutsi lehenetsiz? ", - "Redirect homepage to feed: ": "Hasierako orrira bidali jarraitzeko: ", - "channel name - reverse": "kanalaren izena - alderantziz", - "preferences_notifications_only_label": "Jakinarazpenak soilik erakutsi (baldin badago): ", - "Top enabled: ": "Goikoa gaitu: ", - "Import/export data": "Inportatu/exportatu data", - "Create playlist": "Zerrenda sortu", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Aditu! JavaScript itzalita dakazula ematen du. Hemen sakatu iruzkinak ikusteko. Denbora luza leikeela kontuan hartu.", - "generic_views_count": "{{count}}ikusia", - "generic_views_count_plural": "{{count}}ikusiak", - "generic_playlists_count": "{{count}}zerrenda", - "generic_playlists_count_plural": "{{count}}zerrendak", - "Could not fetch comments": "Iruzkinei ezin heldu", - "Erroneous token": "Token okerra", - "Albanian": "Albaniarra", - "Azerbaijani": "Azerbaitarra", - "No such user": "Ez dago erabiltzailerik", - "Bulgarian": "Bulgariarra", - "Filipino": "Filipinera", - "French": "Frantsesa", - "French (auto-generated)": "Frantsesa (auto-sortua)", - "Show more": "Erakutsi gehiago", - "Show less": "Erakutsi gutxiago", - "Delete playlist": "Zerrenda ezabatu", - "Delete account": "Kontua ezabatu", - "User ID is a required field": "Erabiltzailearen IDa beharrezkoa da", - "English (United Kingdom)": "Ingelesa (Britania Handia", - "preferences_vr_mode_label": "360 graduko bideo interaktiboak (WebGL beharko): ", - "English (United States)": "Estatu batuarra (AEB)", - "English (auto-generated)": "Ingelesa (autosortua)", - "Arabic": "Arabiarra", - "Armenian": "Armeniarra", - "Bangla": "Banglera", - "Belarusian": "Bielorrusiara", - "Burmese": "Burmesera", - "Chinese (Simplified)": "Txinera (sinplifikatua)", - "preferences_watch_history_label": "Baimendu historia ikusi ", - "generic_videos_count": "{{count}}bideo", - "generic_videos_count_plural": "{{count}}bideoak", - "View privacy policy.": "Pribatutasun politika ikusi.", - "Cantonese (Hong Kong)": "Kantoniera (Hong Kong)", - "subscriptions_unseen_notifs_count": "{{count}} ezikusitako oharra", - "subscriptions_unseen_notifs_count_plural": "{{count}} ezikusitako oharrak", - "Trending": "Joera", - "Playlist privacy": "Zerrendaren privatutasuna", - "Switch Invidious Instance": "Invidious adibidea aldatu", - "Genre: ": "Genero: ", - "License: ": "Lizentzia: ", - "Family friendly? ": "Adeikorra familiarekin? ", - "Wilson score: ": "Wilsonen puntuazioa: ", - "comments_view_x_replies": "{{count}} erantzuna ikusi", - "comments_view_x_replies_plural": "{{count}} erantzunak ikusi", - "Catalan": "Katalaniera", - "Chinese": "Txinera", - "Chinese (China)": "Txinatarra", - "Chinese (Hong Kong)": "Hongkondarra", - "Chinese (Taiwan)": "Taiwandarra", - "Corsican": "Korsikera", - "Dutch (auto-generated)": "Alemaniera (auto-sortua)", - "Estonian": "Estoniera", - "Finnish": "Finlandiera", - "Galician": "Galizera", - "German (auto-generated)": "Alemaiera (auto-sortua)", - "Greek": "Greziera", - "crash_page_report_issue": "Aurreko ezerk ez badizu lagundu, arren GitHuben gai berri bat zabaldu (ingelesez ahal bada) eta zure mezuan hurrengo testua sartu (testuari EZ itzulpena egin):", - "crash_page_search_issue": "GitHuben dauden gaiak buruz", - "preferences_quality_option_medium": "Erdixka", - "preferences_quality_option_small": "Txikia", - "preferences_quality_dash_label": "DASH bideo kalitate lehenetsia: ", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_360p": "360p", - "invidious": "Invidious", - "Source available here.": "Iturburua hemen eskura.", - "View JavaScript license information.": "JavaScriptaren lizentzi adierazpena ikusi.", - "Blacklisted regions: ": "zerrenda beltzaren zonaldeak: ", - "Premieres `x`": "'x' estrenaldiak", - "Wrong answer": "Erantzun ez zuzena", - "Password is a required field": "Pasahitza beharrezkoa da", - "Wrong username or password": "Pasahitza edo ezizena gaizki", - "Password cannot be longer than 55 characters": "Pasahitza 55 karaktere baino luzeagoa ezin da izan", - "This channel does not exist.": "Kanal hau ez dago.", - "`x` ago": "duela 'x'", - "Czech": "Txekiera", - "preferences_region_label": "Herrialdeko edukiera: ", - "preferences_sort_label": "Bideoak ordenatu: ", - "published": "argitaratuta", - "Only show latest video from channel: ": "Kanalaren azken bideoa soilik erakutsi ", - "preferences_category_admin": "Administratzailearen lehentasunak", - "Registration enabled: ": "Harpidetza gaituta: ", - "Save preferences": "Baloreak gorde", - "Token manager": "Token kudeatzailea", - "unsubscribe": "Baja eman", - "search": "Bilatu", - "Log out": "Irten", - "English": "Ingelesa", - "Afrikaans": "Afrikarra", - "Amharic": "Amharerra", - "Basque": "Euskera", - "Bosnian": "Bosniarra", - "Cebuano": "Zebuera", - "Chinese (Traditional)": "Txinera (Tradizionala)", - "Croatian": "Croaziera", - "Danish": "Daniera", - "Dutch": "Alemaniera", - "Esperanto": "Esperanto", - "Erroneous challenge": "Erronka okerra", - "View all playlists": "Zerrenda guztiak ikusi", - "Show annotations": "Oharrak erakutsi", - "Empty playlist": "Zerrenda hutsik", - "Please log in": "Sartu, mesedez", - "CAPTCHA is a required field": "CAPTCHA beharrezko eremua da", - "preferences_category_data": "Dataren lehentasunak", - "preferences_default_home_label": "Homepage lehenetsia: ", - "preferences_automatic_instance_redirect_label": "berbideratze adibide automatikoa (atzera egin berbideratzeko: invidious.io) ", - "`x` uploaded a video": "' x'(e)k bideo bat igo du", - "published - reverse": "argitaratuta - alderantziz", - "Could not get channel info.": "Kanalaren adierazpena ezin lortu.", - "alphabetically - reverse": "alfabetikoki - alderantziz", - "Public": "Orokorra", - "Unlisted": "Ez zerrendatua", - "Subscription manager": "Harpidetzen kudeatzailea", - "Updated `x` ago": "Duela 'x' eguneratua", - "Hide replies": "Erantzunak izkutatu", - "preferences_thin_mode_label": "Urri eran: ", - "Show replies": "Erantzunak erakutsi", - "Watch on YouTube": "YouTuben ikusi", - "Premieres in `x`": "'x'eko estrenaldiak", - "Delete playlist `x`?": "'x' zerrenda ezabatu nahi?", - "Token is expired, please try again": "Token kadukatua, saiatu berriro", - "CAPTCHA enabled: ": "CAPTCHA gaitu: ", - "Released under the AGPLv3 on Github.": "GitHubeko AGPLv3pean argitaratuta.", - "channel:`x`": "Kanal: 'x'", - "Georgian": "Georgiera", - "Incorrect password": "Pasahitza gaizki", - "Playlist does not exist.": "Zerrenda ez da existitzen.", - "preferences_category_misc": "Askotariko lehentasunak", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "'x' iruzkina ikusi", - "": "'x' iruzkinak ikusi" - }, - "Report statistics: ": "Estatistikak adierazi: ", - "preferences_max_results_label": "Jotzeko bideo zerrendaren luzera: ", - "Subscriptions": "Harpidetzak", - "Load more": "Gehiago atera", - "Change password": "Pasahitza aldatu", - "preferences_show_nick_label": "Erakutsi ezizena goian: ", - "View Reddit comments": "Redditeko iruzkinak ikusi", - "preferences_category_subscription": "Harpidetzaren lehentasunak", - "Hidden field \"challenge\" is a required field": "\"challenge\" eremu ezkutua beharrezkoa da", - "German": "Alemaniarra", - "View YouTube comments": "YouTubeko iruzkinak ikusi", - "`x` is live": "'x' bizirik darrai", - "Password cannot be empty": "Pasahitza ezin da hutsik utzi", - "preferences_video_loop_label": "Beti begiztatu: ", - "Only show latest unwatched video from channel: ": "kanalaren azken bideo ezikusia erakutsi soilik ", - "Enable web notifications": "Webaren jakinarazpenak baimendu", - "revoke": "ukatu", - "preferences_continue_label": "Hurrengo lehenetsia jo: ", - "Whitelisted regions: ": "Zuri zerrendaren zonaldeak: ", - "Erroneous CAPTCHA": "CAPTCHA gaizki", - "Deleted or invalid channel": "Ezgai edota ezabatutako kanala", - "Could not create mix.": "Nahastea ezin sortu.", - "Not a playlist.": "Ez da zerrenda.", - "Hidden field \"token\" is a required field": "\"token\" eremu ezkutua beharrezkoa da", - "Import/export": "Inportatu/esportatu", - "alphabetically": "alfabetikoki", - "preferences_unseen_only_label": "Ezikusiak besterik ez erakutsi: ", - "Clear watch history": "Historia ezabatu", - "Manage subscriptions": "Harpidetzak kudeatu", - "Manage tokens": "Fitxak kudeatu", - "Watch history": "Historia ikusi", - "Login enabled: ": "Login gaitu: ", - "Hide annotations": "Oharrak izkutatu", - "Title": "Titulua", - "channel name": "Kanalaren izena", - "Authorize token for `x`?": "Baimendu tokena 'x'tzako?", - "Private": "Pribatua", - "Editing playlist `x`": "'x' zerrenda editatu", - "Could not pull trending pages.": "Ezin ekarri orri arrakastatsuak.", - "crash_page_read_the_faq": "Bide (FAQ) ohiko galderak" -} diff --git a/invidious/locales/fa.json b/invidious/locales/fa.json deleted file mode 100755 index d025120..0000000 --- a/invidious/locales/fa.json +++ /dev/null @@ -1,488 +0,0 @@ -{ - "generic_views_count": "{{count}} بازدید", - "generic_views_count_plural": "{{count}} بازدید", - "generic_videos_count": "{{count}} ویدئو", - "generic_videos_count_plural": "{{count}} ویدئو", - "generic_playlists_count": "{{count}} فهرست پخش", - "generic_playlists_count_plural": "{{count}} فهرست پخش", - "generic_subscribers_count": "{{count}} دنبال کننده", - "generic_subscribers_count_plural": "{{count}} دنبال کننده", - "generic_subscriptions_count": "{{count}} اشتراک", - "generic_subscriptions_count_plural": "{{count}} اشتراک", - "LIVE": "زنده", - "Shared `x` ago": "`x` پیش به اشتراک گذاشته شده", - "Unsubscribe": "لغو اشتراک", - "Subscribe": "مشترک شدن", - "View channel on YouTube": "دیدن کانال در یوتیوب", - "View playlist on YouTube": "دیدن فهرست پخش در یوتیوب", - "newest": "تازه‌ترین", - "oldest": "کهنه‌ترین", - "popular": "محبوب", - "last": "آخرین", - "Next page": "صفحه بعد", - "Previous page": "صفحه قبل", - "Clear watch history?": "پاک کردن تاریخچه نمایش؟", - "New password": "گذرواژه تازه", - "New passwords must match": "گذارواژه های تازه باید باهم همخوانی داشته باشند", - "Authorize token?": "توکن دسترسی؟", - "Authorize token for `x`?": "توکن دسترسی برای `x`؟", - "Yes": "بله", - "No": "خیر", - "Import and Export Data": "درون‌برد و برون‌برد داده", - "Import": "درون‌برد", - "Import Invidious data": "وارد کردن داده JSON اینویدیوس", - "Import YouTube subscriptions": "وارد کردن اشتراک OPML/ یوتیوب", - "Import FreeTube subscriptions (.db)": "درون‌برد اشتراک‌های فری‌تیوب (.db)", - "Import NewPipe subscriptions (.json)": "درون‌برد اشتراک‌های نیوپایپ (.json)", - "Import NewPipe data (.zip)": "درون‌برد داده نیوپایپ (.zip)", - "Export": "برون‌برد", - "Export subscriptions as OPML": "برون‌برد اشتراک‌ها در قالب OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "برون‌برد اشتراک‌ها در قالب OPML (برای نیوپایپ و فری‌تیوب)", - "Export data as JSON": "گرفتن(خارج کردن) اطلاعات اینویدیوس با فرمت JSON", - "Delete account?": "حذف حساب کاربری؟", - "History": "تاریخچه", - "An alternative front-end to YouTube": "یک پیشانه جایگزین برای یوتیوب", - "JavaScript license information": "اطلاعات پروانه جاوااسکریپت", - "source": "منبع", - "Log in": "ورود", - "Log in/register": "ورود/ثبت نام", - "User ID": "شناسه کاربری", - "Password": "گذرواژه", - "Time (h:mm:ss):": "زمان (h:mm:ss):", - "Text CAPTCHA": "کپچای متنی", - "Image CAPTCHA": "کپچای تصویری", - "Sign In": "ورود", - "Register": "ثبت نام", - "E-mail": "ایمیل", - "Preferences": "ترجیحات", - "preferences_category_player": "ترجیحات نمایش‌دهنده", - "preferences_video_loop_label": "همواره ویدئو را بازپخش کن ", - "preferences_autoplay_label": "نمایش خودکار: ", - "preferences_continue_label": "پخش بعدی به طور پیشفرض: ", - "preferences_continue_autoplay_label": "پخش خودکار ویدیو بعدی: ", - "preferences_listen_label": "گوش کردن به طور پیشفرض: ", - "preferences_local_label": "پروکسی ویدیو ها: ", - "preferences_speed_label": "سرعت پیشفرض: ", - "preferences_quality_label": "کیفیت ویدیوی ترجیحی: ", - "preferences_volume_label": "صدای پخش کننده: ", - "preferences_comments_label": "نظرات پیشفرض: ", - "youtube": "یوتیوب", - "reddit": "ردیت", - "preferences_captions_label": "زیرنویس های پیشفرض: ", - "Fallback captions: ": "عقب گرد زیرنویس ها: ", - "preferences_related_videos_label": "نمایش ویدیو های مرتبط: ", - "preferences_annotations_label": "نمایش حاشیه نویسی ها به طور پیشفرض: ", - "preferences_extend_desc_label": "گسترش خودکار توضیحات ویدئو: ", - "preferences_vr_mode_label": "ویدئوها ۳۶۰ درجه تعاملی(نیازمند WebGL): ", - "preferences_category_visual": "ترجیحات بصری", - "preferences_player_style_label": "حالت پخش کننده: ", - "Dark mode: ": "حالت تاریک: ", - "preferences_dark_mode_label": "تم: ", - "dark": "تاریک", - "light": "روشن", - "preferences_thin_mode_label": "حالت نازک: ", - "preferences_category_misc": "ترجیحات متفرقه", - "preferences_automatic_instance_redirect_label": "هدایت خودکار نمونه (انتقال به redirect.invidious.io): ", - "preferences_category_subscription": "ترجیحات اشتراک", - "preferences_annotations_subscribed_label": "نمایش حاشیه نویسی ها به طور پیشفرض برای کانال های مشترک شده: ", - "Redirect homepage to feed: ": "تغییر مسیر صفحه خانه به خوراک: ", - "preferences_max_results_label": "تعداد ویدیو های نمایش داده شده در خوراک: ", - "preferences_sort_label": "مرتب سازی ویدیو ها بر اساس: ", - "published": "منتشر شده", - "published - reverse": "منتشر شده - معکوس", - "alphabetically": "بر اساس حروف الفبا", - "alphabetically - reverse": "بر اساس حروف الفبا - معکوس", - "channel name": "نام کانال", - "channel name - reverse": "نام کانال - معکوس", - "Only show latest video from channel: ": "تنها نمایش آخرین ویدیو های کانال: ", - "Only show latest unwatched video from channel: ": "تنها نمایش آخرین ویدیو های تماشا نشده از کانال: ", - "preferences_unseen_only_label": "تنها نمایش ویدیو های تماشا نشده: ", - "preferences_notifications_only_label": "تنها نمایش اعلان ها (اگر وجود داشته باشد) ", - "Enable web notifications": "فعال کردن اعلان های وب", - "`x` uploaded a video": "`x` یک ویدیو بارگذاری کرد", - "`x` is live": "`x` زنده است", - "preferences_category_data": "ترجیحات داده", - "Clear watch history": "پاک‌کردن تاریخچه تماشا", - "Import/export data": "وارد کردن/خارج کردن داده", - "Change password": "تغییر گذرواژه", - "Manage subscriptions": "مدیریت اشتراک ها", - "Manage tokens": "مدیریت توکن ها", - "Watch history": "تاریخچه تماشا", - "Delete account": "حذف حساب کاربری", - "preferences_category_admin": "ترجیحات مدیریت", - "preferences_default_home_label": "صفحه خانه پیشفرض ", - "preferences_feed_menu_label": "منو خوراک: ", - "preferences_show_nick_label": "نمایش نام مستعار در بالا: ", - "Top enabled: ": "بالا فعال شده: ", - "CAPTCHA enabled: ": "CAPTCHA فعال شده: ", - "Login enabled: ": "ورود فعال شده: ", - "Registration enabled: ": "ثبت نام فعال شده: ", - "Report statistics: ": "گذارش آمار: ", - "Save preferences": "ذخیره ترجیحات", - "Subscription manager": "مدیریت اشتراک", - "Token manager": "مدیر توکن", - "Token": "توکن", - "tokens_count": "{{count}} توکن", - "tokens_count_plural": "{{count}} توکن", - "Import/export": "وارد کردن/خارج کردن", - "unsubscribe": "لغو اشتراک", - "revoke": "ابطال", - "Subscriptions": "اشتراک ها", - "subscriptions_unseen_notifs_count": "{{count}} اعلان نادیده", - "subscriptions_unseen_notifs_count_plural": "{{count}} اعلان نادیده", - "search": "جست و جو", - "Log out": "خروج", - "Released under the AGPLv3 on Github.": "منتشر شده تحت پروانه AGPLv3 روی گیت‌هاب.", - "Source available here.": "منبع اینجا دردسترس است.", - "View JavaScript license information.": "نمایش اطلاعات مجوز جاوا اسکریپت.", - "View privacy policy.": "نمایش سیاست حفظ حریم خصوصی.", - "Trending": "روند", - "Public": "عمومی", - "Unlisted": "لیست نشده", - "Private": "خصوصی", - "View all playlists": "نمایش همه سیاهه‌های پخش", - "Updated `x` ago": "بروز شده `x` پیش", - "Delete playlist `x`?": "حذف سیاههٔ پخش `x`؟", - "Delete playlist": "حذف سیاههٔ پخش", - "Create playlist": "ایجاد سیاههٔ پخش", - "Title": "عنوان", - "Playlist privacy": "حریم خصوصی سیاههٔ پخش", - "Editing playlist `x`": "تغییر سیاههٔ پخش `x`", - "Show more": "نمایش بیش‌تر", - "Show less": "نمایش کم‌تر", - "Watch on YouTube": "تماشا در یوتیوب", - "Switch Invidious Instance": "تعویض نمونه اینویدیوس", - "Hide annotations": "مخفی کردن حاشیه نویسی ها", - "Show annotations": "نمایش حاشیه نویسی ها", - "Genre: ": "ژانر: ", - "License: ": "مجوز: ", - "Family friendly? ": "خانواده دوستانه؟ ", - "Wilson score: ": "امتیاز ویلسون: ", - "Engagement: ": "نامزدی: ", - "Whitelisted regions: ": "مناطق لیست سفید: ", - "Blacklisted regions: ": "مناطق لیست سیاه: ", - "Shared `x`": "`x` به اشتراک گذاشته شد", - "Premieres in `x`": "برای اولین بار در `x`", - "Premieres `x`": "برای اولین بار `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "سلام! مثل اینکه تو جاوا اسکریپت رو خاموش کرده ای. اینجا کلیک کن تا نظرات را ببینی، این رو یادت باشه که ممکنه بارگذاری اونها کمی طول بکشه.", - "View YouTube comments": "نمایش نظرات یوتیوب", - "View more comments on Reddit": "نمایش نظرات بیشتر در ردیت", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "نمایش `x` نظرات", - "": "نمایش `x` نظرات" - }, - "View Reddit comments": "نمایش نظرات ردیت", - "Hide replies": "مخفی کردن پاسخ ها", - "Show replies": "نمایش پاسخ ها", - "Incorrect password": "گذرواژه نا درست", - "Wrong answer": "پاسخ غلط", - "Erroneous CAPTCHA": "CAPTCHA نا درست", - "CAPTCHA is a required field": "CAPTCHA یک فیلد ضروری است", - "User ID is a required field": "شناسه کاربری یک فیلد ضروری است", - "Password is a required field": "گذرواژه یک فیلد ضروری است", - "Wrong username or password": "نام کاربری یا گذرواژه غلط است", - "Password cannot be empty": "گذرواژه نمیتواند خالی باشد", - "Password cannot be longer than 55 characters": "گذر واژه نمیتواند از ۵۵ کاراکتر بیشتر باشد", - "Please log in": "لطفا وارد شوید", - "Invidious Private Feed for `x`": "خوراک خصوصی زشت برای `x`", - "channel:`x`": "کانال: `x`", - "Deleted or invalid channel": "کانال نا معتبر یا پاک شده است", - "This channel does not exist.": "این کانال وجود ندارد.", - "Could not get channel info.": "نمیتوان اطلاعات کانال را دریافت کرد.", - "Could not fetch comments": "نمیتوان نظرات را دریافت کرد", - "comments_view_x_replies": "نمایش {{count}} پاسخ", - "comments_view_x_replies_plural": "نمایش {{count}} پاسخ", - "`x` ago": "`x` پیش", - "Load more": "بارگذاری بیشتر", - "comments_points_count": "{{count}} نقطه", - "comments_points_count_plural": "{{count}} نقطه", - "Could not create mix.": "نمیتوان میکس ساخت.", - "Empty playlist": "سیاههٔ پخش خالی", - "Not a playlist.": "یک سیاههٔ پخش نیست.", - "Playlist does not exist.": "سیاههٔ پخش وجود ندارد.", - "Could not pull trending pages.": "نمیتوان صفحه های پر طرفدار را بکشد.", - "Hidden field \"challenge\" is a required field": "فیلد مخفی \"چالش\" یک فیلد ضروری است", - "Hidden field \"token\" is a required field": "فیلد مخفی \"توکن\" یک فیلد ضروری است", - "Erroneous challenge": "چالش غلط", - "Erroneous token": "توکن غلط", - "No such user": "چنین کاربری وجود ندارد", - "Token is expired, please try again": "توکن ضروری است، لطفا دوباره تلاش کنید", - "English": "انگلیسی", - "English (auto-generated)": "انگلیسی (خودکار-تولید‌شده)", - "Afrikaans": "آفریکانس", - "Albanian": "آلبانیایی", - "Amharic": "امهری", - "Arabic": "عربی", - "Armenian": "ارمنی", - "Azerbaijani": "آذربایجانی", - "Bangla": "بنگالی", - "Basque": "باسکی", - "Belarusian": "بلاروسی", - "Bosnian": "بوسنیایی", - "Bulgarian": "بلغاری", - "Burmese": "برمه‌ای", - "Catalan": "کاتالان", - "Cebuano": "سبوانو", - "Chinese (Simplified)": "چینی (ساده شده)", - "Chinese (Traditional)": "چینی (سنتی)", - "Corsican": "کرس", - "Croatian": "کرواسی", - "Czech": "چکی", - "Danish": "دانمارکی", - "Dutch": "هلندی", - "Esperanto": "اسپرانتو", - "Estonian": "استونیایی", - "Filipino": "فلیپینی", - "Finnish": "فنلاندی", - "French": "فرانسوی", - "Galician": "گالیسی", - "Georgian": "گرجی", - "German": "آلمانی", - "Greek": "یونانی", - "Gujarati": "گجراتی", - "Haitian Creole": "کریول آییسینی", - "Hausa": "هوسه", - "Hawaiian": "هاوائی", - "Hebrew": "عبری", - "Hindi": "هندی", - "Hmong": "همونگ", - "Hungarian": "مجاری", - "Icelandic": "ایسلندی", - "Igbo": "ایگبو", - "Indonesian": "اندونزیایی", - "Irish": "شلتا", - "Italian": "ایتالیایی", - "Japanese": "ژاپنی", - "Javanese": "جاوه‌ای", - "Kannada": "کانارا", - "Kazakh": "قزاقی", - "Khmer": "خمر", - "Korean": "کره‌ای", - "Kurdish": "کردی", - "Kyrgyz": "قرقیزی", - "Lao": "لائو", - "Latin": "لاتین", - "Latvian": "لتونیایی", - "Lithuanian": "لیتوانیایی", - "Luxembourgish": "لوکزامبورگی", - "Macedonian": "مقدونی", - "Malagasy": "مالاگاسی", - "Malay": "مالایی", - "Malayalam": "مالایالم", - "Maltese": "مالتی", - "Maori": "مائوری", - "Marathi": "مراتی", - "Mongolian": "مغولی", - "Nepali": "نپالی", - "Norwegian Bokmål": "بوکمل", - "Nyanja": "چوایی", - "Pashto": "پشتو", - "Persian": "فارسی", - "Polish": "لهستانی", - "Portuguese": "پرتغالی", - "Punjabi": "پنجابی", - "Romanian": "رومانیایی", - "Russian": "روسی", - "Samoan": "ساموآیی", - "Scottish Gaelic": "گیلیک اسکاتلندی", - "Serbian": "صربی", - "Shona": "شونا", - "Sindhi": "سندی", - "Sinhala": "سینهالی", - "Slovak": "اسلواکی", - "Slovenian": "اسلونیایی", - "Somali": "سومالیایی", - "Southern Sotho": "سوتو", - "Spanish": "اسپانیایی", - "Spanish (Latin America)": "اسپانیایی (آمریکای لاتین)", - "Sundanese": "سوندایی", - "Swahili": "سواحلی", - "Swedish": "سوئدی", - "Tajik": "تاجیک", - "Tamil": "تامیلی", - "Telugu": "تلوگو", - "Thai": "تای", - "Turkish": "ترکی", - "Ukrainian": "اوکراینی", - "Urdu": "اردو", - "Uzbek": "ازبکی", - "Vietnamese": "ویتنامی", - "Welsh": "ولزی", - "Western Frisian": "فریسی غربی", - "Xhosa": "خوسایی", - "Yiddish": "ییدیش", - "Yoruba": "یوروبایی", - "Zulu": "زولو", - "generic_count_years": "{{count}} سال", - "generic_count_years_plural": "{{count}} سال", - "generic_count_months": "{{count}} ماه", - "generic_count_months_plural": "{{count}} ماه", - "generic_count_weeks": "{{count}} هفته", - "generic_count_weeks_plural": "{{count}} هفته", - "generic_count_days": "{{count}} روز", - "generic_count_days_plural": "{{count}} روز", - "generic_count_hours": "{{count}} ساعت", - "generic_count_hours_plural": "{{count}} ساعت", - "generic_count_minutes": "{{count}} دقیقه", - "generic_count_minutes_plural": "{{count}} دقیقه", - "generic_count_seconds": "{{count}} ثانیه", - "generic_count_seconds_plural": "{{count}} ثانیه", - "Fallback comments: ": "نظرات عقب گرد: ", - "Popular": "محبوب", - "Search": "جست و جو", - "Top": "بالا", - "About": "درباره", - "Rating: ": "رتبه دهی: ", - "preferences_locale_label": "زبان: ", - "View as playlist": "نمایش به عنوان سیاههٔ پخش", - "Default": "پیشفرض", - "Music": "موسیقی", - "Gaming": "بازی", - "News": "اخبار", - "Movies": "فیلم‌ها", - "Download": "بارگیری", - "Download as: ": "بارگیری به عنوان: ", - "%A %B %-d, %Y": "%A %B %-d، %Y", - "(edited)": "(ویرایش شده)", - "YouTube comment permalink": "پیوست ثابت نظرات یوتیوب", - "permalink": "پیوست ثابت", - "`x` marked it with a ❤": "`x` نشان گذاری شده با یک ❤", - "Audio mode": "حالت صدا", - "Video mode": "حالت ویدیو", - "channel_tab_videos_label": "ویدیو ها", - "Playlists": "سیاهه‌های پخش", - "channel_tab_community_label": "اجتماع", - "search_filters_sort_option_relevance": "مرتبط بودن", - "search_filters_sort_option_rating": "امتیاز", - "search_filters_sort_option_date": "تاریخ بارگذاری", - "search_filters_sort_option_views": "تعداد بازدید", - "search_filters_type_label": "نوع", - "search_filters_duration_label": "مدت", - "search_filters_features_label": "ویژگی‌ها", - "search_filters_sort_label": "به ترتیب", - "search_filters_date_option_hour": "یک ساعت گذشته", - "search_filters_date_option_today": "امروز", - "search_filters_date_option_week": "این هفته", - "search_filters_date_option_month": "این ماه", - "search_filters_date_option_year": "امسال", - "search_filters_type_option_video": "ویدئو", - "search_filters_type_option_channel": "کانال", - "search_filters_type_option_playlist": "سیاههٔ پخش", - "search_filters_type_option_movie": "فیلم", - "search_filters_type_option_show": "نمایش", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "زیرنویس", - "search_filters_features_option_c_commons": "کریتیو کامونز", - "search_filters_features_option_three_d": "سه‌بعدی", - "search_filters_features_option_live": "زنده", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "مکان", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "نسخه فعلی: ", - "next_steps_error_message": "اکنون بایستی یکی از این موارد را امتحان کنید: ", - "next_steps_error_message_refresh": "تازه‌سازی", - "next_steps_error_message_go_to_youtube": "رفتن به یوتیوب", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_dash": "DASH (کیفیت تطبیفی)", - "preferences_quality_option_medium": "میانه", - "preferences_quality_option_small": "پایین", - "preferences_quality_dash_option_auto": "خودکار", - "preferences_quality_dash_option_best": "بهترین", - "preferences_quality_dash_option_worst": "بدترین", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "اینویدیوس", - "search_filters_features_option_three_sixty": "360°", - "footer_donate_page": "کمک مالی", - "footer_source_code": "کد منبع", - "footer_modfied_source_code": "کد منبع ویرایش شده", - "none": "هیچ‌کدام", - "videoinfo_started_streaming_x_ago": "پخش جریانی `x` پیش آغاز شد", - "videoinfo_watch_on_youTube": "تماشا در یوتیوب", - "videoinfo_youTube_embed_link": "توکار", - "videoinfo_invidious_embed_link": "پیوند توکار", - "download_subtitles": "زیرنویس‌ها - `x` (.vtt)", - "Video unavailable": "ویدئو دردسترس نیست", - "preferences_save_player_pos_label": "ذخیره زمان کنونی ویدئو: ", - "search_filters_features_option_purchased": "خریداری شده", - "preferences_quality_dash_label": "کیفیت ترجیحی ویدئو DASH: ", - "preferences_region_label": "کشور محتوا: ", - "footer_documentation": "مستندات", - "footer_original_source_code": "کد منبع اصلی", - "search_filters_duration_option_long": "بلند (> ۲۰ دقیقه)", - "adminprefs_modified_source_code_url_label": "URL مخزن کد منبع ویریش شده", - "search_filters_duration_option_short": "کوتاه (< ۴ دقیقه)", - "search_filters_title": "پالایه", - "Chinese (Hong Kong)": "چینی (هنگ‌کنگ)", - "Dutch (auto-generated)": "هلندی (تولید خودکار)", - "preferences_watch_history_label": "فعال‌سازی تاریخچه‌ی پخش ", - "Indonesian (auto-generated)": "اندونزیایی (تولید خودکار)", - "English (United States)": "انگلیسی (ایالات متحده)", - "Chinese": "چینی", - "Chinese (Taiwan)": "چینی (تایوان)", - "French (auto-generated)": "فرانسوی (تولید خودکار)", - "English (United Kingdom)": "انگلیسی (ایالات بریتانیا)", - "search_message_no_results": "نتیجه‌ای یافت نشد.", - "search_message_change_filters_or_query": "سعی کنید جست‌و‌جوی خود را وسیع‌تر کنید و/یا فیلترها را تغییر دهید.", - "Chinese (China)": "چینی (چین)", - "German (auto-generated)": "آلمانی (تولید خودکار)", - "Japanese (auto-generated)": "ژاپنی (تولید خودکار)", - "Korean (auto-generated)": "کره‌ای (تولید خودکار)", - "Portuguese (Brazil)": "پرتغالی (برزیل)", - "search_filters_apply_button": "اعمال فیلترهای انتخاب شده", - "Italian (auto-generated)": "ایتالیایی (تولید خودکار)", - "Vietnamese (auto-generated)": "ویتنامی (تولید خودکار)", - "search_filters_type_option_all": "هر نوعی", - "search_filters_duration_option_none": "هر مدت زمانی", - "search_filters_date_label": "تاریخ بارگذاری", - "search_filters_date_option_none": "هر تاریخی", - "user_created_playlists": "`x` فهرست پخش ایجاد شد", - "Interlingue": "سرخپوستی", - "Russian (auto-generated)": "روسی (تولید خودکار)", - "Spanish (auto-generated)": "اسپانیایی (تولید خودکار)", - "search_filters_duration_option_medium": "متوسط (۴ تا ۲۰ دقیقه)", - "Portuguese (auto-generated)": "پرتغالی (تولید خودکار)", - "Cantonese (Hong Kong)": "کانتونی (هنگ کنگ)", - "Spanish (Spain)": "اسپانیایی (اسپانیا)", - "Turkish (auto-generated)": "ترکی (تولید خودکار)", - "search_filters_features_option_vr180": "VR180", - "Spanish (Mexico)": "اسپانیایی (مکزیک)", - "Popular enabled: ": "محبوب ها فعال شد: ", - "Music in this video": "آهنگ در این ویدیو", - "Artist: ": "هنرمند: ", - "Album: ": "آلبوم: ", - "Song: ": "آهنگ: ", - "Channel Sponsor": "اسپانسر کانال", - "Standard YouTube license": "پروانه استاندارد YouTube", - "search_message_use_another_instance": " شما همچنین می‌توانید در نمونه دیگر هم جستجو کنید.", - "Download is disabled": "دریافت غیرفعال است", - "crash_page_before_reporting": "پیش از گزارش ایراد، مطمئنید شوید که:", - "playlist_button_add_items": "افزودن ویدیو", - "user_saved_playlists": "فهرست‌های پخش ذخیره شده", - "crash_page_refresh": "که صفحه را بازنشانی کرده‌اید", - "generic_button_save": "ذخیره", - "generic_button_cancel": "لغو", - "generic_channels_count": "{{count}} کانال", - "generic_channels_count_plural": "{{count}} کانال", - "generic_button_edit": "ویرایش", - "crash_page_switch_instance": "که تلاش کرده‌اید از یک نمونهٔ دیگر استفاده کنید", - "generic_button_rss": "خوراک RSS", - "crash_page_read_the_faq": "که سوالات بیشتر پرسیده شده (FAQ) را خوانده‌اید", - "generic_button_delete": "حذف", - "Import YouTube playlist (.csv)": "واردکردن فهرست‌پخش YouTube (.csv)", - "Import YouTube watch history (.json)": "وارد کردن فهرست پخش YouTube (.json)", - "crash_page_you_found_a_bug": "به نظر می‌رسد که ایرادی در Invidious پیدا کرده‌اید!", - "channel_tab_podcasts_label": "پادکست‌ها", - "channel_tab_streams_label": "پخش زنده‌ها", - "channel_tab_shorts_label": "Shortها", - "channel_tab_playlists_label": "فهرست‌های پخش", - "channel_tab_channels_label": "کانال‌ها", - "error_video_not_in_playlist": "ویدیوی درخواستی معلق به این فهرست پخش نیست. کلیک کنید تا به صفحهٔ اصلی فهرست پخش بروید." -} diff --git a/invidious/locales/fi.json b/invidious/locales/fi.json deleted file mode 100755 index 14c2b0f..0000000 --- a/invidious/locales/fi.json +++ /dev/null @@ -1,468 +0,0 @@ -{ - "LIVE": "SUORA", - "Shared `x` ago": "Jaettu `x` sitten", - "Unsubscribe": "Peruuta tilaus", - "Subscribe": "Tilaa", - "View channel on YouTube": "Näytä kanava YouTubessa", - "View playlist on YouTube": "Näytä soittolista YouTubessa", - "newest": "uusin", - "oldest": "vanhin", - "popular": "suosittu", - "last": "viimeisin", - "Next page": "Seuraava sivu", - "Previous page": "Edellinen sivu", - "Clear watch history?": "Tyhjennä katseluhistoria?", - "New password": "Uusi salasana", - "New passwords must match": "Uusien salasanojen täytyy täsmätä", - "Authorize token?": "Valtuutetaanko tunnus?", - "Authorize token for `x`?": "Valtuutetaanko tunnus `x`:lle?", - "Yes": "Kyllä", - "No": "Ei", - "Import and Export Data": "Tuo ja vie tietoja", - "Import": "Tuo", - "Import Invidious data": "Tuo Invidiousin JSON-tietoja", - "Import YouTube subscriptions": "Tuo YouTube/OPML-tilaukset", - "Import FreeTube subscriptions (.db)": "Tuo FreeTube-tilaukset (.db)", - "Import NewPipe subscriptions (.json)": "Tuo NewPipe-tilaukset (.json)", - "Import NewPipe data (.zip)": "Tuo NewPipe-tietoja (.zip)", - "Export": "Vie", - "Export subscriptions as OPML": "Vie tilaukset OPML-muodossa", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Vie tilaukset OPML-muodossa (NewPipe & FreeTube)", - "Export data as JSON": "Vie Invidious-data JSON-muodossa", - "Delete account?": "Poista tili?", - "History": "Historia", - "An alternative front-end to YouTube": "Vaihtoehtoinen front-end YouTubelle", - "JavaScript license information": "JavaScript-lisenssitiedot", - "source": "lähde", - "Log in": "Kirjaudu sisään", - "Log in/register": "Kirjaudu sisään/rekisteröidy", - "User ID": "Käyttäjätunnus", - "Password": "Salasana", - "Time (h:mm:ss):": "Aika (h:mm:ss):", - "Text CAPTCHA": "Teksti-CAPTCHA", - "Image CAPTCHA": "Kuva-CAPTCHA", - "Sign In": "Kirjaudu sisään", - "Register": "Rekisteröidy", - "E-mail": "Sähköposti", - "Preferences": "Asetukset", - "preferences_category_player": "Soittimen asetukset", - "preferences_video_loop_label": "Toista jatkuvasti aina: ", - "preferences_autoplay_label": "Automaattinen toisto: ", - "preferences_continue_label": "Toista seuraava oletuksena: ", - "preferences_continue_autoplay_label": "Toista seuraava video automaattisesti: ", - "preferences_listen_label": "Kuuntele oletuksena: ", - "preferences_local_label": "Proxytä videot: ", - "preferences_speed_label": "Oletusnopeus: ", - "preferences_quality_label": "Ensisijainen videon laatu: ", - "preferences_volume_label": "Soittimen äänenvoimakkuus: ", - "preferences_comments_label": "Oletuskommentit: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Oletustekstitykset: ", - "Fallback captions: ": "Toissijaiset tekstitykset: ", - "preferences_related_videos_label": "Näytä aiheeseen liittyviä videoita: ", - "preferences_annotations_label": "Näytä huomautukset oletuksena: ", - "preferences_extend_desc_label": "Laajenna automaattisesti videon kuvausta: ", - "preferences_vr_mode_label": "Interaktiiviset 360-asteiset videot (vaatii WebGL:n): ", - "preferences_category_visual": "Visuaaliset asetukset", - "preferences_player_style_label": "Soittimen tyyli: ", - "Dark mode: ": "Tumma tila: ", - "preferences_dark_mode_label": "Teema: ", - "dark": "tumma", - "light": "vaalea", - "preferences_thin_mode_label": "Kapea tila: ", - "preferences_category_misc": "Sekalaiset asetukset", - "preferences_automatic_instance_redirect_label": "Automaattinen instanssin uudelleenohjaus (perääntyminen sivulle redirect.invidious.io): ", - "preferences_category_subscription": "Tilausten asetukset", - "preferences_annotations_subscribed_label": "Näytä oletuksena tilattujen kanavien huomautukset: ", - "Redirect homepage to feed: ": "Uudelleenohjaa kotisivu syötteeseen: ", - "preferences_max_results_label": "Syötteessä näytettävien videoiden määrä: ", - "preferences_sort_label": "Videoiden lajitteluperuste: ", - "published": "julkaistu", - "published - reverse": "julkaistu - käänteinen", - "alphabetically": "aakkosjärjestys", - "alphabetically - reverse": "aakkosjärjestys - käänteinen", - "channel name": "kanavan nimi", - "channel name - reverse": "kanavan nimi - käänteinen", - "Only show latest video from channel: ": "Näytä vain uusin video kanavalta: ", - "Only show latest unwatched video from channel: ": "Näytä vain uusin katsomaton video kanavalta: ", - "preferences_unseen_only_label": "Näytä vain katsomattomat: ", - "preferences_notifications_only_label": "Näytä vain ilmoitukset (jos niitä on): ", - "Enable web notifications": "Näytä verkkoilmoitukset", - "`x` uploaded a video": "`x` latasi videon", - "`x` is live": "`x` lähettää suorana", - "preferences_category_data": "Tietojen asetukset", - "Clear watch history": "Tyhjennä katseluhistoria", - "Import/export data": "Tuo/vie tiedot", - "Change password": "Vaihda salasana", - "Manage subscriptions": "Hallinnoi tilauksia", - "Manage tokens": "Hallinnoi tunnuksia", - "Watch history": "Katseluhistoria", - "Delete account": "Poista tili", - "preferences_category_admin": "Järjestelmänvalvojan asetukset", - "preferences_default_home_label": "Oletuskotisivu: ", - "preferences_feed_menu_label": "Syötevalikko: ", - "preferences_show_nick_label": "Näytä nimimerkki ylimpänä: ", - "Top enabled: ": "Yläosa käytössä: ", - "CAPTCHA enabled: ": "CAPTCHA käytössä: ", - "Login enabled: ": "Kirjautuminen käytössä: ", - "Registration enabled: ": "Rekisteröityminen käytössä: ", - "Report statistics: ": "Raportoi tilastot: ", - "Save preferences": "Tallenna asetukset", - "Subscription manager": "Tilausten hallinnoija", - "Token manager": "Tunnusten hallinnoija", - "Token": "Tunnus", - "Import/export": "Tuo/vie", - "unsubscribe": "peru tilaus", - "revoke": "kumoa", - "Subscriptions": "Tilaukset", - "search": "haku", - "Log out": "Kirjaudu ulos", - "Source available here.": "Lähdekoodi on saatavilla täällä.", - "View JavaScript license information.": "Katso JavaScript-koodin lisenssitiedot.", - "View privacy policy.": "Katso tietosuojaseloste.", - "Trending": "Nousussa", - "Public": "Julkinen", - "Unlisted": "Listaamaton", - "Private": "Yksityinen", - "View all playlists": "Kaikki soittolistat", - "Updated `x` ago": "Päivitetty `x` sitten", - "Delete playlist `x`?": "Poista soittolista `x`?", - "Delete playlist": "Poista soittolista", - "Create playlist": "Luo soittolista", - "Title": "Nimi", - "Playlist privacy": "Soittolistan yksityisyys", - "Editing playlist `x`": "Muokataan soittolistaa `x`", - "Show more": "Näytä enemmän", - "Show less": "Näytä vähemmän", - "Watch on YouTube": "Katso YouTubessa", - "Switch Invidious Instance": "Vaihda Invidious-instanssia", - "Hide annotations": "Piilota merkkaukset", - "Show annotations": "Näytä merkkaukset", - "Genre: ": "Genre: ", - "License: ": "Lisenssi: ", - "Family friendly? ": "Kaiken ikäisille sopiva? ", - "Wilson score: ": "Wilson-pistemäärä: ", - "Engagement: ": "Huomio: ", - "Whitelisted regions: ": "Sallitut alueet: ", - "Blacklisted regions: ": "Estetyt alueet: ", - "Shared `x`": "Jaettu `x`", - "Premieres in `x`": "Ensiesitykseen aikaa `x`", - "Premieres `x`": "Ensiesitykseen `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hei! Vaikuttaa siltä, että sinulla on JavaScript pois käytöstä. Klikkaa tästä nähdäksesi kommentit, huomioi että lataamisessa voi kestää melko kauan.", - "View YouTube comments": "Näytä YouTube-kommentit", - "View more comments on Reddit": "Katso lisää kommentteja Redditissä", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Katso `x` kommentti", - "": "Katso `x` kommenttia" - }, - "View Reddit comments": "Katso Reddit-kommentit", - "Hide replies": "Piilota vastaukset", - "Show replies": "Näytä vastaukset", - "Incorrect password": "Väärä salasana", - "Wrong answer": "Väärä vastaus", - "Erroneous CAPTCHA": "Virheellinen CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA-kenttä vaaditaan", - "User ID is a required field": "Käyttäjätunnus vaaditaan", - "Password is a required field": "Salasana vaaditaan", - "Wrong username or password": "Väärä käyttäjänimi tai salasana", - "Password cannot be empty": "Salasana ei voi olla tyhjä", - "Password cannot be longer than 55 characters": "Salasana ei voi olla yli 55 merkkiä pitkä", - "Please log in": "Kirjaudu sisään, ole hyvä", - "Invidious Private Feed for `x`": "Invidiousin yksityinen syöte `x`:lle", - "channel:`x`": "kanava:`x`", - "Deleted or invalid channel": "Poistettu tai virheellinen kanava", - "This channel does not exist.": "Tätä kanavaa ei ole olemassa.", - "Could not get channel info.": "Kanavatietoa ei saatu ladattua.", - "Could not fetch comments": "Kommenttien nouto epäonnistui", - "`x` ago": "`x` sitten", - "Load more": "Lataa lisää", - "Could not create mix.": "Sekoituksen luominen epäonnistui.", - "Empty playlist": "Tyhjennä soittolista", - "Not a playlist.": "Ei ole soittolista.", - "Playlist does not exist.": "Soittolistaa ei ole olemassa.", - "Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnistui.", - "Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" vaaditaan", - "Hidden field \"token\" is a required field": "Piilotettu kenttä \"tunnus\" vaaditaan", - "Erroneous challenge": "Virheellinen haaste", - "Erroneous token": "Virheellinen tunnus", - "No such user": "Käyttäjää ei ole olemassa", - "Token is expired, please try again": "Tunnus on vanhentunut, yritä uudestaan", - "English": "englanti", - "English (auto-generated)": "englanti (automaattisesti luotu)", - "Afrikaans": "afrikaans", - "Albanian": "albania", - "Amharic": "amhara", - "Arabic": "arabia", - "Armenian": "armenia", - "Azerbaijani": "azeri", - "Bangla": "bengali", - "Basque": "baski", - "Belarusian": "valkovenäjä", - "Bosnian": "bosnia", - "Bulgarian": "bulgaria", - "Burmese": "burma", - "Catalan": "katalaani", - "Cebuano": "cebuano", - "Chinese (Simplified)": "kiina (yksinkertaistettu)", - "Chinese (Traditional)": "kiina (perinteinen)", - "Corsican": "korsika", - "Croatian": "kroaatti", - "Czech": "tšekki", - "Danish": "tanska", - "Dutch": "hollanti", - "Esperanto": "esperanto", - "Estonian": "viro", - "Filipino": "filipino", - "Finnish": "suomi", - "French": "ranska", - "Galician": "galego", - "Georgian": "georgia", - "German": "saksa", - "Greek": "kreikka", - "Gujarati": "gujarati", - "Haitian Creole": "haitinkreoli", - "Hausa": "hausa", - "Hawaiian": "havaiji", - "Hebrew": "heprea", - "Hindi": "hindi", - "Hmong": "hmong", - "Hungarian": "unkari", - "Icelandic": "islanti", - "Igbo": "igbo", - "Indonesian": "indonesia", - "Irish": "iiri", - "Italian": "italia", - "Japanese": "japani", - "Javanese": "jaava", - "Kannada": "kannada", - "Kazakh": "kazakki", - "Khmer": "khmer", - "Korean": "korea", - "Kurdish": "kurdi", - "Kyrgyz": "kirgiisi", - "Lao": "lao", - "Latin": "latina", - "Latvian": "latvia", - "Lithuanian": "liettua", - "Luxembourgish": "luksemburgi", - "Macedonian": "makedonia", - "Malagasy": "malagassi", - "Malay": "malaiji", - "Malayalam": "malajalam", - "Maltese": "malta", - "Maori": "maori", - "Marathi": "marathi", - "Mongolian": "mongoli", - "Nepali": "nepali", - "Norwegian Bokmål": "kirjanorja", - "Nyanja": "njandža", - "Pashto": "paštu", - "Persian": "persia", - "Polish": "puola", - "Portuguese": "portugali", - "Punjabi": "pandžabi", - "Romanian": "romania", - "Russian": "venäjä", - "Samoan": "samoa", - "Scottish Gaelic": "gaeli", - "Serbian": "serbia", - "Shona": "šona", - "Sindhi": "sindhi", - "Sinhala": "sinhali", - "Slovak": "slovakki", - "Slovenian": "sloveeni", - "Somali": "somali", - "Southern Sotho": "eteläsotho", - "Spanish": "espanja", - "Spanish (Latin America)": "espanja (Latinalainen Amerikka)", - "Sundanese": "sunda", - "Swahili": "swahili", - "Swedish": "ruotsi", - "Tajik": "tadžikki", - "Tamil": "tamili", - "Telugu": "telugu", - "Thai": "thai", - "Turkish": "turkki", - "Ukrainian": "ukraina", - "Urdu": "urdu", - "Uzbek": "uzbekki", - "Vietnamese": "vietnam", - "Welsh": "kymri", - "Western Frisian": "länsifriisi", - "Xhosa": "xhosa", - "Yiddish": "jiddiš", - "Yoruba": "joruba", - "Zulu": "zulu", - "Fallback comments: ": "Varakommentit: ", - "Popular": "Suosittu", - "Search": "Etsi", - "Top": "Ylin", - "About": "Tietoa", - "Rating: ": "Arvosana: ", - "preferences_locale_label": "Kieli: ", - "View as playlist": "Katso soittolistana", - "Default": "Oletus", - "Music": "Musiikki", - "Gaming": "Videopelit", - "News": "Uutiset", - "Movies": "Elokuvat", - "Download": "Tallenna", - "Download as: ": "Tallennusmuoto: ", - "%A %B %-d, %Y": "%A %-d. %Bta, %Y", - "(edited)": "(muokattu)", - "YouTube comment permalink": "Pysyvä linkki YouTube-kommenttiin", - "permalink": "pysyvä linkki", - "`x` marked it with a ❤": "`x` merkkasi ❤:llä", - "Audio mode": "Äänitila", - "Video mode": "Videotila", - "channel_tab_videos_label": "Videot", - "Playlists": "Soittolistat", - "channel_tab_community_label": "Yhteisö", - "search_filters_sort_option_relevance": "Osuvuus", - "search_filters_sort_option_rating": "Arvostelu", - "search_filters_sort_option_date": "Latauspäivämäärä", - "search_filters_sort_option_views": "Katselukerrat", - "search_filters_type_label": "Tyyppi", - "search_filters_duration_label": "Kesto", - "search_filters_features_label": "Ominaisuudet", - "search_filters_sort_label": "Luokittele", - "search_filters_date_option_hour": "Viimeisin tunti", - "search_filters_date_option_today": "Tänään", - "search_filters_date_option_week": "Tämä viikko", - "search_filters_date_option_month": "Tämä kuukausi", - "search_filters_date_option_year": "Tämä vuosi", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanava", - "search_filters_type_option_playlist": "Soittolista", - "search_filters_type_option_movie": "Elokuva", - "search_filters_type_option_show": "Ohjelma", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Tekstitys/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Suora lähetys", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Sijainti", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Tämänhetkinen versio: ", - "next_steps_error_message": "Sinun tulisi kokeilla seuraavia: ", - "next_steps_error_message_refresh": "Päivitä", - "next_steps_error_message_go_to_youtube": "Siirry YouTubeen", - "generic_count_hours": "{{count}} tunti", - "generic_count_hours_plural": "{{count}} tuntia", - "download_subtitles": "Tekstitykset - `x` (.vtt)", - "user_created_playlists": "`x` luotua soittolistaa", - "Video unavailable": "Video ei ole saatavilla", - "videoinfo_youTube_embed_link": "Upota", - "tokens_count": "{{count}} tunnus", - "tokens_count_plural": "{{count}} tunnusta", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videota", - "generic_playlists_count": "{{count}} soittolista", - "generic_playlists_count_plural": "{{count}} soittolistaa", - "generic_subscriptions_count": "{{count}} tilaus", - "generic_subscriptions_count_plural": "{{count}} tilausta", - "comments_view_x_replies": "Katso {{count}} vastaus", - "comments_view_x_replies_plural": "Katso {{count}} vastausta", - "generic_count_months": "{{count}} kuukausi", - "generic_count_months_plural": "{{count}} kuukautta", - "generic_count_weeks": "{{count}} viikko", - "generic_count_weeks_plural": "{{count}} viikkoa", - "generic_count_days": "{{count}} päivä", - "generic_count_days_plural": "{{count}} päivää", - "generic_count_minutes": "{{count}} minuutti", - "generic_count_minutes_plural": "{{count}} minuuttia", - "comments_points_count": "{{count}} piste", - "comments_points_count_plural": "{{count}} pistettä", - "generic_count_seconds": "{{count}} sekunti", - "generic_count_seconds_plural": "{{count}} sekuntia", - "crash_page_before_reporting": "Varmista ennen bugin ilmoittamista, että sinä olet:", - "crash_page_refresh": "yrittänyt päivittää sivun", - "crash_page_read_the_faq": "lukenut Usein kysytyt kysymykset (FAQ)", - "crash_page_search_issue": "etsinyt olemassa olevia issueita GitHubissa", - "generic_views_count": "{{count}} katselu", - "generic_views_count_plural": "{{count}} katselua", - "preferences_quality_dash_option_720p": "720p", - "generic_subscribers_count": "{{count}} tilaaja", - "generic_subscribers_count_plural": "{{count}} tilaajaa", - "preferences_quality_dash_option_1440p": "1440p", - "crash_page_you_found_a_bug": "Vaikuttaa siltä, että löysit bugin Invidiousista!", - "subscriptions_unseen_notifs_count": "{{count}} näkemätön ilmoitus", - "subscriptions_unseen_notifs_count_plural": "{{count}} näkemätöntä ilmoitusta", - "crash_page_switch_instance": "yrittänyt käyttää toista instassia", - "videoinfo_invidious_embed_link": "Upotuslinkki", - "user_saved_playlists": "`x` tallennetua soittolistaa", - "crash_page_report_issue": "Jos mikään näistä ei auttanut, avaathan uuden issuen GitHubissa (mieluiten englanniksi) ja sisällytät seuraavan tekstin viestissäsi (ÄLÄ käännä tätä tekstiä):", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_worst": "Huonoin", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "preferences_region_label": "Sisältömaa: ", - "preferences_quality_option_medium": "Keskitaso", - "preferences_quality_option_small": "Pieni", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "Paras", - "preferences_quality_option_dash": "DASH (mukautuva laatu)", - "preferences_quality_dash_label": "Haluttava DASH-videolaatu: ", - "generic_count_years": "{{count}} vuosi", - "generic_count_years_plural": "{{count}} vuotta", - "search_filters_features_option_purchased": "Ostettu", - "search_filters_features_option_three_sixty": "360°", - "videoinfo_watch_on_youTube": "Katso YouTubessa", - "none": "ei mikään", - "videoinfo_started_streaming_x_ago": "Striimaaminen aloitettu `x` sitten", - "preferences_save_player_pos_label": "Tallenna toistokohta: ", - "footer_donate_page": "Lahjoita", - "footer_source_code": "Lähdekoodi", - "adminprefs_modified_source_code_url_label": "URL muokattuun lähdekoodirepositoryyn", - "Released under the AGPLv3 on Github.": "Julkaistu AGPLv3-lisenssin alla GitHubissa.", - "search_filters_duration_option_short": "Lyhyt (< 4 minuuttia)", - "search_filters_duration_option_long": "Pitkä (> 20 minuuttia)", - "footer_documentation": "Dokumentaatio", - "footer_original_source_code": "Alkuperäinen lähdekoodi", - "footer_modfied_source_code": "Muokattu lähdekoodi", - "Japanese (auto-generated)": "Japani (automaattisesti luotu)", - "German (auto-generated)": "Saksa (automaattisesti luotu)", - "Portuguese (auto-generated)": "portugali (automaattisesti luotu)", - "Russian (auto-generated)": "Venäjä (automaattisesti luotu)", - "preferences_watch_history_label": "Ota katseluhistoria käyttöön: ", - "English (United Kingdom)": "Englanti (Iso-Britannia)", - "English (United States)": "Englanti (Yhdysvallat)", - "Cantonese (Hong Kong)": "Kantoninkiina (Hong Kong)", - "Chinese": "Kiina", - "Chinese (China)": "Kiina (Kiina)", - "Chinese (Hong Kong)": "Kiina (Hong Kong)", - "Chinese (Taiwan)": "Kiina (Taiwan)", - "Dutch (auto-generated)": "Hollanti (automaattisesti luotu)", - "French (auto-generated)": "Ranska (automaattisesti luotu)", - "Indonesian (auto-generated)": "Indonesia (automaattisesti luotu)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italia (automaattisesti luotu)", - "Korean (auto-generated)": "Korea (automaattisesti luotu)", - "Portuguese (Brazil)": "portugali (Brasilia)", - "Spanish (auto-generated)": "Espanja (automaattisesti luotu)", - "Spanish (Mexico)": "Espanja (Meksiko)", - "Spanish (Spain)": "Espanja (Espanja)", - "Turkish (auto-generated)": "Turkki (automaattisesti luotu)", - "Vietnamese (auto-generated)": "Vietnam (automaattisesti luotu)", - "search_filters_title": "Suodatin", - "search_message_no_results": "Ei tuloksia löydetty.", - "search_message_change_filters_or_query": "Yritä hakukyselysi laajentamista ja/tai suodattimien muuttamista.", - "search_filters_duration_option_none": "Mikä tahansa kesto", - "search_filters_features_option_vr180": "VR180", - "search_filters_apply_button": "Ota valitut suodattimet käyttöön", - "search_filters_date_label": "Latausaika", - "search_filters_duration_option_medium": "Keskipituinen (4 - 20 minuuttia)", - "search_message_use_another_instance": " Voit myös hakea toisella instanssilla.", - "search_filters_date_option_none": "Milloin tahansa", - "search_filters_type_option_all": "Mikä tahansa tyyppi", - "Popular enabled: ": "Suosittu käytössä: ", - "error_video_not_in_playlist": "Pyydettyä videota ei löydy tästä soittolistasta. Klikkaa tähän päästäksesi soittolistan etusivulle." -} diff --git a/invidious/locales/fr.json b/invidious/locales/fr.json deleted file mode 100755 index 251e88b..0000000 --- a/invidious/locales/fr.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "generic_channels_count_0": "{{count}} chaîne", - "generic_channels_count_1": "{{count}} de chaînes", - "generic_channels_count_2": "{{count}} chaînes", - "generic_views_count_0": "{{count}} vue", - "generic_views_count_1": "{{count}} de vues", - "generic_views_count_2": "{{count}} vues", - "generic_videos_count_0": "{{count}} vidéo", - "generic_videos_count_1": "{{count}} de vidéos", - "generic_videos_count_2": "{{count}} vidéos", - "generic_playlists_count_0": "{{count}} liste de lecture", - "generic_playlists_count_1": "{{count}} listes de lecture", - "generic_playlists_count_2": "{{count}} listes de lecture", - "generic_subscribers_count_0": "{{count}} abonné", - "generic_subscribers_count_1": "{{count}} d'abonnés", - "generic_subscribers_count_2": "{{count}} abonnés", - "generic_subscriptions_count_0": "{{count}} abonnement", - "generic_subscriptions_count_1": "{{count}} d'abonnements", - "generic_subscriptions_count_2": "{{count}} abonnements", - "generic_button_delete": "Supprimer", - "generic_button_edit": "Editer", - "generic_button_save": "Enregistrer", - "generic_button_cancel": "Annuler", - "generic_button_rss": "RSS", - "LIVE": "EN DIRECT", - "Shared `x` ago": "Ajoutée il y a `x`", - "Unsubscribe": "Se désabonner", - "Subscribe": "S'abonner", - "View channel on YouTube": "Voir la chaîne sur YouTube", - "View playlist on YouTube": "Voir la liste de lecture sur YouTube", - "newest": "Date d'ajout (la plus récente)", - "oldest": "Date d'ajout (la plus ancienne)", - "popular": "Les plus populaires", - "last": "Dernières", - "Next page": "Page suivante", - "Previous page": "Page précédente", - "Clear watch history?": "Êtes-vous sûr de vouloir supprimer l'historique des vidéos regardées ?", - "New password": "Nouveau mot de passe", - "New passwords must match": "Les nouveaux mots de passe doivent correspondre", - "Authorize token?": "Autoriser le token ?", - "Authorize token for `x`?": "Autoriser le token pour `x` ?", - "Yes": "Oui", - "No": "Non", - "Import and Export Data": "Importer et exporter des données", - "Import": "Importer", - "Import Invidious data": "Importer des données Invidious au format JSON", - "Import YouTube subscriptions": "Importer des abonnements YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importer des abonnements FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importer des abonnements NewPipe (.json)", - "Import NewPipe data (.zip)": "Importer des données NewPipe (.zip)", - "Export": "Exporter", - "Export subscriptions as OPML": "Exporter les abonnements au format OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exporter les abonnements au format OPML (pour NewPipe & FreeTube)", - "Export data as JSON": "Exporter les données Invidious au format JSON", - "Delete account?": "Êtes-vous sûr de vouloir supprimer votre compte ?", - "History": "Historique", - "An alternative front-end to YouTube": "Un front-end alternatif à YouTube", - "JavaScript license information": "Informations sur les licences JavaScript", - "source": "source", - "Log in": "Se connecter", - "Log in/register": "Se connecter/S'inscrire", - "User ID": "Identifiant utilisateur", - "Password": "Mot de passe", - "Time (h:mm:ss):": "Heure (h:mm:ss) :", - "Text CAPTCHA": "CAPTCHA textuel", - "Image CAPTCHA": "CAPTCHA pictural", - "Sign In": "S'identifier", - "Register": "S'inscrire", - "E-mail": "Courriel", - "Preferences": "Préférences", - "preferences_category_player": "Préférences du lecteur", - "preferences_video_loop_label": "Lire en boucle : ", - "preferences_autoplay_label": "Lancer la lecture automatiquement : ", - "preferences_continue_label": "Lire les vidéos suivantes par défaut : ", - "preferences_continue_autoplay_label": "Lire automatiquement la vidéo suivante : ", - "preferences_listen_label": "Audio uniquement : ", - "preferences_local_label": "Charger les vidéos à travers un proxy : ", - "preferences_speed_label": "Vitesse par défaut : ", - "preferences_quality_label": "Qualité vidéo souhaitée : ", - "preferences_volume_label": "Volume du lecteur : ", - "preferences_comments_label": "Source des commentaires : ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Sous-titres par défaut : ", - "Fallback captions: ": "Sous-titres alternatifs : ", - "preferences_related_videos_label": "Voir les vidéos liées : ", - "preferences_annotations_label": "Afficher les annotations par défaut : ", - "preferences_extend_desc_label": "Etendre automatiquement la description : ", - "preferences_vr_mode_label": "Vidéos interactives à 360° (nécessite WebGL) : ", - "preferences_category_visual": "Préférences du site", - "preferences_player_style_label": "Style du lecteur : ", - "Dark mode: ": "Mode sombre : ", - "preferences_dark_mode_label": "Thème : ", - "dark": "sombre", - "light": "clair", - "preferences_thin_mode_label": "Mode léger : ", - "preferences_category_misc": "Paramètres divers", - "preferences_automatic_instance_redirect_label": "Redirection automatique vers une autre instance (via redirect.invidious.io) : ", - "preferences_category_subscription": "Préférences des abonnements", - "preferences_annotations_subscribed_label": "Afficher les annotations par défaut sur les chaînes auxquelles vous êtes abonnés : ", - "Redirect homepage to feed: ": "Rediriger la page d'accueil vers la page d'abonnements : ", - "preferences_max_results_label": "Nombre de vidéos affichées dans la page d'abonnements : ", - "preferences_sort_label": "Trier les vidéos par : ", - "published": "date de publication", - "published - reverse": "date de publication - inversé", - "alphabetically": "ordre alphabétique", - "alphabetically - reverse": "ordre alphabétique - inversé", - "channel name": "nom de la chaîne", - "channel name - reverse": "nom de la chaîne - inversé", - "Only show latest video from channel: ": "Afficher uniquement la dernière vidéo des chaînes auxquelles vous êtes abonnés : ", - "Only show latest unwatched video from channel: ": "Afficher uniquement la dernière vidéo des chaînes auxquelles vous êtes abonnés qui n'a pas été regardée : ", - "preferences_unseen_only_label": "Afficher uniquement les vidéos qui n'ont pas été regardées : ", - "preferences_notifications_only_label": "Afficher uniquement les notifications (s'il y en a) : ", - "Enable web notifications": "Activer les notifications web", - "`x` uploaded a video": "`x` a partagé une vidéo", - "`x` is live": "`x` est en direct", - "preferences_category_data": "Préférences liées aux données", - "Clear watch history": "Supprimer l'historique des vidéos regardées", - "Import/export data": "Importer/exporter les données", - "Change password": "Modifier le mot de passe", - "Manage subscriptions": "Gérer les abonnements", - "Manage tokens": "Gérer les tokens", - "Watch history": "Historique de visionnage", - "Delete account": "Supprimer votre compte", - "preferences_category_admin": "Préferences d'Administration", - "preferences_default_home_label": "Page d'accueil par défaut : ", - "preferences_feed_menu_label": "Préferences des abonnements : ", - "preferences_show_nick_label": "Afficher le nom d'utilisateur en haut à droite : ", - "Popular enabled: ": "Page \"populaire\" activée : ", - "Top enabled: ": "Top activé : ", - "CAPTCHA enabled: ": "CAPTCHA activé : ", - "Login enabled: ": "Autoriser l'ouverture de sessions utilisateur : ", - "Registration enabled: ": "Autoriser la création de comptes utilisateur : ", - "Report statistics: ": "Activer les statistiques d'instance : ", - "Save preferences": "Enregistrer les préférences", - "Subscription manager": "Gestionnaire d'abonnement", - "Token manager": "Gestionnaire de token", - "Token": "Token", - "tokens_count_0": "{{count}} jeton", - "tokens_count_1": "{{count}} de jetons", - "tokens_count_2": "{{count}} jetons", - "Import/export": "Importer/Exporter", - "unsubscribe": "se désabonner", - "revoke": "révoquer", - "Subscriptions": "Abonnements", - "subscriptions_unseen_notifs_count_0": "{{count}} notification non vue", - "subscriptions_unseen_notifs_count_1": "{{count}} de notifications non vues", - "subscriptions_unseen_notifs_count_2": "{{count}} notifications non vues", - "search": "rechercher", - "Log out": "Se déconnecter", - "Released under the AGPLv3 on Github.": "Publié sous licence AGPLv3 sur GitHub.", - "Source available here.": "Code source disponible ici.", - "View JavaScript license information.": "Informations des licences JavaScript.", - "View privacy policy.": "Politique de confidentialité.", - "Trending": "Tendances", - "Public": "Publique", - "Unlisted": "Non répertoriée", - "Private": "Privée", - "View all playlists": "Voir toutes vos playlists", - "Updated `x` ago": "Dernière mise à jour il y a `x`", - "Delete playlist `x`?": "Êtes-vous sûr de vouloir supprimer la liste de lecture ?", - "Delete playlist": "Supprimer la liste de lecture", - "Create playlist": "Créer une liste de lecture", - "Title": "Titre", - "Playlist privacy": "Paramètres de confidentialité de la liste de lecture", - "Editing playlist `x`": "Modifier la liste de lecture `x`", - "playlist_button_add_items": "Ajouter des vidéos", - "Show more": "Afficher plus", - "Show less": "Afficher moins", - "Watch on YouTube": "Voir la vidéo sur Youtube", - "Switch Invidious Instance": "Changer d'instance", - "Hide annotations": "Masquer les annotations", - "Show annotations": "Afficher les annotations", - "Genre: ": "Genre : ", - "License: ": "Licence : ", - "Family friendly? ": "Vidéo tout public ? ", - "Wilson score: ": "Score de Wilson : ", - "Engagement: ": "Taux d'implication : ", - "Whitelisted regions: ": "Régions sur liste blanche : ", - "Blacklisted regions: ": "Régions sur liste noire : ", - "Shared `x`": "Ajoutée le `x`", - "Premieres in `x`": "Première dans `x`", - "Premieres `x`": "Première le `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Il semblerait que JavaScript soit désactivé. Cliquez ici pour voir les commentaires, mais gardez à l'esprit que le chargement peut prendre plus de temps.", - "View YouTube comments": "Voir les commentaires YouTube", - "View more comments on Reddit": "Voir plus de commentaires sur Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Voir `x` commentaire", - "": "Voir `x` commentaires" - }, - "View Reddit comments": "Voir les commentaires Reddit", - "Hide replies": "Masquer les réponses", - "Show replies": "Afficher les réponses", - "Incorrect password": "Mot de passe incorrect", - "Wrong answer": "Réponse invalide", - "Erroneous CAPTCHA": "CAPTCHA invalide", - "CAPTCHA is a required field": "Veuillez entrer un CAPTCHA", - "User ID is a required field": "Veuillez entrer un Identifiant Utilisateur", - "Password is a required field": "Veuillez entrer un Mot de passe", - "Wrong username or password": "Nom d'utilisateur ou mot de passe invalide", - "Password cannot be empty": "Le mot de passe ne peut pas être vide", - "Password cannot be longer than 55 characters": "Le mot de passe ne doit pas comporter plus de 55 caractères", - "Please log in": "Veuillez vous connecter", - "Invidious Private Feed for `x`": "Flux RSS privé pour `x`", - "channel:`x`": "chaîne :`x`", - "Deleted or invalid channel": "Chaîne supprimée ou invalide", - "This channel does not exist.": "Cette chaine n'existe pas.", - "Could not get channel info.": "Impossible de charger les informations de cette chaîne.", - "Could not fetch comments": "Impossible de charger les commentaires", - "comments_view_x_replies_0": "Voir {{count}} réponse", - "comments_view_x_replies_1": "Voir {{count}} de réponses", - "comments_view_x_replies_2": "Voir {{count}} réponses", - "`x` ago": "il y a `x`", - "Load more": "Voir plus", - "comments_points_count_0": "{{count}} point", - "comments_points_count_1": "{{count}} de points", - "comments_points_count_2": "{{count}} points", - "Could not create mix.": "Impossible de charger cette liste de lecture.", - "Empty playlist": "La liste de lecture est vide", - "Not a playlist.": "La liste de lecture est invalide.", - "Playlist does not exist.": "La liste de lecture n'existe pas.", - "Could not pull trending pages.": "Impossible de charger les pages de tendances.", - "Hidden field \"challenge\" is a required field": "Le champ masqué \"challenge\" est un champ obligatoire", - "Hidden field \"token\" is a required field": "Le champ caché « token » est requis", - "Erroneous challenge": "Challenge invalide", - "Erroneous token": "Token invalide", - "No such user": "Cet utilisateur n'existe pas", - "Token is expired, please try again": "Le token est expiré, veuillez réessayer", - "English": "Anglais", - "English (auto-generated)": "Anglais (générés automatiquement)", - "Afrikaans": "Afrikaans", - "Albanian": "Albanais", - "Amharic": "Amharique", - "Arabic": "Arabe", - "Armenian": "Arménien", - "Azerbaijani": "Azerbaïdjanais", - "Bangla": "Bangla", - "Basque": "Basque", - "Belarusian": "Belarusian", - "Bosnian": "Bosnian", - "Bulgarian": "Bulgarian", - "Burmese": "Birman", - "Catalan": "Catalan", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chinois (Simplifié)", - "Chinese (Traditional)": "Chinois (Traditionnel)", - "Corsican": "Corse", - "Croatian": "Croate", - "Czech": "Tchèque", - "Danish": "Danois", - "Dutch": "Néerlandais", - "Esperanto": "Espéranto", - "Estonian": "Estonien", - "Filipino": "Philippin", - "Finnish": "Finnois", - "French": "Français", - "Galician": "Galicien", - "Georgian": "Géorgien", - "German": "Allemand", - "Greek": "Grec", - "Gujarati": "Gujarati", - "Haitian Creole": "Créole haïtien", - "Hausa": "Haoussa", - "Hawaiian": "Hawaïen", - "Hebrew": "Hébreu", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Hongrois", - "Icelandic": "Islandais", - "Igbo": "Igbo", - "Indonesian": "Indonésien", - "Irish": "Irlandais", - "Italian": "Italien", - "Japanese": "Japonais", - "Javanese": "Javanais", - "Kannada": "Kannada", - "Kazakh": "Kazakh", - "Khmer": "Khmer", - "Korean": "Coréen", - "Kurdish": "Kurde", - "Kyrgyz": "Kirghize", - "Lao": "Lao", - "Latin": "Latin", - "Latvian": "Letton", - "Lithuanian": "Lituanien", - "Luxembourgish": "Luxembourgeois", - "Macedonian": "Macédonien", - "Malagasy": "Malgache", - "Malay": "Malais", - "Malayalam": "Malayalam", - "Maltese": "Maltais", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongol", - "Nepali": "Népalais", - "Norwegian Bokmål": "Norvégien bokmål", - "Nyanja": "Nyanja", - "Pashto": "Pachto", - "Persian": "Persan", - "Polish": "Polonais", - "Portuguese": "Portugais", - "Punjabi": "Pendjabi", - "Romanian": "Roumain", - "Russian": "Russe", - "Samoan": "Samoan", - "Scottish Gaelic": "Gaélique écossais", - "Serbian": "Serbe", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Singhalais", - "Slovak": "Slovaque", - "Slovenian": "Slovène", - "Somali": "Somalien", - "Southern Sotho": "Sotho du Sud", - "Spanish": "Espagnol", - "Spanish (Latin America)": "Espagnol (Amérique latine)", - "Sundanese": "Sundanais", - "Swahili": "Swahili", - "Swedish": "Suédois", - "Tajik": "Tadjik", - "Tamil": "Tamil", - "Telugu": "Télougou", - "Thai": "Thaï", - "Turkish": "Turc", - "Ukrainian": "Ukrainien", - "Urdu": "Ourdou", - "Uzbek": "Ouzbek", - "Vietnamese": "Vietnamien", - "Welsh": "Gallois", - "Western Frisian": "Frison occidental", - "Xhosa": "Xhosa", - "Yiddish": "Yiddish", - "Yoruba": "Yoruba", - "Zulu": "Zoulou", - "generic_count_years_0": "{{count}} an", - "generic_count_years_1": "{{count}} ans", - "generic_count_years_2": "{{count}} ans", - "generic_count_months_0": "{{count}} mois", - "generic_count_months_1": "{{count}} mois", - "generic_count_months_2": "{{count}} mois", - "generic_count_weeks_0": "{{count}} semaine", - "generic_count_weeks_1": "{{count}} semaines", - "generic_count_weeks_2": "{{count}} semaines", - "generic_count_days_0": "{{count}} jour", - "generic_count_days_1": "{{count}} jours", - "generic_count_days_2": "{{count}} jours", - "generic_count_hours_0": "{{count}} heure", - "generic_count_hours_1": "{{count}} heures", - "generic_count_hours_2": "{{count}} heures", - "generic_count_minutes_0": "{{count}} minute", - "generic_count_minutes_1": "{{count}} minutes", - "generic_count_minutes_2": "{{count}} minutes", - "generic_count_seconds_0": "{{count}} seconde", - "generic_count_seconds_1": "{{count}} secondes", - "generic_count_seconds_2": "{{count}} secondes", - "Fallback comments: ": "Commentaires alternatifs : ", - "Popular": "Populaire", - "Search": "Rechercher", - "Top": "Top", - "About": "À propos", - "Rating: ": "Évaluation : ", - "preferences_locale_label": "Langue : ", - "View as playlist": "Voir en tant que liste de lecture", - "Default": "Défaut", - "Music": "Musique", - "Gaming": "Jeux vidéo", - "News": "Actualités", - "Movies": "Films", - "Download": "Télécharger", - "Download as: ": "Télécharger en : ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(modifié)", - "YouTube comment permalink": "Lien permanent vers le commentaire sur YouTube", - "permalink": "permalien", - "`x` marked it with a ❤": "`x` l'a marqué d'un ❤", - "Audio mode": "Mode audio", - "Video mode": "Mode vidéo", - "channel_tab_videos_label": "Vidéos", - "Playlists": "Listes de lecture", - "channel_tab_community_label": "Communauté", - "search_filters_sort_option_relevance": "Pertinence", - "search_filters_sort_option_rating": "Notation", - "search_filters_sort_option_date": "Date d'ajout", - "search_filters_sort_option_views": "Nombre de vues", - "search_filters_type_label": "Type de contenu", - "search_filters_duration_label": "Durée", - "search_filters_features_label": "Fonctionnalités", - "search_filters_sort_label": "Trier par", - "search_filters_date_option_hour": "Dernière heure", - "search_filters_date_option_today": "Aujourd'hui", - "search_filters_date_option_week": "Cette semaine", - "search_filters_date_option_month": "Ce mois-ci", - "search_filters_date_option_year": "Cette année", - "search_filters_type_option_video": "Vidéo", - "search_filters_type_option_channel": "Chaîne", - "search_filters_type_option_playlist": "Liste de lecture", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Émission", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Sous-titres (CC)", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "En direct", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "emplacement", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Version actuelle : ", - "next_steps_error_message": "Vous pouvez essayer de : ", - "next_steps_error_message_refresh": "Rafraîchir la page", - "next_steps_error_message_go_to_youtube": "Aller sur YouTube", - "preferences_quality_dash_label": "Qualité vidéo DASH préférée : ", - "footer_source_code": "Code source", - "preferences_region_label": "Pays du contenu : ", - "footer_donate_page": "Faire un don", - "footer_modfied_source_code": "Code source modifié", - "search_filters_duration_option_short": "Courte (< 4 minutes)", - "search_filters_duration_option_long": "Longue (> 20 minutes)", - "adminprefs_modified_source_code_url_label": "URL du dépôt du code source modifié", - "footer_documentation": "Documentation", - "footer_original_source_code": "Code source original", - "preferences_quality_option_medium": "Moyenne", - "preferences_quality_option_small": "Petite", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "La plus haute", - "preferences_quality_dash_option_worst": "La plus basse", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_three_sixty": "360°", - "none": "aucun", - "videoinfo_started_streaming_x_ago": "En stream depuis `x`", - "videoinfo_watch_on_youTube": "Regarder sur YouTube", - "videoinfo_youTube_embed_link": "Intégrer", - "search_filters_features_option_purchased": "Acheté", - "videoinfo_invidious_embed_link": "Lien intégré", - "download_subtitles": "Sous-titres - `x` (.vtt)", - "user_saved_playlists": "`x` listes de lecture sauvegardées", - "Video unavailable": "Vidéo non disponible", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_dash": "DASH (qualité adaptative)", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "user_created_playlists": "`x` listes de lecture créées", - "preferences_save_player_pos_label": "Sauvegarder la position du lecteur : ", - "crash_page_you_found_a_bug": "Il semblerait que vous ayez trouvé un bug dans Invidious !", - "crash_page_refresh": "tenté de rafraîchir la page", - "crash_page_switch_instance": "essayé d'utiliser une autre instance", - "crash_page_read_the_faq": "lu la Foire Aux Questions (FAQ)", - "crash_page_search_issue": "cherché ce bug sur GitHub", - "crash_page_before_reporting": "Avant de signaler un bug, veuillez vous assurez que vous avez :", - "crash_page_report_issue": "Si aucune des solutions proposées ci-dessus ne vous a aidé, veuillez ouvrir une \"issue\" sur GitHub (de préférence en anglais) et d'y inclure le message suivant (ne PAS traduire le texte) :", - "English (United States)": "Anglais (Etats-Unis)", - "Chinese (China)": "Chinois (Chine)", - "Chinese (Hong Kong)": "Chinois (Hong Kong)", - "Dutch (auto-generated)": "Danoi (auto-généré)", - "French (auto-generated)": "Français (auto-généré)", - "German (auto-generated)": "Allemand (auto-généré)", - "Japanese (auto-generated)": "Japonais (auto-généré)", - "Korean (auto-generated)": "Coréen (auto-généré)", - "Indonesian (auto-generated)": "Indonésien (auto-généré)", - "Portuguese (auto-generated)": "Portuguais (auto-généré)", - "Portuguese (Brazil)": "Portugais (Brésil)", - "Spanish (auto-generated)": "Espagnol (auto-généré)", - "Spanish (Mexico)": "Espagnol (Mexique)", - "Turkish (auto-generated)": "Turque (auto-généré)", - "Chinese": "Chinois", - "English (United Kingdom)": "Anglais (Royaume-Uni)", - "Chinese (Taiwan)": "Chinois (Taiwan)", - "Cantonese (Hong Kong)": "Cantonais (Hong Kong)", - "Interlingue": "Occidental", - "Italian (auto-generated)": "Italien (auto-généré)", - "Vietnamese (auto-generated)": "Vietnamien (auto-généré)", - "Russian (auto-generated)": "Russe (auto-généré)", - "Spanish (Spain)": "Espagnol (Espagne)", - "preferences_watch_history_label": "Activer l'historique de visionnage : ", - "search_filters_title": "Filtres", - "search_message_change_filters_or_query": "Essayez d'élargir votre recherche et/ou de changer les filtres.", - "search_filters_date_option_none": "Toutes les dates", - "search_filters_duration_option_medium": "Moyenne (de 4 à 20 minutes)", - "search_filters_apply_button": "Appliquer les filtres", - "search_message_no_results": "Aucun résultat.", - "search_message_use_another_instance": " Vous pouvez également effectuer votre recherche sur une autre instance.", - "search_filters_type_option_all": "Tous les types", - "search_filters_date_label": "Date d'ajout", - "search_filters_features_option_vr180": "VR180", - "search_filters_duration_option_none": "Toutes les durées", - "error_video_not_in_playlist": "La vidéo demandée n'existe pas dans cette liste de lecture. Cliquez ici pour retourner à la liste de lecture.", - "channel_tab_shorts_label": "Vidéos courtes", - "channel_tab_streams_label": "Vidéos en direct", - "channel_tab_playlists_label": "Listes de lecture", - "channel_tab_channels_label": "Chaînes", - "Song: ": "Chanson : ", - "Artist: ": "Artiste : ", - "Album: ": "Album : ", - "Standard YouTube license": "Licence YouTube Standard", - "Music in this video": "Musique dans cette vidéo", - "Channel Sponsor": "Soutien de la chaîne", - "Download is disabled": "Le téléchargement est désactivé", - "Import YouTube playlist (.csv)": "Importer des listes de lecture de Youtube (.csv)", - "channel_tab_releases_label": "Parutions", - "channel_tab_podcasts_label": "Émissions audio", - "Import YouTube watch history (.json)": "Importer l'historique de visionnement YouTube (.json)" -} diff --git a/invidious/locales/he.json b/invidious/locales/he.json deleted file mode 100755 index 6fee93b..0000000 --- a/invidious/locales/he.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "LIVE": "שידור חי", - "Shared `x` ago": "שותף לפני `x`", - "Unsubscribe": "ביטול מינוי", - "Subscribe": "הרשמה למינוי", - "View channel on YouTube": "צפייה בערוץ ב־YouTube", - "View playlist on YouTube": "צפייה בפלייליסט ב־YouTube", - "newest": "החדש ביותר", - "oldest": "הישן ביותר", - "popular": "סרטונים פופולריים", - "last": "אחרון", - "Next page": "העמוד הבא", - "Previous page": "העמוד הקודם", - "Clear watch history?": "לנקות את היסטוריית הצפייה?", - "New password": "סיסמה חדשה", - "New passwords must match": "על הסיסמאות החדשות להתאים", - "Authorize token?": "לאשר את האסימון?", - "Authorize token for `x`?": "האם לאשר את האסימון עבור `x`?", - "Yes": "כן", - "No": "לא", - "Import and Export Data": "ייבוא וייצוא נתונים", - "Import": "ייבוא", - "Import Invidious data": "ייבוא נתוני Invidious", - "Import YouTube subscriptions": "ייבוא מינויים מ־YouTube", - "Import FreeTube subscriptions (.db)": "ייבוא מינויים מ־FreeTube‏ (.db)", - "Import NewPipe subscriptions (.json)": "ייבוא מינויים מ־NewPipe‏ (.json)", - "Import NewPipe data (.zip)": "ייבוא נתוני NewPipe‏ (.zip)", - "Export": "ייצוא", - "Export subscriptions as OPML": "ייצוא המינויים בתור OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "ייצוא המינויים בתור OPML (עבור NewPipe ו־FreeTube)", - "Export data as JSON": "ייצוא הנתונים בתור קובץ JSON", - "Delete account?": "למחוק את החשבון?", - "History": "היסטוריה", - "An alternative front-end to YouTube": "ממשק משתמש חלופי ל־YouTube", - "JavaScript license information": "מידע על רישיון JavaScript", - "source": "source", - "Log in": "כניסה", - "Log in/register": "כניסה/הרשמה", - "User ID": "שם משתמש", - "Password": "סיסמה", - "Time (h:mm:ss):": "זמן (h:mm:ss):", - "Text CAPTCHA": "Text CAPTCHA", - "Image CAPTCHA": "Image CAPTCHA", - "Sign In": "התחברות", - "Register": "הרשמה", - "E-mail": "דוא״ל", - "Preferences": "העדפות", - "preferences_category_player": "העדפות הנגן", - "preferences_autoplay_label": "ניגון אוטומטי: ", - "preferences_continue_label": "ניגון הסרטון הבא כברירת מחדל: ", - "preferences_continue_autoplay_label": "ניגון הסרטון הבא באופן אוטומטי: ", - "preferences_listen_label": "שמע כברירת מחדל: ", - "preferences_speed_label": "מהירות ברירת המחדל: ", - "preferences_quality_label": "איכות הווידאו המועדפת: ", - "preferences_volume_label": "עצמת השמע של הנגן: ", - "preferences_comments_label": "תגובות ברירת מחדל ", - "youtube": "יוטיוב", - "reddit": "reddit", - "preferences_captions_label": "כתוביות ברירת מחדל ", - "Fallback captions: ": "כתוביות גיבוי ", - "preferences_related_videos_label": "הצגת סרטונים קשורים: ", - "preferences_annotations_label": "הצגת הערות כברירת מחדל: ", - "preferences_category_visual": "העדפות חזותיות", - "preferences_player_style_label": "סגנון הנגן: ", - "Dark mode: ": "מצב כהה: ", - "preferences_dark_mode_label": "ערכת נושא: ", - "dark": "כהה", - "light": "בהיר", - "preferences_category_subscription": "העדפות מינויים", - "preferences_annotations_subscribed_label": "Show annotations by default for subscribed channels? ", - "preferences_max_results_label": "מספר הסרטונים שמוצגים בהזנה: ", - "preferences_sort_label": "מיון הסרטונים לפי: ", - "published": "פורסם", - "alphabetically": "בסדר אלפביתי", - "alphabetically - reverse": "בסדר אלפביתי - הפוך", - "channel name": "שם הערוץ", - "channel name - reverse": "שם הערוץ - הפוך", - "Only show latest video from channel: ": "הצגת הסרטון האחרון מהערוץ בלבד: ", - "Only show latest unwatched video from channel: ": "הצגת הסרטון האחרון שלא נצפה מהערוץ בלבד: ", - "preferences_unseen_only_label": "הצגת סרטונים שלא נצפו בלבד: ", - "preferences_notifications_only_label": "הצגת התראות בלבד (אם ישנן): ", - "`x` uploaded a video": "סרטון הועלה על ידי `x`", - "`x` is live": "`x` בשידור חי", - "preferences_category_data": "העדפות נתונים", - "Clear watch history": "ניקוי היסטוריית הצפייה", - "Import/export data": "ייבוא/ייצוא נתונים", - "Change password": "שינוי הסיסמה", - "Manage subscriptions": "ניהול מינויים", - "Manage tokens": "ניהול אסימונים", - "Watch history": "היסטוריית צפייה", - "Delete account": "מחיקת החשבון", - "preferences_category_admin": "הגדרות ניהול מערכת", - "preferences_default_home_label": "Default homepage: ", - "preferences_feed_menu_label": "תפריט ההזנה: ", - "Save preferences": "שמירת ההעדפות", - "Subscription manager": "מנהל המינויים", - "Token manager": "Token manager", - "Token": "Token", - "Import/export": "ייבוא/ייצוא", - "unsubscribe": "ביטול מנוי", - "Subscriptions": "מינויים", - "search": "חיפוש", - "Log out": "יציאה", - "Source available here.": "קוד המקור זמין כאן.", - "View privacy policy.": "להצגת מדיניות הפרטיות.", - "Trending": "הסרטונים החמים", - "Public": "ציבורי", - "Unlisted": "לא רשום", - "Private": "פרטי", - "View all playlists": "הצגת כל הפלייליסטים", - "Updated `x` ago": "הועלה לפני `x`", - "Delete playlist `x`?": "למחוק את פלייליסט `x`?", - "Delete playlist": "מחיקת פלייליסט", - "Create playlist": "יצירת פלייליסט", - "Playlist privacy": "Playlist privacy", - "Watch on YouTube": "צפייה ב־YouTube", - "Genre: ": "Genre: ", - "License: ": "רישיון: ", - "Family friendly? ": "לכל המשפחה? ", - "Wilson score: ": "ציון וילסון: ", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "שלום! נראה ש־JavaScript כבוי. יש ללחוץ כאן להצגת התגובות, נא לקחת בחשבון שהטעינה תיקח קצת יותר זמן.", - "View YouTube comments": "הצגת התגובות מ־YouTube", - "View more comments on Reddit": "להצגת תגובות נוספות ב־Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "הצגת `x` תגובות.([^.,0-9]|^)1([^.,0-9]|$)", - "": "הצגת `x` תגובות" - }, - "View Reddit comments": "להצגת התגובות ב־Reddit", - "Hide replies": "הסתרת תגובות", - "Show replies": "הצגת תגובות", - "Incorrect password": "סיסמה שגויה", - "Wrong answer": "תשובה שגויה", - "CAPTCHA is a required field": "שדה CAPTCHA הוא שדה חובה", - "User ID is a required field": "חובה למלא את שדה שם המשתמש", - "Password is a required field": "חובה למלא את שדה הסיסמה", - "Wrong username or password": "שם משתמש שגוי או סיסמה שגויה", - "Password cannot be longer than 55 characters": "על אורך הסיסמה להיות 55 תווים לכל היותר", - "Please log in": "נא להתחבר", - "channel:`x`": "ערוץ:`x`", - "Deleted or invalid channel": "הערוץ נמחק או שאינו תקין", - "This channel does not exist.": "הערוץ הזה אינו קיים.", - "Could not get channel info.": "לא היה ניתן לקבל מידע על הערוץ.", - "Could not fetch comments": "לא היה ניתן למשוך את התגובות", - "`x` ago": "לפני `x`", - "Load more": "לטעון עוד", - "Empty playlist": "פלייליסט ריק", - "Not a playlist.": "לא פלייליסט.", - "Playlist does not exist.": "הפלייליסט אינו קיים.", - "No such user": "אין משתמש כזה", - "Token is expired, please try again": "תוקף האסימון פג, נא לנסות שוב", - "English": "אנגלית", - "English (auto-generated)": "אנגלית (נוצר באופן אוטומטי)", - "Afrikaans": "Afrikaans", - "Albanian": "אלבנית", - "Amharic": "אמהרית", - "Arabic": "ערבית", - "Armenian": "ארמנית", - "Azerbaijani": "Azerbaijani", - "Bangla": "בנגלית", - "Basque": "בסקית", - "Belarusian": "Belarusian", - "Bosnian": "Bosnian", - "Bulgarian": "בולגרית", - "Burmese": "Burmese", - "Catalan": "Catalan", - "Cebuano": "סבואנו", - "Chinese (Simplified)": "סינית (מפושטת)", - "Chinese (Traditional)": "סינית (מסורתית)", - "Corsican": "קורסיקאית", - "Croatian": "קרואטית", - "Czech": "צ׳כית", - "Danish": "Danish", - "Dutch": "Dutch", - "Esperanto": "אספרנטו", - "Estonian": "אסטונית", - "Filipino": "Filipino", - "Finnish": "Finnish", - "French": "צרפתית", - "Galician": "גליסית", - "Georgian": "גאורגית", - "German": "גרמנית", - "Greek": "יוונית", - "Gujarati": "גוג׳ראטית", - "Haitian Creole": "קריאולית האיטית", - "Hausa": "האוסה", - "Hawaiian": "הוואית", - "Hebrew": "עברית", - "Hindi": "הינדית", - "Hmong": "המונג", - "Hungarian": "הונגרית", - "Icelandic": "איסלנדית", - "Igbo": "איגבו", - "Indonesian": "אינדונזית", - "Irish": "Irish", - "Italian": "איטלקית", - "Japanese": "יפנית", - "Javanese": "ג'אווה", - "Kannada": "קאנדה", - "Kazakh": "קזחית", - "Khmer": "חמרית", - "Korean": "קוריאנית", - "Kurdish": "כורדית", - "Kyrgyz": "קירגיזית", - "Lao": "לאית", - "Latin": "לטינית", - "Latvian": "לטבית", - "Lithuanian": "ליטאית", - "Luxembourgish": "לוקסמבורגית", - "Macedonian": "מקדונית", - "Malagasy": "מלגשית", - "Malay": "מלאית", - "Malayalam": "מלאיאלאם", - "Maltese": "מלטזית", - "Maori": "מאורית", - "Marathi": "מראטהית", - "Mongolian": "מונגולית", - "Nepali": "נפאלית", - "Norwegian Bokmål": "Norwegian Bokmål", - "Pashto": "פשטו", - "Persian": "פרסית", - "Polish": "פולנית", - "Portuguese": "פורטוגלית", - "Punjabi": "פנג'אבי", - "Romanian": "רומנית", - "Russian": "רוסית", - "Samoan": "סמואית", - "Scottish Gaelic": "גאלית סקוטית", - "Serbian": "Serbian", - "Sindhi": "סינדהי", - "Sinhala": "סינהלית", - "Slovak": "Slovak", - "Slovenian": "Slovenian", - "Somali": "סומלית", - "Spanish": "ספרדית", - "Spanish (Latin America)": "ספרדית (אמריקה הלטינית)", - "Swahili": "סווהילי", - "Swedish": "שוודית", - "Tajik": "טג׳יקית", - "Tamil": "טמילית", - "Telugu": "טלוגו", - "Thai": "תאית", - "Turkish": "טורקית", - "Ukrainian": "אוקראינית", - "Urdu": "אורדו", - "Uzbek": "אוזבקית", - "Vietnamese": "וייטנאמית", - "Welsh": "ולשית", - "Xhosa": "קוסה", - "Yiddish": "יידיש", - "Yoruba": "יורובה", - "Zulu": "זולו", - "Popular": "סרטונים פופולריים", - "Top": "Top", - "About": "על אודות", - "Rating: ": "דירוג: ", - "preferences_locale_label": "שפה: ", - "View as playlist": "הצגה כפלייליסט", - "Default": "ברירת מחדל", - "Music": "מוזיקה", - "Gaming": "משחקים", - "News": "חדשות", - "Movies": "סרטים", - "Download": "הורדה", - "Download as: ": "הורדה בתור: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(לאחר עריכה)", - "`x` marked it with a ❤": "סומנה ב־❤ על ידי `x`", - "Audio mode": "Audio mode", - "Video mode": "Video mode", - "channel_tab_videos_label": "סרטונים", - "Playlists": "פלייליסטים", - "channel_tab_community_label": "קהילה", - "search_filters_sort_option_relevance": "רלוונטיות", - "search_filters_sort_option_rating": "דירוג", - "search_filters_sort_option_date": "תאריך העלאה", - "search_filters_sort_option_views": "מספר צפיות", - "search_filters_type_label": "סוג", - "search_filters_duration_label": "משך זמן", - "search_filters_features_label": "תכונות", - "search_filters_sort_label": "מיון לפי", - "search_filters_date_option_hour": "השעה האחרונה", - "search_filters_date_option_today": "היום", - "search_filters_date_option_week": "השבוע", - "search_filters_date_option_month": "החודש", - "search_filters_date_option_year": "השנה", - "search_filters_type_option_video": "סרטון", - "search_filters_type_option_channel": "ערוץ", - "search_filters_type_option_playlist": "פלייליסט", - "search_filters_type_option_movie": "סרט", - "search_filters_type_option_show": "תכנית טלוויזיה", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "כתוביות", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Live", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "מיקום", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "הגרסה הנוכחית: ", - "search_filters_title": "סינון" -} diff --git a/invidious/locales/hi.json b/invidious/locales/hi.json deleted file mode 100755 index a7e0639..0000000 --- a/invidious/locales/hi.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "last": "आखिरी", - "Yes": "हाँ", - "No": "नहीं", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML के रूप में सदस्यताएँ निर्यात करें (NewPipe और FreeTube के लिए)", - "Log in/register": "लॉग-इन/पंजीकृत करें", - "preferences_autoplay_label": "अपने आप चलाने की सुविधा: ", - "preferences_dark_mode_label": "थीम: ", - "preferences_default_home_label": "डिफ़ॉल्ट मुखपृष्ठ: ", - "Could not fetch comments": "टिप्पणियाँ प्राप्त न की जा सकीं", - "comments_points_count": "{{count}} पॉइंट", - "comments_points_count_plural": "{{count}} पॉइंट्स", - "Subscription manager": "सदस्यता प्रबंधन", - "License: ": "लाइसेंस: ", - "Wilson score: ": "Wilson स्कोर: ", - "Wrong answer": "गलत जवाब", - "Erroneous CAPTCHA": "गलत CAPTCHA", - "Please log in": "कृपया लॉग-इन करें", - "Bosnian": "बोस्नियाई", - "Bulgarian": "बुल्गारियाई", - "Burmese": "बर्मी", - "Chinese (Traditional)": "चीनी (पारंपरिक)", - "Kurdish": "कुर्द", - "Punjabi": "पंजाबी", - "Sinhala": "सिंहली", - "Slovak": "स्लोवाक", - "generic_count_days": "{{count}} दिन", - "generic_count_days_plural": "{{count}} दिन", - "generic_count_hours": "{{count}} घंटे", - "generic_count_hours_plural": "{{count}} घंटे", - "generic_count_minutes": "{{count}} मिनट", - "generic_count_minutes_plural": "{{count}} मिनट", - "generic_count_seconds": "{{count}} सेकंड", - "generic_count_seconds_plural": "{{count}} सेकंड", - "generic_playlists_count": "{{count}} प्लेलिस्ट", - "generic_playlists_count_plural": "{{count}} प्लेलिस्ट्स", - "crash_page_report_issue": "अगर इनमें से कुछ भी काम नहीं करता, कृपया GitHub पर एक नया मुद्दा खोल दें (अंग्रेज़ी में) और अपने संदेश में यह टेक्स्ट दर्ज करें (इसे अनुवादित न करें!):", - "generic_views_count": "{{count}} बार देखा गया", - "generic_views_count_plural": "{{count}} बार देखा गया", - "generic_videos_count": "{{count}} वीडियो", - "generic_videos_count_plural": "{{count}} वीडियो", - "generic_subscribers_count": "{{count}} सदस्य", - "generic_subscribers_count_plural": "{{count}} सदस्य", - "generic_subscriptions_count": "{{count}} सदस्यता", - "generic_subscriptions_count_plural": "{{count}} सदस्यताएँ", - "LIVE": "लाइव", - "Shared `x` ago": "`x` पहले बाँटा गया", - "Unsubscribe": "सदस्यता छोड़ें", - "Subscribe": "सदस्यता लें", - "View channel on YouTube": "चैनल YouTube पर देखें", - "View playlist on YouTube": "प्लेलिस्ट YouTube पर देखें", - "newest": "सबसे नया", - "oldest": "सबसे पुराना", - "popular": "सर्वाधिक लोकप्रिय", - "Next page": "अगला पृष्ठ", - "Previous page": "पिछला पृष्ठ", - "Clear watch history?": "देखने का इतिहास मिटाएँ?", - "New password": "नया पासवर्ड", - "New passwords must match": "पासवर्ड्स को मेल खाना होगा", - "Authorize token?": "टोकन को प्रमाणित करें?", - "Authorize token for `x`?": "`x` के लिए टोकन को प्रमाणित करें?", - "Import and Export Data": "डेटा को आयात और निर्यात करें", - "Import": "आयात करें", - "Import Invidious data": "Invidious JSON डेटा आयात करें", - "Import YouTube subscriptions": "YouTube/OPML सदस्यताएँ आयात करें", - "Import FreeTube subscriptions (.db)": "FreeTube सदस्यताएँ आयात करें (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe सदस्यताएँ आयात करें (.json)", - "Import NewPipe data (.zip)": "NewPipe डेटा आयात करें (.zip)", - "Export": "निर्यात करें", - "Export subscriptions as OPML": "OPML के रूप में सदस्यताएँ निर्यात करें", - "Export data as JSON": "Invidious डेटा को JSON के रूप में निर्यात करें", - "Delete account?": "खाता हटाएँ?", - "History": "देखे गए वीडियो", - "An alternative front-end to YouTube": "YouTube का एक वैकल्पिक फ्रंट-एंड", - "JavaScript license information": "जावास्क्रिप्ट लाइसेंस की जानकारी", - "source": "स्रोत", - "Log in": "लॉग-इन करें", - "User ID": "सदस्य ID", - "Password": "पासवर्ड", - "Register": "पंजीकृत करें", - "E-mail": "ईमेल", - "Time (h:mm:ss):": "समय (घं:मिमि:सेसे):", - "Text CAPTCHA": "टेक्स्ट CAPTCHA", - "Image CAPTCHA": "चित्र CAPTCHA", - "Sign In": "साइन इन करें", - "Preferences": "प्राथमिकताएँ", - "preferences_category_player": "प्लेयर की प्राथमिकताएँ", - "preferences_video_loop_label": "हमेशा लूप करें: ", - "preferences_continue_label": "डिफ़ॉल्ट से अगला चलाएँ: ", - "preferences_continue_autoplay_label": "अगला वीडियो अपने आप चलाएँ: ", - "preferences_listen_label": "डिफ़ॉल्ट से सुनें: ", - "preferences_local_label": "प्रॉक्सी वीडियो: ", - "preferences_watch_history_label": "देखने का इतिहास सक्षम करें: ", - "preferences_speed_label": "वीडियो चलाने की डिफ़ॉल्ट रफ़्तार: ", - "preferences_quality_label": "वीडियो की प्राथमिक क्वालिटी: ", - "preferences_quality_option_dash": "DASH (अनुकूली गुणवत्ता)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "मध्यम", - "preferences_quality_option_small": "छोटा", - "preferences_quality_dash_label": "प्राथमिक DASH वीडियो क्वालिटी: ", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_auto": "अपने-आप", - "preferences_quality_dash_option_best": "सबसे अच्छा", - "preferences_quality_dash_option_worst": "सबसे खराब", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "preferences_comments_label": "डिफ़ॉल्ट टिप्पणियाँ: ", - "preferences_volume_label": "प्लेयर का वॉल्यूम: ", - "youtube": "YouTube", - "reddit": "Reddit", - "invidious": "Invidious", - "preferences_captions_label": "डिफ़ॉल्ट कैप्शन: ", - "Fallback captions: ": "वैकल्पिक कैप्शन: ", - "preferences_related_videos_label": "संबंधित वीडियो दिखाएँ: ", - "preferences_annotations_label": "डिफ़ॉल्ट से टिप्पणियाँ दिखाएँ: ", - "preferences_extend_desc_label": "अपने आप वीडियो के विवरण का विस्तार करें: ", - "preferences_vr_mode_label": "उत्तरदायी 360 डिग्री वीडियो (WebGL की ज़रूरत है): ", - "preferences_category_visual": "यथादृश्य प्राथमिकताएँ", - "preferences_region_label": "सामग्री का राष्ट्र: ", - "preferences_player_style_label": "प्लेयर का स्टाइल: ", - "Dark mode: ": "डार्क मोड: ", - "dark": "डार्क", - "light": "लाइट", - "preferences_thin_mode_label": "हल्का मोड: ", - "preferences_category_misc": "विविध प्राथमिकताएँ", - "preferences_automatic_instance_redirect_label": "अपने आप अनुप्रेषित करें (redirect.invidious.io पर फ़ॉलबैक करें): ", - "preferences_category_subscription": "सदस्यताओं की प्राथमिकताएँ", - "preferences_annotations_subscribed_label": "सदस्यता लिए गए चैनलों पर डिफ़ॉल्ट से टिप्पणियाँ दिखाएँ? ", - "Redirect homepage to feed: ": "फ़ीड पर मुखपृष्ठ को अनुप्रेषित करें: ", - "preferences_max_results_label": "फ़ीड में दिखाए जाने वाले वीडियों की संख्या: ", - "preferences_sort_label": "वीडियों को इस मानदंड पर छाँटें: ", - "published": "प्रकाशित", - "published - reverse": "प्रकाशित - उल्टा", - "Only show latest video from channel: ": "चैनल से सिर्फ नवीनतम वीडियो ही दिखाएँ: ", - "alphabetically": "वर्णक्रमानुसार", - "Only show latest unwatched video from channel: ": "चैनल से सिर्फ न देखा गया नवीनतम वीडियो ही दिखाएँ: ", - "alphabetically - reverse": "वर्णक्रमानुसार - उल्टा", - "channel name": "चैनल का नाम", - "channel name - reverse": "चैनल का नाम - उल्टा", - "preferences_unseen_only_label": "सिर्फ न देखे गए वीडियो ही दिखाएँ: ", - "preferences_notifications_only_label": "सिर्फ सूचनाएँ दिखाएँ (अगर हो तो): ", - "Enable web notifications": "वेब सूचनाएँ सक्षम करें", - "`x` uploaded a video": "`x` ने वीडियो अपलोड किया", - "`x` is live": "`x` लाइव हैं", - "preferences_category_data": "डेटा की प्राथमिकताएँ", - "Clear watch history": "देखने का इतिहास साफ़ करें", - "Import/export data": "डेटा को आयात/निर्यात करें", - "Change password": "पासवर्ड बदलें", - "Manage subscriptions": "सदस्यताएँ प्रबंधित करें", - "Manage tokens": "टोकन प्रबंधित करें", - "Watch history": "देखने का इतिहास", - "Delete account": "खाता हटाएँ", - "preferences_category_admin": "प्रबंधक प्राथमिकताएँ", - "preferences_feed_menu_label": "फ़ीड मेन्यू: ", - "preferences_show_nick_label": "ऊपर उपनाम दिखाएँ: ", - "Top enabled: ": "ऊपर का हिस्सा सक्षम है: ", - "CAPTCHA enabled: ": "CAPTCHA सक्षम है: ", - "Login enabled: ": "लॉग-इन सक्षम है: ", - "Registration enabled: ": "पंजीकरण सक्षम है: ", - "Report statistics: ": "सांख्यिकी रिपोर्ट करें: ", - "Released under the AGPLv3 on Github.": "GitHub पर AGPLv3 के अंतर्गत प्रकाशित।", - "Save preferences": "प्राथमिकताएँ सहेजें", - "Token manager": "टोकन प्रबंधन", - "Token": "टोकन", - "tokens_count": "{{count}} टोकन", - "tokens_count_plural": "{{count}} टोकन", - "Import/export": "आयात/निर्यात करें", - "unsubscribe": "सदस्यता छोड़ें", - "revoke": "हटाएँ", - "Subscriptions": "सदस्यताएँ", - "subscriptions_unseen_notifs_count": "{{count}} अपठित सूचना", - "subscriptions_unseen_notifs_count_plural": "{{count}} अपठित सूचना", - "search": "खोजें", - "Log out": "लॉग-आउट करें", - "Source available here.": "स्रोत यहाँ उपलब्ध है।", - "View JavaScript license information.": "जावास्क्रिप्ट लाइसेंस की जानकारी देखें।", - "View privacy policy.": "निजता नीति देखें।", - "Trending": "रुझान में", - "Public": "सार्वजनिक", - "Unlisted": "सबके लिए उपलब्ध नहीं", - "Private": "निजी", - "View all playlists": "सभी प्लेलिस्ट देखें", - "Create playlist": "प्लेलिस्ट बनाएँ", - "Updated `x` ago": "`x` पहले अपडेट किया गया", - "Delete playlist `x`?": "प्लेलिस्ट `x` हटाएँ?", - "Delete playlist": "प्लेलिस्ट हटाएँ", - "Title": "शीर्षक", - "Playlist privacy": "प्लेलिस्ट की निजता", - "Editing playlist `x`": "प्लेलिस्ट `x` को संपादित किया जा रहा है", - "Show more": "अधिक देखें", - "Show less": "कम देखें", - "Watch on YouTube": "YouTube पर देखें", - "Switch Invidious Instance": "Invidious उदाहरण बदलें", - "search_message_no_results": "कोई परिणाम नहीं मिला।", - "search_message_change_filters_or_query": "अपने खोज क्वेरी को और चौड़ा करें और/या फ़िल्टर बदलें।", - "search_message_use_another_instance": " आप दूसरे उदाहरण पर भी खोज सकते हैं।", - "Hide annotations": "टिप्पणियाँ छिपाएँ", - "Show annotations": "टिप्पणियाँ दिखाएँ", - "Genre: ": "श्रेणी: ", - "Family friendly? ": "परिवार के लिए ठीक है? ", - "Engagement: ": "सगाई: ", - "Whitelisted regions: ": "स्वीकृत क्षेत्र: ", - "Blacklisted regions: ": "अस्वीकृत क्षेत्र: ", - "Shared `x`": "`x` बाँटा गया", - "Premieres in `x`": "`x` बाद प्रीमियर होगा", - "Premieres `x`": "`x` को प्रीमिर होगा", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "नमस्कार! ऐसा लगता है कि आपका जावास्क्रिप्ट अक्षम है। टिप्पणियाँ देखने के लिए यहाँ क्लिक करें, लेकिन याद रखें कि इन्हें लोड होने में थोड़ा ज़्यादा समय लग सकता है।", - "View YouTube comments": "YouTube टिप्पणियाँ देखें", - "View more comments on Reddit": "Reddit पर अधिक टिप्पणियाँ देखें", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` टिप्पणी देखें", - "": "`x` टिप्पणियाँ देखें" - }, - "View Reddit comments": "Reddit पर टिप्पणियाँ", - "Hide replies": "जवाब छिपाएँ", - "Show replies": "जवाब दिखाएँ", - "Incorrect password": "गलत पासवर्ड", - "CAPTCHA is a required field": "CAPTCHA एक ज़रूरी फ़ील्ड है", - "User ID is a required field": "सदस्य ID एक ज़रूरी फ़ील्ड है", - "Password is a required field": "पासवर्ड एक ज़रूरी फ़ील्ड है", - "Wrong username or password": "गलत सदस्यनाम या पासवर्ड", - "Password cannot be empty": "पासवर्ड खाली नहीं हो सकता", - "Password cannot be longer than 55 characters": "पासवर्ड में अधिकतम 55 अक्षर हो सकते हैं", - "Invidious Private Feed for `x`": "`x` के लिए Invidious निजी फ़ीड", - "channel:`x`": "चैनल:`x`", - "Deleted or invalid channel": "हटाया गया या अमान्य चैनल", - "This channel does not exist.": "यह चैनल मौजूद नहीं है।", - "Could not get channel info.": "चैनल की जानकारी प्राप्त न की जा सकी।", - "comments_view_x_replies": "{{count}} टिप्पणी देखें", - "comments_view_x_replies_plural": "{{count}} टिप्पणियाँ देखें", - "`x` ago": "`x` पहले", - "Load more": "अधिक लोड करें", - "Could not create mix.": "मिक्स न बनाया जा सका।", - "Empty playlist": "खाली प्लेलिस्ट", - "Not a playlist.": "यह प्लेलिस्ट नहीं है।", - "Playlist does not exist.": "प्लेलिस्ट मौजूद नहीं है।", - "Could not pull trending pages.": "रुझान के पृष्ठ प्राप्त न किए जा सके।", - "Hidden field \"challenge\" is a required field": "छिपाया गया फ़ील्ड \"चुनौती\" एक आवश्यक फ़ील्ड है", - "Hidden field \"token\" is a required field": "छिपाया गया फ़ील्ड \"टोकन\" एक आवश्यक फ़ील्ड है", - "Erroneous challenge": "त्रुटिपूर्ण चुनौती", - "Erroneous token": "त्रुटिपूर्ण टोकन", - "No such user": "यह सदस्य मौजूद नहीं हैं", - "Token is expired, please try again": "टोकन की समय-सीमा समाप्त हो चुकी है, कृपया दोबारा कोशिश करें", - "English": "अंग्रेज़ी", - "English (United Kingdom)": "अंग्रेज़ी (यूनाइटेड किंग्डम)", - "English (United States)": "अंग्रेज़ी (संयुक्त राष्ट्र)", - "English (auto-generated)": "अंग्रेज़ी (अपने-आप जनरेट हुआ)", - "Afrikaans": "अफ़्रीकी", - "Albanian": "अल्बानियाई", - "Amharic": "अम्हेरी", - "Arabic": "अरबी", - "Armenian": "आर्मेनियाई", - "Belarusian": "बेलारूसी", - "Azerbaijani": "अज़रबैजानी", - "Bangla": "बंगाली", - "Basque": "बास्क", - "Cantonese (Hong Kong)": "कैंटोनीज़ (हाँग काँग)", - "Catalan": "कातालान", - "Cebuano": "सेबुआनो", - "Chinese": "चीनी", - "Chinese (China)": "चीनी (चीन)", - "Chinese (Hong Kong)": "चीनी (हाँग काँग)", - "Chinese (Simplified)": "चीनी (सरलीकृत)", - "Chinese (Taiwan)": "चीनी (ताइवान)", - "Corsican": "कोर्सिकन", - "Croatian": "क्रोएशियाई", - "Czech": "चेक", - "Danish": "डेनिश", - "Dutch": "डच", - "Dutch (auto-generated)": "डच (अपने-आप जनरेट हुआ)", - "Esperanto": "एस्पेरांतो", - "Estonian": "एस्टोनियाई", - "Filipino": "फ़िलिपीनो", - "Finnish": "फ़िनिश", - "French": "फ़्रेंच", - "French (auto-generated)": "फ़्रेंच (अपने-आप जनरेट हुआ)", - "Galician": "गैलिशियन", - "Georgian": "जॉर्जियाई", - "German": "जर्मन", - "German (auto-generated)": "जर्मन (अपने-आप जनरेट हुआ)", - "Greek": "यूनानी", - "Gujarati": "गुजराती", - "Haitian Creole": "हैती क्रियोल", - "Hausa": "हौसा", - "Hawaiian": "हवाई", - "Hebrew": "हीब्रू", - "Hindi": "हिन्दी", - "Hmong": "हमोंग", - "Hungarian": "हंगेरी", - "Icelandic": "आइसलैंडिक", - "Igbo": "इग्बो", - "Indonesian": "इंडोनेशियाई", - "Indonesian (auto-generated)": "इंडोनेशियाई (अपने-आप जनरेट हुआ)", - "Interlingue": "इंटरलिंगुआ", - "Irish": "आयरिश", - "Italian": "इतालवी", - "Italian (auto-generated)": "इतालवी (अपने-आप जनरेट हुआ)", - "Japanese": "जापानी", - "Japanese (auto-generated)": "जापानी (अपने-आप जनरेट हुआ)", - "Javanese": "जावानीज़", - "Kannada": "कन्नड़", - "Kazakh": "कज़ाख़", - "Khmer": "खमेर", - "Korean": "कोरियाई", - "Korean (auto-generated)": "कोरियाई (अपने-आप जनरेट हुआ)", - "Kyrgyz": "किर्गीज़", - "Lao": "लाओ", - "Latin": "लैटिन", - "Latvian": "लातवियाई", - "Lithuanian": "लिथुएनियाई", - "Luxembourgish": "लग्ज़मबर्गी", - "Macedonian": "मकादूनियाई", - "Malagasy": "मालागासी", - "Malay": "मलय", - "Malayalam": "मलयालम", - "Maltese": "माल्टीज़", - "Maori": "माओरी", - "Marathi": "मराठी", - "Mongolian": "मंगोलियाई", - "Nepali": "नेपाली", - "Norwegian Bokmål": "नॉर्वेजियाई", - "Nyanja": "न्यानजा", - "Pashto": "पश्तो", - "Persian": "फ़ारसी", - "Polish": "पोलिश", - "Portuguese": "पुर्तगाली", - "Portuguese (auto-generated)": "पुर्तगाली (अपने-आप जनरेट हुआ)", - "Portuguese (Brazil)": "पुर्तगाली (ब्राज़ील)", - "Romanian": "रोमेनियाई", - "Russian": "रूसी", - "Russian (auto-generated)": "रूसी (अपने-आप जनरेट हुआ)", - "Samoan": "सामोन", - "Scottish Gaelic": "स्कॉटिश गाएलिक", - "Serbian": "सर्बियाई", - "Shona": "शोणा", - "Sindhi": "सिंधी", - "Slovenian": "स्लोवेनियाई", - "Somali": "सोमाली", - "Southern Sotho": "दक्षिणी सोथो", - "Spanish": "स्पेनी", - "Spanish (auto-generated)": "स्पेनी (अपने-आप जनरेट हुआ)", - "Spanish (Latin America)": "स्पेनी (लातिन अमेरिकी)", - "Spanish (Mexico)": "स्पेनी (मेक्सिको)", - "Spanish (Spain)": "स्पेनी (स्पेन)", - "Sundanese": "सुंडानी", - "Swahili": "स्वाहिली", - "Swedish": "स्वीडिश", - "Tajik": "ताजीक", - "Tamil": "तमिल", - "Telugu": "तेलुगु", - "Thai": "थाई", - "Turkish": "तुर्की", - "Turkish (auto-generated)": "तुर्की (अपने-आप जनरेट हुआ)", - "Ukrainian": "यूक्रेनी", - "Urdu": "उर्दू", - "Uzbek": "उज़्बेक", - "Vietnamese": "वियतनामी", - "Vietnamese (auto-generated)": "वियतनामी (अपने-आप जनरेट हुआ)", - "Welsh": "Welsh", - "Western Frisian": "पश्चिमी फ़्रिसियाई", - "Xhosa": "खोसा", - "Yiddish": "यहूदी", - "generic_count_years": "{{count}} वर्ष", - "generic_count_years_plural": "{{count}} वर्ष", - "Yoruba": "योरुबा", - "generic_count_months": "{{count}} महीने", - "generic_count_months_plural": "{{count}} महीने", - "Zulu": "ज़ूलू", - "generic_count_weeks": "{{count}} हफ़्ते", - "generic_count_weeks_plural": "{{count}} हफ़्ते", - "Fallback comments: ": "फ़ॉलबैक टिप्पणियाँ: ", - "Popular": "प्रसिद्ध", - "Search": "खोजें", - "Top": "ऊपर", - "About": "जानकारी", - "Rating: ": "रेटिंग: ", - "preferences_locale_label": "भाषा: ", - "View as playlist": "प्लेलिस्ट के रूप में देखें", - "Default": "डिफ़ॉल्ट", - "Download": "डाउनलोड करें", - "Download as: ": "इस रूप में डाउनलोड करें: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "Music": "संगीत", - "Gaming": "गेमिंग", - "News": "समाचार", - "Movies": "फ़िल्में", - "(edited)": "(संपादित)", - "YouTube comment permalink": "YouTube पर टिप्पणी की स्थायी कड़ी", - "permalink": "स्थायी कड़ी", - "channel_tab_videos_label": "वीडियो", - "`x` marked it with a ❤": "`x` ने इसे एक ❤ से चिह्नित किया", - "Audio mode": "ऑडियो मोड", - "Playlists": "प्लेलिस्ट्स", - "Video mode": "वीडियो मोड", - "channel_tab_community_label": "समुदाय", - "search_filters_title": "फ़िल्टर", - "search_filters_date_label": "अपलोड करने का समय", - "search_filters_date_option_none": "कोई भी समय", - "search_filters_date_option_week": "इस हफ़्ते", - "search_filters_date_option_month": "इस महीने", - "search_filters_date_option_hour": "पिछला घंटा", - "search_filters_date_option_today": "आज", - "search_filters_date_option_year": "इस साल", - "search_filters_type_label": "प्रकार", - "search_filters_type_option_all": "कोई भी प्रकार", - "search_filters_type_option_video": "वीडियो", - "search_filters_type_option_channel": "चैनल", - "search_filters_sort_option_relevance": "प्रासंगिकता", - "search_filters_type_option_playlist": "प्लेलिस्ट", - "search_filters_type_option_movie": "फ़िल्म", - "search_filters_type_option_show": "शो", - "search_filters_duration_label": "अवधि", - "search_filters_duration_option_none": "कोई भी अवधि", - "search_filters_duration_option_short": "4 मिनट से कम", - "search_filters_duration_option_medium": "4 से 20 मिनट तक", - "search_filters_duration_option_long": "20 मिनट से ज़्यादा", - "search_filters_features_label": "सुविधाएँ", - "search_filters_features_option_live": "लाइव", - "search_filters_sort_option_rating": "रेटिंग", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "उपशीर्षक/कैप्शन", - "search_filters_features_option_c_commons": "क्रिएटिव कॉमन्स", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_vr180": "VR180", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_hdr": "HDR", - "search_filters_features_option_location": "जगह", - "search_filters_features_option_purchased": "खरीदा गया", - "search_filters_sort_label": "इस क्रम से लगाएँ", - "search_filters_sort_option_date": "अपलोड की ताऱीख", - "search_filters_sort_option_views": "देखे जाने की संख्या", - "search_filters_apply_button": "चयनित फ़िल्टर लागू करें", - "footer_documentation": "प्रलेख", - "footer_source_code": "स्रोत कोड", - "footer_original_source_code": "मूल स्रोत कोड", - "footer_modfied_source_code": "बदला गया स्रोत कोड", - "Current version: ": "वर्तमान संस्करण: ", - "next_steps_error_message": "इसके बाद आपके ये आज़माने चाहिए: ", - "next_steps_error_message_refresh": "साफ़ करें", - "next_steps_error_message_go_to_youtube": "YouTube पर जाएँ", - "footer_donate_page": "दान करें", - "adminprefs_modified_source_code_url_label": "बदले गए स्रोत कोड के रिपॉज़िटरी का URL", - "none": "कुछ नहीं", - "videoinfo_started_streaming_x_ago": "`x` पहले स्ट्रीम करना शुरू किया", - "videoinfo_watch_on_youTube": "YouTube पर देखें", - "Video unavailable": "वीडियो उपलब्ध नहीं है", - "preferences_save_player_pos_label": "यहाँ से चलाना शुरू करें: ", - "crash_page_you_found_a_bug": "शायद आपको Invidious में कोई बग नज़र आ गया है!", - "videoinfo_youTube_embed_link": "एम्बेड करें", - "videoinfo_invidious_embed_link": "एम्बेड करने की कड़ी", - "download_subtitles": "उपशीर्षक - `x` (.vtt)", - "user_created_playlists": "बनाए गए `x` प्लेलिस्ट्स", - "user_saved_playlists": "सहेजे गए `x` प्लेलिस्ट्स", - "crash_page_before_reporting": "बग रिपोर्ट करने से पहले:", - "crash_page_switch_instance": "किसी दूसरे उदाहरण का इस्तेमाल करें", - "crash_page_read_the_faq": "अक्सर पूछे जाने वाले प्रश्न (FAQ) पढ़ें", - "crash_page_refresh": "पृष्ठ को एक बार साफ़ करें", - "crash_page_search_issue": "GitHub पर मौजूदा मुद्दे ढूँढ़ें", - "Popular enabled: ": "लोकप्रिय सक्षम: ", - "Artist: ": "कलाकार: ", - "Music in this video": "इस वीडियो में संगीत", - "Album: ": "एल्बम: ", - "error_video_not_in_playlist": "अनुरोधित वीडियो इस प्लेलिस्ट में मौजूद नहीं है। प्लेलिस्ट के मुखपृष्ठ पर जाने के लिए यहाँ क्लिक करें।", - "channel_tab_shorts_label": "शॉर्ट्स", - "channel_tab_streams_label": "लाइवस्ट्रीम्स", - "channel_tab_playlists_label": "प्लेलिस्ट्स", - "channel_tab_channels_label": "चैनल्स", - "generic_button_save": "सहेजें", - "generic_button_cancel": "रद्द करें", - "generic_button_rss": "आरएसएस", - "generic_button_edit": "संपादित करें", - "generic_button_delete": "हटाएं", - "playlist_button_add_items": "वीडियो जोड़ें", - "Song: ": "गाना: ", - "channel_tab_podcasts_label": "पाॅडकास्ट", - "channel_tab_releases_label": "रिलीज़ेस्", - "Import YouTube playlist (.csv)": "YouTube प्लेलिस्ट (.csv) आयात करें", - "Standard YouTube license": "मानक यूट्यूब लाइसेंस", - "Channel Sponsor": "चैनल प्रायोजक", - "Download is disabled": "डाउनलोड करना अक्षम है", - "generic_channels_count": "{{count}} चैनल", - "generic_channels_count_plural": "{{count}} चैनल", - "Import YouTube watch history (.json)": "YouTube पर देखने का इतिहास आयात करें (.json)" -} diff --git a/invidious/locales/hr.json b/invidious/locales/hr.json deleted file mode 100755 index 2d86144..0000000 --- a/invidious/locales/hr.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "LIVE": "UŽIVO", - "Shared `x` ago": "Dijeljeno prije `x`", - "Unsubscribe": "Odjavi pretplatu", - "Subscribe": "Pretplati se", - "View channel on YouTube": "Prikaži kanal na YouTubeu", - "View playlist on YouTube": "Prikaži zbirku na YouTubeu", - "newest": "najnovije", - "oldest": "najstarije", - "popular": "popularne", - "last": "zadnje", - "Next page": "Sljedeća stranica", - "Previous page": "Prethodna stranica", - "Clear watch history?": "Izbrisati povijest gledanja?", - "New password": "Nova lozinka", - "New passwords must match": "Nove lozinke se moraju poklapati", - "Authorize token?": "Autorizirati token?", - "Authorize token for `x`?": "Autorizirati token za `x`?", - "Yes": "Da", - "No": "Ne", - "Import and Export Data": "Uvezi i izvezi podatke", - "Import": "Uvezi", - "Import Invidious data": "Uvezi Invidious JSON podatke", - "Import YouTube subscriptions": "Uvezi YouTube/OPML pretplate", - "Import FreeTube subscriptions (.db)": "Uvezi FreeTube pretplate (.db)", - "Import NewPipe subscriptions (.json)": "Uvezi NewPipe pretplate (.json)", - "Import NewPipe data (.zip)": "Uvezi NewPipe podatke (.zip)", - "Export": "Izvezi", - "Export subscriptions as OPML": "Izvezi pretplate kao OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Izvezi pretplate kao OPML (za NewPipe i FreeTube)", - "Export data as JSON": "Izvezi Invidious podatke kao JSON", - "Delete account?": "Izbrisati račun?", - "History": "Povijest", - "An alternative front-end to YouTube": "Alternativa za YouTube", - "JavaScript license information": "Informacije o JavaScript licenci", - "source": "izvor", - "Log in": "Prijavi se", - "Log in/register": "Prijavi se/registriraj se", - "User ID": "Korisnički ID", - "Password": "Lozinka", - "Time (h:mm:ss):": "Vrijeme (h:mm:ss):", - "Text CAPTCHA": "Tekstualni CAPTCHA", - "Image CAPTCHA": "Slikovni CAPTCHA", - "Sign In": "Prijavi se", - "Register": "Registriraj se", - "E-mail": "E-mail adresa", - "Preferences": "Postavke", - "preferences_category_player": "Postavke playera", - "preferences_video_loop_label": "Uvijek ponavljaj: ", - "preferences_autoplay_label": "Automatski reproduciraj: ", - "preferences_continue_label": "Standardno reproduciraj sljedeći: ", - "preferences_continue_autoplay_label": "Automatski reproduciraj sljedeći video: ", - "preferences_listen_label": "Standardno slušaj: ", - "preferences_local_label": "Koristi posrednika videa: ", - "preferences_speed_label": "Standardna brzina: ", - "preferences_quality_label": "Preferirana kvaliteta videa: ", - "preferences_volume_label": "Glasnoća playera: ", - "preferences_comments_label": "Standardni komentari: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Standardni titlovi: ", - "Fallback captions: ": "Alternativni titlovi: ", - "preferences_related_videos_label": "Prikaži povezana videa: ", - "preferences_annotations_label": "Standardno prikaži napomene: ", - "preferences_extend_desc_label": "Automatski proširi opis videa: ", - "preferences_vr_mode_label": "Interaktivna videa od 360 stupnjeva (zahtijeva WebGL): ", - "preferences_category_visual": "Postavke prikaza", - "preferences_player_style_label": "Stil playera: ", - "Dark mode: ": "Tamni modus: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "tamno", - "light": "svijetlo", - "preferences_thin_mode_label": "Pojednostavljen prikaz: ", - "preferences_category_misc": "Razne postavke", - "preferences_automatic_instance_redirect_label": "Automatsko preusmjeravanje instance (u krajnjem slučaju će se koristiti redirect.invidious.io): ", - "preferences_category_subscription": "Postavke pretplata", - "preferences_annotations_subscribed_label": "Standardno prikaži napomene za pretplaćene kanale: ", - "Redirect homepage to feed: ": "Preusmjeri početnu stranicu na feed: ", - "preferences_max_results_label": "Broj prikazanih videa u feedu: ", - "preferences_sort_label": "Razvrstaj videa prema: ", - "published": "objavljeno", - "published - reverse": "objavljeno – obrnuto", - "alphabetically": "abecednim redom", - "alphabetically - reverse": "abecednim redom – obrnuto", - "channel name": "ime kanala", - "channel name - reverse": "ime kanala – obrnuto", - "Only show latest video from channel: ": "Prikaži samo najnovija videa kanala: ", - "Only show latest unwatched video from channel: ": "Prikaži samo najnovija nepogledana videa od kanala: ", - "preferences_unseen_only_label": "Prikaži samo nepogledane: ", - "preferences_notifications_only_label": "Prikaži samo obavijesti (ako ih ima): ", - "Enable web notifications": "Aktiviraj web-obavijesti", - "`x` uploaded a video": "`x` je poslao/la video", - "`x` is live": "`x` je uživo", - "preferences_category_data": "Postavke podataka", - "Clear watch history": "Izbriši povijest gledanja", - "Import/export data": "Uvezi/izvezi podatke", - "Change password": "Promijeni lozinku", - "Manage subscriptions": "Upravljaj pretplatama", - "Manage tokens": "Upravljaj tokenima", - "Watch history": "Povijest gledanja", - "Delete account": "Izbriši račun", - "preferences_category_admin": "Postavke administratora", - "preferences_default_home_label": "Standardna početna stranica: ", - "preferences_feed_menu_label": "Izbornik za feedove: ", - "preferences_show_nick_label": "Prikaži nadimak na vrhu: ", - "Top enabled: ": "Najbolji aktivirani: ", - "CAPTCHA enabled: ": "CAPTCHA aktiviran: ", - "Login enabled: ": "Prijava aktivirana: ", - "Registration enabled: ": "Registracija aktivirana: ", - "Report statistics: ": "Izvještaj o statistici: ", - "Save preferences": "Spremi postavke", - "Subscription manager": "Upravljanje pretplatama", - "Token manager": "Upravljanje tokenima", - "Token": "Token", - "Import/export": "Uvezi/izvezi", - "unsubscribe": "odjavi pretplatu", - "revoke": "opozovi", - "Subscriptions": "Pretplate", - "search": "traži", - "Log out": "Odjavi se", - "Released under the AGPLv3 on Github.": "Izdano pod licencom AGPLv3 na GitHub-u.", - "Source available here.": "Izvor je ovdje dostupan.", - "View JavaScript license information.": "Prikaži informacije o JavaScript licenci.", - "View privacy policy.": "Prikaži politiku privatnosti.", - "Trending": "U trendu", - "Public": "Javno", - "Unlisted": "Nenavedeno", - "Private": "Privatno", - "View all playlists": "Prikaži sve zbirke", - "Updated `x` ago": "Aktualizirano prije `x`", - "Delete playlist `x`?": "Izbrisati zbirku `x`?", - "Delete playlist": "Izbriši zbirku", - "Create playlist": "Stvori zbirku", - "Title": "Naslov", - "Playlist privacy": "Privatnost zbirke", - "Editing playlist `x`": "Uređivanje zbirke `x`", - "Show more": "Prikaži više", - "Show less": "Prikaži manje", - "Watch on YouTube": "Gledaj na YouTubeu", - "Switch Invidious Instance": "Promijeni Invidious instancu", - "Hide annotations": "Sakrij napomene", - "Show annotations": "Prikaži napomene", - "Genre: ": "Žanr: ", - "License: ": "Licenca: ", - "Family friendly? ": "Pogodan za cijelu obitelj? ", - "Wilson score: ": "Wilson rezultat: ", - "Engagement: ": "Sudjelovanje: ", - "Whitelisted regions: ": "Odobrene regije: ", - "Blacklisted regions: ": "Blokirane regije: ", - "Shared `x`": "Dijeljeno `x`", - "Premieres in `x`": "Premijera za `x`", - "Premieres `x`": "Premijera `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Bok! Izgleda da je JavaScript isključen. Pritisni ovdje za prikaz komentara. Učitavanje će možda trajati malo duže.", - "View YouTube comments": "Prikaži YouTube komentare", - "View more comments on Reddit": "Prikaži još komentara na Redditu", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Prikaži `x` komentara.([^.,0-9]|^)1([^.,0-9]|$)", - "": "Prikaži `x` komentara" - }, - "View Reddit comments": "Prikaži Reddit komentare", - "Hide replies": "Sakrij odgovore", - "Show replies": "Prikaži odgovore", - "Incorrect password": "Neispravna lozinka", - "Wrong answer": "Krivi odgovor", - "Erroneous CAPTCHA": "Neispravan CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA je obavezno polje", - "User ID is a required field": "Korisnički ID je obavezno polje", - "Password is a required field": "Polje lozinke je obavezno polje", - "Wrong username or password": "Krivo korisničko ime ili lozinka", - "Password cannot be empty": "Polje lozinke ne smije ostati prazno", - "Password cannot be longer than 55 characters": "Lozinka ne može biti duža od 55 znakova", - "Please log in": "Prijavi se", - "Invidious Private Feed for `x`": "Invidious privatni feed za `x`", - "channel:`x`": "kanal:`x`", - "Deleted or invalid channel": "Izbrisan ili neispravan kanal", - "This channel does not exist.": "Ovaj kanal ne postoji.", - "Could not get channel info.": "Neuspjelo dobivanje podataka kanala.", - "Could not fetch comments": "Neuspjelo dohvaćanje komentara", - "`x` ago": "prije `x`", - "Load more": "Učitaj više", - "Could not create mix.": "Neuspjelo stvaranje miksa.", - "Empty playlist": "Prazna zbirka", - "Not a playlist.": "Nije zbirka.", - "Playlist does not exist.": "Zbirka ne postoji.", - "Could not pull trending pages.": "Neuspjelo preuzimanje stranica u trendu.", - "Hidden field \"challenge\" is a required field": "Skriveno polje „izazov” je obavezno polje", - "Hidden field \"token\" is a required field": "Skriveno polje „token” je obavezno polje", - "Erroneous challenge": "Neispravan izazov", - "Erroneous token": "Neispravan token", - "No such user": "Takav korisnik ne postoji", - "Token is expired, please try again": "Token je istekao, pokušaj ponovo", - "English": "Engleski", - "English (auto-generated)": "Engleski (automatki generirano)", - "Afrikaans": "Afrikaanski", - "Albanian": "Albanski", - "Amharic": "Amharski", - "Arabic": "Arapski", - "Armenian": "Armenski", - "Azerbaijani": "Azerbajdžanski", - "Bangla": "Bengalski", - "Basque": "Baskijski", - "Belarusian": "Bjeloruski", - "Bosnian": "Bošnjački", - "Bulgarian": "Bugarski", - "Burmese": "Burmanski", - "Catalan": "Katalonski", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Kineski (pojednostavljeni)", - "Chinese (Traditional)": "Kineski (tradicionalni)", - "Corsican": "Korzikanski", - "Croatian": "Hrvatski", - "Czech": "Češki", - "Danish": "Danski", - "Dutch": "Nizozemski", - "Esperanto": "Esperanto", - "Estonian": "Estonski", - "Filipino": "Filipinski", - "Finnish": "Finski", - "French": "Francuski", - "Galician": "Galicijski", - "Georgian": "Gruzijski", - "German": "Njemački", - "Greek": "Grčki", - "Gujarati": "Gudžaratski", - "Haitian Creole": "Haitjanski kreolski", - "Hausa": "Hauski", - "Hawaiian": "Havajski", - "Hebrew": "Hebrejski", - "Hindi": "Hindski", - "Hmong": "Hmong", - "Hungarian": "Mađarski", - "Icelandic": "Islandski", - "Igbo": "Igboški", - "Indonesian": "Indonezijski", - "Irish": "Irski", - "Italian": "Talijanski", - "Japanese": "Japanski", - "Javanese": "Javanski", - "Kannada": "Kannada", - "Kazakh": "Kazaški", - "Khmer": "Kmerski", - "Korean": "Korejski", - "Kurdish": "Kurdski", - "Kyrgyz": "Kirgiški", - "Lao": "Laoški", - "Latin": "Latinski", - "Latvian": "Latvijski", - "Lithuanian": "Litvanski", - "Luxembourgish": "Luksemburgški", - "Macedonian": "Makedonski", - "Malagasy": "Malagaški", - "Malay": "Malajski", - "Malayalam": "Malajalamski", - "Maltese": "Malteški", - "Maori": "Maorski", - "Marathi": "Marathi", - "Mongolian": "Mongolski", - "Nepali": "Nepalski", - "Norwegian Bokmål": "Norveški Bokmål", - "Nyanja": "Nijanja", - "Pashto": "Paštunski", - "Persian": "Perzijski", - "Polish": "Poljski", - "Portuguese": "Portugalski", - "Punjabi": "Pandžapski", - "Romanian": "Rumunjski", - "Russian": "Ruski", - "Samoan": "Samoanski", - "Scottish Gaelic": "Škotski galski", - "Serbian": "Srpski", - "Shona": "Šona", - "Sindhi": "Sindhi", - "Sinhala": "Singaleški", - "Slovak": "Slovački", - "Slovenian": "Slovenski", - "Somali": "Somalijski", - "Southern Sotho": "Sjeverno samski", - "Spanish": "Španjolski", - "Spanish (Latin America)": "Španjolski (Latinska Amerika)", - "Sundanese": "Sundski", - "Swahili": "Svahili", - "Swedish": "Švedski", - "Tajik": "Tadžički", - "Tamil": "Tamilski", - "Telugu": "Teluški", - "Thai": "Tajlandski", - "Turkish": "Turski", - "Ukrainian": "Ukrajinski", - "Urdu": "Urdski", - "Uzbek": "Uzbečki", - "Vietnamese": "Vijetnamski", - "Welsh": "Velški", - "Western Frisian": "Zapadni frizijski", - "Xhosa": "Xhosa", - "Yiddish": "Jidiš", - "Yoruba": "Jorubški", - "Zulu": "Zulu", - "Fallback comments: ": "Alternativni komentari: ", - "Popular": "Popularni", - "Search": "Traži", - "Top": "Najbolji", - "About": "Informacije", - "Rating: ": "Ocjena: ", - "preferences_locale_label": "Jezik: ", - "View as playlist": "Prikaži kao zbirku", - "Default": "Standardno", - "Music": "Glazba", - "Gaming": "Videoigre", - "News": "Vijesti", - "Movies": "Filmovi", - "Download": "Preuzmi", - "Download as: ": "Preuzmi kao: ", - "%A %B %-d, %Y": "%A, %-d. %B %Y.", - "(edited)": "(uređeno)", - "YouTube comment permalink": "Stalna poveznica YouTube komentara", - "permalink": "stalna poveznica", - "`x` marked it with a ❤": "Označeno sa ❤ od `x`", - "Audio mode": "Audio modus", - "Video mode": "Videomodus", - "channel_tab_videos_label": "Videa", - "Playlists": "Zbirke", - "channel_tab_community_label": "Zajednica", - "search_filters_sort_option_relevance": "Značaj", - "search_filters_sort_option_rating": "Ocjena", - "search_filters_sort_option_date": "Datum prijenosa", - "search_filters_sort_option_views": "Broj gledanja", - "search_filters_type_label": "Vrsta", - "search_filters_duration_label": "Trajanje", - "search_filters_features_label": "Funkcije", - "search_filters_sort_label": "Redoslijed", - "search_filters_date_option_hour": "Zadnjih sat vremena", - "search_filters_date_option_today": "Danas", - "search_filters_date_option_week": "Ovaj tjedan", - "search_filters_date_option_month": "Ovaj mjesec", - "search_filters_date_option_year": "Ova godina", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Zbirka", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Emisija", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Titlovi/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Uživo", - "search_filters_features_option_four_k": "4k", - "search_filters_features_option_location": "Lokacija", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Trenutačna verzija: ", - "next_steps_error_message": "Nakon toga bi trebali pokušati sljedeće: ", - "next_steps_error_message_refresh": "Aktualiziraj stranicu", - "next_steps_error_message_go_to_youtube": "Idi na YouTube", - "footer_donate_page": "Doniraj", - "adminprefs_modified_source_code_url_label": "URL do repozitorija prilagođenog izvornog koda", - "search_filters_duration_option_short": "Kratko (< 4 minute)", - "search_filters_duration_option_long": "Dugo (> 20 minute)", - "footer_source_code": "Izvorni kod", - "footer_modfied_source_code": "Prilagođen izvorni kod", - "footer_documentation": "Dokumentacija", - "footer_original_source_code": "Prvobitan izvorni kod", - "preferences_region_label": "Zemlja sadržaja: ", - "preferences_quality_dash_label": "Preferirana DASH videokvaliteta: ", - "preferences_quality_option_dash": "DASH (adaptativna kvaliteta)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Srednja", - "preferences_quality_dash_option_worst": "Najgora", - "preferences_quality_dash_option_4320p": "4320 p", - "preferences_quality_dash_option_2160p": "2160 p", - "preferences_quality_dash_option_1440p": "1440 p", - "preferences_quality_dash_option_1080p": "1080 p", - "preferences_quality_dash_option_360p": "360 p", - "preferences_quality_dash_option_240p": "240 p", - "preferences_quality_dash_option_144p": "144 p", - "invidious": "Invidious", - "search_filters_features_option_purchased": "Kupljeno", - "search_filters_features_option_three_sixty": "360 °", - "none": "bez", - "videoinfo_youTube_embed_link": "Ugradi", - "user_created_playlists": "`x` je stvorio/la zbirke", - "user_saved_playlists": "`x` je spremio/la zbirke", - "Video unavailable": "Video nedostupan", - "preferences_save_player_pos_label": "Spremi mjesto reprodukcije: ", - "videoinfo_watch_on_youTube": "Gledaj na YouTubeu", - "download_subtitles": "Podnaslovi - `x` (.vtt)", - "preferences_quality_dash_option_auto": "Automatska", - "preferences_quality_option_small": "Niska", - "preferences_quality_dash_option_best": "Najbolja", - "preferences_quality_dash_option_720p": "720 p", - "preferences_quality_dash_option_480p": "480 p", - "videoinfo_started_streaming_x_ago": "Započet prijenos prije `x`", - "videoinfo_invidious_embed_link": "Ugradi poveznicu", - "generic_count_hours_0": "{{count}} sat", - "generic_count_hours_1": "{{count}} sata", - "generic_count_hours_2": "{{count}} sati", - "generic_subscribers_count_0": "{{count}} pretplatnik", - "generic_subscribers_count_1": "{{count}} pretplatnika", - "generic_subscribers_count_2": "{{count}} pretplatnika", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokena", - "tokens_count_2": "{{count}} tokena", - "subscriptions_unseen_notifs_count_0": "{{count}} neviđena obavijest", - "subscriptions_unseen_notifs_count_1": "{{count}} neviđene obavijesti", - "subscriptions_unseen_notifs_count_2": "{{count}} neviđenih obavijesti", - "generic_count_years_0": "{{count}} godina", - "generic_count_years_1": "{{count}} godine", - "generic_count_years_2": "{{count}} godina", - "generic_count_months_0": "{{count}} mjesec", - "generic_count_months_1": "{{count}} mjeseca", - "generic_count_months_2": "{{count}} mjeseci", - "generic_count_weeks_0": "{{count}} tjedan", - "generic_count_weeks_1": "{{count}} tjedna", - "generic_count_weeks_2": "{{count}} tjedana", - "generic_count_minutes_0": "{{count}} minuta", - "generic_count_minutes_1": "{{count}} minute", - "generic_count_minutes_2": "{{count}} minuta", - "generic_count_seconds_0": "{{count}} sekunda", - "generic_count_seconds_1": "{{count}} sekunde", - "generic_count_seconds_2": "{{count}} sekundi", - "comments_points_count_0": "{{count}} točka", - "comments_points_count_1": "{{count}} točke", - "comments_points_count_2": "{{count}} točaka", - "generic_subscriptions_count_0": "{{count}} pretplata", - "generic_subscriptions_count_1": "{{count}} pretplate", - "generic_subscriptions_count_2": "{{count}} pretplata", - "generic_playlists_count_0": "{{count}} zbirka", - "generic_playlists_count_1": "{{count}} zbirke", - "generic_playlists_count_2": "{{count}} zbiraka", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} videa", - "generic_videos_count_2": "{{count}} videa", - "generic_count_days_0": "{{count}} dan", - "generic_count_days_1": "{{count}} dana", - "generic_count_days_2": "{{count}} dana", - "generic_views_count_0": "{{count}} prikaz", - "generic_views_count_1": "{{count}} prikaza", - "generic_views_count_2": "{{count}} prikaza", - "comments_view_x_replies_0": "Prikaži {{count}} odgovor", - "comments_view_x_replies_1": "Prikaži {{count}} odgovora", - "comments_view_x_replies_2": "Prikaži {{count}} odgovora", - "crash_page_you_found_a_bug": "Čini se da si pronašao/la grešku u Invidiousu!", - "crash_page_before_reporting": "Prije prijavljivanja greške:", - "crash_page_refresh": "pokušaj aktualizirati stranicu", - "crash_page_switch_instance": "pokušaj koristiti jednu drugu instancu", - "crash_page_read_the_faq": "pročitaj Često postavljena pitanja (ČPP)", - "crash_page_search_issue": "pretraži postojeće probleme na GitHub-u", - "crash_page_report_issue": "Ako ništa od gore navedenog ne pomaže, prijavi novi problem na GitHub-u (po mogućnosti na engleskom) i uključi sljedeći tekst u poruku (NEMOJ prevoditi taj tekst):", - "English (United Kingdom)": "Engleski (Ujedinjeno Kraljevstvo)", - "English (United States)": "Engleski (Sjedinjene Američke Države)", - "Cantonese (Hong Kong)": "Kantonski (Hong Kong)", - "Chinese": "Kineski", - "Chinese (Taiwan)": "Kineski (Tajvan)", - "Dutch (auto-generated)": "Nizozemski (automatski generiran)", - "French (auto-generated)": "Francuski (automatski generiran)", - "Indonesian (auto-generated)": "Indonezijski (automatski generiran)", - "Interlingue": "Interlingua", - "Japanese (auto-generated)": "Japanski (automatski generiran)", - "Russian (auto-generated)": "Ruski (automatski generiran)", - "Turkish (auto-generated)": "Turski (automatski generiran)", - "Vietnamese (auto-generated)": "Vijetnamski (automatski generiran)", - "Spanish (Spain)": "Španjolski (Španjolska)", - "Italian (auto-generated)": "Talijanski (automatski generiran)", - "Portuguese (Brazil)": "Portugalski (Brazil)", - "Spanish (Mexico)": "Španjolski (Meksiko)", - "German (auto-generated)": "Njemački (automatski generiran)", - "Chinese (China)": "Kineski (Kina)", - "Chinese (Hong Kong)": "Kineski (Hong Kong)", - "Korean (auto-generated)": "Korejski (automatski generiran)", - "Portuguese (auto-generated)": "Portugalski (automatski generiran)", - "Spanish (auto-generated)": "Španjolski (automatski generiran)", - "preferences_watch_history_label": "Aktiviraj povijest gledanja: ", - "search_filters_title": "Filtri", - "search_filters_date_option_none": "Bilo koji datum", - "search_filters_date_label": "Datum prijenosa", - "search_message_no_results": "Nema rezultata.", - "search_message_use_another_instance": " Također možeš tražiti na jednoj drugoj instanci.", - "search_message_change_filters_or_query": "Pokušaj proširiti upit za pretragu i/ili promijeni filtre.", - "search_filters_features_option_vr180": "VR180", - "search_filters_duration_option_none": "Bilo koje duljine", - "search_filters_duration_option_medium": "Srednje (4 – 20 minuta)", - "search_filters_apply_button": "Primijeni odabrane filtre", - "search_filters_type_option_all": "Bilo koja vrsta", - "Popular enabled: ": "Popularni aktivirani: ", - "error_video_not_in_playlist": "Traženi video ne postoji u ovoj zbirci. Pritisni ovdje za početnu stranicu zbirke.", - "channel_tab_streams_label": "Prijenosi uživo", - "channel_tab_playlists_label": "Zbirke", - "channel_tab_channels_label": "Kanali", - "channel_tab_shorts_label": "Kratka videa", - "Music in this video": "Glazba u ovom videu", - "Album: ": "Album: ", - "Artist: ": "Izvođač: ", - "Channel Sponsor": "Sponzor kanala", - "Song: ": "Pjesma: ", - "Standard YouTube license": "Standardna YouTube licenca", - "Download is disabled": "Preuzimanje je deaktivirano", - "Import YouTube playlist (.csv)": "Uvezi YouTube zbirku (.csv)", - "generic_button_delete": "Izbriši", - "playlist_button_add_items": "Dodaj videa", - "channel_tab_podcasts_label": "Podcasti", - "generic_button_edit": "Uredi", - "generic_button_save": "Spremi", - "generic_button_cancel": "Odustani", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "Izdanja", - "generic_channels_count_0": "{{count}} kanal", - "generic_channels_count_1": "{{count}} kanala", - "generic_channels_count_2": "{{count}} kanala", - "Import YouTube watch history (.json)": "Uvezi YouTube povijest gledanja (.json)" -} diff --git a/invidious/locales/hu-HU.json b/invidious/locales/hu-HU.json deleted file mode 100755 index 1899b71..0000000 --- a/invidious/locales/hu-HU.json +++ /dev/null @@ -1,468 +0,0 @@ -{ - "generic_views_count": "{{count}} már látta", - "generic_views_count_plural": "{{count}} már látta", - "generic_videos_count": "{{count}} videó", - "generic_videos_count_plural": "{{count}} videó", - "generic_playlists_count": "{{count}} lejátszási lista", - "generic_playlists_count_plural": "{{count}} lejátszási lista", - "generic_subscribers_count": "{{count}} feliratkozó", - "generic_subscribers_count_plural": "{{count}} feliratkozó", - "generic_subscriptions_count": "{{count}} csatornára van feliratkozás", - "generic_subscriptions_count_plural": "{{count}} csatornára van feliratkozás", - "LIVE": "ÉLŐ", - "Shared `x` ago": "`x` ezelőtt megosztva", - "Unsubscribe": "Leiratkozás", - "Subscribe": "Feliratkozás", - "View channel on YouTube": "Csatorna megnézése YouTube-on", - "View playlist on YouTube": "Lejátszási lista megnézése YouTube-on", - "newest": "legújabb", - "oldest": "legrégibb", - "popular": "népszerű", - "last": "utolsó", - "Next page": "Következő oldal", - "Previous page": "Előző oldal", - "Clear watch history?": "Törölve legyen a megnézett videók naplója?", - "New password": "Új jelszó", - "New passwords must match": "Az új jelszavaknak egyezniük kell.", - "Authorize token?": "Engedélyezve legyen a token?", - "Authorize token for `x`?": "Engedélyezve legyen a token erre? „`x`”", - "Yes": "Igen", - "No": "Nem", - "Import and Export Data": "Adatok importálása és exportálása", - "Import": "Importálás", - "Import Invidious data": "Az Invidious JSON-adatainak importálása", - "Import YouTube subscriptions": "YouTube- vagy OPML-feliratkozások importálása", - "Import FreeTube subscriptions (.db)": "FreeTube-feliratkozások importálása (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe-feliratkozások importálása (.json)", - "Import NewPipe data (.zip)": "NewPipe adatainak importálása (.zip)", - "Export": "Exportálás", - "Export subscriptions as OPML": "Feliratkozások exportálása OPML-ként", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Feliratkozások exportálása OPML-ként (NewPipe-hoz és FreeTube-hoz)", - "Export data as JSON": "Az Invidious JSON-adatainak exportálása", - "Delete account?": "Törlésre kerüljön a fiók?", - "History": "Megnézett videók naplója", - "An alternative front-end to YouTube": "Ez az oldal egyike a YouTube alternatív kezelőfelületeinek", - "JavaScript license information": "A JavaScript licencinformációja", - "source": "forrás", - "Log in": "Bejelentkezés", - "Log in/register": "Bejelentkezés/Regisztrálás", - "User ID": "Felhasználói azonosító", - "Password": "Jelszó", - "Time (h:mm:ss):": "A pontos idő (ó:pp:mm):", - "Text CAPTCHA": "Szöveges CAPTCHA kérése", - "Image CAPTCHA": "Kép CAPTCHA kérése", - "Sign In": "Bejelentkezés", - "Register": "Regisztrálás", - "E-mail": "E-mail-cím", - "Preferences": "Beállítások", - "preferences_category_player": "Lejátszó beállításai", - "preferences_video_loop_label": "Videó állandó ismétlése: ", - "preferences_autoplay_label": "Automatikus lejátszás: ", - "preferences_continue_label": "A következő videót mindig automatikusan játssza le: ", - "preferences_continue_autoplay_label": "A következő videó automatikus lejátszása: ", - "preferences_listen_label": "Mindig csak a hangsáv lejátszása: ", - "preferences_local_label": "Videók proxyn keresztüli lejátszása: ", - "preferences_speed_label": "Alapértelmezett sebesség: ", - "preferences_quality_label": "Videó minősége: ", - "preferences_volume_label": "Hangerő: ", - "preferences_comments_label": "Mindig innen legyenek betöltve a hozzászólások: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Felirat nyelvének sorrendje: ", - "Fallback captions: ": "Másodlagos feliratok: ", - "preferences_related_videos_label": "Hasonló videók ajánlása: ", - "preferences_annotations_label": "Szövegmagyarázat alapértelmezett mutatása: ", - "preferences_extend_desc_label": "A videó leírása automatikusan látható: ", - "preferences_vr_mode_label": "Interaktív 360 fokos videók (WebGL szükséges): ", - "preferences_category_visual": "Kinézet, elrendezés és régió beállításai", - "preferences_player_style_label": "Lejátszó kinézete: ", - "Dark mode: ": "Elsötétített mód: ", - "preferences_dark_mode_label": "Téma: ", - "dark": "sötét", - "light": "világos", - "preferences_thin_mode_label": "Vékony mód: ", - "preferences_category_subscription": "Feliratkozott tartalmak beállításai", - "preferences_annotations_subscribed_label": "A feliratkozott csatornák szövegmagyarázatának alapértelmezett mutatása: ", - "Redirect homepage to feed: ": "Kezdőoldal átirányitása a feedre: ", - "preferences_max_results_label": "Feedben mutatott videók száma: ", - "preferences_sort_label": "Videók rendezése: ", - "published": "közzététel szerint", - "published - reverse": "közzététel szerint – fordított sorrendben", - "alphabetically": "ABC-sorrend szerint", - "alphabetically - reverse": "Fordított ABC-sorrend szerint", - "channel name": "csatorna neve szerint", - "channel name - reverse": "csatorna neve szerint – fordított sorrendben", - "Only show latest video from channel: ": "Csak a csatorna legújabb videójának mutatása: ", - "Only show latest unwatched video from channel: ": "Csak a csatorna legújabb, de még nem megnézett videójának mutatása: ", - "preferences_unseen_only_label": "A még nem megnézett videók mutatása: ", - "preferences_notifications_only_label": "Csak az értesítések mutatása (ha van): ", - "Enable web notifications": "Böngészőn belüli értesítések bekapcsolása", - "`x` uploaded a video": "`x` feltöltött egy videót", - "`x` is live": "`x` élőben közvetít", - "preferences_category_data": "Fiók beállításai és egyéb lehetőségek", - "Clear watch history": "Megnézett videók naplójának törlése", - "Import/export data": "Adatok importálása vagy exportálása", - "Change password": "Jelszó megváltoztatása", - "Manage subscriptions": "Feliratkozások kezelése", - "Manage tokens": "Tokenek kezelése", - "Watch history": "Megnézett videók naplója", - "Delete account": "Fiók törlése", - "preferences_category_admin": "Adminisztrátorok beállításai", - "preferences_default_home_label": "Kezdőoldal: ", - "preferences_feed_menu_label": "Feed menü sorrendje: ", - "Top enabled: ": "Toplista engedélyezve: ", - "CAPTCHA enabled: ": "CAPTCHA engedélyezve: ", - "Login enabled: ": "Bejelentkezés engedélyezve: ", - "Registration enabled: ": "Regisztrálás engedélyezve: ", - "Report statistics: ": "Statisztika jelentése: ", - "Save preferences": "Beállítások mentése", - "Subscription manager": "Feliratkozások kezelője", - "Token manager": "Tokenek kezelője", - "Token": "Token", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} token", - "Import/export": "Importálás/exportálás", - "unsubscribe": "leiratkozás", - "revoke": "visszavonás", - "Subscriptions": "Feliratkozások", - "subscriptions_unseen_notifs_count": "{{count}} kimaradt értesítés", - "subscriptions_unseen_notifs_count_plural": "{{count}} kimaradt értesítés", - "search": "Videó keresése", - "Log out": "Kijelentkezés", - "Source available here.": "A forráskód itt érhető el", - "View JavaScript license information.": "JavaScript licencinformáció megnyitása", - "View privacy policy.": "Adatvédelmi szabályzat megnyitása", - "Trending": "Felkapott", - "Public": "nyilvános", - "Unlisted": "nem nyilvános", - "Private": "magán", - "View all playlists": "Összes lejátszási lista megnézése", - "Updated `x` ago": "`x` ezelőtt frissítve", - "Delete playlist `x`?": "Törlésre kerüljön ez a lejátszási lista? „`x`”", - "Delete playlist": "Lejátszási lista törlése", - "Create playlist": "Lejátszási lista létrehozása", - "Title": "Lejátszási lista címe", - "Playlist privacy": "Lejátszási lista láthatósága", - "Editing playlist `x`": "„`x`” lejátszási lista szerkesztése", - "Show more": "Többi szöveg mutatása", - "Show less": "Kevesebb szöveg mutatása", - "Watch on YouTube": "YouTube-on megnézni", - "Hide annotations": "Megjegyzések elrejtése", - "Show annotations": "Megjegyzések mutatása", - "Genre: ": "Műfaj: ", - "License: ": "Licenc: ", - "Family friendly? ": "Családbarát? ", - "Wilson score: ": "Wilson-pontszám: ", - "Engagement: ": "Visszajelzési mutató: ", - "Whitelisted regions: ": "Engedélyezett régiók: ", - "Blacklisted regions: ": "Tiltott régiók: ", - "Shared `x`": "`x` dátummal osztották meg", - "Premieres in `x`": "`x` később lesz a premierje", - "Premieres `x`": "`x` lesz a premierje", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Helló! Úgy tűnik a JavaScript ki van kapcsolva a böngészőben. Ide kattintva lehet olvasni a hozzászólásokat, de a betöltésük így kicsit több időbe telik.", - "View YouTube comments": "YouTube-on lévő hozzászólások olvasása", - "View more comments on Reddit": "A többi hozzászólás olvasása Redditen", - "View `x` comments": { - "": "`x` hozzászólás olvasása", - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` hozzászólás olvasása" - }, - "View Reddit comments": "Redditen lévő hozzászólások olvasása", - "Hide replies": "Válaszok elrejtése", - "Show replies": "Válaszok mutatása", - "Incorrect password": "A jelszó nem megfelelő", - "Wrong answer": "Nem jól válaszoltál.", - "Erroneous CAPTCHA": "A CAPTCHA hibás.", - "CAPTCHA is a required field": "A CAPTCHA-mezőt ki kell tölteni.", - "User ID is a required field": "A felhasználói azonosítót meg kell adni.", - "Password is a required field": "Meg kell adni egy jelszót.", - "Wrong username or password": "Vagy a felhasználói név, vagy pedig a jelszó nem megfelelő.", - "Password cannot be empty": "A jelszót nem lehet kihagyni.", - "Password cannot be longer than 55 characters": "A jelszó nem lehet hosszabb 55 karakternél.", - "Please log in": "Kérjük, jelentkezz be.", - "Invidious Private Feed for `x`": "„`x`” Invidious magán feedje", - "channel:`x`": "`x` csatornája", - "Deleted or invalid channel": "A csatorna érvénytelen, vagy pedig törölve lett.", - "This channel does not exist.": "Nincs ilyen csatorna.", - "Could not get channel info.": "Nem lehetett betölteni a csatorna adatait.", - "Could not fetch comments": "Nem lehetett betölteni a hozzászólásokat.", - "comments_view_x_replies": "{{count}} válasz olvasása", - "comments_view_x_replies_plural": "{{count}} válasz olvasása", - "`x` ago": "`x` ezelőtt", - "Load more": "Többi hozzászólás betöltése", - "comments_points_count": "{{count}} pont", - "comments_points_count_plural": "{{count}} pont", - "Could not create mix.": "A válogatást nem lehetett elkészíteni.", - "Empty playlist": "Üres lejátszási lista", - "Not a playlist.": "Ez nem egy lejátszási lista.", - "Playlist does not exist.": "Nincs ilyen lejátszási lista.", - "Could not pull trending pages.": "Nem lehetett betölteni a felkapott videók oldalát.", - "Hidden field \"challenge\" is a required field": "A rejtett „challenge” mezőt ki kell tölteni.", - "Hidden field \"token\" is a required field": "A rejtett „token” mezőt ki kell tölteni.", - "Erroneous challenge": "Hibás challenge", - "Erroneous token": "Hibás token", - "No such user": "Nincs ilyen felhasználó", - "Token is expired, please try again": "A token lejárt. Kérjük, próbáld meg újból.", - "English": "angol", - "English (auto-generated)": "angol (automatikusan létrehozott)", - "Afrikaans": "afrikaans", - "Albanian": "albán", - "Amharic": "amhara", - "Arabic": "arab", - "Armenian": "örmény", - "Azerbaijani": "azerbajdzsáni", - "Bangla": "bengáli", - "Basque": "baszk", - "Belarusian": "fehérorosz", - "Bosnian": "bosnyák", - "Bulgarian": "bolgár", - "Burmese": "burmai", - "Catalan": "katalán", - "Cebuano": "szebuano", - "Chinese (Simplified)": "kínai (egyszerűsített)", - "Chinese (Traditional)": "kínai (hagyományos)", - "Corsican": "korzikai", - "Croatian": "horvát", - "Czech": "cseh", - "Danish": "dán", - "Dutch": "holland", - "Esperanto": "eszperantó", - "Estonian": "észt", - "Filipino": "filippínó", - "Finnish": "finn", - "French": "francia", - "Galician": "galiciai", - "Georgian": "grúz", - "German": "német", - "Greek": "görög", - "Gujarati": "gudzsaráti", - "Haitian Creole": "haiti kreol", - "Hausa": "hausza", - "Hawaiian": "hawaii", - "Hebrew": "héber", - "Hindi": "hindi", - "Hmong": "hmong", - "Hungarian": "magyar", - "Icelandic": "izlandi", - "Igbo": "igbo", - "Indonesian": "indonéz", - "Irish": "ír", - "Italian": "olasz", - "Japanese": "japán", - "Javanese": "jávai", - "Kannada": "kannada", - "Kazakh": "kazak", - "Khmer": "khmer", - "Korean": "koreai", - "Kurdish": "kurd", - "Kyrgyz": "kirgiz", - "Lao": "lao", - "Latin": "latin", - "Latvian": "lett", - "Lithuanian": "litván", - "Luxembourgish": "luxemburgi", - "Macedonian": "macedón", - "Malagasy": "madagaszkári", - "Malay": "maláj", - "Malayalam": "malajálam", - "Maltese": "máltai", - "Maori": "maori", - "Marathi": "maráthi", - "Mongolian": "mongol", - "Nepali": "nepáli", - "Norwegian Bokmål": "norvég (bokmål)", - "Nyanja": "njándzsa (csicseva)", - "Pashto": "pastu", - "Persian": "perzsa", - "Polish": "lengyel", - "Portuguese": "portugál", - "Punjabi": "pandzsábi", - "Romanian": "román", - "Russian": "orosz", - "Samoan": "szamoai", - "Scottish Gaelic": "skót gael", - "Serbian": "szerb", - "Shona": "sona", - "Sindhi": "szindi", - "Sinhala": "szingaléz", - "Slovak": "szlovák", - "Slovenian": "szlovén", - "Somali": "szomáliai", - "Southern Sotho": "déli szútú", - "Spanish": "spanyol", - "Spanish (Latin America)": "spanyol (latinamerikai)", - "Sundanese": "szunda", - "Swahili": "szuahéli", - "Swedish": "svéd", - "Tajik": "tádzsik", - "Tamil": "tamil", - "Telugu": "telugu", - "Thai": "thai", - "Turkish": "török", - "Ukrainian": "ukrán", - "Uzbek": "üzbég", - "Vietnamese": "vietnámi", - "Welsh": "walesi", - "Western Frisian": "nyugati fríz", - "Yiddish": "jiddis", - "Yoruba": "joruba", - "Zulu": "zulu", - "generic_count_years": "{{count}} évvel", - "generic_count_years_plural": "{{count}} évvel", - "generic_count_months": "{{count}} hónappal", - "generic_count_months_plural": "{{count}} hónappal", - "generic_count_weeks": "{{count}} héttel", - "generic_count_weeks_plural": "{{count}} héttel", - "generic_count_days": "{{count}} nappal", - "generic_count_days_plural": "{{count}} nappal", - "generic_count_hours": "{{count}} órával", - "generic_count_hours_plural": "{{count}} órával", - "generic_count_minutes": "{{count}} perccel", - "generic_count_minutes_plural": "{{count}} perccel", - "generic_count_seconds": "{{count}} másodperccel", - "generic_count_seconds_plural": "{{count}} másodperccel", - "Fallback comments: ": "Másodlagos kommentek: ", - "Popular": "Népszerű", - "Search": "Keresési oldal", - "Top": "Top", - "About": "Leírás", - "Rating: ": "Pontszám: ", - "preferences_locale_label": "Nyelv: ", - "View as playlist": "Megnézés lejátszási listában", - "Default": "Alapértelmezett", - "Music": "Zenék", - "Gaming": "Játékok", - "News": "Hírek", - "Movies": "Filmek", - "Download": "Letöltés", - "Download as: ": "Letöltés másként: ", - "(edited)": "(szerkesztve)", - "YouTube comment permalink": "YouTube-hozzászólás idehivatkozása", - "permalink": "idehivatkozás", - "`x` marked it with a ❤": "`x` ❤ jelet adott a hozzászóláshoz", - "Audio mode": "Csak hanggal", - "Video mode": "Hanggal és képpel", - "channel_tab_videos_label": "Videói", - "Playlists": "Lejátszási listái", - "channel_tab_community_label": "Közösség", - "Current version: ": "Jelenlegi verzió: ", - "preferences_quality_option_medium": "Közepes", - "preferences_quality_dash_option_auto": "Automatikus", - "preferences_quality_dash_option_best": "Legjobb", - "preferences_quality_dash_option_worst": "Legrosszabb", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "videoinfo_started_streaming_x_ago": "`x` ezelőtt kezdte streamelni", - "search_filters_sort_option_views": "Mennyien látták", - "search_filters_features_option_purchased": "Megvásárolt", - "search_filters_features_option_three_sixty": "360°-os virtuális valóság", - "footer_original_source_code": "Eredeti forráskód", - "none": "egyik sem", - "videoinfo_watch_on_youTube": "YouTube-on megnézni", - "videoinfo_youTube_embed_link": "beágyazva", - "videoinfo_invidious_embed_link": "Beágyazott hivatkozás", - "download_subtitles": "Felirat – `x` (.vtt)", - "user_created_playlists": "`x` létrehozott lejátszási lista", - "user_saved_playlists": "`x` mentett lejátszási lista", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_dash": "DASH (adaptív minőség)", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_label": "DASH-videó minősége: ", - "preferences_quality_option_small": "Rossz", - "search_filters_sort_option_date": "Feltöltés dátuma", - "Video unavailable": "A videó nem érhető el", - "preferences_save_player_pos_label": "A videó folytatása onnan, ahol félbe lett hagyva: ", - "preferences_show_nick_label": "Becenév mutatása felül: ", - "Released under the AGPLv3 on Github.": "AGPLv3 licenc alapján a GitHubon", - "search_filters_features_option_three_d": "3D-ben", - "search_filters_features_option_live": "Élőben", - "next_steps_error_message_refresh": "Újratöltés", - "footer_donate_page": "Adakozás", - "footer_source_code": "Forráskód", - "footer_modfied_source_code": "Módosított forráskód", - "adminprefs_modified_source_code_url_label": "A módosított forráskód repositoryjának URL-je:", - "preferences_automatic_instance_redirect_label": "Váltáskor másik Invidious oldal automatikus betöltése (redirect.invidious.io töltődik, ha nem működne): ", - "preferences_region_label": "Ország tartalmainak mutatása: ", - "search_filters_sort_option_relevance": "Relevancia", - "search_filters_sort_option_rating": "Pontszám", - "search_filters_type_label": "Típus", - "search_filters_date_option_today": "Mai napon", - "search_filters_type_option_channel": "Csatorna", - "search_filters_type_option_video": "Videó", - "search_filters_type_option_playlist": "Lejátszási lista", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_label": "Jellemzők", - "search_filters_sort_label": "Rendezés módja", - "preferences_category_misc": "További beállítások", - "%A %B %-d, %Y": "%Y. %B %-d %A", - "search_filters_duration_option_long": "Hosszú (20 percnél hosszabb)", - "search_filters_date_option_year": "Ebben az évben", - "search_filters_date_option_hour": "Az elmúlt órában", - "search_filters_type_option_movie": "Film", - "search_filters_features_option_hdr": "HDR", - "search_filters_duration_label": "Játékidő", - "next_steps_error_message": "Az alábbi lehetőségek állnak rendelkezésre: ", - "Xhosa": "xhosza", - "Switch Invidious Instance": "Váltás másik Invidious-oldalra", - "Urdu": "urdu", - "search_filters_date_option_week": "Ezen a héten", - "footer_documentation": "Dokumentáció", - "search_filters_features_option_hd": "HD", - "next_steps_error_message_go_to_youtube": "Ugrás a YouTube-ra", - "search_filters_type_option_show": "Műsor", - "search_filters_features_option_four_k": "4K", - "search_filters_duration_option_short": "Rövid (4 percnél nem több)", - "search_filters_date_option_month": "Ebben a hónapban", - "search_filters_features_option_subtitles": "Felirattal", - "search_filters_features_option_location": "Közelben", - "crash_page_you_found_a_bug": "Úgy néz ki, találtál egy hibát az Invidiousban.", - "crash_page_before_reporting": "Mielőtt jelentenéd a hibát:", - "crash_page_read_the_faq": "olvasd el a Gyakran Ismételt Kérdéseket (GYIK)", - "crash_page_search_issue": "járj utána a már meglévő issue-knak a GitHubon", - "crash_page_switch_instance": "válts át másik Invidious-oldalra", - "crash_page_refresh": "töltsd újra az oldalt", - "crash_page_report_issue": "Ha a fentiek után nem jutottál eredményre, akkor nyiss egy új issue-t a GitHubon (lehetőleg angol nyelven írj) és másold be pontosan a lenti szöveget (ezt nem kell lefordítani):", - "Cantonese (Hong Kong)": "kantoni (Hongkong)", - "Chinese": "kínai", - "Chinese (China)": "kínai (Kína)", - "Chinese (Hong Kong)": "kínai (Hongkong)", - "Chinese (Taiwan)": "kínai (Tajvan)", - "German (auto-generated)": "német (automatikusan generált)", - "Interlingue": "interlingva", - "Japanese (auto-generated)": "japán (automatikusan generált)", - "Korean (auto-generated)": "koreai (automatikusan generált)", - "Portuguese (Brazil)": "portugál (Brazília)", - "Russian (auto-generated)": "orosz (automatikusan generált)", - "Spanish (auto-generated)": "spanyol (automatikusan generált)", - "Spanish (Mexico)": "spanyol (Mexikó)", - "Spanish (Spain)": "spanyol (Spanyolország)", - "English (United States)": "angol (Egyesült Államok)", - "Portuguese (auto-generated)": "portugál (automatikusan generált)", - "Turkish (auto-generated)": "török (automatikusan generált)", - "English (United Kingdom)": "angol (Egyesült Királyság)", - "Indonesian (auto-generated)": "indonéz (automatikusan generált)", - "Italian (auto-generated)": "olasz (automatikusan generált)", - "Dutch (auto-generated)": "holland (automatikusan generált)", - "French (auto-generated)": "francia (automatikusan generált)", - "Vietnamese (auto-generated)": "vietnámi (automatikusan generált)", - "search_filters_title": "Szűrők", - "preferences_watch_history_label": "Megnézett videók naplózása: ", - "search_message_no_results": "Nincs találat.", - "search_message_change_filters_or_query": "Próbálj meg bővebben rákeresni vagy a szűrőkön állítani.", - "search_message_use_another_instance": " Megpróbálhatod egy másik Invidious-oldalon is a keresést.", - "search_filters_date_label": "Feltöltés ideje", - "search_filters_date_option_none": "Mindegy mikor", - "search_filters_type_option_all": "Bármilyen", - "search_filters_duration_option_none": "Mindegy", - "search_filters_duration_option_medium": "Átlagos (4 és 20 perc között)", - "search_filters_features_option_vr180": "180°-os virtuális valóság", - "search_filters_apply_button": "Keresés a megadott szűrőkkel", - "Popular enabled: ": "Népszerű engedélyezve ", - "error_video_not_in_playlist": "A lejátszási listában keresett videó nem létezik. Kattintson ide a lejátszási listához jutáshoz." -} diff --git a/invidious/locales/ia.json b/invidious/locales/ia.json deleted file mode 100755 index 19b6b0c..0000000 --- a/invidious/locales/ia.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "New password": "Nove contrasigno", - "preferences_player_style_label": "Stylo de reproductor: ", - "preferences_region_label": "Pais de contento: ", - "oldest": "plus ancian", - "published": "data de publication", - "invidious": "Invidious", - "Image CAPTCHA": "Imagine CAPTCHA", - "newest": "plus nove", - "generic_button_save": "Salvar", - "Dark mode: ": "Modo obscur: ", - "preferences_dark_mode_label": "Thema: ", - "preferences_category_subscription": "Preferentias de subscription", - "last": "ultime", - "generic_button_cancel": "Cancellar", - "popular": "popular", - "Time (h:mm:ss):": "Tempore (h:mm:ss):", - "preferences_autoplay_label": "Reproduction automatic: ", - "Sign In": "Aperir le session", - "Log in": "Initiar le session", - "preferences_speed_label": "Velocitate per predefinition: ", - "preferences_comments_label": "Commentos predefinite: ", - "light": "clar", - "No": "Non", - "youtube": "YouTube", - "LIVE": "IN DIRECTE", - "reddit": "Reddit", - "preferences_category_player": "Preferentias de reproductor", - "Preferences": "Preferentias", - "preferences_quality_dash_option_auto": "Automatic", - "dark": "obscur", - "generic_button_rss": "RSS", - "Export": "Exportar", - "History": "Chronologia", - "Password": "Contrasigno", - "User ID": "ID de usator", - "E-mail": "E-mail", - "Delete account?": "Deler conto?", - "preferences_volume_label": "Volumine del reproductor: ", - "preferences_sort_label": "Ordinar le videos per: " -} diff --git a/invidious/locales/id.json b/invidious/locales/id.json deleted file mode 100755 index 4c6e854..0000000 --- a/invidious/locales/id.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "generic_views_count_0": "{{count}} tampilan", - "generic_videos_count_0": "{{count}} video", - "generic_playlists_count_0": "{{count}} daftar putar", - "generic_subscribers_count_0": "{{count}} pelanggan", - "generic_subscriptions_count_0": "{{count}} langganan", - "LIVE": "SIARAN LANGSUNG", - "Shared `x` ago": "Dibagikan `x` yang lalu", - "Unsubscribe": "Batal Langganan", - "Subscribe": "Berlangganan", - "View channel on YouTube": "Lihat kanal di YouTube", - "View playlist on YouTube": "Lihat daftar putar di YouTube", - "newest": "terbaru", - "oldest": "terlawas", - "popular": "populer", - "last": "terakhir", - "Next page": "Halaman berikutnya", - "Previous page": "Halaman sebelumnya", - "Clear watch history?": "Bersihkan riwayat tontonan?", - "New password": "Kata sandi baru", - "New passwords must match": "Kata sandi baru harus cocok", - "Authorize token?": "Otorisasi token?", - "Authorize token for `x`?": "Otorisasi token untuk `x`?", - "Yes": "Ya", - "No": "Tidak", - "Import and Export Data": "Impor dan Ekspor Data", - "Import": "Impor", - "Import Invidious data": "Impor JSON data Invidious", - "Import YouTube subscriptions": "Impor langganan YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Impor langganan FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Impor langganan NewPipe (.json)", - "Import NewPipe data (.zip)": "Impor data NewPipe (.zip)", - "Export": "Ekspor", - "Export subscriptions as OPML": "Ekspor langganan sebagai OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Ekspor langganan sebagai OPML (untuk NewPipe & FreeTube)", - "Export data as JSON": "Ekspor data Invidious sebagai JSON", - "Delete account?": "Hapus akun?", - "History": "Riwayat", - "An alternative front-end to YouTube": "Sebuah alternatif layar depan untuk YouTube", - "JavaScript license information": "Informasi lisensi JavaScript", - "source": "sumber", - "Log in": "Masuk", - "Log in/register": "Masuk/Daftar", - "User ID": "ID Pengguna", - "Password": "Kata Sandi", - "Time (h:mm:ss):": "Waktu (j:mm:dd):", - "Text CAPTCHA": "Teks CAPTCHA", - "Image CAPTCHA": "Gambar CAPTCHA", - "Sign In": "Masuk", - "Register": "Daftar", - "E-mail": "Surel", - "Preferences": "Preferensi", - "preferences_category_player": "Preferensi pemutar", - "preferences_video_loop_label": "Selalu ulangi: ", - "preferences_autoplay_label": "Putar Otomatis: ", - "preferences_continue_label": "Putar selanjutnya secara baku: ", - "preferences_continue_autoplay_label": "Putar otomatis video berikutnya: ", - "preferences_listen_label": "Dengarkan secara baku: ", - "preferences_local_label": "Proksi video: ", - "preferences_speed_label": "Kecepatan baku: ", - "preferences_quality_label": "Kualitas video yang disukai: ", - "preferences_volume_label": "Volume pemutar: ", - "preferences_comments_label": "Komentar baku: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Takarir baku: ", - "Fallback captions: ": "Takarir cadangan: ", - "preferences_related_videos_label": "Tampilkan video terkait: ", - "preferences_annotations_label": "Tampilkan anotasi secara baku: ", - "preferences_extend_desc_label": "Perluas deskripsi video secara otomatis: ", - "preferences_vr_mode_label": "Video interaktif 360° (memerlukan WebGL): ", - "preferences_category_visual": "Preferensi visual", - "preferences_player_style_label": "Gaya pemutar: ", - "Dark mode: ": "Mode gelap: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "gelap", - "light": "terang", - "preferences_thin_mode_label": "Mode tipis: ", - "preferences_category_misc": "Preferensi lainnya", - "preferences_automatic_instance_redirect_label": "Pengalihan peladen otomatis (balik kembali ke redirect.invidious.io): ", - "preferences_category_subscription": "Preferensi langganan", - "preferences_annotations_subscribed_label": "Tampilkan anotasi secara baku untuk kanal yang dilanggan? ", - "Redirect homepage to feed: ": "Arahkan kembali laman beranda ke umpan: ", - "preferences_max_results_label": "Jumlah video ditampilkan di umpan: ", - "preferences_sort_label": "Urutkan video berdasarkan: ", - "published": "dipublikasi", - "published - reverse": "dipublikasi - terbalik", - "alphabetically": "menurut abjad", - "alphabetically - reverse": "menurut abjad - terbalik", - "channel name": "nama kanal", - "channel name - reverse": "nama kanal - terbalik", - "Only show latest video from channel: ": "Hanya tampilkan video terbaru dari kanal: ", - "Only show latest unwatched video from channel: ": "Hanya tampilkan video belum ditonton terbaru dari kanal: ", - "preferences_unseen_only_label": "Hanya tampilkan belum ditonton: ", - "preferences_notifications_only_label": "Hanya tampilkan pemberitahuan (jika ada): ", - "Enable web notifications": "Aktifkan pemberitahuan web", - "`x` uploaded a video": "`x` mengunggah video", - "`x` is live": "`x` sedang siaran langsung", - "preferences_category_data": "Preferensi data", - "Clear watch history": "Bersihkan riwayat tontonan", - "Import/export data": "Impor/Ekspor data", - "Change password": "Ganti kata sandi", - "Manage subscriptions": "Atur langganan", - "Manage tokens": "Atur token", - "Watch history": "Riwayat tontonan", - "Delete account": "Hapus akun", - "preferences_category_admin": "Preferensi administrator", - "preferences_default_home_label": "Laman beranda baku: ", - "preferences_feed_menu_label": "Menu umpan: ", - "preferences_show_nick_label": "Tampilkan nama panggilan di atas: ", - "Top enabled: ": "Teratas diaktifkan: ", - "CAPTCHA enabled: ": "CAPTCHA diaktifkan: ", - "Login enabled: ": "Masuk diaktifkan: ", - "Registration enabled: ": "Pendaftaran diaktifkan: ", - "Report statistics: ": "Laporan statistik: ", - "Save preferences": "Simpan preferensi", - "Subscription manager": "Pengatur langganan", - "Token manager": "Pengatur token", - "Token": "Token", - "tokens_count_0": "{{count}} token", - "Import/export": "Impor/ekspor", - "unsubscribe": "batal langganan", - "revoke": "cabut", - "Subscriptions": "Langganan", - "subscriptions_unseen_notifs_count_0": "{{count}} pemberitahuan belum dilihat", - "search": "Telusuri", - "Log out": "Keluar", - "Released under the AGPLv3 on Github.": "Dirilis di bawah AGPLv3 di GitHub.", - "Source available here.": "Sumber tersedia di sini.", - "View JavaScript license information.": "Tampilkan informasi lisensi JavaScript.", - "View privacy policy.": "Lihat kebijakan privasi.", - "Trending": "Sedang tren", - "Public": "Publik", - "Unlisted": "Tidak terdaftar", - "Private": "Pribadi", - "View all playlists": "Lihat semua daftar putar", - "Updated `x` ago": "Diperbarui`x` lalu", - "Delete playlist `x`?": "Hapus daftar putar `x`?", - "Delete playlist": "Hapus daftar putar", - "Create playlist": "Buat daftar putar", - "Title": "Judul", - "Playlist privacy": "Privasi daftar putar", - "Editing playlist `x`": "Menyunting daftar putar `x`", - "Show more": "Tampilkan lebih banyak", - "Show less": "Tampilkan lebih sedikit", - "Watch on YouTube": "Tonton di YouTube", - "Switch Invidious Instance": "Ganti peladen Invidious", - "Hide annotations": "Sembunyikan anotasi", - "Show annotations": "Tampilkan anotasi", - "Genre: ": "Genre: ", - "License: ": "Lisensi: ", - "Family friendly? ": "Ramah keluarga? ", - "Wilson score: ": "Skor Wilson: ", - "Engagement: ": "Keterlibatan: ", - "Whitelisted regions: ": "Wilayah daftar-putih: ", - "Blacklisted regions: ": "Wilayah daftar-hitam: ", - "Shared `x`": "Berbagi `x`", - "Premieres in `x`": "Tayang dalam `x`", - "Premieres `x`": "Tayang `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hai! Kelihatannya JavaScript kamu dimatikan. Klik di sini untuk melihat komentar, perlu diingat hal ini mungkin membutuhkan waktu sedikit lebih lama untuk dimuat.", - "View YouTube comments": "Lihat komentar YouTube", - "View more comments on Reddit": "Lihat lebih banyak komentar di Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Lihat`x` komentar", - "": "Lihat`x` komentar" - }, - "View Reddit comments": "Lihat komentar Reddit", - "Hide replies": "Sembunyikan balasan", - "Show replies": "Lihat balasan", - "Incorrect password": "Kata sandi salah", - "Wrong answer": "Jawaban salah", - "Erroneous CAPTCHA": "CAPTCHA salah", - "CAPTCHA is a required field": "CAPTCHA perlu diisi", - "User ID is a required field": "ID pengguna perlu diisi", - "Password is a required field": "Kata sandi perlu diisi", - "Wrong username or password": "Nama pengguna atau kata sandi salah", - "Password cannot be empty": "Kata sandi tidak boleh kosong", - "Password cannot be longer than 55 characters": "Kata sandi tidak boleh lebih dari 55 karakter", - "Please log in": "Harap masuk", - "Invidious Private Feed for `x`": "Umpan pribadi Invidious untuk`x`", - "channel:`x`": "kanal:`x`", - "Deleted or invalid channel": "Kanal terhapus atau tidak valid", - "This channel does not exist.": "Kanal ini tidak ada.", - "Could not get channel info.": "Tidak bisa mendapatkan info kanal.", - "Could not fetch comments": "Tidak dapat memuat komentar", - "comments_view_x_replies_0": "Lihat {{count}} balasan", - "`x` ago": "`x` lalu", - "Load more": "Muat lebih banyak", - "comments_points_count_0": "{{count}} poin", - "Could not create mix.": "Tidak dapat membuat mix.", - "Empty playlist": "Daftar putar kosong", - "Not a playlist.": "Bukan daftar putar.", - "Playlist does not exist.": "Daftar putar tidak ada.", - "Could not pull trending pages.": "Tidak bisa mendapatkan laman tren.", - "Hidden field \"challenge\" is a required field": "Bidang \"tantangan\" tersembunyi wajib diisi", - "Hidden field \"token\" is a required field": "Bidang \"token\" tersembunyi wajib diisi", - "Erroneous challenge": "Tantangan salah", - "Erroneous token": "Token salah", - "No such user": "Tidak ada pengguna demikian", - "Token is expired, please try again": "Token kadaluwarsa, harap coba lagi", - "English": "Bahasa Inggris", - "English (auto-generated)": "Bahasa Inggris (dibuat-otomatis)", - "Afrikaans": "Bahasa Afrika", - "Albanian": "Bahasa Albania", - "Amharic": "Bahasa Amharik", - "Arabic": "Bahasa arab", - "Armenian": "Bahasa Armenia", - "Azerbaijani": "Bahasa Azeri", - "Bangla": "Bahasa Bangla", - "Basque": "Bahasa Basque", - "Belarusian": "Bahasa Belarusia", - "Bosnian": "Bahasa Bosnia", - "Bulgarian": "Bahasa Bulgaria", - "Burmese": "Bahasa Birma", - "Catalan": "Bahasa Catalan", - "Cebuano": "Bahasa Cebu", - "Chinese (Simplified)": "Bahasa Cina", - "Chinese (Traditional)": "Bahasa Cina (Tradisonal)", - "Corsican": "Bahasa Korsika", - "Croatian": "Bahasa Kroasia", - "Czech": "Bahasa Ceko", - "Danish": "Bahasa Denmak", - "Dutch": "Bahasa Belanda", - "Esperanto": "Bahasa Esperanto", - "Estonian": "Bahasa Estonia", - "Filipino": "Bahasa Filipina", - "Finnish": "Bahasa Finlandia", - "French": "Bahasa Perancis", - "Galician": "Bahasa Galisia", - "Georgian": "Bahasa Georgia", - "German": "Bahasa Jerman", - "Greek": "Bahasa Yunani", - "Gujarati": "Bahasa Gujarat", - "Haitian Creole": "Bahasa Kreol Haiti", - "Hausa": "Bahasa Hausa", - "Hawaiian": "Bahasa Hawai", - "Hebrew": "Bahasa Ibrani", - "Hindi": "Bahasa Hindi", - "Hmong": "Bahasa Hmong", - "Hungarian": "Bahasa Hungaria", - "Icelandic": "Bahasa Islandia", - "Igbo": "Bahasa Igbo", - "Indonesian": "Bahasa Indonesia", - "Irish": "Bahasa Irlandia", - "Italian": "Bahasa Italia", - "Japanese": "Bahasa Jepang", - "Javanese": "Bahasa Jawa", - "Kannada": "Bahasa Kannada", - "Kazakh": "Bahasa Kazakh", - "Khmer": "Bahasa Khmer", - "Korean": "Bahasa Korea", - "Kurdish": "Bahasa Kurdistan", - "Kyrgyz": "Bahasa Kirgiz", - "Lao": "Bahasa Laos", - "Latin": "Bahasa Latin", - "Latvian": "Bahasa Latvia", - "Lithuanian": "Bahasa Lithuania", - "Luxembourgish": "Bahasa Luksemburg", - "Macedonian": "Bahasa Makedonia", - "Malagasy": "Bahasa Malagasi", - "Malay": "Bahasa Melayu", - "Malayalam": "Bahasa Malayalam", - "Maltese": "Bahasa Malta", - "Maori": "Bahasa Maori", - "Marathi": "Bahasa Marathi", - "Mongolian": "Bahasa Mongolia", - "Nepali": "Bahasa Nepal", - "Norwegian Bokmål": "Bahasa Norwegia Bokmål", - "Nyanja": "Bahasa Chichewa", - "Pashto": "Bahasa Pashtun", - "Persian": "Bahasa Persia", - "Polish": "Bahasa Polandia", - "Portuguese": "Bahasa Portugis", - "Punjabi": "Bahasa Punjabi", - "Romanian": "Bahasa Romania", - "Russian": "Bahasa Russia", - "Samoan": "Bahasa Samoa", - "Scottish Gaelic": "Bahasa Gaelik Skotlandia", - "Serbian": "Bahasa Serbia", - "Shona": "Bahasa Shona", - "Sindhi": "Bahasa Sindhi", - "Sinhala": "Bahasa Sinhala", - "Slovak": "Bahasa Slovakia", - "Slovenian": "Bahasa Slovenia", - "Somali": "Bahasa Somalia", - "Southern Sotho": "Bahasa Sesotho", - "Spanish": "Bahasa Spanyol", - "Spanish (Latin America)": "Bahasa Spanyol (Amerika Latin)", - "Sundanese": "Bahasa Sunda", - "Swahili": "Bahasa Swahili", - "Swedish": "Bahasa Swedia", - "Tajik": "Bahasa Tajik", - "Tamil": "Bahasa Tamil", - "Telugu": "Bahasa Telugu", - "Thai": "Bahasa Thailand", - "Turkish": "Bahasa Turki", - "Ukrainian": "Bahasa Ukraina", - "Urdu": "Bahasa Urdu", - "Uzbek": "Bahasa Uzbek", - "Vietnamese": "Bahasa Vietnam", - "Welsh": "Bahasa Wales", - "Western Frisian": "Bahasa Frisia Barat", - "Xhosa": "Bahasa Xhosa", - "Yiddish": "Bahasa Yiddi", - "Yoruba": "Bahasa Yoruba", - "Zulu": "Bahasa Zulu", - "generic_count_years_0": "{{count}} tahun", - "generic_count_months_0": "{{count}} bulan", - "generic_count_weeks_0": "{{count}} pekan", - "generic_count_days_0": "{{count}} hari", - "generic_count_hours_0": "{{count}} jam", - "generic_count_minutes_0": "{{count}} menit", - "generic_count_seconds_0": "{{count}} detik", - "Fallback comments: ": "Komentar alternatif: ", - "Popular": "Populer", - "Search": "Cari", - "Top": "Teratas", - "About": "Tentang", - "Rating: ": "Penilaian: ", - "preferences_locale_label": "Bahasa: ", - "View as playlist": "Lihat sebagai daftar putar", - "Default": "Baku", - "Music": "Musik", - "Gaming": "Permainan", - "News": "Berita", - "Movies": "Film", - "Download": "Unduh", - "Download as: ": "Unduh sebagai: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(disunting)", - "YouTube comment permalink": "Tautan permanen komentar YouTube", - "permalink": "tautan permanen", - "`x` marked it with a ❤": "`x` telah ditandai dengan ❤", - "Audio mode": "Mode audio", - "Video mode": "Mode video", - "channel_tab_videos_label": "Video", - "Playlists": "Daftar putar", - "channel_tab_community_label": "Komunitas", - "search_filters_sort_option_relevance": "Relevansi", - "search_filters_sort_option_rating": "Penilaian", - "search_filters_sort_option_date": "Tanggal Unggah", - "search_filters_sort_option_views": "Jumlah ditonton", - "search_filters_type_label": "Tipe", - "search_filters_duration_label": "Durasi", - "search_filters_features_label": "Fitur", - "search_filters_sort_label": "Urut Berdasarkan", - "search_filters_date_option_hour": "Jam Terakhir", - "search_filters_date_option_today": "Hari Ini", - "search_filters_date_option_week": "Pekan Ini", - "search_filters_date_option_month": "Bulan Ini", - "search_filters_date_option_year": "Tahun Ini", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Daftar Putar", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Pertunjukan/Acara", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Takarir", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Siaran Langsung", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Lokasi", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Versi saat ini: ", - "next_steps_error_message": "Setelah itu Anda harus mencoba: ", - "next_steps_error_message_refresh": "Segarkan", - "next_steps_error_message_go_to_youtube": "Buka YouTube", - "footer_donate_page": "Donasi", - "adminprefs_modified_source_code_url_label": "URL ke repositori kode sumber yang dimodifikasi", - "footer_source_code": "Kode sumber", - "footer_original_source_code": "Kode sumber yang asli", - "search_filters_duration_option_short": "Pendek (< 4 menit)", - "search_filters_duration_option_long": "Panjang (> 20 menit)", - "footer_modfied_source_code": "Kode sumber yang dimodifikasi", - "footer_documentation": "Dokumentasi", - "preferences_region_label": "Konten dari negara: ", - "preferences_quality_dash_label": "Kualitas video DASH yang disukai: ", - "preferences_quality_option_medium": "Medium", - "preferences_quality_option_small": "Rendah", - "preferences_quality_dash_option_best": "Terbaik", - "preferences_quality_dash_option_worst": "Terburuk", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_purchased": "Dibeli", - "search_filters_features_option_three_sixty": "360°", - "none": "tidak ada", - "videoinfo_watch_on_youTube": "Tonton di YouTube", - "videoinfo_youTube_embed_link": "Tersemat", - "videoinfo_invidious_embed_link": "Tautan Tersemat", - "download_subtitles": "Takarir- `x` (.vtt)", - "user_saved_playlists": "`x` daftar putar yang disimpan", - "videoinfo_started_streaming_x_ago": "Mulai siaran `x` yang lalu", - "user_created_playlists": "`x` daftar putar yang dibuat", - "preferences_quality_option_dash": "DASH (kualitas adaptif)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_auto": "Otomatis", - "preferences_quality_dash_option_480p": "480p", - "Video unavailable": "Video tidak tersedia", - "preferences_save_player_pos_label": "Simpan posisi pemutaran: ", - "crash_page_you_found_a_bug": "Sepertinya kamu telah menemukan masalah di invidious!", - "crash_page_before_reporting": "Sebelum melaporkan masalah, pastikan anda memiliki:", - "English (United States)": "Inggris (US)", - "preferences_watch_history_label": "Aktifkan riwayat tontonan: ", - "English (United Kingdom)": "Inggris (UK)", - "search_filters_title": "Saring", - "search_message_no_results": "Tidak ada hasil yang ditemukan.", - "search_message_change_filters_or_query": "Coba perbanyak kueri pencarian dan/atau ubah filter Anda.", - "search_message_use_another_instance": " Anda juga bisa mencari di peladen lain.", - "Indonesian (auto-generated)": "Indonesia (dibuat secara otomatis)", - "Japanese (auto-generated)": "Jepang (dibuat secara otomatis)", - "Korean (auto-generated)": "Korea (dibuat secara otomatis)", - "Portuguese (Brazil)": "Portugis (Brasil)", - "Russian (auto-generated)": "Rusia (dibuat secara otomatis)", - "Spanish (Mexico)": "Spanyol (Meksiko)", - "Spanish (Spain)": "Spanyol (Spanyol)", - "Vietnamese (auto-generated)": "Vietnam (dibuat secara otomatis)", - "search_filters_features_option_vr180": "VR180", - "Spanish (auto-generated)": "Spanyol (dibuat secara otomatis)", - "Chinese": "Bahasa Cina", - "Chinese (Taiwan)": "Bahasa Cina (Taiwan)", - "Chinese (Hong Kong)": "Bahasa Cina (Hong Kong)", - "Chinese (China)": "Bahasa Cina (China)", - "French (auto-generated)": "Perancis (dibuat secara otomatis)", - "German (auto-generated)": "Jerman (dibuat secara otomatis)", - "Italian (auto-generated)": "Italia (dibuat secara otomatis)", - "Portuguese (auto-generated)": "Portugis (dibuat secara otomatis)", - "Turkish (auto-generated)": "Turki (dibuat secara otomatis)", - "search_filters_date_label": "Tanggal unggah", - "search_filters_type_option_all": "Segala jenis", - "search_filters_apply_button": "Terapkan saringan yang dipilih", - "Dutch (auto-generated)": "Belanda (dihasilkan secara otomatis)", - "search_filters_date_option_none": "Tanggal berapa pun", - "search_filters_duration_option_none": "Durasi berapa pun", - "search_filters_duration_option_medium": "Sedang (4 - 20 menit)", - "Cantonese (Hong Kong)": "Bahasa Kanton (Hong Kong)", - "crash_page_refresh": "mencoba untuk memuat ulang halaman", - "crash_page_switch_instance": "mencoba untuk menggunakan peladen lainnya", - "crash_page_read_the_faq": "baca Soal Sering Ditanya (SSD/FAQ)", - "crash_page_search_issue": "mencari isu yang ada di GitHub", - "crash_page_report_issue": "Jika yang di atas tidak membantu, buka isu baru di GitHub (sebaiknya dalam bahasa Inggris) dan sertakan teks berikut dalam pesan Anda (JANGAN terjemahkan teks tersebut):", - "Popular enabled: ": "Populer diaktifkan: ", - "channel_tab_podcasts_label": "Podcast", - "Download is disabled": "Download dinonaktifkan", - "Channel Sponsor": "Saluran Sponsor", - "channel_tab_streams_label": "Streaming langsung", - "playlist_button_add_items": "Tambahkan video", - "Artist: ": "Artis: ", - "generic_button_save": "Simpan", - "generic_button_cancel": "Batal", - "Album: ": "Album: ", - "channel_tab_shorts_label": "Shorts", - "channel_tab_releases_label": "Terbit", - "Interlingue": "Interlingue", - "Song: ": "Lagu: ", - "generic_channels_count_0": "Saluran {{count}}", - "channel_tab_playlists_label": "Daftar putar", - "generic_button_edit": "Ubah", - "Music in this video": "Musik dalam video ini", - "generic_button_rss": "RSS", - "channel_tab_channels_label": "Saluran", - "error_video_not_in_playlist": "Video yang diminta tidak ada dalam daftar putar ini. Klik di sini untuk halaman beranda daftar putar.", - "generic_button_delete": "Hapus", - "Import YouTube playlist (.csv)": "Impor daftar putar YouTube (.csv)", - "Standard YouTube license": "Lisensi YouTube standar", - "Import YouTube watch history (.json)": "Impor riwayat tontonan YouTube (.json)" -} diff --git a/invidious/locales/is.json b/invidious/locales/is.json deleted file mode 100755 index ea4c469..0000000 --- a/invidious/locales/is.json +++ /dev/null @@ -1,315 +0,0 @@ -{ - "LIVE": "BEINT", - "Shared `x` ago": "Deilt `x` síðan", - "Unsubscribe": "Afskrá", - "Subscribe": "Áskrifa", - "View channel on YouTube": "Skoða rás á YouTube", - "View playlist on YouTube": "Skoða spilunarlisti á YouTube", - "newest": "nýjasta", - "oldest": "elsta", - "popular": "vinsælt", - "last": "síðast", - "Next page": "Næsta síða", - "Previous page": "Fyrri síða", - "Clear watch history?": "Hreinsa áhorfssögu?", - "New password": "Nýtt lykilorð", - "New passwords must match": "Nýtt lykilorð verður að passa", - "Authorize token?": "Leyfa tákn?", - "Authorize token for `x`?": "Leyfa tákn fyrir `x`?", - "Yes": "Já", - "No": "Nei", - "Import and Export Data": "Innflutningur og Útflutningur Gagna", - "Import": "Flytja inn", - "Import Invidious data": "Flytja inn Invidious gögn", - "Import YouTube subscriptions": "Flytja inn YouTube áskriftir", - "Import FreeTube subscriptions (.db)": "Flytja inn FreeTube áskriftir (.db)", - "Import NewPipe subscriptions (.json)": "Flytja inn NewPipe áskriftir (.json)", - "Import NewPipe data (.zip)": "Flytja inn NewPipe gögn (.zip)", - "Export": "Flytja út", - "Export subscriptions as OPML": "Flytja út áskriftir sem OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Flytja út áskriftir sem OPML (fyrir NewPipe & FreeTube)", - "Export data as JSON": "Flytja út gögn sem JSON", - "Delete account?": "Eyða reikningi?", - "History": "Saga", - "An alternative front-end to YouTube": "Önnur framhlið fyrir YouTube", - "JavaScript license information": "JavaScript leyfi upplýsingar", - "source": "uppspretta", - "Log in": "Skrá inn", - "Log in/register": "Innskráning/nýskráning", - "User ID": "Notandakenni", - "Password": "Lykilorð", - "Time (h:mm:ss):": "Tími (h:mm: ss):", - "Text CAPTCHA": "Texta CAPTCHA", - "Image CAPTCHA": "Mynd CAPTCHA", - "Sign In": "Skrá inn", - "Register": "Nýskrá", - "E-mail": "Tölvupóstur", - "Preferences": "Kjörstillingar", - "preferences_category_player": "Kjörstillingar spilara", - "preferences_video_loop_label": "Alltaf lykkja: ", - "preferences_autoplay_label": "Spila sjálfkrafa: ", - "preferences_continue_label": "Spila næst sjálfgefið: ", - "preferences_continue_autoplay_label": "Spila næst sjálfkrafa: ", - "preferences_listen_label": "Hlusta sjálfgefið: ", - "preferences_local_label": "Proxy myndbönd? ", - "preferences_speed_label": "Sjálfgefinn hraði: ", - "preferences_quality_label": "Æskilegt myndbands gæði: ", - "preferences_volume_label": "Spilara hljóðstyrkur: ", - "preferences_comments_label": "Sjálfgefin ummæli: ", - "youtube": "YouTube", - "reddit": "reddit", - "preferences_captions_label": "Sjálfgefin texti: ", - "Fallback captions: ": "Varatextar: ", - "preferences_related_videos_label": "Sýna tengd myndbönd? ", - "preferences_annotations_label": "Á að sýna glósur sjálfgefið? ", - "preferences_category_visual": "Sjónrænar stillingar", - "preferences_player_style_label": "Spilara stíl: ", - "Dark mode: ": "Myrkur ham: ", - "preferences_dark_mode_label": "Þema: ", - "dark": "dimmt", - "light": "ljóst", - "preferences_thin_mode_label": "Þunnt ham: ", - "preferences_category_subscription": "Áskriftarstillingar", - "preferences_annotations_subscribed_label": "Á að sýna glósur sjálfgefið fyrir áskriftarrásir? ", - "Redirect homepage to feed: ": "Endurbeina heimasíðu að straumi: ", - "preferences_max_results_label": "Fjöldi myndbanda sem sýndir eru í straumi: ", - "preferences_sort_label": "Raða myndbönd eftir: ", - "published": "birt", - "published - reverse": "birt - afturábak", - "alphabetically": "í stafrófsröð", - "alphabetically - reverse": "stafrófsröð - afturábak", - "channel name": "heiti rásar", - "channel name - reverse": "heiti rásar - afturábak", - "Only show latest video from channel: ": "Sýna aðeins nýjasta myndband frá rás: ", - "Only show latest unwatched video from channel: ": "Sýna aðeins nýjasta óséð myndband frá rás: ", - "preferences_unseen_only_label": "Sýna aðeins óséð: ", - "preferences_notifications_only_label": "Sýna aðeins tilkynningar (ef einhverjar eru): ", - "Enable web notifications": "Virkja veftilkynningar", - "`x` uploaded a video": "`x` hlóð upp myndband", - "`x` is live": "`x` er í beinni", - "preferences_category_data": "Gagnastillingar", - "Clear watch history": "Hreinsa áhorfssögu", - "Import/export data": "Flytja inn/út gögn", - "Change password": "Breyta lykilorði", - "Manage subscriptions": "Stjórna áskriftum", - "Manage tokens": "Stjórna tákn", - "Watch history": "Áhorfssögu", - "Delete account": "Eyða reikningi", - "preferences_category_admin": "Kjörstillingar stjórnanda", - "preferences_default_home_label": "Sjálfgefin heimasíða: ", - "preferences_feed_menu_label": "Straum valmynd: ", - "Top enabled: ": "Toppur virkur? ", - "CAPTCHA enabled: ": "CAPTCHA virk? ", - "Login enabled: ": "Innskráning virk? ", - "Registration enabled: ": "Nýskráning virkjuð? ", - "Report statistics: ": "Skrá talnagögn? ", - "Save preferences": "Vista stillingar", - "Subscription manager": "Áskriftarstjóri", - "Token manager": "Táknstjóri", - "Token": "Tákn", - "Import/export": "Flytja inn/út", - "unsubscribe": "afskrá", - "revoke": "afturkalla", - "Subscriptions": "Áskriftir", - "search": "leita", - "Log out": "Útskrá", - "Source available here.": "Frumkóði aðgengilegur hér.", - "View JavaScript license information.": "Skoða JavaScript leyfisupplýsingar.", - "View privacy policy.": "Skoða meðferð persónuupplýsinga.", - "Trending": "Vinsælt", - "Public": "Opinbert", - "Unlisted": "Óskráð", - "Private": "Einka", - "View all playlists": "Skoða alla spilunarlista", - "Updated `x` ago": "Uppfært `x` síðann", - "Delete playlist `x`?": "Eiða spilunarlista `x`?", - "Delete playlist": "Eiða spilunarlista", - "Create playlist": "Búa til spilunarlista", - "Title": "Titill", - "Playlist privacy": "Spilunarlista opinberri", - "Editing playlist `x`": "Að breyta spilunarlista `x`", - "Watch on YouTube": "Horfa á YouTube", - "Hide annotations": "Fela glósur", - "Show annotations": "Sýna glósur", - "Genre: ": "Tegund: ", - "License: ": "Notkunarleyfi: ", - "Family friendly? ": "Fjölskylduvænt? ", - "Wilson score: ": "Wilson stig: ", - "Engagement: ": "Þátttöku: ", - "Whitelisted regions: ": "Svæði á hvítum lista: ", - "Blacklisted regions: ": "Svæði á svörtum lista: ", - "Shared `x`": "Deilt `x`", - "Premieres in `x`": "Frumflutt eftir `x`", - "Premieres `x`": "Frumflutt `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hæ! Lítur út eins og þú hafir slökkt á JavaScript. Smelltu hér til að skoða ummæli, hafðu í huga að þær geta tekið aðeins lengri tíma að hlaða.", - "View YouTube comments": "Skoða YouTube ummæli", - "View more comments on Reddit": "Skoða fleiri ummæli á Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Skoða `x` ummæli", - "": "Skoða `x` ummæli" - }, - "View Reddit comments": "Skoða Reddit ummæli", - "Hide replies": "Fela svör", - "Show replies": "Sýna svör", - "Incorrect password": "Rangt lykilorð", - "Wrong answer": "Rangt svar", - "Erroneous CAPTCHA": "Rangt CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA er nauðsynlegur reitur", - "User ID is a required field": "Notandakenni er nauðsynlegur reitur", - "Password is a required field": "Lykilorð er nauðsynlegur reitur", - "Wrong username or password": "Rangt notandanafn eða lykilorð", - "Password cannot be empty": "Lykilorð má ekki vera autt", - "Password cannot be longer than 55 characters": "Lykilorð má ekki vera lengra en 55 stafir", - "Please log in": "Vinsamlegast skráðu þig inn", - "Invidious Private Feed for `x`": "Invidious Persónulegur Straumur fyrir `x`", - "channel:`x`": "rás:`x`", - "Deleted or invalid channel": "Eytt eða ógild rás", - "This channel does not exist.": "Þessi rás er ekki til.", - "Could not get channel info.": "Ekki tókst að fá rásarupplýsingar.", - "Could not fetch comments": "Ekki tókst að sækja ummæli", - "`x` ago": "`x` síðan", - "Load more": "Hlaða meira", - "Could not create mix.": "Ekki tókst að búa til blöndu.", - "Empty playlist": "Tómur spilunarlisti", - "Not a playlist.": "Ekki spilunarlisti.", - "Playlist does not exist.": "Spilunarlisti er ekki til.", - "Could not pull trending pages.": "Ekki tókst að draga vinsælar síður.", - "Hidden field \"challenge\" is a required field": "Falinn reitur \"áskorun\" er nauðsynlegur reitur", - "Hidden field \"token\" is a required field": "Falinn reitur \"tákn\" er nauðsynlegur reitur", - "Erroneous challenge": "Röng áskorun", - "Erroneous token": "Rangt tákn", - "No such user": "Enginn slíkur notandi", - "Token is expired, please try again": "Tákn er útrunnið, vinsamlegast reyndu aftur", - "English": "Enska", - "English (auto-generated)": "Enska (sjálfkrafa)", - "Afrikaans": "Afríkanska", - "Albanian": "Albanska", - "Amharic": "Amharíska", - "Arabic": "Arabíska", - "Armenian": "Armenska", - "Azerbaijani": "Aserbaídsjanska", - "Bangla": "Bangla", - "Basque": "Baskneska", - "Belarusian": "Hvítrússneska", - "Bosnian": "Bosníska", - "Bulgarian": "Búlgarska", - "Burmese": "Búrmíska", - "Catalan": "Katalónska", - "Cebuano": "Cebúanó", - "Chinese (Simplified)": "Kínverska (Einfölduð)", - "Chinese (Traditional)": "Kínverska (Hefðbundin)", - "Corsican": "Korsíska", - "Croatian": "Króatíska", - "Czech": "Tékkneska", - "Danish": "Danska", - "Dutch": "Hollenska", - "Esperanto": "Esperantó", - "Estonian": "Eistneska", - "Filipino": "Filippínska", - "Finnish": "Finnska", - "French": "Franska", - "Galician": "Galisíska", - "Georgian": "Georgíska", - "German": "Þýska", - "Greek": "Gríska", - "Gujarati": "Gújaratí", - "Haitian Creole": "Haítískt Kreólamál", - "Hausa": "Hausa", - "Hawaiian": "Havaíska", - "Hebrew": "Hebreska", - "Hindi": "Hindí", - "Hmong": "Hmong", - "Hungarian": "Ungverska", - "Icelandic": "Íslenska", - "Igbo": "Igbo", - "Indonesian": "Indónesíska", - "Irish": "Írska", - "Italian": "Ítalska", - "Japanese": "Japanska", - "Javanese": "Javanska", - "Kannada": "Kanaríska", - "Kazakh": "Kasakíska", - "Khmer": "Khmeríska", - "Korean": "Kóreska", - "Kurdish": "Kúrdíska", - "Kyrgyz": "Kirgisíska", - "Lao": "Laó", - "Latin": "Latína", - "Latvian": "Lettneska", - "Lithuanian": "Litháíska", - "Luxembourgish": "Lúxemborgíska", - "Macedonian": "Makedóníska", - "Malagasy": "Malagasíska", - "Malay": "Malaíska", - "Malayalam": "Malaíalam", - "Maltese": "Maltneska", - "Maori": "Maórí", - "Marathi": "Marathi", - "Mongolian": "Mongólska", - "Nepali": "Nepalska", - "Norwegian Bokmål": "Norskt bókmál", - "Nyanja": "Nyanja", - "Pashto": "Pashto", - "Persian": "Persneska", - "Polish": "Pólska", - "Portuguese": "Portúgalska", - "Punjabi": "Punjabi", - "Romanian": "Rúmenska", - "Russian": "Rússneska", - "Samoan": "Samóíska", - "Scottish Gaelic": "Skosk Gelíska", - "Serbian": "Serbneska", - "Shona": "Shona", - "Sindhi": "Sindí", - "Sinhala": "Sinhala", - "Slovak": "Slóvakíska", - "Slovenian": "Slóvenska", - "Somali": "Sómalska", - "Southern Sotho": "Suður Sótó", - "Spanish": "Spænska", - "Spanish (Latin America)": "Spænska (Rómönsku Ameríka)", - "Sundanese": "Sundaneska", - "Swahili": "Svahílí", - "Swedish": "Sænska", - "Tajik": "Tadsikíska", - "Tamil": "Tamílska", - "Telugu": "Telúgú", - "Thai": "Taílenska", - "Turkish": "Tyrkneska", - "Ukrainian": "Úkraníska", - "Urdu": "Úrdú", - "Uzbek": "Úsbekíska", - "Vietnamese": "Víetnamska", - "Welsh": "Velska", - "Western Frisian": "Vestur Frísneska", - "Xhosa": "Xhosa", - "Yiddish": "Jiddíska", - "Yoruba": "Jórúba", - "Zulu": "Zúlú", - "Fallback comments: ": "Vara ummæli: ", - "Popular": "Vinsælt", - "Top": "Topp", - "About": "Um", - "Rating: ": "Einkunn: ", - "preferences_locale_label": "Tungumál: ", - "View as playlist": "Skoða sem spilunarlista", - "Default": "Sjálfgefið", - "Music": "Tónlist", - "Gaming": "Tólvuleikja", - "News": "Fréttir", - "Movies": "Kvikmyndir", - "Download": "Niðurhal", - "Download as: ": "Niðurhala sem: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(breytt)", - "YouTube comment permalink": "YouTube ummæli varanlegur tengill", - "permalink": "Varanlegur tengill", - "`x` marked it with a ❤": "`x` merkti það með ❤", - "Audio mode": "Hljóð ham", - "Video mode": "Myndband ham", - "channel_tab_videos_label": "Myndbönd", - "Playlists": "Spilunarlistar", - "channel_tab_community_label": "Samfélag", - "Current version: ": "Núverandi útgáfa: ", - "preferences_watch_history_label": "Virkja áhorfssögu: " -} diff --git a/invidious/locales/it.json b/invidious/locales/it.json deleted file mode 100755 index 7b6bb5d..0000000 --- a/invidious/locales/it.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "generic_subscribers_count_0": "{{count}} iscritto", - "generic_subscribers_count_1": "{{count}} iscritti", - "generic_subscribers_count_2": "{{count}} iscritti", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} video", - "generic_videos_count_2": "{{count}} video", - "generic_playlists_count_0": "{{count}} playlist", - "generic_playlists_count_1": "{{count}} playlist", - "generic_playlists_count_2": "{{count}} playlist", - "LIVE": "IN DIRETTA", - "Shared `x` ago": "Condiviso `x` fa", - "Unsubscribe": "Disiscriviti", - "Subscribe": "Iscriviti", - "View channel on YouTube": "Vedi canale su YouTube", - "View playlist on YouTube": "Vedi playlist su YouTube", - "newest": "più recente", - "oldest": "più vecchio", - "popular": "popolare", - "last": "ultimo", - "Next page": "Pagina successiva", - "Previous page": "Pagina precedente", - "Clear watch history?": "Eliminare la cronologia dei video guardati?", - "New password": "Nuova password", - "New passwords must match": "Le nuove password devono corrispondere", - "Authorize token?": "Autorizzare gettone?", - "Authorize token for `x`?": "Autorizzare gettone per `x`?", - "Yes": "Sì", - "No": "No", - "Import and Export Data": "Importazione ed esportazione dati", - "Import": "Importa", - "Import Invidious data": "Importa dati Invidious in formato JSON", - "Import YouTube subscriptions": "Importa le iscrizioni da YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importa le iscrizioni da FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importa le iscrizioni da NewPipe (.json)", - "Import NewPipe data (.zip)": "Importa i dati di NewPipe (.zip)", - "Export": "Esporta", - "Export subscriptions as OPML": "Esporta gli abbonamenti come OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Esporta gli abbonamenti come OPML (per NewPipe e FreeTube)", - "Export data as JSON": "Esporta i dati Invidious in formato JSON", - "Delete account?": "Eliminare l'account?", - "History": "Cronologia", - "An alternative front-end to YouTube": "Un'interfaccia alternativa per YouTube", - "JavaScript license information": "Info licenze JavaScript", - "source": "sorgente", - "Log in": "Accedi", - "Log in/register": "Accedi/Registrati", - "User ID": "ID utente", - "Password": "Password", - "Time (h:mm:ss):": "Orario (h:mm:ss):", - "Text CAPTCHA": "Testo del CAPTCHA", - "Image CAPTCHA": "Immagine CAPTCHA", - "Sign In": "Accedi", - "Register": "Registrati", - "E-mail": "E-mail", - "Preferences": "Preferenze", - "preferences_category_player": "Preferenze del riproduttore", - "preferences_video_loop_label": "Ripeti sempre: ", - "preferences_autoplay_label": "Riproduzione automatica: ", - "preferences_continue_label": "Riproduzione successiva predefinita: ", - "preferences_continue_autoplay_label": "Riproduci automaticamente il video successivo: ", - "preferences_listen_label": "Modalità solo audio predefinita: ", - "preferences_local_label": "Proxy per i video: ", - "preferences_speed_label": "Velocità predefinita: ", - "preferences_quality_label": "Qualità video preferita: ", - "preferences_volume_label": "Volume di riproduzione: ", - "preferences_comments_label": "Origine dei commenti: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Sottotitoli predefiniti: ", - "Fallback captions: ": "Sottotitoli alternativi: ", - "preferences_related_videos_label": "Mostra video correlati: ", - "preferences_annotations_label": "Mostra le annotazioni in modo predefinito: ", - "preferences_category_visual": "Preferenze grafiche", - "preferences_player_style_label": "Stile riproduttore: ", - "Dark mode: ": "Tema scuro: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "scuro", - "light": "chiaro", - "preferences_thin_mode_label": "Modalità per connessioni lente: ", - "preferences_category_subscription": "Preferenze iscrizioni", - "preferences_annotations_subscribed_label": "Mostrare annotazioni in modo predefinito per i canali sottoscritti: ", - "Redirect homepage to feed: ": "Reindirizza la pagina principale a quella delle iscrizioni: ", - "preferences_max_results_label": "Numero di video da mostrare nelle iscrizioni: ", - "preferences_sort_label": "Ordina i video per: ", - "published": "data di pubblicazione", - "published - reverse": "data di pubblicazione - decrescente", - "alphabetically": "ordine alfabetico", - "alphabetically - reverse": "ordine alfabetico - decrescente", - "channel name": "nome del canale", - "channel name - reverse": "nome del canale - decrescente", - "Only show latest video from channel: ": "Mostra solo il video più recente del canale: ", - "Only show latest unwatched video from channel: ": "Mostra solo il video più recente non guardato del canale: ", - "preferences_unseen_only_label": "Mostra solo i video non guardati: ", - "preferences_notifications_only_label": "Mostra solo le notifiche (se presenti): ", - "Enable web notifications": "Attiva le notifiche web", - "`x` uploaded a video": "`x` ha caricato un video", - "`x` is live": "`x` è in diretta", - "preferences_category_data": "Preferenze dati", - "Clear watch history": "Cancella la cronologia dei video guardati", - "Import/export data": "Importazione/esportazione dati", - "Change password": "Modifica password", - "Manage subscriptions": "Gestisci le iscrizioni", - "Manage tokens": "Gestisci i gettoni", - "Watch history": "Cronologia dei video", - "Delete account": "Elimina l'account", - "preferences_category_admin": "Preferenze amministratore", - "preferences_default_home_label": "Pagina principale predefinita: ", - "preferences_feed_menu_label": "Menu iscrizioni: ", - "Top enabled: ": "Top abilitato: ", - "CAPTCHA enabled: ": "CAPTCHA attivati: ", - "Login enabled: ": "Accesso attivato: ", - "Registration enabled: ": "Registrazione attivata: ", - "Report statistics: ": "Resoconto delle statistiche: ", - "Save preferences": "Salva le preferenze", - "Subscription manager": "Gestione delle iscrizioni", - "Token manager": "Gestione dei gettoni", - "Token": "Gettone", - "generic_subscriptions_count_0": "{{count}} iscrizione", - "generic_subscriptions_count_1": "{{count}} iscrizioni", - "generic_subscriptions_count_2": "{{count}} iscrizioni", - "tokens_count_0": "{{count}} gettone", - "tokens_count_1": "{{count}} gettoni", - "tokens_count_2": "{{count}} gettoni", - "Import/export": "Importa/esporta", - "unsubscribe": "disiscriviti", - "revoke": "revoca", - "Subscriptions": "Iscrizioni", - "subscriptions_unseen_notifs_count_0": "{{count}} notifica non visualizzata", - "subscriptions_unseen_notifs_count_1": "{{count}} notifiche non visualizzate", - "subscriptions_unseen_notifs_count_2": "{{count}} notifiche non visualizzate", - "search": "Cerca", - "Log out": "Esci", - "Source available here.": "Codice sorgente.", - "View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.", - "View privacy policy.": "Vedi la politica sulla privacy.", - "Trending": "Tendenze", - "Public": "Pubblico", - "Unlisted": "Non elencati", - "Private": "Privato", - "View all playlists": "Visualizza tutte le playlist", - "Updated `x` ago": "Aggiornato `x` fa", - "Delete playlist `x`?": "Eliminare la playlist `x`?", - "Delete playlist": "Elimina playlist", - "Create playlist": "Crea playlist", - "Title": "Titolo", - "Playlist privacy": "Privacy playlist", - "Editing playlist `x`": "Modificando la playlist `x`", - "Watch on YouTube": "Guarda su YouTube", - "Hide annotations": "Nascondi annotazioni", - "Show annotations": "Mostra annotazioni", - "Genre: ": "Genere: ", - "License: ": "Licenza: ", - "Family friendly? ": "Per tutti? ", - "Wilson score: ": "Punteggio di Wilson: ", - "Engagement: ": "Tasso di coinvolgimento: ", - "Whitelisted regions: ": "Regioni in lista bianca: ", - "Blacklisted regions: ": "Regioni in lista nera: ", - "Shared `x`": "Condiviso `x`", - "generic_views_count_0": "{{count}} visualizzazione", - "generic_views_count_1": "{{count}} visualizzazioni", - "generic_views_count_2": "{{count}} visualizzazioni", - "Premieres in `x`": "In anteprima in `x`", - "Premieres `x`": "In anteprima `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Ciao, Sembra che tu abbia disattivato JavaScript. Clicca qui per visualizzare i commenti, ma considera che il caricamento potrebbe richiedere più tempo.", - "View YouTube comments": "Visualizza i commenti da YouTube", - "View more comments on Reddit": "Visualizza più commenti su Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Visualizza `x` commento", - "": "Visualizza `x` commenti" - }, - "View Reddit comments": "Visualizza i commenti da Reddit", - "Hide replies": "Nascondi le risposte", - "Show replies": "Mostra le risposte", - "Incorrect password": "Password sbagliata", - "Wrong answer": "Risposta errata", - "Erroneous CAPTCHA": "CAPTCHA errato", - "CAPTCHA is a required field": "Il CAPTCHA è un campo obbligatorio", - "User ID is a required field": "L'ID utente è obbligatorio", - "Password is a required field": "La password è un campo obbligatorio", - "Wrong username or password": "Nome utente o password errati", - "Password cannot be empty": "La password non può essere vuota", - "Password cannot be longer than 55 characters": "La password non può contenere più di 55 caratteri", - "Please log in": "Per favore, accedi", - "Invidious Private Feed for `x`": "Feed privato Invidious per `x`", - "channel:`x`": "canale:`x`", - "Deleted or invalid channel": "Canale eliminato o non valido", - "This channel does not exist.": "Questo canale non esiste.", - "Could not get channel info.": "Impossibile ottenere le informazioni del canale.", - "Could not fetch comments": "Impossibile recuperare i commenti", - "`x` ago": "`x` fa", - "Load more": "Carica altro", - "Could not create mix.": "Impossibile creare il mix.", - "Empty playlist": "Playlist vuota", - "Not a playlist.": "Non è una playlist.", - "Playlist does not exist.": "La playlist non esiste.", - "Could not pull trending pages.": "Impossibile recuperare le tendenze.", - "Hidden field \"challenge\" is a required field": "Il campo nascosto \"challenge\" è obbligatorio", - "Hidden field \"token\" is a required field": "Il campo nascosto «token» è obbligatorio", - "Erroneous challenge": "Campo «challenge» non valido", - "Erroneous token": "Campo \"token\" non valido", - "No such user": "Utente non valido", - "Token is expired, please try again": "Gettone scaduto, riprova", - "English": "Inglese", - "English (auto-generated)": "Inglese (generati automaticamente)", - "Afrikaans": "Afrikaans", - "Albanian": "Albanese", - "Amharic": "Amarico", - "Arabic": "Arabo", - "Armenian": "Armeno", - "Azerbaijani": "Azero", - "Bangla": "Bengalese", - "Basque": "Basco", - "Belarusian": "Bielorusso", - "Bosnian": "Bosniaco", - "Bulgarian": "Bulgaro", - "Burmese": "Birmano", - "Catalan": "Catalano", - "Cebuano": "Sugbuanon", - "Chinese (Simplified)": "Cinese semplifiato", - "Chinese (Traditional)": "Cinese tradizionale", - "Corsican": "Corso", - "Croatian": "Croato", - "Czech": "Ceco", - "Danish": "Danese", - "Dutch": "Olandese", - "Esperanto": "Esperanto", - "Estonian": "Estone", - "Filipino": "Filippino", - "Finnish": "Finlandese", - "French": "Francese", - "Galician": "Galiziano", - "Georgian": "Georgiano", - "German": "Tedesco", - "Greek": "Greco", - "Gujarati": "Gujarati", - "Haitian Creole": "Creolo haitiano", - "Hausa": "Lingua hausa", - "Hawaiian": "Hawaiano", - "Hebrew": "Ebraico", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Ungherese", - "Icelandic": "Islandese", - "Igbo": "Igbo", - "Indonesian": "Indonesiano", - "Irish": "Irlandese", - "Italian": "Italiano", - "Japanese": "Giapponese", - "Javanese": "Giavanese", - "Kannada": "Kannada", - "Kazakh": "Kazaco", - "Khmer": "Khmer", - "Korean": "Coreano", - "Kurdish": "Curdo", - "Kyrgyz": "Kirghiso", - "Lao": "Lao", - "Latin": "Latino", - "Latvian": "Lettone", - "Lithuanian": "Lituano", - "Luxembourgish": "Lussemburghese", - "Macedonian": "Macedone", - "Malagasy": "Malgascio", - "Malay": "Malese", - "Malayalam": "Lingua malayalam", - "Maltese": "Maltese", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongolo", - "Nepali": "Nepalese", - "Norwegian Bokmål": "Norvegese bokmål", - "Nyanja": "Nyanja", - "Pashto": "Pashtu", - "Persian": "Persiano", - "Polish": "Polacco", - "Portuguese": "Portoghese", - "Punjabi": "Punjabi", - "Romanian": "Rumeno", - "Russian": "Russo", - "Samoan": "Samoano", - "Scottish Gaelic": "Gaelico scozzese", - "Serbian": "Serbo", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Cingalese", - "Slovak": "Slovacco", - "Slovenian": "Sloveno", - "Somali": "Somalo", - "Southern Sotho": "Sotho del Sud", - "Spanish": "Spagnolo", - "Spanish (Latin America)": "Spagnolo (America latina)", - "Sundanese": "Sundanese", - "Swahili": "Swahili", - "Swedish": "Svedese", - "Tajik": "Tagico", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Thailandese", - "Turkish": "Turco", - "Ukrainian": "Ucraino", - "Urdu": "Urdu", - "Uzbek": "Uzbeco", - "Vietnamese": "Vietnamita", - "Welsh": "Gallese", - "Western Frisian": "Frisone occidentale", - "Xhosa": "Xhosa", - "Yiddish": "Yiddish", - "Yoruba": "Yoruba", - "Zulu": "Zulu", - "generic_count_years_0": "{{count}} anno", - "generic_count_years_1": "{{count}} anni", - "generic_count_years_2": "{{count}} anni", - "generic_count_months_0": "{{count}} mese", - "generic_count_months_1": "{{count}} mesi", - "generic_count_months_2": "{{count}} mesi", - "generic_count_weeks_0": "{{count}} settimana", - "generic_count_weeks_1": "{{count}} settimane", - "generic_count_weeks_2": "{{count}} settimane", - "generic_count_days_0": "{{count}} giorno", - "generic_count_days_1": "{{count}} giorni", - "generic_count_days_2": "{{count}} giorni", - "generic_count_hours_0": "{{count}} ora", - "generic_count_hours_1": "{{count}} ore", - "generic_count_hours_2": "{{count}} ore", - "generic_count_minutes_0": "{{count}} minuto", - "generic_count_minutes_1": "{{count}} minuti", - "generic_count_minutes_2": "{{count}} minuti", - "generic_count_seconds_0": "{{count}} secondo", - "generic_count_seconds_1": "{{count}} secondi", - "generic_count_seconds_2": "{{count}} secondi", - "Fallback comments: ": "Commenti alternativi: ", - "Popular": "Popolare", - "Search": "Cerca", - "Top": "Top", - "About": "Al riguardo", - "Rating: ": "Punteggio: ", - "preferences_locale_label": "Lingua: ", - "View as playlist": "Vedi come playlist", - "Default": "Predefinito", - "Music": "Musica", - "Gaming": "Videogiochi", - "News": "Notizie", - "Movies": "Film", - "Download": "Scarica", - "Download as: ": "Scarica come: ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(modificato)", - "YouTube comment permalink": "Link permanente al commento di YouTube", - "permalink": "perma-collegamento", - "`x` marked it with a ❤": "`x` l'ha contrassegnato con un ❤", - "Audio mode": "Modalità audio", - "Video mode": "Modalità video", - "channel_tab_videos_label": "Video", - "Playlists": "Playlist", - "search_filters_sort_option_relevance": "Pertinenza", - "search_filters_sort_option_rating": "Valutazione", - "search_filters_sort_option_date": "Data di caricamento", - "search_filters_sort_option_views": "Numero di visualizzazioni", - "search_filters_type_label": "Tipo", - "search_filters_duration_label": "Durata", - "search_filters_features_label": "Caratteristiche", - "search_filters_sort_label": "Ordina per", - "search_filters_date_option_hour": "Ultima ora", - "search_filters_date_option_today": "Oggi", - "search_filters_date_option_week": "Questa settimana", - "search_filters_date_option_month": "Questo mese", - "search_filters_date_option_year": "Quest'anno", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Canale", - "search_filters_type_option_playlist": "Playlist", - "search_filters_type_option_movie": "Film", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Sottotitoli / CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "In diretta", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Posizione", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Versione attuale: ", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_4320p": "4320p", - "search_filters_features_option_three_sixty": "360°", - "preferences_quality_dash_option_144p": "144p", - "Released under the AGPLv3 on Github.": "Pubblicato su GitHub con licenza AGPLv3.", - "preferences_quality_option_medium": "Media", - "preferences_quality_option_small": "Limitata", - "preferences_quality_dash_option_best": "Migliore", - "preferences_quality_dash_option_worst": "Peggiore", - "invidious": "Invidious", - "preferences_quality_dash_label": "Qualità video DASH preferita: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_auto": "Automatica", - "videoinfo_watch_on_youTube": "Guarda su YouTube", - "preferences_extend_desc_label": "Estendi automaticamente la descrizione del video: ", - "preferences_vr_mode_label": "Video interattivi a 360 gradi: ", - "Show less": "Mostra di meno", - "Switch Invidious Instance": "Cambia istanza Invidious", - "next_steps_error_message_go_to_youtube": "Andare su YouTube", - "footer_documentation": "Documentazione", - "footer_original_source_code": "Codice sorgente originale", - "footer_modfied_source_code": "Codice sorgente modificato", - "none": "nessuno", - "videoinfo_started_streaming_x_ago": "Ha iniziato a trasmettere `x` fa", - "download_subtitles": "Sottotitoli - `x` (.vtt)", - "user_saved_playlists": "playlist salvate da `x`", - "preferences_automatic_instance_redirect_label": "Reindirizzamento automatico dell'istanza (ripiego su redirect.invidious.io): ", - "Video unavailable": "Video non disponibile", - "preferences_show_nick_label": "Mostra nickname in alto: ", - "videoinfo_youTube_embed_link": "Incorpora", - "videoinfo_invidious_embed_link": "Incorpora collegamento", - "user_created_playlists": "playlist create da `x`", - "preferences_save_player_pos_label": "Memorizza il minutaggio raggiunto dal video: ", - "preferences_quality_option_dash": "DASH (qualità adattiva)", - "preferences_region_label": "Nazione del contenuto: ", - "preferences_category_misc": "Preferenze varie", - "next_steps_error_message": "Dopodiché dovresti provare a: ", - "next_steps_error_message_refresh": "Aggiornare", - "footer_donate_page": "Dona", - "footer_source_code": "Codice sorgente", - "adminprefs_modified_source_code_url_label": "Link per il repository del codice sorgente modificato", - "Show more": "Mostra di più", - "search_filters_title": "Filtra", - "search_filters_type_option_show": "Serie", - "search_filters_duration_option_short": "Corto (< 4 minuti)", - "search_filters_duration_option_long": "Lungo (> 20 minuti)", - "search_filters_features_option_purchased": "Acquistato", - "comments_view_x_replies_0": "Vedi {{count}} risposta", - "comments_view_x_replies_1": "Vedi {{count}} risposte", - "comments_view_x_replies_2": "Vedi {{count}} risposte", - "comments_points_count_0": "{{count}} punto", - "comments_points_count_1": "{{count}} punti", - "comments_points_count_2": "{{count}} punti", - "Portuguese (auto-generated)": "Portoghese (generati automaticamente)", - "crash_page_you_found_a_bug": "Sembra che tu abbia trovato un bug in Invidious!", - "crash_page_switch_instance": "provato a usare un'altra istanza", - "crash_page_before_reporting": "Prima di segnalare un bug, assicurati di aver:", - "crash_page_read_the_faq": "letto le domande più frequenti (FAQ)", - "crash_page_search_issue": "cercato tra i problemi esistenti su GitHub", - "crash_page_report_issue": "Se niente di tutto ciò ha aiutato, per favore apri un nuovo problema su GitHub (preferibilmente in inglese) e includi il seguente testo nel tuo messaggio (NON tradurre il testo):", - "Popular enabled: ": "Popolare attivato: ", - "English (United Kingdom)": "Inglese (Regno Unito)", - "Portuguese (Brazil)": "Portoghese (Brasile)", - "preferences_watch_history_label": "Attiva cronologia di riproduzione: ", - "French (auto-generated)": "Francese (generati automaticamente)", - "search_message_use_another_instance": " Puoi anche cercare in un'altra istanza.", - "search_message_no_results": "Nessun risultato trovato.", - "search_message_change_filters_or_query": "Prova ad ampliare la ricerca e/o modificare i filtri.", - "English (United States)": "Inglese (Stati Uniti)", - "Cantonese (Hong Kong)": "Cantonese (Hong Kong)", - "Chinese": "Cinese", - "Chinese (China)": "Cinese (Cina)", - "Chinese (Hong Kong)": "Cinese (Hong Kong)", - "Chinese (Taiwan)": "Cinese (Taiwan)", - "Dutch (auto-generated)": "Olandese (generati automaticamente)", - "German (auto-generated)": "Tedesco (generati automaticamente)", - "Indonesian (auto-generated)": "Indonesiano (generati automaticamente)", - "Interlingue": "Interlingua", - "Italian (auto-generated)": "Italiano (generati automaticamente)", - "Japanese (auto-generated)": "Giapponese (generati automaticamente)", - "Korean (auto-generated)": "Coreano (generati automaticamente)", - "Russian (auto-generated)": "Russo (generati automaticamente)", - "Spanish (auto-generated)": "Spagnolo (generati automaticamente)", - "Spanish (Mexico)": "Spagnolo (Messico)", - "Spanish (Spain)": "Spagnolo (Spagna)", - "Turkish (auto-generated)": "Turco (auto-generato)", - "Vietnamese (auto-generated)": "Vietnamita (auto-generato)", - "search_filters_date_label": "Data caricamento", - "search_filters_date_option_none": "Qualunque data", - "search_filters_type_option_all": "Qualunque tipo", - "search_filters_duration_option_none": "Qualunque durata", - "search_filters_duration_option_medium": "Media (4 - 20 minuti)", - "search_filters_features_option_vr180": "VR180", - "search_filters_apply_button": "Applica filtri selezionati", - "crash_page_refresh": "provato a ricaricare la pagina", - "error_video_not_in_playlist": "Il video richiesto non esiste in questa playlist. Fai clic qui per la pagina iniziale della playlist.", - "channel_tab_shorts_label": "Short", - "channel_tab_playlists_label": "Playlist", - "channel_tab_channels_label": "Canali", - "channel_tab_streams_label": "Trasmissioni in diretta", - "channel_tab_community_label": "Comunità", - "Music in this video": "Musica in questo video", - "Artist: ": "Artista: ", - "Album: ": "Album: ", - "Download is disabled": "Il download è disabilitato", - "Song: ": "Canzone: ", - "Standard YouTube license": "Licenza standard di YouTube", - "Channel Sponsor": "Sponsor del canale", - "Import YouTube playlist (.csv)": "Importa playlist di YouTube (.csv)", - "generic_button_edit": "Modifica", - "generic_button_cancel": "Annulla", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "Pubblicazioni", - "generic_button_delete": "Elimina", - "generic_button_save": "Salva", - "playlist_button_add_items": "Aggiungi video", - "channel_tab_podcasts_label": "Podcast", - "generic_channels_count_0": "{{count}} canale", - "generic_channels_count_1": "{{count}} canali", - "generic_channels_count_2": "{{count}} canali", - "Import YouTube watch history (.json)": "Importa la cronologia delle visualizzazioni di YouTube (.json)" -} diff --git a/invidious/locales/ja.json b/invidious/locales/ja.json deleted file mode 100755 index 2e3437b..0000000 --- a/invidious/locales/ja.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "generic_views_count_0": "{{count}} 回視聴", - "generic_videos_count_0": "{{count}}本の動画", - "generic_playlists_count_0": "{{count}}個の再生リスト", - "generic_subscribers_count_0": "{{count}} 人の登録者", - "generic_subscriptions_count_0": "{{count}}個の登録チャンネル", - "LIVE": "ライブ", - "Shared `x` ago": "`x`前に公開", - "Unsubscribe": "登録解除", - "Subscribe": "登録", - "View channel on YouTube": "YouTube でチャンネルを表示", - "View playlist on YouTube": "YouTube で再生リストを表示", - "newest": "新しい順", - "oldest": "古い順", - "popular": "人気順", - "last": "追加順", - "Next page": "次のページ", - "Previous page": "前のページ", - "Clear watch history?": "再生履歴を削除しますか?", - "New password": "新しいパスワード", - "New passwords must match": "新しいパスワードが一致していません", - "Authorize token?": "トークンを認証しますか?", - "Authorize token for `x`?": "トークン `x` を認証しますか?", - "Yes": "はい", - "No": "いいえ", - "Import and Export Data": "データのインポートとエクスポート", - "Import": "インポート", - "Import Invidious data": "Invidious JSONデータをインポート", - "Import YouTube subscriptions": "YouTube/OPML 登録チャンネルをインポート", - "Import FreeTube subscriptions (.db)": "FreeTube 登録チャンネルをインポート (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe 登録チャンネルをインポート (.json)", - "Import NewPipe data (.zip)": "NewPipe データをインポート (.zip)", - "Export": "エクスポート", - "Export subscriptions as OPML": "登録チャンネルを OPML でエクスポート", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "登録チャンネルを OPML でエクスポート (NewPipe & FreeTube 用)", - "Export data as JSON": "Invidious のデータを JSON でエクスポート", - "Delete account?": "アカウントを削除しますか?", - "History": "履歴", - "An alternative front-end to YouTube": "YouTube 向けの代用フロントエンド", - "JavaScript license information": "JavaScript ライセンス情報", - "source": "ソース", - "Log in": "ログイン", - "Log in/register": "ログイン/登録", - "User ID": "ユーザー ID", - "Password": "パスワード", - "Time (h:mm:ss):": "時間 (時:分分:秒秒):", - "Text CAPTCHA": "テキスト CAPTCHA", - "Image CAPTCHA": "画像 CAPTCHA", - "Sign In": "サインイン", - "Register": "登録", - "E-mail": "メールアドレス", - "Preferences": "設定", - "preferences_category_player": "プレイヤーの設定", - "preferences_video_loop_label": "常にループ: ", - "preferences_autoplay_label": "自動再生: ", - "preferences_continue_label": "次の動画に移動: ", - "preferences_continue_autoplay_label": "次の動画を自動再生: ", - "preferences_listen_label": "音声モードを使用: ", - "preferences_local_label": "動画視聴にプロキシを経由: ", - "preferences_speed_label": "再生速度の初期値: ", - "preferences_quality_label": "優先する画質: ", - "preferences_volume_label": "プレイヤーの音量: ", - "preferences_comments_label": "デフォルトのコメント: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "優先する字幕: ", - "Fallback captions: ": "フォールバック時の字幕: ", - "preferences_related_videos_label": "関連動画を表示: ", - "preferences_annotations_label": "最初からアノテーションを表示: ", - "preferences_extend_desc_label": "動画の説明文を自動的に拡張: ", - "preferences_vr_mode_label": "対話的な360°動画 (WebGLが必要): ", - "preferences_category_visual": "外観設定", - "preferences_player_style_label": "プレイヤーのスタイル: ", - "Dark mode: ": "ダークモード: ", - "preferences_dark_mode_label": "テーマ: ", - "dark": "ダーク", - "light": "ライト", - "preferences_thin_mode_label": "最小モード: ", - "preferences_category_misc": "ほかの設定", - "preferences_automatic_instance_redirect_label": "インスタンスの自動転送 (redirect.invidious.ioにフォールバック): ", - "preferences_category_subscription": "登録チャンネル設定", - "preferences_annotations_subscribed_label": "最初から登録チャンネルのアノテーションを表示 ", - "Redirect homepage to feed: ": "ホームからフィードにリダイレクト: ", - "preferences_max_results_label": "フィードに表示する動画数: ", - "preferences_sort_label": "動画を並び替え: ", - "published": "投稿日", - "published - reverse": "投稿日 - 逆順", - "alphabetically": "アルファベット", - "alphabetically - reverse": "アルファベット - 逆順", - "channel name": "チャンネル名", - "channel name - reverse": "チャンネル名 - 逆順", - "Only show latest video from channel: ": "チャンネルの最新動画のみを表示: ", - "Only show latest unwatched video from channel: ": "チャンネルの最新未視聴動画のみを表示: ", - "preferences_unseen_only_label": "未視聴のみを表示: ", - "preferences_notifications_only_label": "通知のみを表示 (ある場合): ", - "Enable web notifications": "ウェブ通知を有効化", - "`x` uploaded a video": "`x` が動画を投稿しました", - "`x` is live": "`x` がライブ中です", - "preferences_category_data": "データ設定", - "Clear watch history": "再生履歴の削除", - "Import/export data": "データのインポート/エクスポート", - "Change password": "パスワードを変更", - "Manage subscriptions": "登録チャンネルを管理", - "Manage tokens": "トークンを管理", - "Watch history": "再生履歴", - "Delete account": "アカウントを削除", - "preferences_category_admin": "管理者設定", - "preferences_default_home_label": "ホームに表示するページ: ", - "preferences_feed_menu_label": "フィードのメニュー: ", - "preferences_show_nick_label": "ログイン名を上部に表示: ", - "Top enabled: ": "トップページを有効化: ", - "CAPTCHA enabled: ": "CAPTCHA を有効化: ", - "Login enabled: ": "ログインを有効化: ", - "Registration enabled: ": "登録を有効化: ", - "Report statistics: ": "統計を報告: ", - "Save preferences": "設定を保存", - "Subscription manager": "登録チャンネルの管理", - "Token manager": "トークンの管理", - "Token": "トークン", - "tokens_count_0": "{{count}}個のトークン", - "Import/export": "インポート/エクスポート", - "unsubscribe": "登録解除", - "revoke": "取り消す", - "Subscriptions": "登録チャンネル", - "subscriptions_unseen_notifs_count_0": "{{count}}件の未読通知", - "search": "検索", - "Log out": "ログアウト", - "Released under the AGPLv3 on Github.": "GitHub上でAGPLv3の元で公開", - "Source available here.": "ソースはここで閲覧可能です。", - "View JavaScript license information.": "JavaScriptライセンス情報", - "View privacy policy.": "個人情報保護方針", - "Trending": "急上昇", - "Public": "公開", - "Unlisted": "限定公開", - "Private": "非公開", - "View all playlists": "すべての再生リストを表示", - "Updated `x` ago": "`x`前に更新", - "Delete playlist `x`?": "再生リスト `x` を削除しますか?", - "Delete playlist": "再生リストを削除", - "Create playlist": "再生リストを作成", - "Title": "タイトル", - "Playlist privacy": "再生リストの公開状態", - "Editing playlist `x`": "再生リスト `x` を編集中", - "Show more": "もっと見る", - "Show less": "表示を少なく", - "Watch on YouTube": "YouTubeで視聴", - "Switch Invidious Instance": "Invidiousインスタンスの変更", - "Hide annotations": "アノテーションを隠す", - "Show annotations": "アノテーションを表示", - "Genre: ": "ジャンル: ", - "License: ": "ライセンス: ", - "Family friendly? ": "家族向け: ", - "Wilson score: ": "ウィルソン得点区間: ", - "Engagement: ": "エンゲージメント: ", - "Whitelisted regions: ": "ホワイトリストの地域: ", - "Blacklisted regions: ": "ブラックリストの地域: ", - "Shared `x`": "公開日 `x`", - "Premieres in `x`": "`x`後にプレミア公開", - "Premieres `x`": "`x`にプレミア公開", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "やあ!君は JavaScript を無効にしているのかな?ここをクリックしてコメントを見れるけど、読み込みには少し時間がかかることがあるのを覚えておいてね。", - "View YouTube comments": "YouTube のコメントを表示", - "View more comments on Reddit": "Reddit でコメントをもっと見る", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 件のコメントを表示", - "": "`x` 件のコメントを表示" - }, - "View Reddit comments": "Reddit のコメントを表示", - "Hide replies": "返信を非表示", - "Show replies": "返信を表示", - "Incorrect password": "パスワードが間違っています", - "Wrong answer": "回答が間違っています", - "Erroneous CAPTCHA": "CAPTCHA が間違っています", - "CAPTCHA is a required field": "CAPTCHA は必須項目です", - "User ID is a required field": "ユーザー ID は必須項目です", - "Password is a required field": "パスワードは必須項目です", - "Wrong username or password": "ユーザー名またはパスワードが間違っています", - "Password cannot be empty": "パスワードは空にできません", - "Password cannot be longer than 55 characters": "パスワードは55文字より長くできません", - "Please log in": "ログインしてください", - "Invidious Private Feed for `x`": "`x` 個人の Invidious によるフィード", - "channel:`x`": "チャンネル:`x`", - "Deleted or invalid channel": "削除済みまたは無効なチャンネルです", - "This channel does not exist.": "このチャンネルは存在しません。", - "Could not get channel info.": "チャンネル情報を取得できませんでした。", - "Could not fetch comments": "コメントを取得できませんでした", - "comments_view_x_replies_0": "{{count}}件の返信を表示", - "`x` ago": "`x`前", - "Load more": "もっと見る", - "comments_points_count_0": "{{count}}点", - "Could not create mix.": "ミックスを作成できませんでした。", - "Empty playlist": "空の再生リスト", - "Not a playlist.": "再生リストではありません。", - "Playlist does not exist.": "再生リストが存在しません。", - "Could not pull trending pages.": "急上昇ページを取得できませんでした。", - "Hidden field \"challenge\" is a required field": "非表示項目 challenge は必須項目です", - "Hidden field \"token\" is a required field": "非表示項目 token は必須項目です", - "Erroneous challenge": "チャレンジが間違っています", - "Erroneous token": "トークンが間違っています", - "No such user": "ユーザーが存在しません", - "Token is expired, please try again": "トークンが期限切れです。再度お試しください", - "English": "英語", - "English (auto-generated)": "英語 (自動生成)", - "Afrikaans": "アフリカーンス語", - "Albanian": "アルバニア語", - "Amharic": "アムハラ語", - "Arabic": "アラビア語", - "Armenian": "アルメニア語", - "Azerbaijani": "アゼルバイジャン語", - "Bangla": "ベンガル語", - "Basque": "バスク語", - "Belarusian": "ベラルーシ語", - "Bosnian": "ボスニア語", - "Bulgarian": "ブルガリア語", - "Burmese": "ビルマ語", - "Catalan": "カタルーニャ語", - "Cebuano": "セブアノ語", - "Chinese (Simplified)": "中国語 (簡体字)", - "Chinese (Traditional)": "中国語 (繁体字)", - "Corsican": "コルシカ語", - "Croatian": "クロアチア語", - "Czech": "チェコ語", - "Danish": "デンマーク語", - "Dutch": "オランダ語", - "Esperanto": "エスペラント", - "Estonian": "エストニア語", - "Filipino": "フィリピン語", - "Finnish": "フィンランド語", - "French": "フランス語", - "Galician": "ガルシア語", - "Georgian": "グルジア語", - "German": "ドイツ語", - "Greek": "ギリシャ語", - "Gujarati": "グジャラート語", - "Haitian Creole": "ハイチ語", - "Hausa": "ハウサ語", - "Hawaiian": "ハワイ語", - "Hebrew": "ヘブライ語", - "Hindi": "ヒンディー語", - "Hmong": "ミャオ語", - "Hungarian": "ハンガリー語", - "Icelandic": "アイスランド語", - "Igbo": "イボ語", - "Indonesian": "インドネシア語", - "Irish": "アイルランド語", - "Italian": "イタリア語", - "Japanese": "日本語", - "Javanese": "ジャワ語", - "Kannada": "カンナダ語", - "Kazakh": "カザフ語", - "Khmer": "クメール語", - "Korean": "韓国語", - "Kurdish": "クルド語", - "Kyrgyz": "キルギス語", - "Lao": "ラーオ語", - "Latin": "ラテン語", - "Latvian": "ラトビア語", - "Lithuanian": "リトアニア語", - "Luxembourgish": "ルクセンブルク語", - "Macedonian": "マケドニア語", - "Malagasy": "マダガスカル語", - "Malay": "マレー語", - "Malayalam": "マラヤーラム語", - "Maltese": "マルタ語", - "Maori": "マオリ語", - "Marathi": "マラーティー語", - "Mongolian": "モンゴル語", - "Nepali": "ネパール語", - "Norwegian Bokmål": "ノルウェー語 (ブークモール)", - "Nyanja": "チェワ語", - "Pashto": "パシュトー語", - "Persian": "ペルシア語", - "Polish": "ポーランド語", - "Portuguese": "ポルトガル語", - "Punjabi": "パンジャーブ語", - "Romanian": "ルーマニア語", - "Russian": "ロシア語", - "Samoan": "サモア語", - "Scottish Gaelic": "スコットランド・ゲール語", - "Serbian": "セルビア語", - "Shona": "ショナ語", - "Sindhi": "シンド語", - "Sinhala": "シンハラ語", - "Slovak": "スロバキア語", - "Slovenian": "スロベニア語", - "Somali": "ソマリ語", - "Southern Sotho": "南ソト語", - "Spanish": "スペイン語", - "Spanish (Latin America)": "スペイン語 (ラテンアメリカ)", - "Sundanese": "スンダ語", - "Swahili": "スワヒリ語", - "Swedish": "スウェーデン語", - "Tajik": "タジク語", - "Tamil": "タミル語", - "Telugu": "テルグ語", - "Thai": "タイ語", - "Turkish": "トルコ語", - "Ukrainian": "ウクライナ語", - "Urdu": "ウルドゥー語", - "Uzbek": "ウズベク語", - "Vietnamese": "ベトナム語", - "Welsh": "ウェールズ語", - "Western Frisian": "西フリジア語", - "Xhosa": "コサ語", - "Yiddish": "イディッシュ語", - "Yoruba": "ヨルバ語", - "Zulu": "ズール語", - "generic_count_years_0": "{{count}}年", - "generic_count_months_0": "{{count}}か月", - "generic_count_weeks_0": "{{count}}週間", - "generic_count_days_0": "{{count}}日", - "generic_count_hours_0": "{{count}}時間", - "generic_count_minutes_0": "{{count}}分", - "generic_count_seconds_0": "{{count}}秒", - "Fallback comments: ": "フォールバック時のコメント: ", - "Popular": "人気", - "Search": "検索", - "Top": "トップ", - "About": "このサービスについて", - "Rating: ": "評価: ", - "preferences_locale_label": "言語: ", - "View as playlist": "再生リストとして閲覧", - "Default": "標準", - "Music": "音楽", - "Gaming": "ゲーム", - "News": "ニュース", - "Movies": "映画", - "Download": "ダウンロード", - "Download as: ": "ダウンロード: ", - "%A %B %-d, %Y": "%Y %B %-d %A", - "(edited)": "(編集済み)", - "YouTube comment permalink": "YouTube コメントのパーマリンク", - "permalink": "パーマリンク", - "`x` marked it with a ❤": "`x` が❤を送りました", - "Audio mode": "音声モード", - "Video mode": "動画モード", - "channel_tab_videos_label": "動画", - "Playlists": "再生リスト", - "channel_tab_community_label": "コミュニティ", - "search_filters_sort_option_relevance": "関連度", - "search_filters_sort_option_rating": "評価", - "search_filters_sort_option_date": "アップロード日", - "search_filters_sort_option_views": "視聴回数", - "search_filters_type_label": "種類", - "search_filters_duration_label": "再生時間", - "search_filters_features_label": "特徴", - "search_filters_sort_label": "順番", - "search_filters_date_option_hour": "1時間以内", - "search_filters_date_option_today": "今日", - "search_filters_date_option_week": "今週", - "search_filters_date_option_month": "今月", - "search_filters_date_option_year": "今年", - "search_filters_type_option_video": "動画", - "search_filters_type_option_channel": "チャンネル", - "search_filters_type_option_playlist": "再生リスト", - "search_filters_type_option_movie": "映画", - "search_filters_type_option_show": "番組", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "字幕", - "search_filters_features_option_c_commons": "クリエイティブ・コモンズ", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "ライブ", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "場所", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "現在のバージョン: ", - "next_steps_error_message": "以下をお試してください: ", - "next_steps_error_message_refresh": "再読み込み", - "next_steps_error_message_go_to_youtube": "YouTubeを開く", - "search_filters_duration_option_short": "4分未満", - "footer_documentation": "説明書", - "footer_source_code": "ソースコード", - "footer_original_source_code": "元のソースコード", - "footer_modfied_source_code": "改変して使用", - "adminprefs_modified_source_code_url_label": "改変されたソースコードのレポジトリのURL", - "search_filters_duration_option_long": "20分以上", - "preferences_region_label": "地域: ", - "footer_donate_page": "寄付する", - "preferences_quality_dash_label": "優先するDASH画質: ", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "中", - "preferences_quality_option_small": "小", - "invidious": "Invidious", - "preferences_quality_dash_option_auto": "自動", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_480p": "480p", - "videoinfo_youTube_embed_link": "埋め込み", - "videoinfo_invidious_embed_link": "埋め込みリンク", - "none": "なし", - "download_subtitles": "字幕 - `x` (.vtt)", - "search_filters_features_option_purchased": "購入済み", - "preferences_quality_option_dash": "DASH (適応的画質)", - "preferences_quality_dash_option_worst": "最悪", - "preferences_quality_dash_option_best": "最高", - "videoinfo_started_streaming_x_ago": "`x`前に配信を開始", - "videoinfo_watch_on_youTube": "YouTubeで視聴", - "user_created_playlists": "`x`個の作成した再生リスト", - "Video unavailable": "動画は利用できません", - "Chinese": "中国語", - "Chinese (Taiwan)": "中国語 (台湾)", - "Korean (auto-generated)": "韓国語 (自動生成)", - "Portuguese (auto-generated)": "ポルトガル語 (自動生成)", - "Turkish (auto-generated)": "トルコ語 (自動生成)", - "English (United Kingdom)": "英語 (イギリス)", - "Cantonese (Hong Kong)": "広東語 (香港)", - "Chinese (China)": "中国語 (中国)", - "Chinese (Hong Kong)": "中国語 (香港)", - "Dutch (auto-generated)": "オランダ語 (自動生成)", - "French (auto-generated)": "フランス語 (自動生成)", - "German (auto-generated)": "ドイツ語 (自動生成)", - "Indonesian (auto-generated)": "インドネシア語 (自動生成)", - "Italian (auto-generated)": "イタリア語 (自動生成)", - "Japanese (auto-generated)": "日本語 (自動生成)", - "Interlingue": "インターリング", - "Portuguese (Brazil)": "ポルトガル語 (ブラジル)", - "Russian (auto-generated)": "ロシア語 (自動生成)", - "Spanish (auto-generated)": "スペイン語 (自動生成)", - "Spanish (Mexico)": "スペイン語 (メキシコ)", - "Spanish (Spain)": "スペイン語 (スペイン)", - "Vietnamese (auto-generated)": "ベトナム語 (自動生成)", - "search_filters_title": "フィルタ", - "search_filters_features_option_three_sixty": "360°", - "search_message_change_filters_or_query": "別の検索語句を試したり、検索フィルタを変更してください。", - "search_message_no_results": "一致する検索結果はありません。", - "English (United States)": "英語 (アメリカ)", - "search_filters_date_label": "アップロード日", - "search_filters_features_option_vr180": "VR180", - "crash_page_switch_instance": "別のインスタンスを使用を試す", - "crash_page_read_the_faq": "よくある質問 (FAQ) を読む", - "Popular enabled: ": "人気動画を有効化 ", - "search_message_use_another_instance": " 別のインスタンス上での検索も可能です。", - "search_filters_apply_button": "選択したフィルターを適用", - "user_saved_playlists": "`x`個の保存済みの再生リスト", - "crash_page_you_found_a_bug": "Invidious のバグのようです!", - "crash_page_refresh": "ページを更新を試す", - "preferences_watch_history_label": "再生履歴を有効化 ", - "search_filters_date_option_none": "すべて", - "search_filters_type_option_all": "すべての種類", - "search_filters_duration_option_none": "すべての長さ", - "search_filters_duration_option_medium": "4 ~ 20分", - "preferences_save_player_pos_label": "再生位置を保存: ", - "crash_page_before_reporting": "バグを報告する前に、次のことを確認してください。", - "crash_page_report_issue": "上記が助けにならないなら、GitHub に新しい issue を作成し(英語が好ましい)、メッセージに次のテキストを含めてください(テキストは翻訳しない)。", - "crash_page_search_issue": "GitHub の既存の問題 (issue) を検索", - "channel_tab_streams_label": "ライブ", - "channel_tab_playlists_label": "再生リスト", - "error_video_not_in_playlist": "要求された動画はこの再生リスト内に存在しません。再生リストのホームへ。", - "channel_tab_shorts_label": "ショート", - "channel_tab_channels_label": "チャンネル", - "Music in this video": "この動画の音楽", - "Artist: ": "アーティスト: ", - "Album: ": "アルバム: ", - "Song: ": "曲: ", - "Channel Sponsor": "チャンネルのスポンサー", - "Standard YouTube license": "標準 Youtube ライセンス", - "Download is disabled": "ダウンロード: このインスタンスは未対応", - "Import YouTube playlist (.csv)": "YouTube 再生リストをインポート (.csv)", - "generic_button_delete": "削除", - "generic_button_cancel": "キャンセル", - "channel_tab_podcasts_label": "ポッドキャスト", - "channel_tab_releases_label": "リリース", - "generic_button_edit": "編集", - "generic_button_save": "保存", - "generic_button_rss": "RSS", - "playlist_button_add_items": "動画を追加", - "generic_channels_count_0": "{{count}}個のチャンネル", - "Import YouTube watch history (.json)": "YouTube 視聴履歴をインポート (.json)" -} diff --git a/invidious/locales/ko.json b/invidious/locales/ko.json deleted file mode 100755 index c0257ee..0000000 --- a/invidious/locales/ko.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "preferences_sort_label": "동영상 정렬 기준: ", - "preferences_max_results_label": "피드에 표시된 동영상 수: ", - "Redirect homepage to feed: ": "피드로 홈페이지 리디렉션: ", - "preferences_annotations_subscribed_label": "구독한 채널에 기본으로 주석 표시: ", - "preferences_category_subscription": "구독 설정", - "preferences_automatic_instance_redirect_label": "자동 인스턴스 리디렉션 (redirect.invidious.io로 대체): ", - "preferences_thin_mode_label": "단순 모드: ", - "light": "라이트", - "dark": "다크", - "preferences_dark_mode_label": "테마: ", - "Dark mode: ": "다크 모드: ", - "preferences_player_style_label": "플레이어 스타일: ", - "preferences_category_visual": "환경 설정", - "preferences_vr_mode_label": "VR 영상 활성화(WebGL 필요): ", - "preferences_extend_desc_label": "자동으로 비디오 설명을 확장: ", - "preferences_annotations_label": "기본으로 주석 표시: ", - "preferences_related_videos_label": "관련 동영상 보기: ", - "Fallback captions: ": "대체 자막: ", - "preferences_captions_label": "기본 자막: ", - "reddit": "레딧", - "youtube": "유튜브", - "preferences_comments_label": "기본 댓글: ", - "preferences_volume_label": "플레이어 볼륨: ", - "preferences_quality_label": "선호하는 비디오 품질: ", - "preferences_speed_label": "기본 속도: ", - "preferences_local_label": "비디오를 프록시: ", - "preferences_listen_label": "라디오 모드: ", - "preferences_continue_autoplay_label": "다음 동영상 자동재생: ", - "preferences_continue_label": "다음 동영상으로 이동: ", - "preferences_autoplay_label": "자동재생: ", - "preferences_video_loop_label": "항상 반복: ", - "preferences_category_player": "플레이어 설정", - "Preferences": "설정", - "E-mail": "이메일", - "Register": "회원가입", - "Sign In": "로그인", - "preferences_category_misc": "기타 설정", - "Image CAPTCHA": "이미지 캡차", - "Text CAPTCHA": "텍스트 캡차", - "Time (h:mm:ss):": "시각 (h:mm:ss):", - "Password": "비밀번호", - "User ID": "사용자 ID", - "Log in/register": "로그인/회원가입", - "Log in": "로그인", - "source": "출처", - "JavaScript license information": "자바스크립트 라이선스 정보", - "An alternative front-end to YouTube": "유튜브의 프론트엔드 대안", - "History": "시청 기록", - "Delete account?": "계정을 삭제 하시겠습니까?", - "Export data as JSON": "JSON으로 데이터 내보내기", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML로 구독 내보내기 (뉴파이프 및 프리튜브)", - "Export subscriptions as OPML": "OPML로 구독 내보내기", - "Export": "내보내기", - "Import NewPipe data (.zip)": "뉴파이프 데이터 가져오기 (.zip)", - "Import NewPipe subscriptions (.json)": "뉴파이프 구독 가져오기 (.json)", - "Import FreeTube subscriptions (.db)": "프리튜브 구독 가져오기 (.db)", - "Import YouTube subscriptions": "유튜브 구독 가져오기", - "Import Invidious data": "인비디어스 데이터 가져오기 (.json)", - "Import": "가져오기", - "Import and Export Data": "데이터 가져오기 및 내보내기", - "No": "아니요", - "Yes": "예", - "Authorize token for `x`?": "`x` 에 대한 토큰을 승인하시겠습니까?", - "Authorize token?": "토큰을 승인하시겠습니까?", - "New passwords must match": "새 비밀번호는 일치해야 합니다", - "New password": "새 비밀번호", - "Clear watch history?": "재생 기록을 삭제 하시겠습니까?", - "Previous page": "이전 페이지", - "Next page": "다음 페이지", - "last": "마지막", - "Shared `x` ago": "`x` 전", - "popular": "인기", - "oldest": "오래된순", - "newest": "최신순", - "View playlist on YouTube": "유튜브에서 재생목록 보기", - "View channel on YouTube": "유튜브에서 채널 보기", - "Subscribe": "구독", - "Unsubscribe": "구독 취소", - "LIVE": "실시간", - "generic_views_count_0": "{{count}} 조회수", - "generic_videos_count_0": "{{count}} 동영상", - "generic_playlists_count_0": "{{count}} 재생목록", - "generic_subscribers_count_0": "{{count}} 구독자", - "generic_subscriptions_count_0": "{{count}} 구독", - "search_filters_type_option_playlist": "재생목록", - "Korean": "한국어", - "Japanese": "일본어", - "Greek": "그리스어", - "German": "독일어", - "Chinese (Traditional)": "중국어 (정체자)", - "Chinese (Simplified)": "중국어 (간체자)", - "French": "프랑스어", - "Finnish": "핀란드어", - "Basque": "바스크어", - "Bangla": "벵골어", - "Azerbaijani": "아제르바이잔어", - "Armenian": "아르메니아어", - "Arabic": "아랍어", - "Amharic": "암하라어", - "Albanian": "알바니아어", - "Afrikaans": "아프리카어", - "English (auto-generated)": "영어 (자동 생성됨)", - "English": "영어", - "Token is expired, please try again": "토큰이 만료되었습니다. 다시 시도해 주세요", - "Load more": "더 불러오기", - "Could not fetch comments": "댓글을 가져올 수 없습니다", - "Could not get channel info.": "채널 정보를 가져올 수 없습니다.", - "This channel does not exist.": "이 채널은 존재하지 않습니다.", - "Deleted or invalid channel": "삭제되었거나 더 이상 존재하지 않는 채널", - "channel:`x`": "채널:`x`", - "Show replies": "댓글 보기", - "Hide replies": "댓글 숨기기", - "Incorrect password": "잘못된 비밀번호", - "License: ": "라이선스: ", - "Genre: ": "장르: ", - "Editing playlist `x`": "재생목록 `x` 수정하기", - "Playlist privacy": "재생목록 공개 범위", - "Watch on YouTube": "유튜브에서 보기", - "Show less": "간략히", - "Show more": "더보기", - "Title": "제목", - "Create playlist": "재생목록 생성", - "Trending": "급상승", - "Delete playlist": "재생목록 삭제", - "Delete playlist `x`?": "재생목록 `x` 를 삭제 하시겠습니까?", - "Updated `x` ago": "`x` 전에 업데이트됨", - "Released under the AGPLv3 on Github.": "깃허브에 AGPLv3 으로 배포됩니다.", - "View all playlists": "모든 재생목록 보기", - "Private": "비공개", - "Unlisted": "목록에 없음", - "Public": "공개", - "View privacy policy.": "개인정보 처리방침 보기.", - "View JavaScript license information.": "자바스크립트 라이선스 정보 보기.", - "Source available here.": "소스는 여기에서 사용할 수 있습니다.", - "Log out": "로그아웃", - "search": "검색", - "subscriptions_unseen_notifs_count_0": "{{count}} 읽지 않은 알림", - "Subscriptions": "구독", - "revoke": "철회", - "unsubscribe": "구독 취소", - "Import/export": "가져오기/내보내기", - "tokens_count_0": "{{count}} 토큰", - "Token": "토큰", - "Token manager": "토큰 관리자", - "Subscription manager": "구독 관리자", - "Save preferences": "설정 저장", - "Report statistics: ": "통계 보고: ", - "Registration enabled: ": "회원가입 활성화: ", - "Login enabled: ": "로그인 활성화: ", - "CAPTCHA enabled: ": "캡차 활성화: ", - "Top enabled: ": "Top 활성화: ", - "preferences_show_nick_label": "상단에 닉네임 표시: ", - "preferences_feed_menu_label": "피드 메뉴: ", - "preferences_default_home_label": "기본 홈페이지: ", - "preferences_category_admin": "관리자 설정", - "Delete account": "계정 삭제", - "Watch history": "시청 기록", - "Manage tokens": "토큰 관리", - "Manage subscriptions": "구독 관리", - "Change password": "비밀번호 변경", - "Import/export data": "데이터 가져오기/내보내기", - "Clear watch history": "시청 기록 지우기", - "preferences_category_data": "데이터 설정", - "`x` is live": "`x` 이(가) 라이브 중입니다", - "`x` uploaded a video": "`x` 동영상 게시됨", - "Enable web notifications": "웹 알림 활성화", - "preferences_notifications_only_label": "알림만 표시 (있는 경우): ", - "preferences_unseen_only_label": "시청하지 않은 것만 표시: ", - "Only show latest unwatched video from channel: ": "채널의 시청하지 않은 최신 동영상만 표시: ", - "Only show latest video from channel: ": "채널의 최신 동영상만 표시: ", - "channel name - reverse": "채널 이름 - 역순", - "alphabetically - reverse": "알파벳순 - 역순", - "published - reverse": "게시일 - 역순", - "published": "게시일", - "channel name": "채널 이름", - "alphabetically": "알파벳순", - "Samoan": "사모아어", - "Russian": "러시아어", - "Romanian": "루마니아어", - "Punjabi": "펀자브어", - "Portuguese": "포르투갈어", - "Polish": "폴란드어", - "Persian": "페르시아어", - "Pashto": "파슈토어", - "Nyanja": "냔자어", - "Norwegian Bokmål": "노르웨이 부크몰어", - "Nepali": "네팔어", - "Mongolian": "몽골어", - "Marathi": "마라티어", - "Maori": "마오리어", - "Maltese": "몰타어", - "Wrong answer": "잘못된 답변", - "search_filters_features_option_live": "실시간", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_location": "지역", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "현재 버전: ", - "next_steps_error_message_refresh": "새로 고침", - "next_steps_error_message_go_to_youtube": "유튜브로 가기", - "search_filters_features_option_subtitles": "자막", - "`x` marked it with a ❤": "`x`님의 ❤", - "Download as: ": "다음으로 다운로드: ", - "Download": "다운로드", - "Search": "검색", - "preferences_locale_label": "언어: ", - "Malayalam": "말라얄람어", - "Malay": "말레이어", - "Malagasy": "말라가시어", - "Macedonian": "마케도니아어", - "Luxembourgish": "룩셈부르크어", - "Lithuanian": "리투아니아어", - "Latvian": "라트비아어", - "Latin": "라틴어", - "Lao": "라오어", - "search_filters_type_option_channel": "채널", - "Kyrgyz": "키르기스어", - "Kurdish": "쿠르드어", - "Khmer": "크메르어", - "Kazakh": "카자흐어", - "Kannada": "칸나다어", - "Javanese": "자바어", - "Italian": "이탈리아어", - "Irish": "아일랜드어", - "Indonesian": "인도네시아어", - "Igbo": "이보어", - "Icelandic": "아이슬란드어", - "Hungarian": "헝가리어", - "Hmong": "몽어", - "Hindi": "힌디어", - "Hebrew": "히브리어", - "Hawaiian": "하와이어", - "Hausa": "하우사어", - "No such user": "해당 사용자 없음", - "Erroneous token": "잘못된 token", - "Erroneous challenge": "잘못된 challenge", - "Hidden field \"token\" is a required field": "숨겨진 필드 \"token\"은 필수 필드입니다", - "Hidden field \"challenge\" is a required field": "숨겨진 필드 \"challenge\"는 필수 필드입니다", - "Could not pull trending pages.": "인기 급상승 페이지를 가져올 수 없습니다.", - "Could not create mix.": "믹스를 생성할 수 없습니다.", - "`x` ago": "`x` 전", - "comments_view_x_replies_0": "답글 {{count}}개 보기", - "View Reddit comments": "레딧 댓글 보기", - "Engagement: ": "약속: ", - "Wilson score: ": "Wilson Score: ", - "Family friendly? ": "전연령 영상입니까? ", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x`개의 댓글 보기", - "": "`x`개의 댓글 보기" - }, - "Haitian Creole": "아이티 크레올어", - "Gujarati": "구자라트어", - "Esperanto": "에스페란토", - "Georgian": "조지아어", - "Galician": "갈리시아어", - "Filipino": "타갈로그어(필리핀어)", - "Estonian": "에스토니아어", - "Dutch": "네덜란드어", - "Danish": "덴마크어", - "Czech": "체코어", - "Croatian": "크로아티아어", - "Corsican": "코르시카어", - "Cebuano": "세부아노어", - "Catalan": "카탈루냐어", - "Burmese": "버마어", - "Bulgarian": "불가리아어", - "Bosnian": "보스니아어", - "Belarusian": "벨라루스어", - "View more comments on Reddit": "레딧에서 더 많은 댓글 보기", - "View YouTube comments": "유튜브 댓글 보기", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "자바스크립트가 꺼져 있는 것 같습니다! 댓글을 보려면 여기를 클릭하세요. 댓글을 로드하는 데 시간이 조금 더 걸릴 수 있습니다.", - "Shared `x`": "`x` 업로드", - "Whitelisted regions: ": "차단되지 않은 지역: ", - "search_filters_sort_option_views": "조회수", - "Please log in": "로그인하세요", - "Password cannot be longer than 55 characters": "비밀번호는 55자 이하여야 합니다", - "Password cannot be empty": "비밀번호는 비워둘 수 없습니다", - "Wrong username or password": "잘못된 사용자 이름 또는 비밀번호", - "Password is a required field": "비밀번호는 필수 입력란입니다", - "User ID is a required field": "사용자 ID는 필수 입력란입니다", - "CAPTCHA is a required field": "캡차는 필수 입력란입니다", - "Erroneous CAPTCHA": "잘못된 캡차", - "Blacklisted regions: ": "차단된 지역: ", - "Playlists": "재생목록", - "View as playlist": "재생목록으로 보기", - "Playlist does not exist.": "재생목록이 존재하지 않음.", - "Not a playlist.": "재생목록이 아님.", - "Empty playlist": "재생목록 비어 있음", - "Show annotations": "주석 보이기", - "Hide annotations": "주석 숨기기", - "Switch Invidious Instance": "인비디어스 인스턴스 변경", - "Spanish": "스페인어", - "Southern Sotho": "소토어", - "Somali": "소말리어", - "Slovenian": "슬로베니아어", - "Slovak": "슬로바키아어", - "Sinhala": "싱할라어", - "Sindhi": "신드어", - "Shona": "쇼나어", - "Serbian": "세르비아어", - "Scottish Gaelic": "스코틀랜드 게일어", - "Popular": "인기", - "Fallback comments: ": "대체 댓글: ", - "Swahili": "스와힐리어", - "Sundanese": "순다어", - "generic_count_years_0": "{{count}}년", - "generic_count_months_0": "{{count}}개월", - "generic_count_weeks_0": "{{count}}주", - "generic_count_days_0": "{{count}}일", - "generic_count_hours_0": "{{count}}시간", - "generic_count_minutes_0": "{{count}}분", - "generic_count_seconds_0": "{{count}}초", - "Zulu": "줄루어", - "Yoruba": "요루바어", - "Yiddish": "이디시어", - "Xhosa": "코사어", - "Western Frisian": "서부 프리지아어", - "Welsh": "웨일스어", - "Vietnamese": "베트남어", - "Uzbek": "우즈베크어", - "Urdu": "우르두어", - "Ukrainian": "우크라이나어", - "Turkish": "터키어", - "Thai": "태국어", - "Telugu": "텔루구어", - "Tamil": "타밀어", - "Tajik": "타지크어", - "Swedish": "스웨덴어", - "Spanish (Latin America)": "스페인어 (라틴 아메리카)", - "comments_points_count_0": "{{count}} 포인트", - "Invidious Private Feed for `x`": "`x` 에 대한 인비디어스 비공개 피드", - "Premieres `x`": "최초 공개 `x`", - "Premieres in `x`": "`x` 후 최초 공개", - "next_steps_error_message": "다음 방법을 시도해 보세요: ", - "search_filters_features_option_c_commons": "크리에이티브 커먼즈", - "search_filters_duration_label": "길이", - "search_filters_type_label": "구분", - "search_filters_sort_option_date": "업로드 날짜", - "search_filters_sort_option_rating": "평점", - "search_filters_sort_option_relevance": "관련성", - "channel_tab_community_label": "커뮤니티", - "channel_tab_videos_label": "동영상", - "Video mode": "비디오 모드", - "Audio mode": "오디오 모드", - "permalink": "퍼머링크", - "YouTube comment permalink": "유튜브 댓글 퍼머링크", - "(edited)": "(수정됨)", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "Movies": "영화", - "News": "뉴스", - "Gaming": "게임", - "Music": "음악", - "Default": "전체", - "Rating: ": "평점: ", - "About": "정보", - "Top": "최고", - "search_filters_features_option_hd": "HD", - "search_filters_type_option_show": "쇼", - "search_filters_type_option_movie": "영화", - "search_filters_type_option_video": "동영상", - "search_filters_date_option_year": "올해", - "search_filters_date_option_month": "이번 달", - "search_filters_date_option_week": "이번 주", - "search_filters_date_option_today": "오늘", - "search_filters_date_option_hour": "지난 1시간", - "search_filters_sort_label": "정렬기준", - "search_filters_features_label": "기능별", - "search_filters_duration_option_short": "짧음 (4분 미만)", - "search_filters_duration_option_long": "김 (20분 초과)", - "footer_documentation": "문서", - "footer_source_code": "소스 코드", - "footer_original_source_code": "원본 소스 코드", - "footer_modfied_source_code": "수정된 소스 코드", - "adminprefs_modified_source_code_url_label": "수정된 소스 코드 저장소의 URL", - "search_filters_title": "필터", - "preferences_quality_dash_option_4320p": "4320p", - "Popular enabled: ": "인기 활성화: ", - "Dutch (auto-generated)": "네덜란드어 (자동 생성됨)", - "Chinese (Hong Kong)": "중국어 (홍콩)", - "Chinese (Taiwan)": "중국어 (대만)", - "German (auto-generated)": "독일어 (자동 생성됨)", - "Interlingue": "Interlingue", - "search_filters_date_label": "업로드 날짜", - "search_filters_date_option_none": "모든 날짜", - "search_filters_duration_option_none": "모든 기간", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_purchased": "구입한 항목", - "search_filters_apply_button": "선택한 필터 적용하기", - "preferences_quality_dash_option_240p": "240p", - "preferences_region_label": "국가: ", - "preferences_quality_dash_option_1440p": "1440p", - "French (auto-generated)": "프랑스어 (자동 생성됨)", - "Indonesian (auto-generated)": "인도네시아어 (자동 생성됨)", - "Turkish (auto-generated)": "터키어 (자동 생성됨)", - "Vietnamese (auto-generated)": "베트남어 (자동 생성됨)", - "preferences_quality_dash_option_2160p": "2160p", - "Italian (auto-generated)": "이탈리아어 (자동 생성됨)", - "preferences_quality_option_medium": "보통", - "preferences_quality_dash_option_720p": "720p", - "search_filters_duration_option_medium": "중간 (4 - 20분)", - "preferences_quality_dash_option_best": "최고", - "Portuguese (auto-generated)": "포르투갈어 (자동 생성됨)", - "Spanish (Spain)": "스페인어 (스페인)", - "preferences_quality_dash_label": "선호하는 DASH 비디오 품질: ", - "preferences_quality_option_hd720": "HD720", - "Spanish (auto-generated)": "스페인어 (자동 생성됨)", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_worst": "최저", - "preferences_watch_history_label": "시청 기록 저장: ", - "invidious": "인비디어스", - "preferences_quality_option_small": "낮음", - "preferences_quality_dash_option_auto": "자동", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_144p": "144p", - "English (United Kingdom)": "영어 (영국)", - "search_filters_features_option_vr180": "VR180", - "Cantonese (Hong Kong)": "광동어 (홍콩)", - "Portuguese (Brazil)": "포르투갈어 (브라질)", - "search_message_no_results": "결과가 없습니다.", - "search_message_change_filters_or_query": "필터를 변경하시거나 검색어를 넓게 시도해보세요.", - "search_message_use_another_instance": " 당신은 다른 인스턴스에서 검색할 수도 있습니다.", - "English (United States)": "영어 (미국)", - "Chinese": "중국어", - "Chinese (China)": "중국어 (중국)", - "Japanese (auto-generated)": "일본어 (자동 생성됨)", - "Korean (auto-generated)": "한국어 (자동 생성됨)", - "Russian (auto-generated)": "러시아어 (자동 생성됨)", - "Spanish (Mexico)": "스페인어 (멕시코)", - "search_filters_type_option_all": "모든 유형", - "footer_donate_page": "기부하기", - "preferences_quality_option_dash": "DASH (다양한 화질)", - "preferences_quality_dash_option_360p": "360p", - "preferences_save_player_pos_label": "이어서 보기: ", - "none": "없음", - "videoinfo_started_streaming_x_ago": "`x` 전에 스트리밍을 시작했습니다", - "crash_page_you_found_a_bug": "인비디어스에서 버그를 찾은 것 같습니다!", - "download_subtitles": "자막 - `x`(.vtt)", - "user_saved_playlists": "`x`개의 저장된 재생목록", - "crash_page_before_reporting": "버그를 보고하기 전에 다음 사항이 있는지 확인합니다:", - "crash_page_search_issue": "깃허브에서 기존 이슈를 검색했습니다", - "Video unavailable": "비디오를 사용할 수 없음", - "crash_page_refresh": "페이지를 새로고침하려고 했습니다", - "videoinfo_watch_on_youTube": "유튜브에서 보기", - "crash_page_switch_instance": "다른 인스턴스를 사용하려고 했습니다", - "crash_page_read_the_faq": "자주 묻는 질문(FAQ) 읽기", - "user_created_playlists": "`x`개의 생성된 재생목록", - "crash_page_report_issue": "위의 방법 중 어느 것도 도움이 되지 않았다면, 깃허브에서 새 이슈를 열고(가능하면 영어로) 메시지에 다음 텍스트를 포함하세요(해당 텍스트를 번역하지 마십시오):", - "videoinfo_youTube_embed_link": "임베드", - "videoinfo_invidious_embed_link": "임베드 링크", - "error_video_not_in_playlist": "요청한 동영상이 이 재생목록에 없습니다. 재생목록 목록을 보려면 여기를 클릭하십시오.", - "channel_tab_shorts_label": "쇼츠", - "channel_tab_streams_label": "실시간 스트리밍", - "channel_tab_channels_label": "채널", - "channel_tab_playlists_label": "재생목록", - "Standard YouTube license": "표준 유튜브 라이선스", - "Song: ": "제목: ", - "Channel Sponsor": "채널 스폰서", - "Album: ": "앨범: ", - "Music in this video": "동영상 속 음악", - "Artist: ": "아티스트: ", - "Download is disabled": "다운로드가 비활성화 되어있음", - "Import YouTube playlist (.csv)": "유튜브 플레이리스트 가져오기 (.csv)", - "playlist_button_add_items": "동영상 추가", - "channel_tab_podcasts_label": "팟캐스트", - "generic_button_delete": "삭제", - "generic_button_edit": "편집", - "generic_button_save": "저장", - "generic_button_cancel": "취소", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "출시", - "generic_channels_count_0": "{{count}} 채널", - "Import YouTube watch history (.json)": "유튜브 시청 기록 가져오기 (.json)" -} diff --git a/invidious/locales/lt.json b/invidious/locales/lt.json deleted file mode 100755 index 740be7b..0000000 --- a/invidious/locales/lt.json +++ /dev/null @@ -1,485 +0,0 @@ -{ - "LIVE": "LIVE", - "Shared `x` ago": "Pasidalino prieš `x`", - "Unsubscribe": "Atšaukti prenumeratą", - "Subscribe": "Prenumeruoti", - "View channel on YouTube": "Peržiūrėti kanalą YouTube", - "View playlist on YouTube": "Peržiūrėti grojaraštį YouTube", - "newest": "naujausia", - "oldest": "seniausia", - "popular": "populiaru", - "last": "paskutinis", - "Next page": "Kitas puslapis", - "Previous page": "Ankstesnis puslapis", - "Clear watch history?": "Išvalyti žiūrėjimo istoriją?", - "New password": "Naujas slaptažodis", - "New passwords must match": "Naujas slaptažodis turi sutapti", - "Authorize token?": "Autorizuoti žetoną?", - "Authorize token for `x`?": "Autorizuoti žetoną `x`?", - "Yes": "Taip", - "No": "Ne", - "Import and Export Data": "Importuoti ir eksportuoti duomenis", - "Import": "Importuoti", - "Import Invidious data": "Importuoti Invidious JSON duomenis", - "Import YouTube subscriptions": "Importuoti YouTube/OPML prenumeratas", - "Import FreeTube subscriptions (.db)": "Importuoti FreeTube prenumeratas (.db)", - "Import NewPipe subscriptions (.json)": "Importuoti NewPipe prenumeratas (.json)", - "Import NewPipe data (.zip)": "Importuoti NewPipe duomenis (.zip)", - "Export": "Eksportuoti", - "Export subscriptions as OPML": "Eksportuoti prenumeratas kaip OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Eksportuoti prenumeratas kaip OPML (skirta NewPipe & FreeTube)", - "Export data as JSON": "Eksportuoti Invidious duomenis kaip JSON", - "Delete account?": "Ištrinti paskyrą?", - "History": "Istorija", - "An alternative front-end to YouTube": "Alternatyvus YouTube žiūrėjimo būdas", - "JavaScript license information": "JavaScript licencijos informacija", - "source": "šaltinis", - "Log in": "Prisijungti", - "Log in/register": "Prisijungti/ registruotis", - "User ID": "Naudotojo ID", - "Password": "Slaptažodis", - "Time (h:mm:ss):": "Laikas (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA tekstas", - "Image CAPTCHA": "CAPTCHA paveikslėlis", - "Sign In": "Prisijungti", - "Register": "Registruotis", - "E-mail": "El. paštas", - "Preferences": "Pasirinktys", - "preferences_category_player": "Grotuvo pasirinktys", - "preferences_video_loop_label": "Visada kartoti: ", - "preferences_autoplay_label": "Leisti automatiškai: ", - "preferences_continue_label": "Leisti sekantį automatiškai kaip nustatyta: ", - "preferences_continue_autoplay_label": "Automatiškai leisti sekantį vaizdo įrašą: ", - "preferences_listen_label": "Klausytis kaip nustatyta: ", - "preferences_local_label": "Vaizdo įrašams naudoti proxy: ", - "preferences_speed_label": "Numatytasis greitis: ", - "preferences_quality_label": "Pageidaujama vaizdo kokybė: ", - "preferences_volume_label": "Grotuvo garsas: ", - "preferences_comments_label": "Numatytieji komentarai: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Numatytieji subtitrai: ", - "Fallback captions: ": "Atsarginiai subtitrai: ", - "preferences_related_videos_label": "Rodyti susijusius vaizdo įrašus: ", - "preferences_annotations_label": "Rodyti anotacijas pagal nutylėjimą: ", - "preferences_extend_desc_label": "Automatiškai išplėsti vaizdo įrašo aprašymą: ", - "preferences_vr_mode_label": "Interaktyvūs 360 laipsnių vaizdo įrašai (reikalingas WebGL): ", - "preferences_category_visual": "Vizualinės nuostatos", - "preferences_player_style_label": "Vaizdo grotuvo stilius: ", - "Dark mode: ": "Tamsus rėžimas: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "tamsi", - "light": "šviesi", - "preferences_thin_mode_label": "Sugretintas rėžimas: ", - "preferences_category_misc": "Įvairios nuostatos", - "preferences_automatic_instance_redirect_label": "Automatinis šaltinio nukreipimas (atsarginis nukreipimas į redirect.Invidous.io): ", - "preferences_category_subscription": "Prenumeratų nuostatos", - "preferences_annotations_subscribed_label": "Prenumeruojamiems kanalams subtitrus rodyti pagal nutylėjimą: ", - "Redirect homepage to feed: ": "Peradresuoti pagrindinį puslapį į kanalų sąrašą: ", - "preferences_max_results_label": "Vaizdo įrašų kiekis kanalų sąraše: ", - "preferences_sort_label": "Rūšiuoti vaizdo įrašus pagal: ", - "published": "paskelbta", - "published - reverse": "paskelbta - atvirkštine tvarka", - "alphabetically": "pagal abėcėlę", - "alphabetically - reverse": "pagal abėcėlę - atvirkštine tvarka", - "channel name": "kanalo pavadinimas", - "channel name - reverse": "kanalo pavadinimas - atvirkštine tvarka", - "Only show latest video from channel: ": "Rodyti tik naujausius vaizdo įrašus iš kanalo: ", - "Only show latest unwatched video from channel: ": "Rodyti tik naujausius nežiūrėtus vaizdo įrašus iš kanalo: ", - "preferences_unseen_only_label": "Rodyti tik nežiūrėtus: ", - "preferences_notifications_only_label": "Rodyti tik pranešimus (jei yra): ", - "Enable web notifications": "Įgalinti žiniatinklio pranešimus", - "`x` uploaded a video": "`x` įkėlė vaizdo įrašą", - "`x` is live": "`x` transliuoja tiesiogiai", - "preferences_category_data": "Duomenų parinktys", - "Clear watch history": "Išvalyti žiūrėjimo istoriją", - "Import/export data": "Importuoti/ eksportuoti duomenis", - "Change password": "Pakeisti slaptažodį", - "Manage subscriptions": "Valdyti prenumeratas", - "Manage tokens": "Valdyti žetonus", - "Watch history": "Žiūrėjimo istorija", - "Delete account": "Ištrinti paskyrą", - "preferences_category_admin": "Administratoriaus nuostatos", - "preferences_default_home_label": "Numatytasis pagrindinis puslapis ", - "preferences_feed_menu_label": "Kanalų sąrašo meniu: ", - "preferences_show_nick_label": "Rodyti slapyvardį viršuje: ", - "Top enabled: ": "Įgalinti viršų: ", - "CAPTCHA enabled: ": "Įgalinta CAPTCHA: ", - "Login enabled: ": "Įgalintas prisijungimas: ", - "Registration enabled: ": "Įgalinta registracija: ", - "Report statistics: ": "Dalintis statistika: ", - "Save preferences": "Išsaugoti nuostatas", - "Subscription manager": "Prenumeratų valdytojas", - "Token manager": "Žetonų valdytojas", - "Token": "Žetonas", - "Import/export": "Importuoti/ eksportuoti", - "unsubscribe": "atšaukti prenumeratą", - "revoke": "atšaukti", - "Subscriptions": "Prenumeratos", - "search": "ieškoti", - "Log out": "Atsijungti", - "Released under the AGPLv3 on Github.": "Išleista pagal AGPLv3 licenciją GitHub.", - "Source available here.": "Kodas prieinamas čia.", - "View JavaScript license information.": "Žiūrėti JavaScript licencijos informaciją.", - "View privacy policy.": "Žiūrėti privatumo politiką.", - "Trending": "Tendencijos", - "Public": "Viešas", - "Unlisted": "Neįtrauktas į sąrašą", - "Private": "Neviešas", - "View all playlists": "Žiūrėti visus grojaraščius", - "Updated `x` ago": "Atnaujinta prieš `x`", - "Delete playlist `x`?": "Ištrinti grojaraštį `x`?", - "Delete playlist": "Ištrinti grojaraštį", - "Create playlist": "Sukurti grojaraštį", - "Title": "Pavadinimas", - "Playlist privacy": "Grojaraščio privatumas", - "Editing playlist `x`": "Redaguojamas grojaraštis `x`", - "Show more": "Rodyti daugiau", - "Show less": "Rodyti mažiau", - "Watch on YouTube": "Žiaurėti Youtube", - "Switch Invidious Instance": "Keisti Invidious šaltinį", - "Hide annotations": "Slėpti anotacijas", - "Show annotations": "Rodyti anotacijas", - "Genre: ": "Žanras: ", - "License: ": "Licencija: ", - "Family friendly? ": "Draugiška šeimai? ", - "Wilson score: ": "Wilson taškai: ", - "Engagement: ": "Įsitraukimas: ", - "Whitelisted regions: ": "Prieinantys regionai: ", - "Blacklisted regions: ": "Blokuojami regionai: ", - "Shared `x`": "Pasidalino `x`", - "Premieres in `x`": "Premjera už `x`", - "Premieres `x`": "Premjera`x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Sveiki! Panašu, kad turite išjungę „JavaScript“. Spustelėkite čia norėdami peržiūrėti komentarus, atminkite, kad jų įkėlimas gali užtrukti šiek tiek ilgiau.", - "View YouTube comments": "Žiūrėti YouTube komentarus", - "View more comments on Reddit": "Žiūrėti daugiau komentarų Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Žiūrėti `x` komentarus", - "": "Žiūrėti `x` komentarus" - }, - "View Reddit comments": "Žiūrėti Reddit komentarus", - "Hide replies": "Slėpti atsakymus", - "Show replies": "Rodyti atsakymus", - "Incorrect password": "Slaptažodis neteisingas", - "Wrong answer": "Atsakymas neteisingas", - "Erroneous CAPTCHA": "Klaidinga CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA yra reikalinga šiam laukeliui", - "User ID is a required field": "Vartotojo ID yra reikalingas šiam laukeliui", - "Password is a required field": "Slaptažodis yra reikalingas šiam laukeliui", - "Wrong username or password": "Neteisingas vartotojo vardas arba slaptažodis", - "Password cannot be empty": "Slaptažodžio laukelis negali būti tuščias", - "Password cannot be longer than 55 characters": "Slaptažodis negali būti ilgesnis nei 55 simboliai", - "Please log in": "Prašome prisijungti", - "Invidious Private Feed for `x`": "Invidious neviešas kanalų sąrašas `x`", - "channel:`x`": "kanalas:`x`", - "Deleted or invalid channel": "Panaikintas arba netinkamas kanalas", - "This channel does not exist.": "Šis kanalas neegzistuoja.", - "Could not get channel info.": "Nepavyko gauti kanalo informacijos.", - "Could not fetch comments": "Nepavyko atsiųsti komentarų", - "`x` ago": "`x` prieš", - "Load more": "Pakrauti daugiau", - "Could not create mix.": "Nepavyko sukurti derinio.", - "Empty playlist": "Tuščias grojaraštis", - "Not a playlist.": "Ne grojaraštis.", - "Playlist does not exist.": "Grojaraštis neegzistuoja.", - "Could not pull trending pages.": "Nepavyko ištraukti tendencijų puslapių.", - "Hidden field \"challenge\" is a required field": "Paslėptas laukas „iššūkis“ yra privalomas laukas", - "Hidden field \"token\" is a required field": "Paslėptas laukas „žetonas“ yra privalomas laukas", - "Erroneous challenge": "Klaidingas iššūkis", - "Erroneous token": "Klaidingas žetonas", - "No such user": "Nėra tokio vartotojo", - "Token is expired, please try again": "Žetonas pasibaigęs, prašome bandyti dar kartą", - "English": "Anglų", - "English (auto-generated)": "Anglų (Sugeneruota automatiškai)", - "Afrikaans": "Afrikans", - "Albanian": "Albanų", - "Amharic": "Amharų", - "Arabic": "Arabų", - "Armenian": "Armėnų", - "Azerbaijani": "Azerbaidžanų", - "Bangla": "Bengalų", - "Basque": "Baskų", - "Belarusian": "Baltarusių", - "Bosnian": "Bosnių", - "Bulgarian": "Bulgarų", - "Burmese": "Birmiečių", - "Catalan": "Katalonų", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Kinų (supaprastinta)", - "Chinese (Traditional)": "Kinų (tradicinė)", - "Corsican": "Korsikiečių", - "Croatian": "Kroatų", - "Czech": "Čekų", - "Danish": "Danų", - "Dutch": "Nyderlandų", - "Esperanto": "Esperanto", - "Estonian": "Estų", - "Filipino": "Filipiniečių", - "Finnish": "Suomių", - "French": "Prancūzų", - "Galician": "Galicijos", - "Georgian": "Sakartveliečių", - "German": "Vokiečių", - "Greek": "Graikų", - "Gujarati": "Gujarati", - "Haitian Creole": "Haičio kreolė", - "Hausa": "Hausa", - "Hawaiian": "Havajiečių", - "Hebrew": "Hebrajų", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Vengrų", - "Icelandic": "Islandų", - "Igbo": "Igbo", - "Indonesian": "Indoneziečių", - "Irish": "Airių", - "Italian": "Italų", - "Japanese": "Japonų", - "Javanese": "Javos", - "Kannada": "Kannada", - "Kazakh": "Kazachų", - "Khmer": "Khmerų", - "Korean": "Korejiėčių", - "Kurdish": "Kurdų", - "Kyrgyz": "Kirgizų", - "Lao": "Lao", - "Latin": "Lotynų", - "Latvian": "Latvių", - "Lithuanian": "Lietuvių", - "Luxembourgish": "Liuksemburgiečių", - "Macedonian": "Šiaurės makedonų", - "Malagasy": "Malagasi", - "Malay": "Malajų", - "Malayalam": "Malayalam", - "Maltese": "Maltiečių", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongolų", - "Nepali": "Nepaliečių", - "Norwegian Bokmål": "Norvegų Bokmål", - "Nyanja": "Nyanja", - "Pashto": "Paštunų", - "Persian": "Persų", - "Polish": "Lenkų", - "Portuguese": "Portugalų", - "Punjabi": "Punjabi", - "Romanian": "Romėnų", - "Russian": "Rusų", - "Samoan": "Samoa", - "Scottish Gaelic": "Škotų Gaelic", - "Serbian": "Serbų", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Sinhala", - "Slovak": "Slovakų", - "Slovenian": "Slovėnų", - "Somali": "Somaliečių", - "Southern Sotho": "Pietų Sotho", - "Spanish": "Ispanų", - "Spanish (Latin America)": "Ispanų (Lotynų Amerika)", - "Sundanese": "Sudaniečių", - "Swahili": "Svahili", - "Swedish": "Švedų", - "Tajik": "Tadžikų", - "Tamil": "Tamilų", - "Telugu": "Telugų", - "Thai": "Talaindiečių", - "Turkish": "Turkų", - "Ukrainian": "Ukrainiečių", - "Urdu": "Udrų", - "Uzbek": "Uzbekų", - "Vietnamese": "Vietnamiečių", - "Welsh": "Velso", - "Western Frisian": "Vakarų Fryzų", - "Xhosa": "Xhosa", - "Yiddish": "Jidiš", - "Yoruba": "Yorubiečių", - "Zulu": "Zulu", - "Fallback comments: ": "Atsarginiai komentarai: ", - "Popular": "Populiaru", - "Search": "Paieška", - "Top": "Top", - "About": "Apie", - "Rating: ": "Reitingas: ", - "preferences_locale_label": "Kalba: ", - "View as playlist": "Žiūrėti kaip grojaraštį", - "Default": "Numatytasis", - "Music": "Muzika", - "Gaming": "Žaidimai", - "News": "Naujienos", - "Movies": "Filmai", - "Download": "Atsisiųsti", - "Download as: ": "Atsisiųsti kaip: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(redaguota)", - "YouTube comment permalink": "YouTube komentaro adresas", - "permalink": "adresas", - "`x` marked it with a ❤": "`x` pažymėjo tai su ❤", - "Audio mode": "Garso rėžimas", - "Video mode": "Vaizdo rėžimas", - "channel_tab_videos_label": "Vaizdo įrašai", - "Playlists": "Grojaraiščiai", - "channel_tab_community_label": "Bendruomenė", - "search_filters_sort_option_relevance": "Aktualumas", - "search_filters_sort_option_rating": "Reitingas", - "search_filters_sort_option_date": "Įkėlimo data", - "search_filters_sort_option_views": "Peržiūrų skaičius", - "search_filters_type_label": "Tipas", - "search_filters_duration_label": "Trukmė", - "search_filters_features_label": "Funkcijos", - "search_filters_sort_label": "Rūšiuoti pagal", - "search_filters_date_option_hour": "Per paskutinę valandą", - "search_filters_date_option_today": "Šiandien", - "search_filters_date_option_week": "Šią savaitę", - "search_filters_date_option_month": "Šį mėnesį", - "search_filters_date_option_year": "Šiais metais", - "search_filters_type_option_video": "Vaizdo įrašas", - "search_filters_type_option_channel": "Kanalas", - "search_filters_type_option_playlist": "Grojaraštis", - "search_filters_type_option_movie": "Filmas", - "search_filters_type_option_show": "Serialas", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Subtitrai/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Tiesiogiai", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Vietovė", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Dabartinė versija: ", - "next_steps_error_message": "Po to turėtumėte pabandyti: ", - "next_steps_error_message_refresh": "Atnaujinti", - "next_steps_error_message_go_to_youtube": "Eiti į YouTube", - "search_filters_duration_option_short": "Trumpas (< 4 minučių)", - "search_filters_duration_option_long": "Ilgas (> 20 minučių)", - "footer_documentation": "Dokumentacija", - "footer_source_code": "Pirminis kodas", - "footer_original_source_code": "Pradinis pirminis kodas", - "adminprefs_modified_source_code_url_label": "URL į pakeisto pirminio kodo repozitoriją", - "footer_modfied_source_code": "Pakeistas pirminis kodas", - "footer_donate_page": "Paaukoti", - "preferences_region_label": "Turinio šalis: ", - "preferences_quality_dash_label": "Pageidaujama DASH vaizdo kokybė: ", - "preferences_quality_dash_option_best": "Geriausia", - "preferences_quality_dash_option_worst": "Blogiausia", - "preferences_quality_dash_option_auto": "Automatinis", - "search_filters_title": "Filtras", - "generic_videos_count_0": "{{count}} vaizdo įrašas", - "generic_videos_count_1": "{{count}} vaizdo įrašai", - "generic_videos_count_2": "{{count}} vaizdo įrašų", - "generic_subscribers_count_0": "{{count}} prenumeratorius", - "generic_subscribers_count_1": "{{count}} prenumeratoriai", - "generic_subscribers_count_2": "{{count}} prenumeratorių", - "generic_subscriptions_count_0": "{{count}} prenumerata", - "generic_subscriptions_count_1": "{{count}} prenumeratos", - "generic_subscriptions_count_2": "{{count}} prenumeratų", - "preferences_watch_history_label": "Įgalinti žiūrėjimo istoriją: ", - "preferences_quality_dash_option_1080p": "1080p", - "invidious": "Invidious", - "preferences_quality_dash_option_720p": "720p", - "generic_playlists_count_0": "{{count}} grojaraštis", - "generic_playlists_count_1": "{{count}} grojaraščiai", - "generic_playlists_count_2": "{{count}} grojaraščių", - "preferences_quality_option_medium": "Vidutinė", - "preferences_quality_option_small": "Maža", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_option_dash": "DASH (prisitaikanti kokybė)", - "generic_views_count_0": "{{count}} peržiūra", - "generic_views_count_1": "{{count}} peržiūros", - "generic_views_count_2": "{{count}} peržiūrų", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_240p": "240p", - "none": "nėra", - "search_filters_type_option_all": "Bet koks tipas", - "videoinfo_started_streaming_x_ago": "Pradėjo transliuoti prieš `x`", - "crash_page_switch_instance": "pabandėte naudoti kitą perdavimo šaltinį", - "search_filters_duration_option_none": "Bet kokia trukmė", - "search_filters_duration_option_medium": "Vidutinio ilgumo (4 - 20 minučių)", - "search_filters_features_option_vr180": "VR180", - "crash_page_before_reporting": "Prieš pranešdami apie klaidą įsitikinkite, kad:", - "crash_page_read_the_faq": "perskaitėte Dažniausiai užduodamus klausimus (DUK)", - "crash_page_search_issue": "ieškojote esamų problemų GitHub", - "error_video_not_in_playlist": "Prašomo vaizdo įrašo šiame grojaraštyje nėra. Spustelėkite čia, kad pamatytumėte grojaraščio pagrindinį puslapį.", - "crash_page_report_issue": "Jei nė vienas iš pirmiau pateiktų būdų nepadėjo, prašome atidaryti naują problemą GitHub (pageidautina anglų kalba) ir į savo pranešimą įtraukti šį tekstą (NEVERSKITE šio teksto):", - "subscriptions_unseen_notifs_count_0": "{{count}} nematytas pranešimas", - "subscriptions_unseen_notifs_count_1": "{{count}} nematyti pranešimai", - "subscriptions_unseen_notifs_count_2": "{{count}} nematytų pranešimų", - "Vietnamese (auto-generated)": "Vietnamiečių kalba (automatiškai sugeneruota)", - "Dutch (auto-generated)": "Olandų kalba (automatiškai sugeneruota)", - "generic_count_weeks_0": "{{count}} savaitę", - "generic_count_weeks_1": "{{count}} savaitės", - "generic_count_weeks_2": "{{count}} savaičių", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italų kalba (automatiškai sugeneruota)", - "Japanese (auto-generated)": "Japonų kalba (automatiškai sugeneruota)", - "Korean (auto-generated)": "Korėjiečių kalba (automatiškai sugeneruota)", - "generic_count_months_0": "{{count}} mėnesį", - "generic_count_months_1": "{{count}} mėnesius", - "generic_count_months_2": "{{count}} mėnesių", - "generic_count_days_0": "{{count}} dieną", - "generic_count_days_1": "{{count}} dienas", - "generic_count_days_2": "{{count}} dienų", - "generic_count_hours_0": "{{count}} valandą", - "generic_count_hours_1": "{{count}} valandas", - "generic_count_hours_2": "{{count}} valandų", - "generic_count_seconds_0": "{{count}} sekundę", - "generic_count_seconds_1": "{{count}} sekundes", - "generic_count_seconds_2": "{{count}} sekundžių", - "generic_count_minutes_0": "{{count}} minutę", - "generic_count_minutes_1": "{{count}} minutes", - "generic_count_minutes_2": "{{count}} minučių", - "generic_count_years_0": "{{count}} metus", - "generic_count_years_1": "{{count}} metus", - "generic_count_years_2": "{{count}} metų", - "Popular enabled: ": "Populiarūs įgalinti: ", - "Portuguese (auto-generated)": "Portugalų kalba (automatiškai sugeneruota)", - "videoinfo_watch_on_youTube": "Žiaurėti Youtube", - "Chinese (China)": "Kinų kalba (Kinija)", - "crash_page_you_found_a_bug": "Atrodo, kad radote \"Invidious\" klaidą!", - "search_filters_features_option_three_sixty": "360°", - "English (United Kingdom)": "Anglų kalba (Jungtinė Karalystė)", - "Chinese (Hong Kong)": "Kinų kalba (Honkongas)", - "search_message_change_filters_or_query": "Pabandykite išplėsti paieškos užklausą ir (arba) pakeisti filtrus.", - "English (United States)": "Anglų kalba (Jungtinės Amerikos Valstijos)", - "Chinese (Taiwan)": "Kinų kalba (Taivanas)", - "search_message_use_another_instance": " Taip pat galite ieškoti kitame perdavimo šaltinyje.", - "tokens_count_0": "{{count}} žetonas", - "tokens_count_1": "{{count}} žetonai", - "tokens_count_2": "{{count}} žetonų", - "search_message_no_results": "Rezultatų nerasta.", - "comments_view_x_replies_0": "Žiūrėti {{count}} atsakymą", - "comments_view_x_replies_1": "Žiūrėti {{count}} atsakymus", - "comments_view_x_replies_2": "Žiūrėti {{count}} atsakymų", - "comments_points_count_0": "{{count}} taškas", - "comments_points_count_1": "{{count}} taškai", - "comments_points_count_2": "{{count}} taškų", - "Cantonese (Hong Kong)": "Kantono kalba (Honkongas)", - "Chinese": "Kinų", - "French (auto-generated)": "Prancūzų kalba (automatiškai sugeneruota)", - "German (auto-generated)": "Vokiečių kalba (automatiškai sugeneruota)", - "Indonesian (auto-generated)": "Indoneziečių kalba (automatiškai sugeneruota)", - "Portuguese (Brazil)": "Portugalų kalba (Brazilija)", - "Russian (auto-generated)": "Rusų kalba (automatiškai sugeneruota)", - "Spanish (Mexico)": "Ispanų kalba (Meksika)", - "Spanish (auto-generated)": "Ispanų kalba (automatiškai sugeneruota)", - "Spanish (Spain)": "Ispanų kalba (Ispanija)", - "Turkish (auto-generated)": "Turkų kalba (automatiškai sugeneruota)", - "search_filters_date_label": "Įkėlimo data", - "search_filters_date_option_none": "Bet kokia data", - "search_filters_features_option_purchased": "Įsigyta", - "search_filters_apply_button": "Taikyti pasirinktus filtrus", - "download_subtitles": "Subtitrai - `x` (.vtt)", - "user_created_playlists": "`x` sukurti grojaraščiai", - "user_saved_playlists": "`x` išsaugoti grojaraščiai", - "Video unavailable": "Vaizdo įrašas nepasiekiamas", - "preferences_save_player_pos_label": "Išsaugoti atkūrimo padėtį: ", - "videoinfo_youTube_embed_link": "Įterpti", - "videoinfo_invidious_embed_link": "Įterpti nuorodą", - "crash_page_refresh": "pabandėte atnaujinti puslapį", - "Album: ": "Albumas " -} diff --git a/invidious/locales/nb-NO.json b/invidious/locales/nb-NO.json deleted file mode 100755 index cf0ee28..0000000 --- a/invidious/locales/nb-NO.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "LIVE": "SANNTIDSVISNING", - "Shared `x` ago": "Delt for `x` siden", - "Unsubscribe": "Opphev abonnement", - "Subscribe": "Abonner", - "View channel on YouTube": "Vis kanal på YouTube", - "View playlist on YouTube": "Vis spilleliste på YouTube", - "newest": "nyeste", - "oldest": "eldste", - "popular": "populært", - "last": "siste", - "Next page": "Neste side", - "Previous page": "Forrige side", - "Clear watch history?": "Tøm visningshistorikk?", - "New password": "Nytt passord", - "New passwords must match": "Nye passordfelter må stemme overens", - "Authorize token?": "Identitetsbekreft symbol?", - "Authorize token for `x`?": "Identitetsbekreft symbol for `x`?", - "Yes": "Ja", - "No": "Nei", - "Import and Export Data": "Importer- og eksporter data", - "Import": "Importer", - "Import Invidious data": "Importer Invidious-JSON-data", - "Import YouTube subscriptions": "Importer YouTube/OPML-abonnementer", - "Import FreeTube subscriptions (.db)": "Importer FreeTube-abonnementer (.db)", - "Import NewPipe subscriptions (.json)": "Importer NewPipe-abonnementer (.json)", - "Import NewPipe data (.zip)": "Importer NewPipe-data (.zip)", - "Export": "Eksporter", - "Export subscriptions as OPML": "Eksporter abonnementer som OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Eksporter abonnementer som OPML (for NewPipe og FreeTube)", - "Export data as JSON": "Eksporter Invidiousdata som JSON", - "Delete account?": "Slett konto?", - "History": "Historikk", - "An alternative front-end to YouTube": "En alternativ grenseflate for YouTube", - "JavaScript license information": "JavaScript-lisensinformasjon", - "source": "kilde", - "Log in": "Logg inn", - "Log in/register": "Logg inn/registrer", - "User ID": "Bruker-ID", - "Password": "Passord", - "Time (h:mm:ss):": "Tid (h:mm:ss):", - "Text CAPTCHA": "Tekst-CAPTCHA", - "Image CAPTCHA": "Bilde-CAPTCHA", - "Sign In": "Innlogging", - "Register": "Registrer", - "E-mail": "E-post", - "Preferences": "Innstillinger", - "preferences_category_player": "Avspillerinnstillinger", - "preferences_video_loop_label": "Alltid gjenta: ", - "preferences_autoplay_label": "Autoavspilling: ", - "preferences_continue_label": "Spill neste som forvalg: ", - "preferences_continue_autoplay_label": "Autospill neste video: ", - "preferences_listen_label": "Lytt som forvalg: ", - "preferences_local_label": "Mellomtjen videoer? ", - "preferences_speed_label": "Forvalgt hastighet: ", - "preferences_quality_label": "Foretrukket videokvalitet: ", - "preferences_volume_label": "Avspillerlydstyrke: ", - "preferences_comments_label": "Forvalgte kommentarer: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Forvalgte undertitler: ", - "Fallback captions: ": "Tilbakefallsundertitler: ", - "preferences_related_videos_label": "Vis relaterte videoer? ", - "preferences_annotations_label": "Vis merknader som forvalg? ", - "preferences_extend_desc_label": "Utvid videobeskrivelse automatisk: ", - "preferences_vr_mode_label": "Interaktive 360-gradersfilmer (krever WebGL): ", - "preferences_category_visual": "Visuelle innstillinger", - "preferences_player_style_label": "Avspillerstil: ", - "Dark mode: ": "Mørk drakt: ", - "preferences_dark_mode_label": "Drakt: ", - "dark": "Mørk", - "light": "Lys", - "preferences_thin_mode_label": "Tynt modus: ", - "preferences_category_misc": "Ulike innstillinger", - "preferences_automatic_instance_redirect_label": "Automatisk instansomdirigering (faller tilbake til redirect.invidious.io): ", - "preferences_category_subscription": "Abonnementsinnstillinger", - "preferences_annotations_subscribed_label": "Vis merknader som forvalg for kanaler det abonneres på? ", - "Redirect homepage to feed: ": "Videresend hjemmeside til kilde: ", - "preferences_max_results_label": "Antall videoer å vise i kilde: ", - "preferences_sort_label": "Sorter videoer etter: ", - "published": "publisert", - "published - reverse": "publisert - motsatt", - "alphabetically": "alfabetisk", - "alphabetically - reverse": "alfabetisk - motsatt", - "channel name": "kanalnavn", - "channel name - reverse": "kanalnavn - motsatt", - "Only show latest video from channel: ": "Kun vis siste video fra kanal: ", - "Only show latest unwatched video from channel: ": "Kun vis siste usette video fra kanal: ", - "preferences_unseen_only_label": "Kun vis usette: ", - "preferences_notifications_only_label": "Kun vis merknader (hvis det er noen): ", - "Enable web notifications": "Skru på nettmerknader", - "`x` uploaded a video": "`x` lastet opp en video", - "`x` is live": "`x` er pålogget", - "preferences_category_data": "Datainnstillinger", - "Clear watch history": "Tøm visningshistorikk", - "Import/export data": "Importer/eksporter data", - "Change password": "Endre passord", - "Manage subscriptions": "Behandle abonnementer", - "Manage tokens": "Behandle symboler", - "Watch history": "Visningshistorikk", - "Delete account": "Slett konto", - "preferences_category_admin": "Administratorinnstillinger", - "preferences_default_home_label": "Forvalgt hjemmeside: ", - "preferences_feed_menu_label": "Kilde-meny: ", - "preferences_show_nick_label": "Vis kallenavn på toppen: ", - "Top enabled: ": "Topp påskrudd? ", - "CAPTCHA enabled: ": "CAPTCHA påskrudd? ", - "Login enabled: ": "Innlogging påskrudd? ", - "Registration enabled: ": "Registrering påskrudd? ", - "Report statistics: ": "Innrapporter statistikk? ", - "Save preferences": "Lagre innstillinger", - "Subscription manager": "Abonnementsbehandler", - "Token manager": "Symbolbehandler", - "Token": "Symbol", - "Import/export": "Importer/eksporter", - "unsubscribe": "opphev abonnement", - "revoke": "tilbakekall", - "Subscriptions": "Abonnement", - "search": "søk", - "Log out": "Logg ut", - "Released under the AGPLv3 on Github.": "Tilgjengelig med AGPLv3-lisens på GitHub.", - "Source available here.": "Kildekode tilgjengelig her.", - "View JavaScript license information.": "Vis JavaScript-lisensinfo.", - "View privacy policy.": "Vis personvernspraksis.", - "Trending": "Trendsettende", - "Public": "Offentlig", - "Unlisted": "Ulistet", - "Private": "Privat", - "View all playlists": "Vis alle spillelister", - "Updated `x` ago": "Oppdatert `x` siden", - "Delete playlist `x`?": "Slett spilleliste «x»?", - "Delete playlist": "Slett spilleliste", - "Create playlist": "Opprett spilleliste", - "Title": "Tittel", - "Playlist privacy": "Vern av spilleliste", - "Editing playlist `x`": "Endre spilleliste «x»", - "Show more": "Vis mer", - "Show less": "Vis mindre", - "Watch on YouTube": "Vis video på YouTube", - "Switch Invidious Instance": "Bytt Invidious-instans", - "Hide annotations": "Skjul merknader", - "Show annotations": "Vis merknader", - "Genre: ": "Sjanger: ", - "License: ": "Lisens: ", - "Family friendly? ": "Familievennlig? ", - "Wilson score: ": "Wilson-poengsum: ", - "Engagement: ": "Engasjement: ", - "Whitelisted regions: ": "Hvitlistede regioner: ", - "Blacklisted regions: ": "Svartelistede regioner: ", - "Shared `x`": "Delt `x`", - "Premieres in `x`": "Premiere om `x`", - "Premieres `x`": "Première `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hei. Det ser ut til at du har JavaScript avslått. Klikk her for å vise kommentarer, ha i minnet at innlasting tar lengre tid.", - "View YouTube comments": "Vis YouTube-kommentarer", - "View more comments on Reddit": "Vis flere kommenterer på Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Vis `x` kommentar", - "": "Vis `x` kommentarer" - }, - "View Reddit comments": "Vis Reddit-kommentarer", - "Hide replies": "Skjul svar", - "Show replies": "Vis svar", - "Incorrect password": "Feil passord", - "Wrong answer": "Ugyldig svar", - "Erroneous CAPTCHA": "Ugyldig CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA er et påkrevd felt", - "User ID is a required field": "Bruker-ID er et påkrevd felt", - "Password is a required field": "Passord er et påkrevd felt", - "Wrong username or password": "Ugyldig brukernavn eller passord", - "Password cannot be empty": "Passordet kan ikke være tomt", - "Password cannot be longer than 55 characters": "Passordet kan ikke være lengre enn 55 tegn", - "Please log in": "Logg inn", - "Invidious Private Feed for `x`": "Invidious personlig kilde for `x`", - "channel:`x`": "kanal `x`", - "Deleted or invalid channel": "Slettet eller ugyldig kanal", - "This channel does not exist.": "Denne kanalen finnes ikke.", - "Could not get channel info.": "Kunne ikke innhente kanalinfo.", - "Could not fetch comments": "Kunne ikke hente kommentarer", - "`x` ago": "`x` siden", - "Load more": "Last inn flere", - "Could not create mix.": "Kunne ikke opprette miks.", - "Empty playlist": "Spillelisten er tom", - "Not a playlist.": "Ugyldig spilleliste.", - "Playlist does not exist.": "Spillelisten finnes ikke.", - "Could not pull trending pages.": "Kunne ikke hente trendsettende sider.", - "Hidden field \"challenge\" is a required field": "Skjult felt \"utfordring\" er et påkrevd felt", - "Hidden field \"token\" is a required field": "Skjult felt \"symbol\" er et påkrevd felt", - "Erroneous challenge": "Ugyldig utfordring", - "Erroneous token": "Ugyldig symbol", - "No such user": "Ugyldig bruker", - "Token is expired, please try again": "Symbol utløpt, prøv igjen", - "English": "Engelsk", - "English (auto-generated)": "Engelsk (laget automatisk)", - "Afrikaans": "Afrikansk", - "Albanian": "Albansk", - "Amharic": "Amharisk", - "Arabic": "Arabisk", - "Armenian": "Armensk", - "Azerbaijani": "Aserbajdsjansk", - "Bangla": "Bengali", - "Basque": "Baskisk", - "Belarusian": "Hviterussisk", - "Bosnian": "Bosnisk", - "Bulgarian": "Bulgarsk", - "Burmese": "Burmesisk", - "Catalan": "Katalansk", - "Cebuano": "Sugboanon", - "Chinese (Simplified)": "Forenklet kinesisk", - "Chinese (Traditional)": "Tradisjonell kinesisk", - "Corsican": "Korsikansk", - "Croatian": "Kroatisk", - "Czech": "Tsjekkisk", - "Danish": "Dansk", - "Dutch": "Nederlandsk", - "Esperanto": "Esperanto", - "Estonian": "Estisk", - "Filipino": "Filippinsk", - "Finnish": "Finsk", - "French": "Fransk", - "Galician": "Galisisk", - "Georgian": "Georgisk", - "German": "Tysk", - "Greek": "Gresk", - "Gujarati": "Gujarati", - "Haitian Creole": "Haitisk kreol", - "Hausa": "Hausa", - "Hawaiian": "Hawaiisk", - "Hebrew": "Hebraisk", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Ungarsk", - "Icelandic": "Islandsk", - "Igbo": "Ibo", - "Indonesian": "Indonesisk", - "Irish": "Irsk", - "Italian": "Italiensk", - "Japanese": "Japansk", - "Javanese": "Javanesisk", - "Kannada": "Kanaresisk", - "Kazakh": "Kasakhisk", - "Khmer": "Khmer", - "Korean": "Koreansk", - "Kurdish": "Kurdisk", - "Kyrgyz": "Kirgisisk", - "Lao": "Laotisk", - "Latin": "Latin", - "Latvian": "Latvisk", - "Lithuanian": "Litauisk", - "Luxembourgish": "Luxemburgsk", - "Macedonian": "Makedonsk", - "Malagasy": "Madagassisk", - "Malay": "Malayisk", - "Malayalam": "Malayalam", - "Maltese": "Maltesisk", - "Maori": "Maorisk", - "Marathi": "Marathi", - "Mongolian": "Mongolsk", - "Nepali": "Gurkhali", - "Norwegian Bokmål": "Norsk bokmål", - "Nyanja": "Nyanja", - "Pashto": "Pukhto", - "Persian": "Persisk", - "Polish": "Polsk", - "Portuguese": "Portugisisk", - "Punjabi": "Panjabi", - "Romanian": "Rumensk", - "Russian": "Russisk", - "Samoan": "Samoansk", - "Scottish Gaelic": "Skotsk-gælisk", - "Serbian": "Serbisk", - "Shona": "Shona", - "Sindhi": "Sindhī", - "Sinhala": "Singalesisk", - "Slovak": "Slovakisk", - "Slovenian": "Slovensk", - "Somali": "Somali", - "Southern Sotho": "Sørsotho", - "Spanish": "Spansk", - "Spanish (Latin America)": "Spansk (Latin-Amerika)", - "Sundanese": "Sundanesisk", - "Swahili": "Kiswahili", - "Swedish": "Svensk", - "Tajik": "Tadsjikisk", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Thai", - "Turkish": "Tyrkisk", - "Ukrainian": "Ukrainsk", - "Urdu": "Lashkari", - "Uzbek": "Usbekisk", - "Vietnamese": "Vietnamesisk", - "Welsh": "Velsk", - "Western Frisian": "Vestfrisisk", - "Xhosa": "Xhosa", - "Yiddish": "Jiddisk", - "Yoruba": "Joruba", - "Zulu": "Zulu", - "Fallback comments: ": "Tilbakefallskommentarer: ", - "Popular": "Populært", - "Search": "Søk", - "Top": "Topp", - "About": "Om", - "Rating: ": "Vurdering: ", - "preferences_locale_label": "Språk: ", - "View as playlist": "Vis som spilleliste", - "Default": "Forvalg", - "Music": "Musikk", - "Gaming": "Spill", - "News": "Nyheter", - "Movies": "Filmer", - "Download": "Last ned", - "Download as: ": "Last ned som: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(redigert)", - "YouTube comment permalink": "Permanent YouTube-lenke til innholdet", - "permalink": "permanent lenke", - "`x` marked it with a ❤": "`x` levnet et ❤", - "Audio mode": "Lydmodus", - "Video mode": "Video-modus", - "channel_tab_videos_label": "Videoer", - "Playlists": "Spillelister", - "channel_tab_community_label": "Gemenskap", - "search_filters_sort_option_relevance": "relevans", - "search_filters_sort_option_rating": "vurdering", - "search_filters_sort_option_date": "dato", - "search_filters_sort_option_views": "visninger", - "search_filters_type_label": "innholdstype", - "search_filters_duration_label": "varighet", - "search_filters_features_label": "funksjoner", - "search_filters_sort_label": "sorter", - "search_filters_date_option_hour": "time", - "search_filters_date_option_today": "i dag", - "search_filters_date_option_week": "uke", - "search_filters_date_option_month": "måned", - "search_filters_date_option_year": "år", - "search_filters_type_option_video": "video", - "search_filters_type_option_channel": "kanal", - "search_filters_type_option_playlist": "spilleliste", - "search_filters_type_option_movie": "film", - "search_filters_type_option_show": "vis", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "undertekster", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "direkte", - "search_filters_features_option_four_k": "4k", - "search_filters_features_option_location": "sted", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Gjeldende versjon: ", - "next_steps_error_message": "Etterpå bør du prøve dette: ", - "next_steps_error_message_refresh": "Gjenoppfrisk", - "next_steps_error_message_go_to_youtube": "Gå til YouTube", - "search_filters_duration_option_long": "Lang (> 20 minutter)", - "footer_donate_page": "Doner", - "search_filters_duration_option_short": "Kort (< 4 minutter)", - "footer_documentation": "Dokumentasjon", - "footer_source_code": "Kildekode", - "footer_original_source_code": "Opprinnelig kildekode", - "footer_modfied_source_code": "Endret kildekode", - "adminprefs_modified_source_code_url_label": "Nettadresse til kodelager inneholdende endret kildekode", - "preferences_quality_dash_label": "Foretrukket DASH-videokvalitet: ", - "preferences_region_label": "Innholdsland: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_small": "Lav", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "Best", - "preferences_quality_dash_option_worst": "Verst", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_purchased": "Kjøpt", - "search_filters_features_option_three_sixty": "360°", - "none": "intet", - "videoinfo_watch_on_youTube": "Se på YouTube", - "videoinfo_youTube_embed_link": "Bak inn", - "videoinfo_invidious_embed_link": "Bak inn lenke", - "download_subtitles": "Undertekster - `x` (.vtt)", - "user_created_playlists": "`x` spillelister opprettet", - "user_saved_playlists": "`x` spillelister lagret", - "Video unavailable": "Utilgjengelig video", - "preferences_quality_option_dash": "DASH (tilpasset kvalitet)", - "preferences_quality_option_medium": "Medium", - "preferences_quality_dash_option_2160p": "2160p", - "videoinfo_started_streaming_x_ago": "Strømmen startet for `x` siden", - "generic_count_seconds": "{{count}} sekund", - "generic_count_seconds_plural": "{{count}} sekunder", - "preferences_save_player_pos_label": "Lagre avspillingsposisjon: ", - "generic_views_count": "{{count}} visning", - "generic_views_count_plural": "{{count}} visninger", - "tokens_count": "{{count}} symbol", - "tokens_count_plural": "{{count}} symboler", - "generic_subscriptions_count": "{{count}} abonnement", - "generic_subscriptions_count_plural": "{{count}} abonnementer", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videoer", - "generic_playlists_count": "{{count}} spilleliste", - "generic_playlists_count_plural": "{{count}} spillelister", - "subscriptions_unseen_notifs_count": "{{count}} usett merknad", - "subscriptions_unseen_notifs_count_plural": "{{count}} usette merknader", - "comments_view_x_replies": "Vis {{count}} svar", - "comments_view_x_replies_plural": "Vis {{count}} svar", - "generic_subscribers_count": "{{count}} abonnent", - "generic_subscribers_count_plural": "{{count}}abonnenter", - "generic_count_months": "{{count}} måned", - "generic_count_months_plural": "{{count}} måneder", - "generic_count_days": "{{count}} dag", - "generic_count_days_plural": "{{count}} dager", - "comments_points_count": "{{count}} poeng", - "comments_points_count_plural": "{{count}} poeng", - "generic_count_weeks": "{{count}} uke", - "generic_count_weeks_plural": "{{count}} uker", - "generic_count_hours": "{{count}} time", - "generic_count_hours_plural": "{{count}} timer", - "generic_count_minutes": "{{count}} minutt", - "generic_count_minutes_plural": "{{count}} minutter", - "generic_count_years": "{{count}} år", - "generic_count_years_plural": "{{count}} år", - "crash_page_read_the_faq": "lest de Ofte stilte spørsmålene (OSS/FAQ)", - "crash_page_search_issue": "søkt etter eksisterende utfordringer på GitHub", - "crash_page_you_found_a_bug": "Det ser ut til at du fant en feil i Invidious!", - "crash_page_refresh": "forsøkt å laste siden på nytt", - "crash_page_switch_instance": "forsøkt et annet eksemplar", - "crash_page_before_reporting": "Før du rapporterer en feil, sikre at du har:", - "crash_page_report_issue": "Sett at det overnevnte ikke hjalp, lag en ny utfordring på GitHub (fortrinnsvis på engelsk) og få med følgende tekstbit i meldingen dithen (IKKE oversett denne teksten):", - "English (United Kingdom)": "Engelsk (Storbritannia)", - "English (United States)": "Engelsk (USA)", - "Cantonese (Hong Kong)": "Kantonesisk (Hong Kong)", - "Portuguese (Brazil)": "Portugisisk (Brasil)", - "Spanish (Mexico)": "Spansk (Mexico)", - "Spanish (Spain)": "Spansk (Spania)", - "Spanish (auto-generated)": "Spansk (laget automatisk)", - "Vietnamese (auto-generated)": "Vietnamesisk (laget automatisk)", - "preferences_watch_history_label": "Aktiver seerhistorikk: ", - "Chinese": "Kinesisk", - "Chinese (China)": "Kinesisk (Kina)", - "Chinese (Hong Kong)": "Kinesisk (Hong Kong)", - "Chinese (Taiwan)": "Kinesisk (Taiwan)", - "French (auto-generated)": "Fransk (laget automatisk)", - "German (auto-generated)": "Tysk (laget automatisk)", - "Indonesian (auto-generated)": "Indonesisk (laget automatisk)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italiensk (laget automatisk)", - "Japanese (auto-generated)": "Japansk (laget automatisk)", - "Korean (auto-generated)": "Koreansk (laget automatisk)", - "Portuguese (auto-generated)": "Portugisisk (laget automatisk)", - "Russian (auto-generated)": "Russisk (laget automatisk)", - "Dutch (auto-generated)": "Nederlandsk (laget automatisk)", - "Turkish (auto-generated)": "Tyrkisk (laget automatisk)", - "search_filters_title": "Filtrer", - "Popular enabled: ": "Populære aktiv: ", - "search_message_change_filters_or_query": "Prøv ett mindre snevert søk og/eller endre filterne.", - "search_filters_duration_option_medium": "Middels (4–20 minutter)", - "search_message_no_results": "Resultatløst.", - "search_filters_type_option_all": "Alle typer", - "search_filters_duration_option_none": "Enhver varighet", - "search_message_use_another_instance": " Du kan også søke på en annen instans.", - "search_filters_date_label": "Opplastningsdato", - "search_filters_apply_button": "Bruk valgte filtre", - "search_filters_date_option_none": "Siden begynnelsen", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Forespurt video finnes ikke i denne spillelisten. Trykk her for spillelistens hjemmeside.", - "Standard YouTube license": "Standard YouTube-lisens", - "Song: ": "Sang: ", - "channel_tab_streams_label": "Direktesendinger", - "channel_tab_shorts_label": "Kortvideoer", - "channel_tab_playlists_label": "Spillelister", - "Music in this video": "Musikk i denne videoen", - "channel_tab_channels_label": "Kanaler", - "Artist: ": "Artist: ", - "Album: ": "Album: ", - "Download is disabled": "Nedlasting er avskrudd", - "Channel Sponsor": "Kanalsponsor", - "Import YouTube playlist (.csv)": "Importer YouTube-spilleliste (.csv)", - "channel_tab_podcasts_label": "Podkaster", - "channel_tab_releases_label": "Utgaver", - "generic_button_delete": "Slett", - "generic_button_edit": "Endre", - "generic_button_save": "Lagre", - "generic_button_cancel": "Avbryt", - "generic_button_rss": "RSS", - "playlist_button_add_items": "Legg til videoer", - "generic_channels_count": "{{count}} kanal", - "generic_channels_count_plural": "{{count}} kanaler", - "Import YouTube watch history (.json)": "Importere YouTube visningshistorikk (.json)" -} diff --git a/invidious/locales/nl.json b/invidious/locales/nl.json deleted file mode 100755 index a30bc5b..0000000 --- a/invidious/locales/nl.json +++ /dev/null @@ -1,491 +0,0 @@ -{ - "LIVE": "LIVE", - "Shared `x` ago": "Gedeeld: `x` geleden", - "Unsubscribe": "Deabonneren", - "Subscribe": "Abonneren", - "View channel on YouTube": "Bekijk kanaal op YouTube", - "View playlist on YouTube": "Bekijk afspeellijst op YouTube", - "newest": "nieuwste", - "oldest": "oudste", - "popular": "populair", - "last": "laatste", - "Next page": "Volgende pagina", - "Previous page": "Vorige pagina", - "Clear watch history?": "Wil je de kijkgeschiedenis wissen?", - "New password": "Nieuw wachtwoord", - "New passwords must match": "De nieuwe wachtwoorden moeten overeenkomen", - "Authorize token?": "Wil je de toegangssleutel machtigen?", - "Authorize token for `x`?": "Wil je de toegangssleutel machtigen voor `x`?", - "Yes": "Ja", - "No": "Nee", - "Import and Export Data": "Gegevens im- en exporteren", - "Import": "Importeren", - "Import Invidious data": "JSON-gegevens Invidious importeren", - "Import YouTube subscriptions": "YouTube-/OPML-abonnementen importeren", - "Import FreeTube subscriptions (.db)": "FreeTube-abonnementen importeren (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe-abonnementen importeren (.json)", - "Import NewPipe data (.zip)": "NewPipe-gegevens importeren (.zip)", - "Export": "Exporteren", - "Export subscriptions as OPML": "Abonnementen exporteren als OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Abonnementen exporteren als OPML (voor NewPipe en FreeTube)", - "Export data as JSON": "Invidious-gegevens naar JSON exporteren", - "Delete account?": "Wilt u uw account verwijderen?", - "History": "Geschiedenis", - "An alternative front-end to YouTube": "Een alternatief front-end voor YouTube", - "JavaScript license information": "JavaScript-licentieinformatie", - "source": "bron", - "Log in": "Inloggen", - "Log in/register": "Inloggen/Registreren", - "User ID": "Gebruikers-id", - "Password": "Wachtwoord", - "Time (h:mm:ss):": "Tijd (h:mm:ss):", - "Text CAPTCHA": "Tekst-CAPTCHA", - "Image CAPTCHA": "Afbeelding-CAPTCHA", - "Sign In": "Inloggen", - "Register": "Registreren", - "E-mail": "E-mailadres", - "Preferences": "Instellingen", - "preferences_category_player": "Spelerinstellingen", - "preferences_video_loop_label": "Altijd herhalen: ", - "preferences_autoplay_label": "Automatisch afspelen: ", - "preferences_continue_label": "Standaard volgende video afspelen: ", - "preferences_continue_autoplay_label": "Volgende video automatisch afspelen: ", - "preferences_listen_label": "Standaard luisteren: ", - "preferences_local_label": "Video's afspelen via proxy? ", - "preferences_speed_label": "Standaard afspeelsnelheid: ", - "preferences_quality_label": "Voorkeurskwaliteit: ", - "preferences_volume_label": "Spelervolume: ", - "preferences_comments_label": "Reacties tonen van: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Standaard ondertiteling: ", - "Fallback captions: ": "Alternatieve ondertiteling: ", - "preferences_related_videos_label": "Gerelateerde video's tonen? ", - "preferences_annotations_label": "Standaard annotaties tonen? ", - "preferences_extend_desc_label": "Breid videobeschrijving automatisch uit: ", - "preferences_vr_mode_label": "Interactieve 360-graden-video's (vereist WebGL) ", - "preferences_category_visual": "Visuele instellingen", - "preferences_player_style_label": "Speler vormgeving ", - "Dark mode: ": "Donkere modus: ", - "preferences_dark_mode_label": "Thema: ", - "dark": "donker", - "light": "licht", - "preferences_thin_mode_label": "Smalle modus: ", - "preferences_category_subscription": "Abonnementsinstellingen", - "preferences_annotations_subscribed_label": "Standaard annotaties tonen voor geabonneerde kanalen? ", - "Redirect homepage to feed: ": "Startpagina omleiden naar feed: ", - "preferences_max_results_label": "Aantal te tonen video's in feed: ", - "preferences_sort_label": "Video's sorteren op: ", - "published": "publicatiedatum", - "published - reverse": "publicatiedatum - omgekeerd", - "alphabetically": "alfabetische volgorde", - "alphabetically - reverse": "alfabetische volgorde - omgekeerd", - "channel name": "kanaalnaam", - "channel name - reverse": "kanaalnaam - omgekeerd", - "Only show latest video from channel: ": "Alleen nieuwste video van kanaal tonen: ", - "Only show latest unwatched video from channel: ": "Alleen nieuwste niet-bekeken video van kanaal tonen: ", - "preferences_unseen_only_label": "Alleen niet-bekeken videos tonen: ", - "preferences_notifications_only_label": "Alleen meldingen tonen (als die er zijn): ", - "Enable web notifications": "Systemmeldingen inschakelen", - "`x` uploaded a video": "`x` heeft een video geüpload", - "`x` is live": "`x` zendt nu live uit", - "preferences_category_data": "Gegevensinstellingen", - "Clear watch history": "Kijkgeschiedenis wissen", - "Import/export data": "Gegevens im-/exporteren", - "Change password": "Wachtwoord wijzigen", - "Manage subscriptions": "Abonnementen beheren", - "Manage tokens": "Toegangssleutels beheren", - "Watch history": "Kijkgeschiedenis", - "Delete account": "Account verwijderen", - "preferences_category_admin": "Beheerdersinstellingen", - "preferences_default_home_label": "Standaard startpagina: ", - "preferences_feed_menu_label": "Feedmenu: ", - "Top enabled: ": "Bovenkant inschakelen? ", - "CAPTCHA enabled: ": "CAPTCHA gebruiken? ", - "Login enabled: ": "Inloggen toestaan? ", - "Registration enabled: ": "Registratie toestaan? ", - "Report statistics: ": "Statistieken bijhouden? ", - "Save preferences": "Instellingen opslaan", - "Subscription manager": "Abonnementen beheren", - "Token manager": "Toegangssleutelbeheerder", - "Token": "Toegangssleutel", - "Import/export": "Importeren/Exporteren", - "unsubscribe": "deabonneren", - "revoke": "Intrekken", - "Subscriptions": "Abonnementen", - "search": "zoeken", - "Log out": "Uitloggen", - "Source available here.": "De broncode is hier beschikbaar.", - "View JavaScript license information.": "JavaScript-licentieinformatie tonen.", - "View privacy policy.": "Privacybeleid tonen.", - "Trending": "Uitgelicht", - "Public": "Publiek", - "Unlisted": "Verborgen", - "Private": "Privé", - "View all playlists": "Bekijk alle afspeellijsten", - "Updated `x` ago": "`x` geleden aangepast", - "Delete playlist `x`?": "Afspeellijst `x` verwijderen?", - "Delete playlist": "Verwijder afspeellijst", - "Create playlist": "Nieuwe afspeellijst", - "Title": "Titel", - "Playlist privacy": "Afspeellijst privacy", - "Editing playlist `x`": "Afspeellijst `x` wijzigen", - "Show more": "Toon meer", - "Show less": "Toon minder", - "Watch on YouTube": "Video bekijken op YouTube", - "Hide annotations": "Annotaties verbergen", - "Show annotations": "Annotaties tonen", - "Genre: ": "Genre: ", - "License: ": "Licentie: ", - "Family friendly? ": "Gezinsvriendelijk? ", - "Wilson score: ": "Wilson-score: ", - "Engagement: ": "Betrokkenheid: ", - "Whitelisted regions: ": "Toegestane regio's: ", - "Blacklisted regions: ": "Geblokkeerde regio's: ", - "Shared `x`": "`x` gedeeld", - "Premieres in `x`": "Verschijnt over `x`", - "Premieres `x`": "Verschijnt op `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hoi! Het lijkt erop dat je JavaScript hebt uitgeschakeld. Klik hier om de reacties te bekijken. Let op: het laden duurt wat langer.", - "View YouTube comments": "YouTube-reacties tonen", - "View more comments on Reddit": "Meer reacties bekijken op Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` reacties tonen", - "": "`x` reacties tonen" - }, - "View Reddit comments": "Reddit-reacties tonen", - "Hide replies": "Antwoorden verbergen", - "Show replies": "Antwoorden tonen", - "Incorrect password": "Wachtwoord is onjuist", - "Wrong answer": "Onjuist antwoord", - "Erroneous CAPTCHA": "Onjuiste CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA is vereist", - "User ID is a required field": "Gebruikers-id is vereist", - "Password is a required field": "Wachtwoord is vereist", - "Wrong username or password": "Onjuiste gebruikersnaam of wachtwoord", - "Password cannot be empty": "Het wachtwoordveld mag niet leeg zijn", - "Password cannot be longer than 55 characters": "Het wachtwoord mag niet langer dan 55 tekens zijn", - "Please log in": "Log in", - "Invidious Private Feed for `x`": "Invidious-privéfeed van `x`", - "channel:`x`": "kanaal:`x`", - "Deleted or invalid channel": "Verwijderd of niet-bestaand kanaal", - "This channel does not exist.": "Dit kanaal bestaat niet.", - "Could not get channel info.": "Kan geen kanaalinformatie ophalen.", - "Could not fetch comments": "Kan reacties niet ophalen", - "`x` ago": "`x` geleden", - "Load more": "Meer laden", - "Could not create mix.": "Kan geen mix maken.", - "Empty playlist": "Lege afspeellijst", - "Not a playlist.": "Ongeldige afspeellijst.", - "Playlist does not exist.": "Afspeellijst bestaat niet.", - "Could not pull trending pages.": "Kan uitgelichte pagina's niet ophalen.", - "Hidden field \"challenge\" is a required field": "Verborgen veld \"uitdaging\" is vereist", - "Hidden field \"token\" is a required field": "Verborgen veld \"toegangssleutel\" is vereist", - "Erroneous challenge": "Ongeldige uitdaging", - "Erroneous token": "Ongeldige toegangssleutel", - "No such user": "Gebruiker bestaat niet", - "Token is expired, please try again": "Toegangssleutel verlopen; probeer het opnieuw", - "English": "Engels", - "English (auto-generated)": "Engels (automatisch gegenereerd)", - "Afrikaans": "Afrikaans", - "Albanian": "Albanees", - "Amharic": "Amhaars", - "Arabic": "Arabisch", - "Armenian": "Armeens", - "Azerbaijani": "Azerbeidzjaans", - "Bangla": "Bangla", - "Basque": "Baskisch", - "Belarusian": "Wit-Rrussisch", - "Bosnian": "Bosnisch", - "Bulgarian": "Bulgaars", - "Burmese": "Birmaans", - "Catalan": "Catalaans", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chinees (Veereenvoudigd)", - "Chinese (Traditional)": "Chinees (Traditioneel)", - "Corsican": "Corsicaans", - "Croatian": "Kroatisch", - "Czech": "Tsjechisch", - "Danish": "Deens", - "Dutch": "Nederlands", - "Esperanto": "Esperanto", - "Estonian": "Ests", - "Filipino": "Filipijns", - "Finnish": "Fins", - "French": "Frans", - "Galician": "Galicisch", - "Georgian": "Georgisch", - "German": "Duits", - "Greek": "Grieks", - "Gujarati": "Gujarati", - "Haitian Creole": "Creools", - "Hausa": "Hausa", - "Hawaiian": "Hawaïaans", - "Hebrew": "Heebreeuws", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Hongaars", - "Icelandic": "IJslands", - "Igbo": "Igbo", - "Indonesian": "Indonesisch", - "Irish": "Iers", - "Italian": "Italiaans", - "Japanese": "Japans", - "Javanese": "Javaans", - "Kannada": "Kannada", - "Kazakh": "Kazachs", - "Khmer": "Khmer", - "Korean": "Koreaans", - "Kurdish": "Koerdisch", - "Kyrgyz": "Kirgizisch", - "Lao": "Laotiaans", - "Latin": "Latijns", - "Latvian": "Lets", - "Lithuanian": "Litouws", - "Luxembourgish": "Luxemburgs", - "Macedonian": "Macedonisch", - "Malagasy": "Malagassisch", - "Malay": "Maleisisch", - "Malayalam": "Malayalam", - "Maltese": "Maltees", - "Maori": "Maorisch", - "Marathi": "Marathi", - "Mongolian": "Mongools", - "Nepali": "Nepalees", - "Norwegian Bokmål": "Noors (Bokmål)", - "Nyanja": "Nyanja", - "Pashto": "Pashto", - "Persian": "Perzisch", - "Polish": "Pools", - "Portuguese": "Portugees", - "Punjabi": "Punjabi", - "Romanian": "Roemeens", - "Russian": "Russisch", - "Samoan": "Samoaans", - "Scottish Gaelic": "Schots-Gaelisch", - "Serbian": "Servisch", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Sinhala", - "Slovak": "Slowaaks", - "Slovenian": "Sloveens", - "Somali": "Somalisch", - "Southern Sotho": "Zuid-Sotho", - "Spanish": "Spaans", - "Spanish (Latin America)": "Spaans (Latijns-Amerika)", - "Sundanese": "Soedanees", - "Swahili": "Swahili", - "Swedish": "Zweeds", - "Tajik": "Tajik", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Thaïs", - "Turkish": "Turks", - "Ukrainian": "Oekraïens", - "Urdu": "Urdu", - "Uzbek": "Oezbeeks", - "Vietnamese": "Vietnamees", - "Welsh": "Welsh", - "Western Frisian": "Fries", - "Xhosa": "Xhosa", - "Yiddish": "Joods", - "Yoruba": "Yoruba", - "Zulu": "Zulu", - "Fallback comments: ": "Terugvallen op ", - "Popular": "Populair", - "Search": "Zoeken", - "Top": "Top", - "About": "Over", - "Rating: ": "Waardering: ", - "preferences_locale_label": "Taal: ", - "View as playlist": "Tonen als afspeellijst", - "Default": "Standaard", - "Music": "Muziek", - "Gaming": "Gamen", - "News": "Nieuws", - "Movies": "Films", - "Download": "Downloaden", - "Download as: ": "Downloaden als: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(bewerkt)", - "YouTube comment permalink": "Link naar YouTube-reactie", - "permalink": "permalink", - "`x` marked it with a ❤": "`x` heeft dit gemarkeerd met ❤", - "Audio mode": "Audiomodus", - "Video mode": "Videomodus", - "channel_tab_videos_label": "Video's", - "Playlists": "Afspeellijsten", - "channel_tab_community_label": "Gemeenschap", - "search_filters_sort_option_relevance": "relevantie", - "search_filters_sort_option_rating": "beoordeling", - "search_filters_sort_option_date": "datum", - "search_filters_sort_option_views": "keren bekeken", - "search_filters_type_label": "Type inhoud", - "search_filters_duration_label": "duur", - "search_filters_features_label": "eigenschappen", - "search_filters_sort_label": "sorteren", - "search_filters_date_option_hour": "uur", - "search_filters_date_option_today": "vandaag", - "search_filters_date_option_week": "week", - "search_filters_date_option_month": "maand", - "search_filters_date_option_year": "jaar", - "search_filters_type_option_video": "video", - "search_filters_type_option_channel": "kanaal", - "search_filters_type_option_playlist": "afspeellijst", - "search_filters_type_option_movie": "film", - "search_filters_type_option_show": "show", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "ondertitels", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Live", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "locatie", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Huidige versie: ", - "Switch Invidious Instance": "Schakel tussen de Invidious Instanties", - "preferences_automatic_instance_redirect_label": "Automatische instantie-omleiding (terugval naar redirect.invidious.io): ", - "preferences_quality_dash_label": "Gewenste DASH-videokwaliteit: ", - "preferences_region_label": "Inhoud land: ", - "preferences_category_misc": "Diverse voorkeuren", - "preferences_show_nick_label": "Toon bijnaam bovenaan: ", - "Released under the AGPLv3 on Github.": "Uitgebracht onder de AGPLv3 op GitHub.", - "search_filters_duration_option_short": "Kort (<4 minuten)", - "next_steps_error_message_refresh": "Vernieuwen", - "next_steps_error_message_go_to_youtube": "Ga naar YouTube", - "footer_donate_page": "Doneren", - "footer_documentation": "Documentatie", - "footer_original_source_code": "Originele bron-code", - "footer_modfied_source_code": "Gewijzigde bron-code", - "adminprefs_modified_source_code_url_label": "URL naar gewijzigde bron-code-opslagplaats", - "next_steps_error_message": "Daarna moet u proberen om: ", - "footer_source_code": "Bron-code", - "search_filters_duration_option_long": "Lang (> 20 minuten)", - "preferences_quality_option_dash": "DASH (adaptieve kwaliteit)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Gemiddeld", - "preferences_quality_option_small": "Klein", - "preferences_quality_dash_option_auto": "Automatisch", - "preferences_quality_dash_option_best": "Beste", - "preferences_quality_dash_option_worst": "Slechtste", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "videoinfo_started_streaming_x_ago": "Stream `x` geleden begonnen", - "videoinfo_watch_on_youTube": "Bekijken op YouTube", - "videoinfo_youTube_embed_link": "Inbedden", - "videoinfo_invidious_embed_link": "Link ingebedde versie", - "download_subtitles": "Ondertiteling - `x` (.vtt)", - "user_created_playlists": "`x` afspeellijsten aangemaakt", - "user_saved_playlists": "`x` afspeellijsten opgeslagen", - "Video unavailable": "Video onbeschikbaar", - "preferences_save_player_pos_label": "Afspeelpositie opslaan: ", - "none": "geen", - "search_filters_features_option_purchased": "Gekocht", - "search_filters_features_option_three_sixty": "360º", - "search_filters_title": "Verfijnen", - "generic_count_days": "{{count}} dag", - "generic_count_days_plural": "{{count}} dagen", - "Chinese (Taiwan)": "Chinees (Taiwan)", - "Dutch (auto-generated)": "Nederlands (automatisch gegenereerd)", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokens", - "generic_count_seconds": "{{count}} second", - "generic_count_seconds_plural": "{{count}} seconden", - "generic_count_weeks": "{{count}} week", - "generic_count_weeks_plural": "{{count}} weken", - "English (United States)": "Engels (Verenigde Staten)", - "generic_views_count": "{{count}} keer bekeken", - "generic_views_count_plural": "{{count}} keren bekeken", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} video's", - "generic_subscriptions_count": "{{count}} abonnement", - "generic_subscriptions_count_plural": "{{count}} abonnementen", - "subscriptions_unseen_notifs_count": "{{count}} ongeziene melding", - "subscriptions_unseen_notifs_count_plural": "{{count}} ongeziene meldingen", - "preferences_watch_history_label": "Kijkgeschiedenis inschakelen: ", - "crash_page_switch_instance": "geprobeerd hebt om een andere instantie te gebruiken", - "Portuguese (auto-generated)": "Portugees (automatisch gegenereerd)", - "Russian (auto-generated)": "Russisch (automatisch gegenereerd)", - "Vietnamese (auto-generated)": "Vietnamees (automatisch gegenereerd)", - "comments_points_count": "{{count}} punt", - "comments_points_count_plural": "{{count}} punten", - "crash_page_before_reporting": "Voor je een bug rapporteert, kijk even na of je:", - "Chinese": "Chinees", - "search_filters_features_option_vr180": "VR180", - "search_filters_date_label": "Uploaddatum", - "Portuguese (Brazil)": "Portugees (Brazilië)", - "Interlingue": "Interlingue", - "Turkish (auto-generated)": "Turks (automatisch gegenereerd)", - "search_filters_date_option_none": "Alle datums", - "generic_subscribers_count": "{{count}} abonnee", - "generic_subscribers_count_plural": "{{count}} abonnees", - "search_message_no_results": "Geen resultaten teruggevonden.", - "search_message_change_filters_or_query": "Probeer je zoekopdracht uit te breiden en/of de filters aan te passen.", - "English (United Kingdom)": "Engels (Verenigd Koninkrijk)", - "German (auto-generated)": "Duits (automatisch gegenereerd)", - "Spanish (Mexico)": "Spaans (Mexico)", - "Spanish (Spain)": "Spaans (Spanje)", - "search_filters_type_option_all": "Alle types", - "crash_page_refresh": "geprobeerd hebt om de pagina te herladen", - "comments_view_x_replies": "{{count}} reactie bekijken", - "comments_view_x_replies_plural": "{{count}} reacties bekijken", - "generic_count_years": "{{count}} jaar", - "generic_count_years_plural": "{{count}} jaren", - "generic_count_months": "{{count}} maand", - "generic_count_months_plural": "{{count}} maanden", - "generic_count_hours": "{{count}} uur", - "generic_count_hours_plural": "{{count}} uren", - "generic_count_minutes": "{{count}} minuut", - "generic_count_minutes_plural": "{{count}} minuten", - "French (auto-generated)": "Frans (automatisch gegenereerd)", - "generic_playlists_count": "{{count}} afspeellijst", - "generic_playlists_count_plural": "{{count}} afspeellijsten", - "Chinese (Hong Kong)": "Chinees (Hongkong)", - "Korean (auto-generated)": "Koreaans (automatisch gegenereerd)", - "search_filters_apply_button": "Geselecteerd filters toepassen", - "search_message_use_another_instance": " Je kan ook zoeken op een andere instantie.", - "Cantonese (Hong Kong)": "Kantonees (Hongkong)", - "Chinese (China)": "Chinees (China)", - "crash_page_read_the_faq": "de veelgestelde vragen (FAQ) gelezen hebt", - "crash_page_search_issue": "gezocht hebt op bestaande problemen op GitHub", - "search_filters_duration_option_none": "Alle lengtes", - "Indonesian (auto-generated)": "Indonesisch (automatisch gegenereerd)", - "Italian (auto-generated)": "Italiaans (automatisch gegenereerd)", - "Japanese (auto-generated)": "Japans (automatisch gegenereerd)", - "Spanish (auto-generated)": "Spaans (automatisch gegenereerd)", - "crash_page_you_found_a_bug": "Je lijkt een bug in Invidious tegengekomen te zijn!", - "search_filters_duration_option_medium": "Gemiddeld (4 - 20 minuten)", - "crash_page_report_issue": "Indien het bovenstaande niet hielp, gelieve dan een nieuw ticket op GitHub te openen (liefst in het Engels) en neem de volgende tekst op in je bericht (gelieve deze NIET te vertalen):", - "channel_tab_podcasts_label": "Podcasts", - "Download is disabled": "Downloaden is uitgeschakeld", - "Channel Sponsor": "Kanaalsponsor", - "channel_tab_streams_label": "Livestreams", - "playlist_button_add_items": "Video's toevoegen", - "Artist: ": "Artiest: ", - "generic_button_save": "Opslaan", - "generic_button_cancel": "Annuleren", - "Album: ": "Album: ", - "channel_tab_shorts_label": "Shorts", - "channel_tab_releases_label": "Uitgaves", - "Song: ": "Lied: ", - "generic_channels_count": "{{count}} kanaal", - "generic_channels_count_plural": "{{count}} kanalen", - "Popular enabled: ": "Populair geactiveerd: ", - "channel_tab_playlists_label": "Afspeellijsten", - "generic_button_edit": "Bewerken", - "Music in this video": "Muziek in deze video", - "generic_button_rss": "RSS", - "channel_tab_channels_label": "Kanalen", - "error_video_not_in_playlist": "De gevraagde video bestaat niet in deze afspeellijst. Klik hier voor de startpagina van de afspeellijst.", - "generic_button_delete": "Verwijderen", - "Import YouTube playlist (.csv)": "YouTube-afspeellijst importeren (.csv)", - "Standard YouTube license": "Standaard YouTube-licentie", - "Import YouTube watch history (.json)": "YouTube-kijkgeschiedenis importeren (.json)" -} diff --git a/invidious/locales/or.json b/invidious/locales/or.json deleted file mode 100755 index 948610f..0000000 --- a/invidious/locales/or.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "preferences_quality_dash_option_720p": "୭୨୦ପି", - "preferences_quality_dash_option_4320p": "୪୩୨୦ପି", - "preferences_quality_dash_option_240p": "୨୪୦ପି", - "preferences_quality_dash_option_2160p": "୨୧୬୦ପି", - "preferences_quality_dash_option_144p": "୧୪୪ପି", - "reddit": "Reddit", - "preferences_quality_dash_option_480p": "୪୮୦ପି", - "preferences_dark_mode_label": "ଥିମ୍: ", - "dark": "ଗାଢ଼", - "published": "ପ୍ରକାଶିତ", - "generic_videos_count": "{{count}}ଟିଏ ଵିଡ଼ିଓ", - "generic_videos_count_plural": "{{count}}ଟି ଵିଡ଼ିଓ", - "generic_button_edit": "ସମ୍ପାଦନା", - "light": "ହାଲୁକା", - "last": "ଗତ", - "New password": "ନୂଆ ପାସ୍‌ୱର୍ଡ଼", - "preferences_quality_dash_option_1440p": "୧୪୪୦ପି", - "preferences_quality_dash_option_360p": "୩୬୦ପି", - "preferences_quality_option_medium": "ମଧ୍ୟମ", - "preferences_quality_dash_option_1080p": "୧୦୮୦ପି", - "youtube": "YouTube", - "preferences_quality_option_hd720": "HD୭୨୦", - "invidious": "Invidious", - "generic_playlists_count": "{{count}}ଟିଏ ଚାଳନାତାଲିକା", - "generic_playlists_count_plural": "{{count}}ଟି ଚାଳନାତାଲିକା", - "Yes": "ହଁ", - "No": "ନାହିଁ" -} diff --git a/invidious/locales/pl.json b/invidious/locales/pl.json deleted file mode 100755 index 0d18e90..0000000 --- a/invidious/locales/pl.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "NA ŻYWO", - "Shared `x` ago": "Udostępniono `x` temu", - "Unsubscribe": "Odsubskrybuj", - "Subscribe": "Subskrybuj", - "View channel on YouTube": "Wyświetl kanał na YouTube", - "View playlist on YouTube": "Zobacz playlistę na YouTube", - "newest": "najnowsze", - "oldest": "najstarsze", - "popular": "popularne", - "last": "ostatnie", - "Next page": "Następna strona", - "Previous page": "Poprzednia strona", - "Clear watch history?": "Wyczyścić historię?", - "New password": "Nowe hasło", - "New passwords must match": "Nowe hasła muszą być identyczne", - "Authorize token?": "Autoryzować token?", - "Authorize token for `x`?": "Autoryzować token dla `x`?", - "Yes": "Tak", - "No": "Nie", - "Import and Export Data": "Import i eksport danych", - "Import": "Import", - "Import Invidious data": "Importuj dane JSON Invidious", - "Import YouTube subscriptions": "Importuj subskrybcje z YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importuj subskrybcje z FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importuj subskrybcje z NewPipe (.json)", - "Import NewPipe data (.zip)": "Importuj dane NewPipe (.zip)", - "Export": "Eksport", - "Export subscriptions as OPML": "Eksportuj subskrybcje jako OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Eksportuj subskrybcje jako OPML (dla NewPipe i FreeTube)", - "Export data as JSON": "Eksportuj dane Invidious jako JSON", - "Delete account?": "Usunąć konto?", - "History": "Historia", - "An alternative front-end to YouTube": "Alternatywny front-end dla YouTube", - "JavaScript license information": "Informacja o licencji JavaScript", - "source": "źródło", - "Log in": "Zaloguj", - "Log in/register": "Zaloguj/Zarejestruj", - "User ID": "ID użytkownika", - "Password": "Hasło", - "Time (h:mm:ss):": "Godzina (h:mm:ss):", - "Text CAPTCHA": "Tekst CAPTCHA", - "Image CAPTCHA": "Obraz CAPTCHA", - "Sign In": "Zaloguj się", - "Register": "Zarejestruj się", - "E-mail": "E-mail", - "Preferences": "Preferencje", - "preferences_category_player": "Ustawienia odtwarzacza", - "preferences_video_loop_label": "Zawsze zapętlaj: ", - "preferences_autoplay_label": "Autoodtwarzanie: ", - "preferences_continue_label": "Domyślnie odtwarzaj następny: ", - "preferences_continue_autoplay_label": "Odtwórz następny film: ", - "preferences_listen_label": "Tryb dźwiękowy: ", - "preferences_local_label": "Wideo przez proxy? ", - "preferences_speed_label": "Domyślna prędkość: ", - "preferences_quality_label": "Preferowana jakość filmów: ", - "preferences_volume_label": "Głośność odtwarzacza: ", - "preferences_comments_label": "Domyślne komentarze: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Domyślne napisy: ", - "Fallback captions: ": "Zastępcze napisy: ", - "preferences_related_videos_label": "Pokaż powiązane filmy? ", - "preferences_annotations_label": "Domyślnie pokazuj adnotacje: ", - "preferences_extend_desc_label": "Automatycznie rozwijaj opisy filmów: ", - "preferences_vr_mode_label": "Interaktywne filmy 360 stopni (wymaga WebGL): ", - "preferences_category_visual": "Preferencje wizualne", - "preferences_player_style_label": "Styl odtwarzacza: ", - "Dark mode: ": "Ciemny motyw: ", - "preferences_dark_mode_label": "Motyw: ", - "dark": "ciemny", - "light": "jasny", - "preferences_thin_mode_label": "Tryb minimalny: ", - "preferences_category_misc": "Różne preferencje", - "preferences_automatic_instance_redirect_label": "Automatycznie przekierowanie instancji (powrót do redirect.invidious.io): ", - "preferences_category_subscription": "Preferencje subskrybcji", - "preferences_annotations_subscribed_label": "Domyślnie wyświetlaj adnotacje dla subskrybowanych kanałów: ", - "Redirect homepage to feed: ": "Przekieruj stronę główną do subskrybcji: ", - "preferences_max_results_label": "Liczba filmów widoczna na stronie subskrybcji: ", - "preferences_sort_label": "Sortuj filmy: ", - "published": "po czasie publikacji", - "published - reverse": "po czasie publikacji od najstarszych", - "alphabetically": "alfabetycznie", - "alphabetically - reverse": "alfabetycznie od tyłu", - "channel name": "po nazwie kanału", - "channel name - reverse": "po nazwie kanału od tyłu", - "Only show latest video from channel: ": "Pokazuj tylko najnowszy film z kanału: ", - "Only show latest unwatched video from channel: ": "Pokazuj tylko najnowszy nie obejrzany film z kanału: ", - "preferences_unseen_only_label": "Pokazuj tylko nie obejrzane: ", - "preferences_notifications_only_label": "Pokazuj tylko powiadomienia (jeśli są): ", - "Enable web notifications": "Włącz powiadomienia", - "`x` uploaded a video": "`x` dodał film", - "`x` is live": "'x ' jest na żywo", - "preferences_category_data": "Preferencje danych", - "Clear watch history": "Wyczyść historię", - "Import/export data": "Import/Eksport danych", - "Change password": "Zmień hasło", - "Manage subscriptions": "Organizuj subskrybcje", - "Manage tokens": "Zarządzaj tokenami", - "Watch history": "Historia", - "Delete account": "Usuń konto", - "preferences_category_admin": "Preferencje administratora", - "preferences_default_home_label": "Domyślna strona główna: ", - "preferences_feed_menu_label": "Menu aktualności ", - "preferences_show_nick_label": "Pokaż pseudonim na górze: ", - "Top enabled: ": "\"Top\" aktywne: ", - "CAPTCHA enabled: ": "CAPTCHA aktywna? ", - "Login enabled: ": "Logowanie włączone? ", - "Registration enabled: ": "Rejestracja włączona? ", - "Report statistics: ": "Raportować statystyki? ", - "Save preferences": "Zapisz preferencje", - "Subscription manager": "Menedżer subskrypcji", - "Token manager": "Menedżer tokenów", - "Token": "Token", - "Import/export": "Import/Eksport", - "unsubscribe": "odsubskrybuj", - "revoke": "cofnij", - "Subscriptions": "Subskrybcje", - "search": "szukaj", - "Log out": "Wyloguj", - "Source available here.": "Kod źródłowy dostępny tutaj.", - "View JavaScript license information.": "Wyświetl informację o licencji JavaScript.", - "View privacy policy.": "Polityka prywatności.", - "Trending": "Na czasie", - "Public": "Publiczne", - "Unlisted": "Niewidoczne", - "Private": "Prywatne", - "View all playlists": "Pokaż wszystkie playlisty", - "Updated `x` ago": "Zaktualizowano `x` temu", - "Delete playlist `x`?": "Usunąć playlistę 'x '?", - "Delete playlist": "Usuń playlistę", - "Create playlist": "Utwórz playlistę", - "Title": "Tytuł", - "Playlist privacy": "Widoczność playlisty", - "Editing playlist `x`": "Edycja playlisty `x`", - "Show more": "Pokaż więcej", - "Show less": "Pokaż mniej", - "Watch on YouTube": "Zobacz film na YouTube", - "Switch Invidious Instance": "Przełącz instancję Invidious", - "Hide annotations": "Ukryj adnotacje", - "Show annotations": "Pokaż adnotacje", - "Genre: ": "Gatunek: ", - "License: ": "Licencja: ", - "Family friendly? ": "Przyjazny rodzinie? ", - "Wilson score: ": "Punktacja Wilsona: ", - "Engagement: ": "Zaangażowanie: ", - "Whitelisted regions: ": "Dostępny na obszarach: ", - "Blacklisted regions: ": "Niedostępny na obszarach: ", - "Shared `x`": "Udostępniono `x`", - "Premieres in `x`": "Publikacja za `x`", - "Premieres `x`": "Publikacja `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Cześć! Wygląda na to, że masz wyłączoną obsługę JavaScriptu. Kliknij tutaj, żeby zobaczyć komentarze. Pamiętaj, że wczytywanie może potrwać dłużej.", - "View YouTube comments": "Wyświetl komentarze z YouTube", - "View more comments on Reddit": "Wyświetl więcej komentarzy na Reddicie", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Wyświetl `x` komentarz", - "": "Wyświetl `x` komentarzy" - }, - "View Reddit comments": "Wyświetl komentarze z Redditta", - "Hide replies": "Ukryj odpowiedzi", - "Show replies": "Pokaż odpowiedzi", - "Incorrect password": "Niepoprawne hasło", - "Wrong answer": "Niepoprawna odpowiedź", - "Erroneous CAPTCHA": "CAPTCHA wykonane błędnie", - "CAPTCHA is a required field": "CAPTCHA jest polem wymaganym", - "User ID is a required field": "ID użytkownika jest polem wymaganym", - "Password is a required field": "Hasło jest polem wymaganym", - "Wrong username or password": "Niepoprawny login lub hasło", - "Password cannot be empty": "Hasło nie może być puste", - "Password cannot be longer than 55 characters": "Hasło nie może być dłuższe niż 55 znaków", - "Please log in": "Proszę się zalogować", - "Invidious Private Feed for `x`": "Prywatne aktualności dla `x`", - "channel:`x`": "kanał:`x", - "Deleted or invalid channel": "Usunięty lub niepoprawny kanał", - "This channel does not exist.": "Ten kanał nie istnieje.", - "Could not get channel info.": "Nie udało się uzyskać informacji o kanale.", - "Could not fetch comments": "Nie udało się pobrać komentarzy", - "`x` ago": "`x` temu", - "Load more": "Wczytaj więcej", - "Could not create mix.": "Nie udało się utworzyć miksu.", - "Empty playlist": "Lista odtwarzania jest pusta", - "Not a playlist.": "Niepoprawna lista.", - "Playlist does not exist.": "Lista odtwarzania nie istnieje.", - "Could not pull trending pages.": "Nie udało się pobrać strony na czasie.", - "Hidden field \"challenge\" is a required field": "Ukryte pole \"wyzwanie\" jest polem wymaganym", - "Hidden field \"token\" is a required field": "Ukryte pole \"token\" jest polem wymaganym", - "Erroneous challenge": "Niepoprawne wyzwanie", - "Erroneous token": "Niepoprawny token", - "No such user": "Niepoprawny użytkownik", - "Token is expired, please try again": "Token wygasł, spróbuj ponownie", - "English": "angielski", - "English (auto-generated)": "angielski (automatycznie generowane)", - "Afrikaans": "afrykanerski", - "Albanian": "albański", - "Amharic": "amharski", - "Arabic": "arabski", - "Armenian": "armeński", - "Azerbaijani": "azerski", - "Bangla": "bengalski", - "Basque": "baskijski", - "Belarusian": "białoruski", - "Bosnian": "bośniacki", - "Bulgarian": "bułgarski", - "Burmese": "birmański", - "Catalan": "kataloński", - "Cebuano": "cebuański", - "Chinese (Simplified)": "chiński (uproszczony)", - "Chinese (Traditional)": "chiński (tradycyjny)", - "Corsican": "korsykański", - "Croatian": "chorwacki", - "Czech": "czeski", - "Danish": "duński", - "Dutch": "holenderski", - "Esperanto": "esperanto", - "Estonian": "estoński", - "Filipino": "filipiński", - "Finnish": "fiński", - "French": "francuski", - "Galician": "galicyjski", - "Georgian": "gruziński", - "German": "niemiecki", - "Greek": "grecki", - "Gujarati": "gudźarati", - "Haitian Creole": "kreolski haitański", - "Hausa": "hausa", - "Hawaiian": "hawajski", - "Hebrew": "hebrajski", - "Hindi": "hindi", - "Hmong": "hmong", - "Hungarian": "węgierski", - "Icelandic": "islandzki", - "Igbo": "ibo", - "Indonesian": "indonezyjski", - "Irish": "irlandzki", - "Italian": "włoski", - "Japanese": "japoński", - "Javanese": "jawajski", - "Kannada": "kannada", - "Kazakh": "kazachski", - "Khmer": "khmerski", - "Korean": "koreański", - "Kurdish": "kurdyjski", - "Kyrgyz": "kirgiski", - "Lao": "laotański", - "Latin": "łaciński", - "Latvian": "łotewski", - "Lithuanian": "litewski", - "Luxembourgish": "luksemburski", - "Macedonian": "macedoński", - "Malagasy": "malgaski", - "Malay": "malajski", - "Malayalam": "malajalam", - "Maltese": "maltański", - "Maori": "maoryski", - "Marathi": "marathi", - "Mongolian": "mongolski", - "Nepali": "nepalski", - "Norwegian Bokmål": "norweski", - "Nyanja": "njandża", - "Pashto": "paszto", - "Persian": "perski", - "Polish": "polski", - "Portuguese": "portugalski", - "Punjabi": "pendżabski", - "Romanian": "rumuński", - "Russian": "rosyjski", - "Samoan": "samoański", - "Scottish Gaelic": "gaelicki szkocki", - "Serbian": "serbski", - "Shona": "shona", - "Sindhi": "sindhi", - "Sinhala": "syngaleski", - "Slovak": "słowacki", - "Slovenian": "słoweński", - "Somali": "somalijski", - "Southern Sotho": "sotho południowy", - "Spanish": "hiszpański", - "Spanish (Latin America)": "hiszpański (Ameryka Łacińska)", - "Sundanese": "sundajski", - "Swahili": "suahili", - "Swedish": "szwedzki", - "Tajik": "tadżycki", - "Tamil": "tamilski", - "Telugu": "telugu", - "Thai": "tajski", - "Turkish": "turecki", - "Ukrainian": "ukraiński", - "Urdu": "urdu", - "Uzbek": "uzbecki", - "Vietnamese": "wietnamski", - "Welsh": "walijski", - "Western Frisian": "zachodniofryzyjski", - "Xhosa": "xhosa", - "Yiddish": "jidysz", - "Yoruba": "joruba", - "Zulu": "zuluski", - "Fallback comments: ": "Zastępcze komentarze: ", - "Popular": "Popularne", - "Search": "Szukaj", - "Top": "Top", - "About": "Informacje", - "Rating: ": "Ocena: ", - "preferences_locale_label": "Język: ", - "View as playlist": "Obejrzyj w playliście", - "Default": "Domyślnie", - "Music": "Muzyka", - "Gaming": "Gry", - "News": "Wiadomości", - "Movies": "Filmy", - "Download": "Pobierz", - "Download as: ": "Pobierz jako: ", - "Download is disabled": "Pobieranie jest wyłączone", - "%A %B %-d, %Y": "%A, %-d %B %Y", - "(edited)": "(edytowany)", - "YouTube comment permalink": "Odnośnik bezpośredni do komentarza na YouTube", - "permalink": "bezpośredni odnośnik", - "`x` marked it with a ❤": "`x` oznaczonych ❤", - "Audio mode": "Tryb audio", - "Video mode": "Tryb wideo", - "channel_tab_videos_label": "Wideo", - "Playlists": "Playlisty", - "channel_tab_community_label": "Społeczność", - "search_filters_sort_option_relevance": "Trafność", - "search_filters_sort_option_rating": "Ocena", - "search_filters_sort_option_date": "Data przesłania", - "search_filters_sort_option_views": "Liczba wyświetleń", - "search_filters_type_label": "Typ", - "search_filters_duration_label": "Długość", - "search_filters_features_label": "Funkcje", - "search_filters_sort_label": "Sortuj wg", - "search_filters_date_option_hour": "Ostatnia godzina", - "search_filters_date_option_today": "Dzisiaj", - "search_filters_date_option_week": "W tym tygodniu", - "search_filters_date_option_month": "W tym miesiącu", - "search_filters_date_option_year": "W tym roku", - "search_filters_type_option_video": "Wideo", - "search_filters_type_option_channel": "Kanał", - "search_filters_type_option_playlist": "Playlista", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Pokaż", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Napisy/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Na żywo", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Lokalizacja", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Aktualna wersja: ", - "next_steps_error_message": "Po czym należy spróbować: ", - "next_steps_error_message_refresh": "Odśwież", - "next_steps_error_message_go_to_youtube": "Przejdź do YouTube", - "invidious": "Invidious", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokeny", - "tokens_count_2": "{{count}} tokenów", - "generic_videos_count_0": "{{count}} film", - "generic_videos_count_1": "{{count}} filmy", - "generic_videos_count_2": "{{count}} filmów", - "generic_views_count_0": "{{count}} wyświetlenie", - "generic_views_count_1": "{{count}} wyświetlenia", - "generic_views_count_2": "{{count}} wyświetleń", - "generic_playlists_count_0": "{{count}} playlista", - "generic_playlists_count_1": "{{count}} playlisty", - "generic_playlists_count_2": "{{count}} playlist", - "generic_subscribers_count_0": "{{count}} subskrybent", - "generic_subscribers_count_1": "{{count}} subskrybentów", - "generic_subscribers_count_2": "{{count}} subskrybentów", - "generic_subscriptions_count_0": "{{count}} subskrypcja", - "generic_subscriptions_count_1": "{{count}} subskrypcje", - "generic_subscriptions_count_2": "{{count}} subskrypcji", - "comments_view_x_replies_0": "Pokaż {{count}} odpowiedź", - "comments_view_x_replies_1": "Pokaż {{count}} odpowiedzi", - "comments_view_x_replies_2": "Pokaż {{count}} odpowiedzi", - "comments_points_count_0": "{{count}} punkt", - "comments_points_count_1": "{{count}} punkty", - "comments_points_count_2": "{{count}} punktów", - "generic_count_months_0": "{{count}} miesiąc", - "generic_count_months_1": "{{count}} miesiące", - "generic_count_months_2": "{{count}} miesięcy", - "generic_count_weeks_0": "{{count}} tydzień", - "generic_count_weeks_1": "{{count}} tygodnie", - "generic_count_weeks_2": "{{count}} tygodni", - "generic_count_days_0": "{{count}} dzień", - "generic_count_days_1": "{{count}} dni", - "generic_count_days_2": "{{count}} dni", - "generic_count_hours_0": "{{count}} godzina", - "generic_count_hours_1": "{{count}} godziny", - "generic_count_hours_2": "{{count}} godzin", - "generic_count_seconds_0": "{{count}} sekunda", - "generic_count_seconds_1": "{{count}} sekundy", - "generic_count_seconds_2": "{{count}} sekund", - "crash_page_you_found_a_bug": "Wygląda na to, że udało ci się znaleźć błąd w Invidious!", - "crash_page_refresh": "próbowano odświeżyć stronę", - "crash_page_switch_instance": "próbowano użyć innej instancji", - "crash_page_read_the_faq": "przeczytaj Najczęściej zadawane pytania (FAQ)", - "crash_page_search_issue": "próbowano poszukać istniejących zgłoszeń na GitHubie", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "subscriptions_unseen_notifs_count_0": "{{count}} nieodczytane powiadomienie", - "subscriptions_unseen_notifs_count_1": "{{count}} nieodczytane powiadomienia", - "subscriptions_unseen_notifs_count_2": "{{count}} nieodczytanych powiadomień", - "generic_count_minutes_0": "{{count}} minuta", - "generic_count_minutes_1": "{{count}} minuty", - "generic_count_minutes_2": "{{count}} minut", - "generic_count_years_0": "{{count}} rok", - "generic_count_years_1": "{{count}} lata", - "generic_count_years_2": "{{count}} lat", - "crash_page_before_reporting": "Przed zgłoszeniem błędu, upewnij się, że masz:", - "crash_page_report_issue": "Jeżeli nic z powyższych opcji nie pomogło, proszę otworzyć nowe zgłoszenie na GitHubie (najlepiej po angielsku) i dodać poniższy tekst w twojej wiadomości (NIE tłumacz tego tekstu):", - "preferences_quality_dash_option_auto": "Automatyczna", - "preferences_quality_dash_option_best": "Najlepsza", - "preferences_quality_dash_option_worst": "Najgorsza", - "preferences_quality_option_dash": "DASH (jakość adaptacyjna)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Średnia", - "preferences_quality_option_small": "Mała", - "preferences_quality_dash_label": "Preferowana jakość filmu DASH: ", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "search_filters_features_option_purchased": "Zakupione", - "search_filters_features_option_three_sixty": "360°", - "footer_donate_page": "Dotacja", - "none": "żadne", - "videoinfo_started_streaming_x_ago": "Transmisja rozpoczęta `x` temu", - "videoinfo_watch_on_youTube": "Obejrzyj na YouTube", - "videoinfo_youTube_embed_link": "Odtwarzacz typu Embed", - "videoinfo_invidious_embed_link": "Link do Embed", - "download_subtitles": "Napisy - `x` (.vtt)", - "user_created_playlists": "`x` utworzonych playlist", - "user_saved_playlists": "`x` zapisanych playlist", - "Video unavailable": "Film niedostępny", - "preferences_save_player_pos_label": "Zapisz pozycję odtwarzania: ", - "preferences_region_label": "Kraj treści: ", - "Released under the AGPLv3 on Github.": "Wydany na licencji AGPLv3 na GitHub.", - "search_filters_duration_option_short": "Krótka (< 4 minut)", - "search_filters_duration_option_long": "Długa (> 20 minut)", - "footer_documentation": "Dokumentacja", - "footer_source_code": "Kod źródłowy", - "footer_modfied_source_code": "Zmodyfikowany kod źródłowy", - "footer_original_source_code": "Oryginalny kod źródłowy", - "adminprefs_modified_source_code_url_label": "Adres URL do repozytorium ze zmodyfikowanym kodem źródłowym", - "English (United Kingdom)": "angielski (Wielka Brytania)", - "English (United States)": "angielski (Stany Zjednoczone)", - "Cantonese (Hong Kong)": "kantoński (Hongkong)", - "Chinese": "chiński", - "Chinese (China)": "chiński (Chiny)", - "Chinese (Hong Kong)": "chiński (Hongkong)", - "Chinese (Taiwan)": "chiński (Tajwan)", - "Dutch (auto-generated)": "niderlandzki (wygenerowany automatycznie)", - "French (auto-generated)": "francuski (wygenerowany automatycznie)", - "German (auto-generated)": "niemiecki (wygenerowany automatycznie)", - "Indonesian (auto-generated)": "indonezyjski (wygenerowany automatycznie)", - "Interlingue": "interlingue", - "Italian (auto-generated)": "włoski (wygenerowany automatycznie)", - "Korean (auto-generated)": "koreański (wygenerowany automatycznie)", - "Spanish (auto-generated)": "hiszpański (wygenerowany automatycznie)", - "Spanish (Mexico)": "hiszpański (Meksyk)", - "Spanish (Spain)": "hiszpański (Hiszpania)", - "Turkish (auto-generated)": "turecki (wygenerowany automatycznie)", - "Vietnamese (auto-generated)": "wietnamski (wygenerowany automatycznie)", - "Japanese (auto-generated)": "japoński (wygenerowany automatycznie)", - "Russian (auto-generated)": "rosyjski (wygenerowany automatycznie)", - "Portuguese (auto-generated)": "portugalski (wygenerowany automatycznie)", - "Portuguese (Brazil)": "portugalski (Brazylia)", - "search_filters_title": "Filtr", - "error_video_not_in_playlist": "Żądany film nie istnieje na tej playliście. Kliknij tutaj, aby przejść do strony głównej playlisty.", - "Popular enabled: ": "Popularne włączone: ", - "search_message_no_results": "Nie znaleziono wyników.", - "preferences_watch_history_label": "Włącz historię oglądania: ", - "search_filters_apply_button": "Zastosuj wybrane filtry", - "search_message_change_filters_or_query": "Spróbuj poszerzyć zapytanie wyszukiwania i/lub zmienić filtry.", - "search_filters_date_label": "Data przesłania", - "search_filters_features_option_vr180": "VR180", - "search_filters_date_option_none": "Dowolna data", - "search_message_use_another_instance": " Możesz także wyszukać w innej instancji.", - "search_filters_type_option_all": "Dowolny typ", - "search_filters_duration_option_none": "Dowolna długość", - "search_filters_duration_option_medium": "Średnia (4-20 minut)", - "channel_tab_streams_label": "Na żywo", - "channel_tab_channels_label": "Kanały", - "channel_tab_playlists_label": "Playlisty", - "channel_tab_shorts_label": "Shorts", - "Music in this video": "Muzyka w tym filmie", - "Artist: ": "Wykonawca: ", - "Album: ": "Album: ", - "Song: ": "Piosenka: ", - "Channel Sponsor": "Sponsor kanału", - "Standard YouTube license": "Standardowa licencja YouTube", - "Import YouTube playlist (.csv)": "Importuj playlistę z YouTube (.csv)", - "generic_button_edit": "Edytuj", - "generic_button_cancel": "Anuluj", - "generic_button_rss": "RSS", - "channel_tab_podcasts_label": "Podkasty", - "channel_tab_releases_label": "Wydania", - "generic_button_delete": "Usuń", - "generic_button_save": "Zapisz", - "playlist_button_add_items": "Dodaj filmy", - "generic_channels_count_0": "{{count}} kanał", - "generic_channels_count_1": "{{count}} kanały", - "generic_channels_count_2": "{{count}} kanałów", - "Import YouTube watch history (.json)": "Importuj historię oglądania z YouTube (.json)", - "toggle_theme": "Przełącz motyw" -} diff --git a/invidious/locales/pt-BR.json b/invidious/locales/pt-BR.json deleted file mode 100755 index af14eb2..0000000 --- a/invidious/locales/pt-BR.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "AO VIVO", - "Shared `x` ago": "Compartilhado `x` atrás", - "Unsubscribe": "Cancelar inscrição", - "Subscribe": "Inscrever-se", - "View channel on YouTube": "Ver canal no YouTube", - "View playlist on YouTube": "Ver lista de reprodução no YouTube", - "newest": "mais recentes", - "oldest": "mais antigos", - "popular": "populares", - "last": "último", - "Next page": "Próxima página", - "Previous page": "Página anterior", - "Clear watch history?": "Limpar histórico de reprodução?", - "New password": "Nova senha", - "New passwords must match": "Nova senha deve ser igual", - "Authorize token?": "Autorizar o token?", - "Authorize token for `x`?": "Autorizar o token para `x`?", - "Yes": "Sim", - "No": "Não", - "Import and Export Data": "Importar e Exportar Dados", - "Import": "Importar", - "Import Invidious data": "Importar dados em JSON do Invidious", - "Import YouTube subscriptions": "Importar inscrições do YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importar inscrições do FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importar inscrições do NewPipe (.json)", - "Import NewPipe data (.zip)": "Importar dados do NewPipe (.zip)", - "Export": "Exportar", - "Export subscriptions as OPML": "Exportar inscrições como OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportar inscrições como OPML (para NewPipe e FreeTube)", - "Export data as JSON": "Exportar dados Invidious como JSON", - "Delete account?": "Excluir conta?", - "History": "Histórico", - "An alternative front-end to YouTube": "Uma interface alternativa para o YouTube", - "JavaScript license information": "Informação de licença do JavaScript", - "source": "código-fonte", - "Log in": "Entrar", - "Log in/register": "Entrar/Registrar", - "User ID": "Usuário", - "Password": "Senha", - "Time (h:mm:ss):": "Hora (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA em texto", - "Image CAPTCHA": "CAPTCHA em imagem", - "Sign In": "Entrar", - "Register": "Registrar", - "E-mail": "E-mail", - "Preferences": "Preferências", - "preferences_category_player": "Preferências do reprodutor", - "preferences_video_loop_label": "Repetir sempre: ", - "preferences_autoplay_label": "Reprodução automática: ", - "preferences_continue_label": "Sempre reproduzir próximo: ", - "preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ", - "preferences_listen_label": "Apenas áudio por padrão: ", - "preferences_local_label": "Usar proxy nos vídeos: ", - "preferences_speed_label": "Velocidade padrão: ", - "preferences_quality_label": "Qualidade de vídeo preferida: ", - "preferences_volume_label": "Volume de reprodução: ", - "preferences_comments_label": "Preferência de comentários: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Preferência de legendas: ", - "Fallback captions: ": "Legendas alternativas: ", - "preferences_related_videos_label": "Mostrar vídeos relacionados: ", - "preferences_annotations_label": "Sempre mostrar anotações: ", - "preferences_extend_desc_label": "Estenda automaticamente a descrição do vídeo: ", - "preferences_vr_mode_label": "Vídeos interativos de 360 graus (requer WebGL): ", - "preferences_category_visual": "Preferências visuais", - "preferences_player_style_label": "Estilo do tocador: ", - "Dark mode: ": "Modo escuro: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "escuro", - "light": "claro", - "preferences_thin_mode_label": "Modo compacto: ", - "preferences_category_misc": "Preferências diversas", - "preferences_automatic_instance_redirect_label": "Redirecionamento de instância automática (fallback para redirect.invidious.io): ", - "preferences_category_subscription": "Preferências de inscrições", - "preferences_annotations_subscribed_label": "Sempre mostrar anotações dos vídeos de canais inscritos: ", - "Redirect homepage to feed: ": "Redirecionar página inicial para o feed: ", - "preferences_max_results_label": "Número de vídeos no feed: ", - "preferences_sort_label": "Ordenar vídeos por: ", - "published": "publicado", - "published - reverse": "publicado - ordem inversa", - "alphabetically": "alfabética", - "alphabetically - reverse": "alfabética - ordem inversa", - "channel name": "nome do canal", - "channel name - reverse": "nome do canal - ordem inversa", - "Only show latest video from channel: ": "Mostrar apenas o vídeo mais recente do canal: ", - "Only show latest unwatched video from channel: ": "Mostrar apenas o vídeo mais recente não visualizado do canal: ", - "preferences_unseen_only_label": "Mostrar apenas vídeos não visualizados: ", - "preferences_notifications_only_label": "Mostrar apenas notificações (se existentes): ", - "Enable web notifications": "Ativar notificações pela web", - "`x` uploaded a video": "`x` publicou um novo vídeo", - "`x` is live": "`x` está ao vivo", - "preferences_category_data": "Preferências de dados", - "Clear watch history": "Limpar histórico de reprodução", - "Import/export data": "Importar/Exportar dados", - "Change password": "Alterar senha", - "Manage subscriptions": "Gerenciar inscrições", - "Manage tokens": "Gerenciar tokens", - "Watch history": "Histórico de reprodução", - "Delete account": "Apagar sua conta", - "preferences_category_admin": "Preferências de administrador", - "preferences_default_home_label": "Página de início padrão: ", - "preferences_feed_menu_label": "Menu do feed: ", - "preferences_show_nick_label": "Mostrar o nickname no topo: ", - "Top enabled: ": "Habilitar destaques: ", - "CAPTCHA enabled: ": "Habilitar CAPTCHA: ", - "Login enabled: ": "Habilitar login: ", - "Registration enabled: ": "Habilitar registro: ", - "Report statistics: ": "Habilitar estatísticas: ", - "Save preferences": "Salvar preferências", - "Subscription manager": "Gerenciador de inscrições", - "Token manager": "Gerenciador de tokens", - "Token": "Token", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokens", - "tokens_count_2": "{{count}} tokens", - "Import/export": "Importar/Exportar", - "unsubscribe": "cancelar inscrição", - "revoke": "revogar", - "Subscriptions": "Inscrições", - "search": "Pesquisar", - "Log out": "Sair", - "Released under the AGPLv3 on Github.": "Lançado sob a AGPLv3 no GitHub.", - "Source available here.": "Código-fonte disponível aqui.", - "View JavaScript license information.": "Ver informações da licença do JavaScript.", - "View privacy policy.": "Ver a política de privacidade.", - "Trending": "Tendências", - "Public": "Público", - "Unlisted": "Não listado", - "Private": "Privado", - "View all playlists": "Mostrar todas listas de reprodução", - "Updated `x` ago": "Atualizado `x` atrás", - "Delete playlist `x`?": "Apagar a playlist `x`?", - "Delete playlist": "Apagar playlist", - "Create playlist": "Criar playlist", - "Title": "Título", - "Playlist privacy": "Privacidade da playlist", - "Editing playlist `x`": "Editando playlist `x`", - "Show more": "Mostrar mais", - "Show less": "Mostrar menos", - "Watch on YouTube": "Assistir no YouTube", - "Switch Invidious Instance": "Mudar a instância do Invidious", - "Hide annotations": "Ocultar anotações", - "Show annotations": "Mostrar anotações", - "Genre: ": "Gênero: ", - "License: ": "Licença: ", - "Family friendly? ": "Filtrar conteúdo impróprio: ", - "Wilson score: ": "Pontuação de Wilson: ", - "Engagement: ": "Empenho: ", - "Whitelisted regions: ": "Regiões permitidas: ", - "Blacklisted regions: ": "Regiões bloqueadas: ", - "Shared `x`": "Compartilhado `x`", - "Premieres in `x`": "Estreia em `x`", - "Premieres `x`": "Estreia `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Oi! Parece que seu JavaScript está desativado. Clique aqui para ver os comentários, entretanto eles podem levar um pouco mais de tempo para carregar.", - "View YouTube comments": "Ver comentários no YouTube", - "View more comments on Reddit": "Ver mais comentários no Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários", - "": "Ver `x` comentários" - }, - "View Reddit comments": "Ver comentários no Reddit", - "Hide replies": "Ocultar respostas", - "Show replies": "Mostrar respostas", - "Incorrect password": "Senha incorreta", - "Wrong answer": "Resposta incorreta", - "Erroneous CAPTCHA": "CAPTCHA inválido", - "CAPTCHA is a required field": "O CAPTCHA é um campo obrigatório", - "User ID is a required field": "O nome de usuário é um campo obrigatório", - "Password is a required field": "A senha é um campo obrigatório", - "Wrong username or password": "Nome de usuário ou senha inválidos", - "Password cannot be empty": "A senha não pode ficar em branco", - "Password cannot be longer than 55 characters": "A senha não pode ter mais que 55 caracteres", - "Please log in": "Por favor, inicie sua sessão", - "Invidious Private Feed for `x`": "Feed Privado do Invidious para `x`", - "channel:`x`": "canal: `x`", - "Deleted or invalid channel": "Este canal foi apagado ou é inválido", - "This channel does not exist.": "Este canal não existe.", - "Could not get channel info.": "Não foi possível obter as informações do canal.", - "Could not fetch comments": "Não foi possível obter os comentários", - "`x` ago": "`x` atrás", - "Load more": "Carregar mais", - "Could not create mix.": "Não foi possível criar o mix.", - "Empty playlist": "Lista de reprodução vazia", - "Not a playlist.": "Não é uma lista de reprodução.", - "Playlist does not exist.": "A lista de reprodução não existe.", - "Could not pull trending pages.": "Não foi possível obter as páginas dos vídeos em alta.", - "Hidden field \"challenge\" is a required field": "O campo oculto \"desafio\" é obrigatório", - "Hidden field \"token\" is a required field": "O campo oculto \"token\" é obrigatório", - "Erroneous challenge": "Desafio inválido", - "Erroneous token": "Token inválido", - "No such user": "Usuário inválido", - "Token is expired, please try again": "Token expirou, tente novamente", - "English": "Inglês", - "English (auto-generated)": "Inglês (gerado automaticamente)", - "Afrikaans": "Africâner", - "Albanian": "Albanês", - "Amharic": "Amárico", - "Arabic": "Árabe", - "Armenian": "Armênio", - "Azerbaijani": "Azeri", - "Bangla": "Bengalês", - "Basque": "Basco", - "Belarusian": "Bielorrusso", - "Bosnian": "Bósnio", - "Bulgarian": "Búlgaro", - "Burmese": "Birmanês", - "Catalan": "Catalão", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chinês Simplificado", - "Chinese (Traditional)": "Chinês Tradicional", - "Corsican": "Corso", - "Croatian": "Croata", - "Czech": "Checo", - "Danish": "Dinamarquês", - "Dutch": "Holandês", - "Esperanto": "Esperanto", - "Estonian": "Estoniano", - "Filipino": "Filipino", - "Finnish": "Finlandês", - "French": "Francês", - "Galician": "Galego", - "Georgian": "Georgiano", - "German": "Alemão", - "Greek": "Grego", - "Gujarati": "Guzerate", - "Haitian Creole": "Crioulo Haitiano", - "Hausa": "Hauçá", - "Hawaiian": "Havaiano", - "Hebrew": "Hebraico", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Húngaro", - "Icelandic": "Islandês", - "Igbo": "Igbo", - "Indonesian": "Indonésio", - "Irish": "Irlandês", - "Italian": "Italiano", - "Japanese": "Japonês", - "Javanese": "Javanês", - "Kannada": "Canarês", - "Kazakh": "Cazaque", - "Khmer": "Khmer", - "Korean": "Coreano", - "Kurdish": "Curdo", - "Kyrgyz": "Quirguiz", - "Lao": "Laosiano", - "Latin": "Latim", - "Latvian": "Letão", - "Lithuanian": "Lituano", - "Luxembourgish": "Luxemburguês", - "Macedonian": "Macedônio", - "Malagasy": "Malgaxe", - "Malay": "Malaia", - "Malayalam": "Malaiala", - "Maltese": "Maltês", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongol", - "Nepali": "Nepalês", - "Norwegian Bokmål": "Bokmål Norueguês", - "Nyanja": "Nianja", - "Pashto": "Pachto", - "Persian": "Persa", - "Polish": "Polonês", - "Portuguese": "Português", - "Punjabi": "Panjábi", - "Romanian": "Romeno", - "Russian": "Russo", - "Samoan": "Samoano", - "Scottish Gaelic": "Ânglico Escocês", - "Serbian": "Sérvio", - "Shona": "Xona", - "Sindhi": "Sindi", - "Sinhala": "Cingalês", - "Slovak": "Eslovaco", - "Slovenian": "Esloveno", - "Somali": "Somali", - "Southern Sotho": "Sesoto", - "Spanish": "Espanhol", - "Spanish (Latin America)": "Espanhol (América Latina)", - "Sundanese": "Sundanês", - "Swahili": "Suaíli", - "Swedish": "Sueco", - "Tajik": "Tajiques", - "Tamil": "Tâmil", - "Telugu": "Telugo", - "Thai": "Tailandês", - "Turkish": "Turco", - "Ukrainian": "Ucraniano", - "Urdu": "Urdu", - "Uzbek": "Uzbeque", - "Vietnamese": "Vietnamita", - "Welsh": "Galês", - "Western Frisian": "Língua Frísia", - "Xhosa": "Xhosa", - "Yiddish": "Iídiche", - "Yoruba": "Iorubá", - "Zulu": "Zulu", - "generic_count_years_0": "{{count}} ano", - "generic_count_years_1": "{{count}} anos", - "generic_count_years_2": "{{count}} anos", - "generic_count_months_0": "{{count}} mês", - "generic_count_months_1": "{{count}} meses", - "generic_count_months_2": "{{count}} meses", - "generic_count_weeks_0": "{{count}} semana", - "generic_count_weeks_1": "{{count}} semanas", - "generic_count_weeks_2": "{{count}} semanas", - "generic_count_days_0": "{{count}} dia", - "generic_count_days_1": "{{count}} dias", - "generic_count_days_2": "{{count}} dias", - "generic_count_hours_0": "{{count}} hora", - "generic_count_hours_1": "{{count}} horas", - "generic_count_hours_2": "{{count}} horas", - "generic_count_minutes_0": "{{count}} minuto", - "generic_count_minutes_1": "{{count}} minutos", - "generic_count_minutes_2": "{{count}} minutos", - "generic_count_seconds_0": "{{count}} segundo", - "generic_count_seconds_1": "{{count}} segundos", - "generic_count_seconds_2": "{{count}} segundos", - "Fallback comments: ": "Comentários alternativos: ", - "Popular": "Populares", - "Search": "Procurar", - "Top": "No topo", - "About": "Sobre", - "Rating: ": "Avaliação: ", - "preferences_locale_label": "Idioma: ", - "View as playlist": "Ver como lista de reprodução", - "Default": "Padrão", - "Music": "Músicas", - "Gaming": "Jogos", - "News": "Notícias", - "Movies": "Filmes", - "Download": "Baixar", - "Download as: ": "Baixar como: ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(editado)", - "YouTube comment permalink": "Link permanente do comentário no YouTube", - "permalink": "Link permanente", - "`x` marked it with a ❤": "`x` foi marcado como ❤", - "Audio mode": "Modo de áudio", - "Video mode": "Modo de vídeo", - "channel_tab_videos_label": "Vídeos", - "Playlists": "Listas de reprodução", - "channel_tab_community_label": "Comunidade", - "search_filters_sort_option_relevance": "relevância", - "search_filters_sort_option_rating": "avaliação", - "search_filters_sort_option_date": "data", - "search_filters_sort_option_views": "visualizações", - "search_filters_type_label": "content_type", - "search_filters_duration_label": "duração", - "search_filters_features_label": "recursos", - "search_filters_sort_label": "ordenar", - "search_filters_date_option_hour": "hora", - "search_filters_date_option_today": "hoje", - "search_filters_date_option_week": "semana", - "search_filters_date_option_month": "mês", - "search_filters_date_option_year": "ano", - "search_filters_type_option_video": "vídeo", - "search_filters_type_option_channel": "Canal", - "search_filters_type_option_playlist": "playlist", - "search_filters_type_option_movie": "filme", - "search_filters_type_option_show": "show", - "search_filters_features_option_hd": "hd", - "search_filters_features_option_subtitles": "legendas", - "search_filters_features_option_c_commons": "creative_commons", - "search_filters_features_option_three_d": "3d", - "search_filters_features_option_live": "ao vivo", - "search_filters_features_option_four_k": "4k", - "search_filters_features_option_location": "localização", - "search_filters_features_option_hdr": "hdr", - "Current version: ": "Versão atual: ", - "next_steps_error_message": "Depois disso, você deve tentar: ", - "next_steps_error_message_refresh": "Atualizar", - "next_steps_error_message_go_to_youtube": "Ir para o YouTube", - "footer_donate_page": "Doe", - "adminprefs_modified_source_code_url_label": "URL para repositório de código fonte modificado", - "search_filters_duration_option_long": "Longo (> 20 minutos)", - "search_filters_duration_option_short": "Curto (< 4 minutos)", - "footer_documentation": "Documentação", - "footer_source_code": "Código fonte", - "footer_original_source_code": "Código fonte original", - "footer_modfied_source_code": "Código-fonte modificado", - "preferences_quality_dash_label": "Qualidade de vídeo do painel preferida: ", - "preferences_region_label": "País do conteúdo: ", - "preferences_quality_dash_option_4320p": "4320p", - "generic_videos_count_0": "{{count}} vídeo", - "generic_videos_count_1": "{{count}} vídeos", - "generic_videos_count_2": "{{count}} vídeos", - "generic_playlists_count_0": "{{count}} lista de reprodução", - "generic_playlists_count_1": "{{count}} listas de reprodução", - "generic_playlists_count_2": "{{count}} listas de reprodução", - "generic_subscribers_count_0": "{{count}} inscrito", - "generic_subscribers_count_1": "{{count}} inscritos", - "generic_subscribers_count_2": "{{count}} inscritos", - "generic_subscriptions_count_0": "{{count}} inscrição", - "generic_subscriptions_count_1": "{{count}} inscrições", - "generic_subscriptions_count_2": "{{count}} inscrições", - "subscriptions_unseen_notifs_count_0": "{{count}} notificação não vista", - "subscriptions_unseen_notifs_count_1": "{{count}} notificações não vistas", - "subscriptions_unseen_notifs_count_2": "{{count}} notificações não vistas", - "comments_view_x_replies_0": "Ver {{count}} resposta", - "comments_view_x_replies_1": "Ver {{count}} respostas", - "comments_view_x_replies_2": "Ver {{count}} respostas", - "comments_points_count_0": "{{count}} ponto", - "comments_points_count_1": "{{count}} pontos", - "comments_points_count_2": "{{count}} pontos", - "crash_page_you_found_a_bug": "Parece que você encontrou um erro no Invidious!", - "crash_page_before_reporting": "Antes de reportar um erro, verifique se você:", - "preferences_save_player_pos_label": "Salvar a posição de reprodução: ", - "search_filters_features_option_purchased": "Comprado", - "crash_page_refresh": "tentou recarregar a página", - "crash_page_switch_instance": "tentou usar outra instância", - "crash_page_search_issue": "procurou por um erro existente no GitHub", - "crash_page_report_issue": "Se nenhuma opção acima ajudou, por favor abra um novo problema no Github (preferencialmente em inglês) e inclua o seguinte texto (NÃO traduza):", - "crash_page_read_the_faq": "leia as Perguntas frequentes (FAQ)", - "generic_views_count_0": "{{count}} visualização", - "generic_views_count_1": "{{count}} visualizações", - "generic_views_count_2": "{{count}} visualizações", - "preferences_quality_option_dash": "DASH (qualidade adaptável)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_small": "Pequeno", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "Melhor", - "preferences_quality_dash_option_worst": "Pior", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "preferences_quality_option_medium": "Médio", - "search_filters_features_option_three_sixty": "360°", - "none": "none", - "videoinfo_watch_on_youTube": "Assistir no YouTube", - "videoinfo_youTube_embed_link": "Embutir", - "videoinfo_invidious_embed_link": "Link Embutido", - "download_subtitles": "Legendas - `x` (.vtt)", - "user_created_playlists": "`x` listas de reprodução criadas", - "user_saved_playlists": "`x` listas de reprodução salvas", - "Video unavailable": "Vídeo indisponível", - "videoinfo_started_streaming_x_ago": "Iniciou a transmissão a `x`", - "search_filters_title": "Filtro", - "preferences_watch_history_label": "Ative o histórico de exibição: ", - "search_message_no_results": "Nenhum resultado encontrado.", - "search_message_change_filters_or_query": "Tente ampliar sua consulta de pesquisa e/ou alterar os filtros.", - "English (United Kingdom)": "Inglês (Reino Unido)", - "English (United States)": "Inglês (Estados Unidos)", - "German (auto-generated)": "Alemão (gerado automaticamente)", - "Chinese": "Chinês", - "Chinese (China)": "Chinês (China)", - "Cantonese (Hong Kong)": "Cantonês (Hong Kong)", - "Interlingue": "Interlíngua", - "search_filters_type_option_all": "Qualquer tipo", - "search_filters_apply_button": "Aplicar filtros selecionados", - "Chinese (Hong Kong)": "Chinês (Hong Kong)", - "Chinese (Taiwan)": "Chinês (Taiwan)", - "Japanese (auto-generated)": "Japonês (gerado automaticamente)", - "Korean (auto-generated)": "Coreano (gerado automaticamente)", - "Portuguese (auto-generated)": "Português (gerado automaticamente)", - "Portuguese (Brazil)": "Português (Brasil)", - "Russian (auto-generated)": "Russo (gerado automaticamente)", - "Vietnamese (auto-generated)": "Vietnamita (gerado automaticamente)", - "search_filters_date_label": "Data de upload", - "search_filters_date_option_none": "Qualquer data", - "Dutch (auto-generated)": "Holandês (gerado automaticamente)", - "French (auto-generated)": "Francês (gerado automaticamente)", - "Indonesian (auto-generated)": "Indonésio (gerado automaticamente)", - "Italian (auto-generated)": "Italiano (gerado automaticamente)", - "Spanish (auto-generated)": "Espanhol (gerado automaticamente)", - "Spanish (Mexico)": "Espanhol (México)", - "search_filters_duration_option_none": "Qualquer duração", - "search_message_use_another_instance": " Você também pode pesquisar em outra instância.", - "Spanish (Spain)": "Espanhol (Espanha)", - "Turkish (auto-generated)": "Turco (gerado automaticamente)", - "search_filters_duration_option_medium": "Médio (4 - 20 minutos)", - "search_filters_features_option_vr180": "VR180", - "Popular enabled: ": "Popular habilitado: ", - "error_video_not_in_playlist": "O vídeo solicitado não existe nesta playlist. Clique aqui para acessar a página inicial da playlist.", - "channel_tab_channels_label": "Canais", - "channel_tab_playlists_label": "Listas de reprodução", - "channel_tab_shorts_label": "Curtos", - "channel_tab_streams_label": "Ao Vivo", - "Music in this video": "Música neste vídeo", - "Artist: ": "Artista: ", - "Album: ": "Álbum: ", - "Standard YouTube license": "Licença padrão do YouTube", - "Song: ": "Música: ", - "Channel Sponsor": "Patrocinador do Canal", - "Download is disabled": "Download está desabilitado", - "Import YouTube playlist (.csv)": "Importar lista de reprodução do YouTube (.csv)", - "generic_button_delete": "Apagar", - "generic_button_save": "Salvar", - "generic_button_edit": "Editar", - "playlist_button_add_items": "Adicionar vídeos", - "channel_tab_releases_label": "Lançamentos", - "channel_tab_podcasts_label": "Podcasts", - "generic_button_cancel": "Cancelar", - "generic_button_rss": "RSS", - "generic_channels_count_0": "{{count}} canal", - "generic_channels_count_1": "{{count}} canais", - "generic_channels_count_2": "{{count}} canais", - "Import YouTube watch history (.json)": "Importar histórico de reprodução do YouTube (.json)", - "toggle_theme": "Alternar Tema" -} diff --git a/invidious/locales/pt-PT.json b/invidious/locales/pt-PT.json deleted file mode 100755 index 3834c9e..0000000 --- a/invidious/locales/pt-PT.json +++ /dev/null @@ -1,475 +0,0 @@ -{ - "LIVE": "Em direto", - "Shared `x` ago": "Partilhado `x` atrás", - "Unsubscribe": "Anular subscrição", - "Subscribe": "Subscrever", - "View channel on YouTube": "Ver canal no YouTube", - "View playlist on YouTube": "Ver lista de reprodução no YouTube", - "newest": "mais recentes", - "oldest": "mais antigos", - "popular": "popular", - "last": "últimos", - "Next page": "Próxima página", - "Previous page": "Página anterior", - "Clear watch history?": "Limpar histórico de reprodução?", - "New password": "Nova palavra-chave", - "New passwords must match": "As novas palavra-chaves devem corresponder", - "Authorize token?": "Autorizar token?", - "Authorize token for `x`?": "Autorizar token para `x`?", - "Yes": "Sim", - "No": "Não", - "Import and Export Data": "Importar e exportar dados", - "Import": "Importar", - "Import Invidious data": "Importar dados JSON do Invidious", - "Import YouTube subscriptions": "Importar subscrições do YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importar subscrições do FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importar subscrições do NewPipe (.json)", - "Import NewPipe data (.zip)": "Importar dados do NewPipe (.zip)", - "Export": "Exportar", - "Export subscriptions as OPML": "Exportar subscrições como OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportar subscrições como OPML (para NewPipe e FreeTube)", - "Export data as JSON": "Exportar dados Invidious como JSON", - "Delete account?": "Eliminar conta?", - "History": "Histórico", - "An alternative front-end to YouTube": "Uma interface alternativa ao YouTube", - "JavaScript license information": "Informação de licença do JavaScript", - "source": "código-fonte", - "Log in": "Iniciar sessão", - "Log in/register": "Iniciar sessão/registar", - "User ID": "Utilizador", - "Password": "Palavra-chave", - "Time (h:mm:ss):": "Tempo (h:mm:ss):", - "Text CAPTCHA": "Texto CAPTCHA", - "Image CAPTCHA": "Imagem CAPTCHA", - "Sign In": "Iniciar sessão", - "Register": "Registar", - "E-mail": "E-mail", - "Preferences": "Preferências", - "preferences_category_player": "Preferências do reprodutor", - "preferences_video_loop_label": "Repetir sempre: ", - "preferences_autoplay_label": "Reprodução automática: ", - "preferences_continue_label": "Reproduzir sempre o próximo: ", - "preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ", - "preferences_listen_label": "Apenas áudio: ", - "preferences_local_label": "Usar proxy nos vídeos: ", - "preferences_speed_label": "Velocidade preferida: ", - "preferences_quality_label": "Qualidade de vídeo preferida: ", - "preferences_volume_label": "Volume da reprodução: ", - "preferences_comments_label": "Preferência dos comentários: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Legendas predefinidas: ", - "Fallback captions: ": "Legendas alternativas: ", - "preferences_related_videos_label": "Mostrar vídeos relacionados: ", - "preferences_annotations_label": "Mostrar anotações sempre: ", - "preferences_extend_desc_label": "Estender automaticamente a descrição do vídeo: ", - "preferences_vr_mode_label": "Vídeos interativos de 360 graus (necessita de WebGL): ", - "preferences_category_visual": "Preferências visuais", - "preferences_player_style_label": "Estilo do reprodutor: ", - "Dark mode: ": "Modo escuro: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "escuro", - "light": "claro", - "preferences_thin_mode_label": "Modo compacto: ", - "preferences_category_misc": "Preferências diversas", - "preferences_automatic_instance_redirect_label": "Redirecionamento de instância automática (solução de último recurso para redirect.invidious.io): ", - "preferences_category_subscription": "Preferências de subscrições", - "preferences_annotations_subscribed_label": "Mostrar sempre anotações aos canais subscritos: ", - "Redirect homepage to feed: ": "Redirecionar página inicial para subscrições: ", - "preferences_max_results_label": "Quantidade de vídeos nas subscrições: ", - "preferences_sort_label": "Ordenar vídeos por: ", - "published": "publicado", - "published - reverse": "publicado - inverso", - "alphabetically": "alfabeticamente", - "alphabetically - reverse": "alfabeticamente - inverso", - "channel name": "nome do canal", - "channel name - reverse": "nome do canal - inverso", - "Only show latest video from channel: ": "Mostrar apenas o vídeo mais recente do canal: ", - "Only show latest unwatched video from channel: ": "Mostrar apenas vídeos mais recentes não visualizados do canal: ", - "preferences_unseen_only_label": "Mostrar apenas vídeos não visualizados: ", - "preferences_notifications_only_label": "Mostrar apenas notificações (se existirem): ", - "Enable web notifications": "Ativar notificações pela web", - "`x` uploaded a video": "`x` publicou um novo vídeo", - "`x` is live": "`x` está em direto", - "preferences_category_data": "Preferências de dados", - "Clear watch history": "Limpar histórico de reprodução", - "Import/export data": "Importar / exportar dados", - "Change password": "Alterar palavra-chave", - "Manage subscriptions": "Gerir as subscrições", - "Manage tokens": "Gerir tokens", - "Watch history": "Histórico de reprodução", - "Delete account": "Eliminar conta", - "preferences_category_admin": "Preferências de administrador", - "preferences_default_home_label": "Página inicial predefinida: ", - "preferences_feed_menu_label": "Menu de subscrições: ", - "preferences_show_nick_label": "Mostrar nome de utilizador em cima: ", - "Top enabled: ": "Destaques ativados: ", - "CAPTCHA enabled: ": "CAPTCHA ativado: ", - "Login enabled: ": "Iniciar sessão ativado: ", - "Registration enabled: ": "Registar ativado: ", - "Report statistics: ": "Relatório de estatísticas: ", - "Save preferences": "Guardar preferências", - "Subscription manager": "Gerir subscrições", - "Token manager": "Gerir tokens", - "Token": "Token", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokens", - "Import/export": "Importar / exportar", - "unsubscribe": "anular subscrição", - "revoke": "revogar", - "Subscriptions": "Subscrições", - "search": "pesquisar", - "Log out": "Terminar sessão", - "Released under the AGPLv3 on Github.": "Lançado sob a AGPLv3 no GitHub.", - "Source available here.": "Código-fonte disponível aqui.", - "View JavaScript license information.": "Ver informações da licença do JavaScript.", - "View privacy policy.": "Ver a política de privacidade.", - "Trending": "Tendências", - "Public": "Público", - "Unlisted": "Não listado", - "Private": "Privado", - "View all playlists": "Ver todas as listas de reprodução", - "Updated `x` ago": "Atualizado `x` atrás", - "Delete playlist `x`?": "Eliminar a lista de reprodução 'x'?", - "Delete playlist": "Eliminar lista de reprodução", - "Create playlist": "Criar lista de reprodução", - "Title": "Título", - "Playlist privacy": "Privacidade da lista de reprodução", - "Editing playlist `x`": "A editar lista de reprodução 'x'", - "Show more": "Mostrar mais", - "Show less": "Mostrar menos", - "Watch on YouTube": "Ver no YouTube", - "Switch Invidious Instance": "Mudar a instância do Invidious", - "Hide annotations": "Ocultar anotações", - "Show annotations": "Mostrar anotações", - "Genre: ": "Género: ", - "License: ": "Licença: ", - "Family friendly? ": "Filtrar conteúdo impróprio: ", - "Wilson score: ": "Pontuação de Wilson: ", - "Engagement: ": "Compromisso: ", - "Whitelisted regions: ": "Regiões permitidas: ", - "Blacklisted regions: ": "Regiões bloqueadas: ", - "Shared `x`": "Partilhado `x`", - "Premieres in `x`": "Estreias em 'x'", - "Premieres `x`": "Estreias 'x'", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Olá! Parece que o JavaScript está desativado. Clique aqui para ver os comentários, entretanto eles podem levar mais tempo para carregar.", - "View YouTube comments": "Ver comentários do YouTube", - "View more comments on Reddit": "Ver mais comentários no Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários", - "": "Ver `x` comentários" - }, - "View Reddit comments": "Ver comentários do Reddit", - "Hide replies": "Ocultar respostas", - "Show replies": "Mostrar respostas", - "Incorrect password": "Palavra-chave incorreta", - "Wrong answer": "Resposta errada", - "Erroneous CAPTCHA": "CAPTCHA inválido", - "CAPTCHA is a required field": "CAPTCHA é um campo obrigatório", - "User ID is a required field": "O nome de utilizador é um campo obrigatório", - "Password is a required field": "Palavra-chave é um campo obrigatório", - "Wrong username or password": "Nome de utilizador ou palavra-chave incorreto", - "Password cannot be empty": "A palavra-chave não pode estar vazia", - "Password cannot be longer than 55 characters": "A palavra-chave não pode ser superior a 55 caracteres", - "Please log in": "Por favor, inicie sessão", - "Invidious Private Feed for `x`": "Feed Privado do Invidious para `x`", - "channel:`x`": "canal:'x'", - "Deleted or invalid channel": "Canal eliminado ou inválido", - "This channel does not exist.": "Este canal não existe.", - "Could not get channel info.": "Não foi possível obter as informações do canal.", - "Could not fetch comments": "Não foi possível obter os comentários", - "`x` ago": "`x` atrás", - "Load more": "Carregar mais", - "Could not create mix.": "Não foi possível criar a mistura.", - "Empty playlist": "Lista de reprodução vazia", - "Not a playlist.": "Não é uma lista de reprodução.", - "Playlist does not exist.": "A lista de reprodução não existe.", - "Could not pull trending pages.": "Não foi possível obter as páginas de tendências.", - "Hidden field \"challenge\" is a required field": "O campo oculto \"desafio\" é obrigatório", - "Hidden field \"token\" is a required field": "O campo oculto \"token\" é um campo obrigatório", - "Erroneous challenge": "Desafio inválido", - "Erroneous token": "Token inválido", - "No such user": "Utilizador inválido", - "Token is expired, please try again": "Token expirou, tente novamente", - "English": "Inglês", - "English (auto-generated)": "Inglês (auto-gerado)", - "Afrikaans": "Africano", - "Albanian": "Albanês", - "Amharic": "Amárico", - "Arabic": "Árabe", - "Armenian": "Arménio", - "Azerbaijani": "Azerbaijano", - "Bangla": "Bangla", - "Basque": "Basco", - "Belarusian": "Bielorrusso", - "Bosnian": "Bósnio", - "Bulgarian": "Búlgaro", - "Burmese": "Birmanês", - "Catalan": "Catalão", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chinês (simplificado)", - "Chinese (Traditional)": "Chinês (tradicional)", - "Corsican": "Corso", - "Croatian": "Croata", - "Czech": "Checo", - "Danish": "Dinamarquês", - "Dutch": "Holandês", - "Esperanto": "Esperanto", - "Estonian": "Estónio", - "Filipino": "Filipino", - "Finnish": "Finlandês", - "French": "Francês", - "Galician": "Galego", - "Georgian": "Georgiano", - "German": "Alemão", - "Greek": "Grego", - "Gujarati": "Guzerate", - "Haitian Creole": "Crioulo haitiano", - "Hausa": "Hauçá", - "Hawaiian": "Havaiano", - "Hebrew": "Hebraico", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Húngaro", - "Icelandic": "Islandês", - "Igbo": "Igbo", - "Indonesian": "Indonésio", - "Irish": "Irlandês", - "Italian": "Italiano", - "Japanese": "Japonês", - "Javanese": "Javanês", - "Kannada": "Canarim", - "Kazakh": "Cazaque", - "Khmer": "Khmer", - "Korean": "Coreano", - "Kurdish": "Curdo", - "Kyrgyz": "Quirguiz", - "Lao": "Laosiano", - "Latin": "Latim", - "Latvian": "Letão", - "Lithuanian": "Lituano", - "Luxembourgish": "Luxemburguês", - "Macedonian": "Macedónio", - "Malagasy": "Malgaxe", - "Malay": "Malaio", - "Malayalam": "Malaiala", - "Maltese": "Maltês", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongol", - "Nepali": "Nepalês", - "Norwegian Bokmål": "Bokmål norueguês", - "Nyanja": "Nyanja", - "Pashto": "Pashto", - "Persian": "Persa", - "Polish": "Polaco", - "Portuguese": "Português", - "Punjabi": "Punjabi", - "Romanian": "Romeno", - "Russian": "Russo", - "Samoan": "Samoano", - "Scottish Gaelic": "Gaélico escocês", - "Serbian": "Sérvio", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Cingalês", - "Slovak": "Eslovaco", - "Slovenian": "Esloveno", - "Somali": "Somali", - "Southern Sotho": "Sotho do Sul", - "Spanish": "Espanhol", - "Spanish (Latin America)": "Espanhol (América Latina)", - "Sundanese": "Sudanês", - "Swahili": "Suaíli", - "Swedish": "Sueco", - "Tajik": "Tajique", - "Tamil": "Tâmil", - "Telugu": "Telugu", - "Thai": "Tailandês", - "Turkish": "Turco", - "Ukrainian": "Ucraniano", - "Urdu": "Urdu", - "Uzbek": "Uzbeque", - "Vietnamese": "Vietnamita", - "Welsh": "Galês", - "Western Frisian": "Frísio Ocidental", - "Xhosa": "Xhosa", - "Yiddish": "Iídiche", - "Yoruba": "Ioruba", - "Zulu": "Zulu", - "generic_count_years": "{{count}} ano", - "generic_count_years_plural": "{{count}} anos", - "generic_count_months": "{{count}} mês", - "generic_count_months_plural": "{{count}} meses", - "generic_count_weeks": "{{count}} seman", - "generic_count_weeks_plural": "{{count}} semanas", - "generic_count_days": "{{count}} dia", - "generic_count_days_plural": "{{count}} dias", - "generic_count_hours": "{{count}} hora", - "generic_count_hours_plural": "{{count}} horas", - "generic_count_minutes": "{{count}} minuto", - "generic_count_minutes_plural": "{{count}} minutos", - "generic_count_seconds": "{{count}} segundo", - "generic_count_seconds_plural": "{{count}} segundos", - "Fallback comments: ": "Comentários alternativos: ", - "Popular": "Popular", - "Search": "Pesquisar", - "Top": "Destaques", - "About": "Sobre", - "Rating: ": "Avaliação: ", - "preferences_locale_label": "Idioma: ", - "View as playlist": "Ver como lista de reprodução", - "Default": "Predefinido", - "Music": "Música", - "Gaming": "Jogos", - "News": "Notícias", - "Movies": "Filmes", - "Download": "Descarregar", - "Download as: ": "Descarregar como: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(editado)", - "YouTube comment permalink": "Hiperligação permanente do comentário no YouTube", - "permalink": "hiperligação permanente", - "`x` marked it with a ❤": "`x` foi marcado como ❤", - "Audio mode": "Modo de áudio", - "Video mode": "Modo de vídeo", - "channel_tab_videos_label": "Vídeos", - "Playlists": "Listas de reprodução", - "channel_tab_community_label": "Comunidade", - "search_filters_sort_option_relevance": "Relevância", - "search_filters_sort_option_rating": "Avaliação", - "search_filters_sort_option_date": "Data de envio", - "search_filters_sort_option_views": "Visualizações", - "search_filters_type_label": "Tipo", - "search_filters_duration_label": "Duração", - "search_filters_features_label": "Funcionalidades", - "search_filters_sort_label": "Ordenar por", - "search_filters_date_option_hour": "Última hora", - "search_filters_date_option_today": "Hoje", - "search_filters_date_option_week": "Esta semana", - "search_filters_date_option_month": "Este mês", - "search_filters_date_option_year": "Este ano", - "search_filters_type_option_video": "Vídeo", - "search_filters_type_option_channel": "Canal", - "search_filters_type_option_playlist": "Lista de reprodução", - "search_filters_type_option_movie": "Filme", - "search_filters_type_option_show": "Espetáculo", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Legendas", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Em direto", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Localização", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Versão atual: ", - "next_steps_error_message": "Pode tentar as seguintes opções: ", - "next_steps_error_message_refresh": "Atualizar", - "next_steps_error_message_go_to_youtube": "Ir ao YouTube", - "search_filters_title": "Filtro", - "generic_videos_count": "{{count}} vídeo", - "generic_videos_count_plural": "{{count}} vídeos", - "generic_playlists_count": "{{count}} lista de reprodução", - "generic_playlists_count_plural": "{{count}} listas de reprodução", - "generic_subscriptions_count": "{{count}} inscrição", - "generic_subscriptions_count_plural": "{{count}} inscrições", - "generic_views_count": "{{count}} visualização", - "generic_views_count_plural": "{{count}} visualizações", - "generic_subscribers_count": "{{count}} inscrito", - "generic_subscribers_count_plural": "{{count}} inscritos", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_label": "Qualidade de vídeo DASH preferida: ", - "preferences_quality_dash_option_2160p": "2160p", - "subscriptions_unseen_notifs_count": "{{count}} notificação não vista", - "subscriptions_unseen_notifs_count_plural": "{{count}} notificações não vistas", - "Popular enabled: ": "Página \"popular\" ativada: ", - "search_message_no_results": "Nenhum resultado encontrado.", - "preferences_quality_dash_option_auto": "Automático", - "preferences_region_label": "País do conteúdo: ", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_720p": "720p", - "preferences_watch_history_label": "Ativar histórico de reprodução: ", - "preferences_quality_dash_option_best": "Melhor", - "preferences_quality_dash_option_worst": "Pior", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_dash": "DASH (qualidade adaptativa)", - "preferences_quality_option_medium": "Média", - "preferences_quality_option_small": "Baixa", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "Video unavailable": "Vídeo não disponível", - "Russian (auto-generated)": "Russo (gerado automaticamente)", - "comments_view_x_replies": "Ver {{count}} resposta", - "comments_view_x_replies_plural": "Ver {{count}} respostas", - "comments_points_count": "{{count}} ponto", - "comments_points_count_plural": "{{count}} pontos", - "English (United Kingdom)": "Inglês (Reino Unido)", - "Chinese (Hong Kong)": "Chinês (Hong Kong)", - "Chinese (Taiwan)": "Chinês (Taiwan)", - "Dutch (auto-generated)": "Holandês (gerado automaticamente)", - "French (auto-generated)": "Francês (gerado automaticamente)", - "German (auto-generated)": "Alemão (gerado automaticamente)", - "Indonesian (auto-generated)": "Indonésio (gerado automaticamente)", - "Interlingue": "Interlíngua", - "Italian (auto-generated)": "Italiano (gerado automaticamente)", - "Japanese (auto-generated)": "Japonês (gerado automaticamente)", - "Korean (auto-generated)": "Coreano (gerado automaticamente)", - "Portuguese (auto-generated)": "Português (gerado automaticamente)", - "Portuguese (Brazil)": "Português (Brasil)", - "Spanish (Spain)": "Espanhol (Espanha)", - "Vietnamese (auto-generated)": "Vietnamita (gerado automaticamente)", - "search_filters_type_option_all": "Qualquer tipo", - "search_filters_duration_option_none": "Qualquer duração", - "search_filters_duration_option_short": "Curto (< 4 minutos)", - "search_filters_duration_option_medium": "Médio (4 - 20 minutos)", - "search_filters_duration_option_long": "Longo (> 20 minutos)", - "search_filters_features_option_purchased": "Comprado", - "search_filters_apply_button": "Aplicar filtros selecionados", - "videoinfo_watch_on_youTube": "Ver no YouTube", - "videoinfo_youTube_embed_link": "Incorporar", - "adminprefs_modified_source_code_url_label": "URL do repositório do código-fonte alterado", - "videoinfo_invidious_embed_link": "Incorporar hiperligação", - "none": "nenhum", - "videoinfo_started_streaming_x_ago": "Iniciou a transmissão há `x`", - "download_subtitles": "Legendas - `x` (.vtt)", - "user_created_playlists": "`x` listas de reprodução criadas", - "user_saved_playlists": "`x` listas de reprodução guardadas", - "preferences_save_player_pos_label": "Guardar a posição de reprodução atual do vídeo: ", - "Turkish (auto-generated)": "Turco (gerado automaticamente)", - "Cantonese (Hong Kong)": "Cantonês (Hong Kong)", - "Chinese (China)": "Chinês (China)", - "Spanish (auto-generated)": "Espanhol (gerado automaticamente)", - "Spanish (Mexico)": "Espanhol (México)", - "English (United States)": "Inglês (Estados Unidos)", - "footer_donate_page": "Doar", - "footer_documentation": "Documentação", - "footer_source_code": "Código-fonte", - "footer_original_source_code": "Código-fonte original", - "footer_modfied_source_code": "Código-fonte alterado", - "Chinese": "Chinês", - "search_filters_date_label": "Data de publicação", - "search_filters_date_option_none": "Qualquer data", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_vr180": "VR180", - "search_message_use_another_instance": " Também pode pesquisar noutra instância.", - "crash_page_you_found_a_bug": "Parece que encontrou um erro no Invidious!", - "crash_page_before_reporting": "Antes de reportar um erro, verifique se:", - "crash_page_read_the_faq": "leia as Perguntas frequentes (FAQ)", - "crash_page_search_issue": "procurou se o erro já foi reportado no GitHub", - "crash_page_report_issue": "Se nenhuma opção acima ajudou, por favor abra um novo problema no Github (preferencialmente em inglês) e inclua o seguinte texto tal qual (NÃO o traduza):", - "search_message_change_filters_or_query": "Tente alargar os termos genéricos da pesquisa e/ou alterar os filtros.", - "crash_page_refresh": "tentou recarregar a página", - "crash_page_switch_instance": "tentou usar outra instância", - "error_video_not_in_playlist": "O vídeo pedido não existe nesta lista de reprodução. Clique aqui para a página inicial da lista de reprodução.", - "Artist: ": "Artista: ", - "Album: ": "Álbum: ", - "channel_tab_streams_label": "Diretos", - "channel_tab_playlists_label": "Listas de reprodução", - "channel_tab_channels_label": "Canais", - "Music in this video": "Música neste vídeo", - "channel_tab_shorts_label": "Curtos" -} diff --git a/invidious/locales/pt.json b/invidious/locales/pt.json deleted file mode 100755 index c1d8b5b..0000000 --- a/invidious/locales/pt.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "search_filters_type_option_show": "Série", - "search_filters_sort_option_views": "Visualizações", - "search_filters_sort_option_date": "Data de carregamento", - "search_filters_sort_option_rating": "Avaliação", - "search_filters_sort_option_relevance": "Relevância", - "Switch Invidious Instance": "Mudar a instância do Invidious", - "Show less": "Mostrar menos", - "Show more": "Mostrar mais", - "Released under the AGPLv3 on Github.": "Lançado sob a AGPLv3 no GitHub.", - "preferences_show_nick_label": "Mostrar nome de utilizador em cima: ", - "preferences_automatic_instance_redirect_label": "Redirecionamento de instância automática (solução de último recurso para redirect.invidious.io): ", - "preferences_category_misc": "Preferências diversas", - "preferences_vr_mode_label": "Vídeos interativos de 360 graus (necessita de WebGL): ", - "preferences_extend_desc_label": "Estender automaticamente a descrição do vídeo: ", - "next_steps_error_message_go_to_youtube": "Ir para o YouTube", - "next_steps_error_message": "Pode tentar as seguintes opções: ", - "next_steps_error_message_refresh": "Atualizar", - "search_filters_features_option_hdr": "HDR", - "search_filters_features_option_location": "Localização", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_live": "Ao Vivo", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_subtitles": "Legendas", - "search_filters_features_option_hd": "HD", - "search_filters_type_option_movie": "Filme", - "search_filters_type_option_playlist": "Lista de reprodução", - "search_filters_type_option_channel": "Canal", - "search_filters_type_option_video": "Vídeo", - "search_filters_date_option_year": "Este ano", - "search_filters_date_option_month": "Este mês", - "search_filters_date_option_week": "Esta semana", - "search_filters_date_option_today": "Hoje", - "search_filters_date_option_hour": "Última hora", - "search_filters_sort_label": "Ordenar por", - "search_filters_features_label": "Funcionalidades", - "search_filters_duration_label": "Duração", - "search_filters_type_label": "Tipo", - "permalink": "hiperligação permanente", - "YouTube comment permalink": "Hiperligação permanente do comentário no YouTube", - "Download as: ": "Descarregar como: ", - "Download": "Descarregar", - "Default": "Predefinido", - "Top": "Destaques", - "Search": "Pesquisar", - "generic_count_years_0": "{{count}} ano", - "generic_count_years_1": "{{count}} anos", - "generic_count_years_2": "{{count}} anos", - "generic_count_months_0": "{{count}} mês", - "generic_count_months_1": "{{count}} meses", - "generic_count_months_2": "{{count}} meses", - "generic_count_weeks_0": "{{count}} semana", - "generic_count_weeks_1": "{{count}} semanas", - "generic_count_weeks_2": "{{count}} semanas", - "generic_count_days_0": "{{count}} dia", - "generic_count_days_1": "{{count}} dias", - "generic_count_days_2": "{{count}} dias", - "generic_count_hours_0": "{{count}} hora", - "generic_count_hours_1": "{{count}} horas", - "generic_count_hours_2": "{{count}} horas", - "generic_count_minutes_0": "{{count}} minuto", - "generic_count_minutes_1": "{{count}} minutos", - "generic_count_minutes_2": "{{count}} minutos", - "generic_count_seconds_0": "{{count}} segundo", - "generic_count_seconds_1": "{{count}} segundos", - "generic_count_seconds_2": "{{count}} segundos", - "Chinese (Traditional)": "Chinês (tradicional)", - "Chinese (Simplified)": "Chinês (simplificado)", - "Could not pull trending pages.": "Não foi possível obter as páginas de tendências.", - "Could not create mix.": "Não foi possível criar a mistura.", - "Deleted or invalid channel": "Canal eliminado ou inválido", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Olá! Parece que o JavaScript está desativado. Clique aqui para ver os comentários, entretanto eles podem levar mais tempo para carregar.", - "Delete playlist": "Eliminar lista de reprodução", - "Delete playlist `x`?": "Eliminar a lista de reprodução 'x'?", - "search": "pesquisar", - "unsubscribe": "anular subscrição", - "Import/export": "Importar / exportar", - "Save preferences": "Guardar preferências", - "Top enabled: ": "Destaques ativados: ", - "Delete account": "Eliminar conta", - "Import/export data": "Importar / exportar dados", - "preferences_annotations_label": "Mostrar anotações sempre: ", - "preferences_continue_label": "Reproduzir sempre o próximo: ", - "Sign In": "Entrar", - "Log in/register": "Iniciar sessão/registar", - "Delete account?": "Eliminar conta?", - "Import and Export Data": "Importar e exportar dados", - "Filipino": "Filipino", - "Estonian": "Estónio", - "Esperanto": "Esperanto", - "Dutch": "Holandês", - "Danish": "Dinamarquês", - "Czech": "Checo", - "Croatian": "Croata", - "Corsican": "Corso", - "Cebuano": "Cebuano", - "Catalan": "Catalão", - "Burmese": "Birmanês", - "Bulgarian": "Búlgaro", - "Bosnian": "Bósnio", - "Belarusian": "Bielorrusso", - "Basque": "Basco", - "Bangla": "Bangla", - "Azerbaijani": "Azerbaijano", - "Armenian": "Arménio", - "Arabic": "Árabe", - "Amharic": "Amárico", - "Albanian": "Albanês", - "Afrikaans": "Africano", - "English (auto-generated)": "Inglês (auto-gerado)", - "English": "Inglês", - "Token is expired, please try again": "Token expirou, tente novamente", - "No such user": "Utilizador inválido", - "Erroneous token": "Token inválido", - "Erroneous challenge": "Desafio inválido", - "Hidden field \"token\" is a required field": "O campo oculto \"token\" é um campo obrigatório", - "Hidden field \"challenge\" is a required field": "O campo oculto \"desafio\" é obrigatório", - "Playlist does not exist.": "A lista de reprodução não existe.", - "Not a playlist.": "Não é uma lista de reprodução.", - "Empty playlist": "Lista de reprodução vazia", - "Load more": "Carregar mais", - "`x` ago": "`x` atrás", - "Could not fetch comments": "Não foi possível obter os comentários", - "Could not get channel info.": "Não foi possível obter as informações do canal.", - "This channel does not exist.": "Este canal não existe.", - "channel:`x`": "canal:'x'", - "Invidious Private Feed for `x`": "Feed Privado do Invidious para `x`", - "Please log in": "Por favor, inicie sessão", - "Password cannot be longer than 55 characters": "A palavra-chave não pode ser superior a 55 caracteres", - "Password cannot be empty": "A palavra-chave não pode estar vazia", - "Wrong username or password": "Nome de utilizador ou palavra-chave incorreto", - "Password is a required field": "Palavra-chave é um campo obrigatório", - "User ID is a required field": "O nome de utilizador é um campo obrigatório", - "CAPTCHA is a required field": "CAPTCHA é um campo obrigatório", - "Erroneous CAPTCHA": "CAPTCHA inválido", - "Wrong answer": "Resposta errada", - "Incorrect password": "Palavra-chave incorreta", - "Show replies": "Mostrar respostas", - "Hide replies": "Ocultar respostas", - "View Reddit comments": "Ver comentários do Reddit", - "View `x` comments": { - "": "Ver `x` comentários", - "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários" - }, - "View more comments on Reddit": "Ver mais comentários no Reddit", - "View YouTube comments": "Ver comentários do YouTube", - "Premieres `x`": "Estreias 'x'", - "Premieres in `x`": "Estreias em 'x'", - "Shared `x`": "Partilhado `x`", - "Blacklisted regions: ": "Regiões bloqueadas: ", - "Whitelisted regions: ": "Regiões permitidas: ", - "Engagement: ": "Compromisso: ", - "Wilson score: ": "Pontuação de Wilson: ", - "Family friendly? ": "Filtrar conteúdo impróprio: ", - "License: ": "Licença: ", - "Genre: ": "Género: ", - "Show annotations": "Mostrar anotações", - "Hide annotations": "Ocultar anotações", - "Watch on YouTube": "Ver no YouTube", - "Editing playlist `x`": "A editar lista de reprodução 'x'", - "Playlist privacy": "Privacidade da lista de reprodução", - "Title": "Título", - "Create playlist": "Criar lista de reprodução", - "Updated `x` ago": "Atualizado `x` atrás", - "View all playlists": "Ver todas as listas de reprodução", - "Private": "Privado", - "Unlisted": "Não listado", - "Public": "Público", - "Trending": "Tendências", - "View privacy policy.": "Ver a política de privacidade.", - "View JavaScript license information.": "Ver informações da licença do JavaScript.", - "Source available here.": "Código-fonte disponível aqui.", - "Log out": "Terminar sessão", - "Subscriptions": "Subscrições", - "revoke": "revogar", - "tokens_count_0": "{{count}} Token", - "tokens_count_1": "{{count}} Tokens", - "tokens_count_2": "{{count}} Tokens", - "Token": "Token", - "Token manager": "Gerir tokens", - "Subscription manager": "Gerir subscrições", - "Report statistics: ": "Relatório de estatísticas: ", - "Registration enabled: ": "Registar ativado: ", - "Login enabled: ": "Iniciar sessão ativado: ", - "CAPTCHA enabled: ": "CAPTCHA ativado: ", - "preferences_feed_menu_label": "Menu de subscrições: ", - "preferences_default_home_label": "Página inicial predefinida: ", - "preferences_category_admin": "Preferências de administrador", - "Watch history": "Histórico de reprodução", - "Manage tokens": "Gerir tokens", - "Manage subscriptions": "Gerir as subscrições", - "Change password": "Alterar palavra-chave", - "Clear watch history": "Limpar histórico de reprodução", - "preferences_category_data": "Preferências de dados", - "`x` is live": "`x` está em direto", - "`x` uploaded a video": "`x` publicou um novo vídeo", - "Enable web notifications": "Ativar notificações pela web", - "preferences_notifications_only_label": "Mostrar apenas notificações (se existirem): ", - "preferences_unseen_only_label": "Mostrar apenas vídeos não visualizados: ", - "Only show latest unwatched video from channel: ": "Mostrar apenas vídeos mais recentes não visualizados do canal: ", - "Only show latest video from channel: ": "Mostrar apenas o vídeo mais recente do canal: ", - "channel name - reverse": "nome do canal - inverso", - "channel name": "nome do canal", - "alphabetically - reverse": "alfabeticamente - inverso", - "alphabetically": "alfabeticamente", - "published - reverse": "publicado - inverso", - "published": "publicado", - "preferences_sort_label": "Ordenar vídeos por: ", - "preferences_max_results_label": "Quantidade de vídeos nas subscrições: ", - "Redirect homepage to feed: ": "Redirecionar página inicial para subscrições: ", - "preferences_annotations_subscribed_label": "Mostrar sempre anotações aos canais subscritos: ", - "preferences_category_subscription": "Preferências de subscrições", - "preferences_thin_mode_label": "Modo compacto: ", - "light": "claro", - "dark": "escuro", - "preferences_dark_mode_label": "Tema: ", - "Dark mode: ": "Modo escuro: ", - "preferences_player_style_label": "Estilo do reprodutor: ", - "preferences_category_visual": "Preferências visuais", - "preferences_related_videos_label": "Mostrar vídeos relacionados: ", - "Fallback captions: ": "Legendas alternativas: ", - "preferences_captions_label": "Legendas predefinidas: ", - "reddit": "Reddit", - "youtube": "YouTube", - "preferences_comments_label": "Preferência dos comentários: ", - "preferences_volume_label": "Volume da reprodução: ", - "preferences_quality_label": "Qualidade de vídeo preferida: ", - "preferences_speed_label": "Velocidade preferida: ", - "preferences_local_label": "Usar proxy nos vídeos: ", - "preferences_listen_label": "Apenas áudio: ", - "preferences_continue_autoplay_label": "Reproduzir próximo vídeo automaticamente: ", - "preferences_autoplay_label": "Reprodução automática: ", - "preferences_video_loop_label": "Repetir sempre: ", - "preferences_category_player": "Preferências do reprodutor", - "Preferences": "Preferências", - "E-mail": "E-mail", - "Register": "Registar", - "Image CAPTCHA": "Imagem CAPTCHA", - "Text CAPTCHA": "Texto CAPTCHA", - "Time (h:mm:ss):": "Tempo (h:mm:ss):", - "Password": "Palavra-chave", - "User ID": "Utilizador", - "Log in": "Iniciar sessão", - "source": "código-fonte", - "JavaScript license information": "Informação de licença do JavaScript", - "An alternative front-end to YouTube": "Uma interface alternativa ao YouTube", - "History": "Histórico", - "Export data as JSON": "Exportar dados Invidious como JSON", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportar subscrições como OPML (para NewPipe e FreeTube)", - "Export subscriptions as OPML": "Exportar subscrições como OPML", - "Export": "Exportar", - "Import NewPipe data (.zip)": "Importar dados do NewPipe (.zip)", - "Import NewPipe subscriptions (.json)": "Importar subscrições do NewPipe (.json)", - "Import FreeTube subscriptions (.db)": "Importar subscrições do FreeTube (.db)", - "Import YouTube subscriptions": "Importar subscrições do YouTube/OPML", - "Import Invidious data": "Importar dados JSON do Invidious", - "Import": "Importar", - "No": "Não", - "Yes": "Sim", - "Authorize token for `x`?": "Autorizar token para `x`?", - "Authorize token?": "Autorizar token?", - "New passwords must match": "As novas palavra-chaves devem corresponder", - "New password": "Nova palavra-chave", - "Clear watch history?": "Limpar histórico de reprodução?", - "Previous page": "Página anterior", - "Next page": "Próxima página", - "last": "últimos", - "Current version: ": "Versão atual: ", - "channel_tab_community_label": "Comunidade", - "Playlists": "Listas de reprodução", - "channel_tab_videos_label": "Vídeos", - "Video mode": "Modo de vídeo", - "Audio mode": "Modo de áudio", - "`x` marked it with a ❤": "`x` foi marcado como ❤", - "(edited)": "(editado)", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "Movies": "Filmes", - "News": "Notícias", - "Gaming": "Jogos", - "Music": "Música", - "View as playlist": "Ver como lista de reprodução", - "preferences_locale_label": "Idioma: ", - "Rating: ": "Avaliação: ", - "About": "Sobre", - "Popular": "Popular", - "Fallback comments: ": "Comentários alternativos: ", - "Zulu": "Zulu", - "Yoruba": "Ioruba", - "Yiddish": "Iídiche", - "Xhosa": "Xhosa", - "Western Frisian": "Frísio Ocidental", - "Welsh": "Galês", - "Vietnamese": "Vietnamita", - "Uzbek": "Uzbeque", - "Urdu": "Urdu", - "Ukrainian": "Ucraniano", - "Turkish": "Turco", - "Thai": "Tailandês", - "Telugu": "Telugu", - "Tamil": "Tâmil", - "Tajik": "Tajique", - "Swedish": "Sueco", - "Swahili": "Suaíli", - "Sundanese": "Sudanês", - "Spanish (Latin America)": "Espanhol (América Latina)", - "Spanish": "Espanhol", - "Southern Sotho": "Sotho do Sul", - "Somali": "Somali", - "Slovenian": "Esloveno", - "Slovak": "Eslovaco", - "Sinhala": "Cingalês", - "Sindhi": "Sindhi", - "Shona": "Shona", - "Serbian": "Sérvio", - "Scottish Gaelic": "Gaélico escocês", - "Samoan": "Samoano", - "Russian": "Russo", - "Romanian": "Romeno", - "Punjabi": "Punjabi", - "Portuguese": "Português", - "Polish": "Polaco", - "Persian": "Persa", - "Pashto": "Pashto", - "Nyanja": "Nyanja", - "Norwegian Bokmål": "Bokmål norueguês", - "Nepali": "Nepalês", - "Mongolian": "Mongol", - "Marathi": "Marathi", - "Maori": "Maori", - "Maltese": "Maltês", - "Malayalam": "Malaiala", - "Malay": "Malaio", - "Malagasy": "Malgaxe", - "Macedonian": "Macedónio", - "Luxembourgish": "Luxemburguês", - "Lithuanian": "Lituano", - "Latvian": "Letão", - "Latin": "Latim", - "Lao": "Laosiano", - "Kyrgyz": "Quirguiz", - "Kurdish": "Curdo", - "Korean": "Coreano", - "Khmer": "Khmer", - "Kazakh": "Cazaque", - "Kannada": "Canarim", - "Javanese": "Javanês", - "Japanese": "Japonês", - "Italian": "Italiano", - "Irish": "Irlandês", - "Indonesian": "Indonésio", - "Igbo": "Igbo", - "Icelandic": "Islandês", - "Hungarian": "Húngaro", - "Hmong": "Hmong", - "Hindi": "Hindi", - "Hebrew": "Hebraico", - "Hawaiian": "Havaiano", - "Hausa": "Hauçá", - "Haitian Creole": "Crioulo haitiano", - "Gujarati": "Guzerate", - "Greek": "Grego", - "German": "Alemão", - "Georgian": "Georgiano", - "Galician": "Galego", - "French": "Francês", - "Finnish": "Finlandês", - "popular": "popular", - "oldest": "mais antigos", - "newest": "mais recentes", - "View playlist on YouTube": "Ver lista de reprodução no YouTube", - "View channel on YouTube": "Ver canal no YouTube", - "Subscribe": "Subscrever", - "Unsubscribe": "Anular subscrição", - "Shared `x` ago": "Partilhado `x` atrás", - "LIVE": "AO VIVO", - "search_filters_duration_option_short": "Curto (< 4 minutos)", - "search_filters_duration_option_long": "Longo (> 20 minutos)", - "footer_source_code": "Código-fonte", - "footer_original_source_code": "Código-fonte original", - "adminprefs_modified_source_code_url_label": "URL do repositório do código-fonte alterado", - "footer_documentation": "Documentação", - "footer_modfied_source_code": "Código-fonte alterado", - "footer_donate_page": "Doar", - "preferences_region_label": "País do conteúdo: ", - "preferences_quality_dash_label": "Qualidade de vídeo DASH preferida: ", - "preferences_quality_option_small": "Baixa", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_auto": "Automático", - "preferences_quality_dash_option_best": "Melhor", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "search_filters_features_option_purchased": "Comprado", - "search_filters_features_option_three_sixty": "360°", - "videoinfo_invidious_embed_link": "Incorporar hiperligação", - "Video unavailable": "Vídeo não disponível", - "invidious": "Invidious", - "preferences_quality_option_medium": "Média", - "preferences_quality_option_dash": "DASH (qualidade adaptativa)", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_480p": "480p", - "videoinfo_watch_on_youTube": "Ver no YouTube", - "preferences_quality_dash_option_worst": "Pior", - "none": "nenhum", - "videoinfo_youTube_embed_link": "Incorporar", - "preferences_save_player_pos_label": "Guardar a posição de reprodução atual do vídeo: ", - "download_subtitles": "Legendas - `x` (.vtt)", - "generic_views_count_0": "{{count}} visualização", - "generic_views_count_1": "{{count}} visualizações", - "generic_views_count_2": "{{count}} visualizações", - "videoinfo_started_streaming_x_ago": "Iniciou a transmissão há `x`", - "user_saved_playlists": "`x` listas de reprodução guardadas", - "generic_videos_count_0": "{{count}} vídeo", - "generic_videos_count_1": "{{count}} vídeos", - "generic_videos_count_2": "{{count}} vídeos", - "generic_playlists_count_0": "{{count}} lista de reprodução", - "generic_playlists_count_1": "{{count}} listas de reprodução", - "generic_playlists_count_2": "{{count}} listas de reprodução", - "subscriptions_unseen_notifs_count_0": "{{count}} notificação não vista", - "subscriptions_unseen_notifs_count_1": "{{count}} notificações não vistas", - "subscriptions_unseen_notifs_count_2": "{{count}} notificações não vistas", - "comments_view_x_replies_0": "Ver {{count}} resposta", - "comments_view_x_replies_1": "Ver {{count}} respostas", - "comments_view_x_replies_2": "Ver {{count}} respostas", - "generic_subscribers_count_0": "{{count}} inscrito", - "generic_subscribers_count_1": "{{count}} inscritos", - "generic_subscribers_count_2": "{{count}} inscritos", - "generic_subscriptions_count_0": "{{count}} inscrição", - "generic_subscriptions_count_1": "{{count}} inscrições", - "generic_subscriptions_count_2": "{{count}} inscrições", - "comments_points_count_0": "{{count}} ponto", - "comments_points_count_1": "{{count}} pontos", - "comments_points_count_2": "{{count}} pontos", - "crash_page_you_found_a_bug": "Parece que encontrou um erro no Invidious!", - "crash_page_before_reporting": "Antes de reportar um erro, verifique se:", - "crash_page_refresh": "tentou recarregar a página", - "crash_page_switch_instance": "tentou usar outra instância", - "crash_page_read_the_faq": "leia as Perguntas frequentes (FAQ)", - "crash_page_search_issue": "procurou se o erro já foi reportado no GitHub", - "crash_page_report_issue": "Se nenhuma opção acima ajudou, por favor abra um novo problema no Github (preferencialmente em inglês) e inclua o seguinte texto (NÃO o traduza):", - "user_created_playlists": "`x` listas de reprodução criadas", - "search_filters_title": "Filtro", - "Chinese (Taiwan)": "Chinês (Taiwan)", - "search_message_no_results": "Nenhum resultado encontrado.", - "search_message_change_filters_or_query": "Tente alargar os termos genéricos da pesquisa e/ou alterar os filtros.", - "search_message_use_another_instance": " Também pode pesquisar noutra instância.", - "English (United Kingdom)": "Inglês (Reino Unido)", - "English (United States)": "Inglês (Estados Unidos)", - "Cantonese (Hong Kong)": "Cantonês (Hong Kong)", - "Chinese": "Chinês", - "Chinese (Hong Kong)": "Chinês (Hong Kong)", - "Dutch (auto-generated)": "Holandês (gerado automaticamente)", - "French (auto-generated)": "Francês (gerado automaticamente)", - "German (auto-generated)": "Alemão (gerado automaticamente)", - "Indonesian (auto-generated)": "Indonésio (gerado automaticamente)", - "Interlingue": "Interlíngua", - "Italian (auto-generated)": "Italiano (gerado automaticamente)", - "Japanese (auto-generated)": "Japonês (gerado automaticamente)", - "Korean (auto-generated)": "Coreano (gerado automaticamente)", - "Portuguese (auto-generated)": "Português (gerado automaticamente)", - "Portuguese (Brazil)": "Português (Brasil)", - "Turkish (auto-generated)": "Turco (gerado automaticamente)", - "Vietnamese (auto-generated)": "Vietnamita (gerado automaticamente)", - "search_filters_duration_option_medium": "Médio (4 - 20 minutos)", - "search_filters_features_option_vr180": "VR180", - "search_filters_apply_button": "Aplicar filtros selecionados", - "Spanish (auto-generated)": "Espanhol (gerado automaticamente)", - "Spanish (Mexico)": "Espanhol (México)", - "preferences_watch_history_label": "Ativar histórico de reprodução: ", - "Chinese (China)": "Chinês (China)", - "Russian (auto-generated)": "Russo (gerado automaticamente)", - "Spanish (Spain)": "Espanhol (Espanha)", - "search_filters_date_label": "Data de publicação", - "search_filters_date_option_none": "Qualquer data", - "search_filters_type_option_all": "Qualquer tipo", - "search_filters_duration_option_none": "Qualquer duração", - "Popular enabled: ": "Página \"popular\" ativada: ", - "error_video_not_in_playlist": "O vídeo pedido não existe nesta lista de reprodução. Clique aqui para voltar à página inicial da lista de reprodução.", - "channel_tab_playlists_label": "Listas de reprodução", - "channel_tab_channels_label": "Canais", - "channel_tab_shorts_label": "Curtos", - "channel_tab_streams_label": "Diretos", - "Music in this video": "Música neste vídeo", - "Artist: ": "Artista: ", - "Album: ": "Álbum: ", - "Song: ": "Canção: ", - "Channel Sponsor": "Patrocinador do canal", - "Standard YouTube license": "Licença padrão do YouTube", - "Download is disabled": "A descarga está desativada", - "Import YouTube playlist (.csv)": "Importar lista de reprodução do YouTube (.csv)", - "generic_button_delete": "Deletar", - "generic_button_edit": "Editar", - "generic_button_rss": "RSS", - "channel_tab_podcasts_label": "Podcasts", - "channel_tab_releases_label": "Lançamentos", - "generic_button_save": "Salvar", - "generic_button_cancel": "Cancelar", - "playlist_button_add_items": "Adicionar vídeos", - "generic_channels_count_0": "{{count}} canal", - "generic_channels_count_1": "{{count}} canais", - "generic_channels_count_2": "{{count}} canais", - "Import YouTube watch history (.json)": "Importar histórico de reprodução do YouTube (.json)", - "toggle_theme": "Trocar tema" -} diff --git a/invidious/locales/ro.json b/invidious/locales/ro.json deleted file mode 100755 index 85bf746..0000000 --- a/invidious/locales/ro.json +++ /dev/null @@ -1,482 +0,0 @@ -{ - "LIVE": "ÎN DIRECT", - "Shared `x` ago": "Adăugat acum `x`", - "Unsubscribe": "Dezabonați-vă", - "Subscribe": "Abonați-vă", - "View channel on YouTube": "Vedeți canalul pe YouTube", - "View playlist on YouTube": "Vedeți lista de redare pe YouTube", - "newest": "Data adăugării (cea mai recentă)", - "oldest": "Data adăugării (cea mai veche)", - "popular": "Cele mai populare", - "last": "Ultimele", - "Next page": "Pagina următoare", - "Previous page": "Pagina precedentă", - "Clear watch history?": "Doriți să ștergeți istoricul?", - "New password": "Parola nouă", - "New passwords must match": "Câmpurile \"Parolă nouă\" trebuie să fie identice", - "Authorize token?": "Autorizați token-ul?", - "Authorize token for `x`?": "Autorizați token-ul pentru `x` ?", - "Yes": "Da", - "No": "Nu", - "Import and Export Data": "Importați și Exportați Datele", - "Import": "Importați", - "Import Invidious data": "Importați datele JSON de pe Invidious", - "Import YouTube subscriptions": "Importați abonamentele de pe YouTube", - "Import FreeTube subscriptions (.db)": "Importați abonamentele de pe FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importați abonamentele de pe NewPipe (.json)", - "Import NewPipe data (.zip)": "Importați datele de pe NewPipe (.zip)", - "Export": "Exportați", - "Export subscriptions as OPML": "Exportați abonamentele în format OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportați abonamentele în format OPML (pentru NewPipe și FreeTube)", - "Export data as JSON": "Exportați datele Invidious în format JSON", - "Delete account?": "Sunteți siguri că doriți să vă ștergeți contul?", - "History": "Istoric", - "An alternative front-end to YouTube": "O alternativă front-end pentru YouTube", - "JavaScript license information": "Informații despre licențele JavaScript", - "source": "sursă", - "Log in": "Conectați-vă", - "Log in/register": "Conectați-vă/Creați-vă un cont", - "User ID": "ID Utilizator", - "Password": "Parolă", - "Time (h:mm:ss):": "Ora (h:mm:ss) :", - "Text CAPTCHA": "Text CAPTCHA", - "Image CAPTCHA": "Imagine CAPTCHA", - "Sign In": "Conectați-vă", - "Register": "Înregistrați-vă", - "E-mail": "E-mail", - "Preferences": "Preferințe", - "preferences_category_player": "Setări de redare", - "preferences_video_loop_label": "Reluați videoclipul la nesfârșit: ", - "preferences_autoplay_label": "Porniți videoclipurile automat: ", - "preferences_continue_label": "Vizionați următoarele videoclipuri în mod implicit: ", - "preferences_continue_autoplay_label": "Porniți următorul videoclip automat: ", - "preferences_listen_label": "Numai audio: ", - "preferences_local_label": "Redați videoclipurile printr-un proxy: ", - "preferences_speed_label": "Viteza de redare implicită: ", - "preferences_quality_label": "Calitatea videoclipurilor: ", - "preferences_volume_label": "Volumul videoclipurilor: ", - "preferences_comments_label": "Sursa comentariilor: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Subtitrări implicite: ", - "Fallback captions: ": "Subtitrări alternative: ", - "preferences_related_videos_label": "Afișați videoclipurile asemănătoare: ", - "preferences_annotations_label": "Afișați adnotările în mod implicit: ", - "preferences_category_visual": "Preferințele site-ului", - "preferences_player_style_label": "Stilul player-ului : ", - "Dark mode: ": "Modul întunecat : ", - "preferences_dark_mode_label": "Tema : ", - "dark": "întunecat", - "light": "luminos", - "preferences_thin_mode_label": "Mod lejer: ", - "preferences_category_subscription": "Preferințele paginii de abonamente", - "preferences_annotations_subscribed_label": "Afișați adnotările în mod implicit pentru canalele la care v-ați abonat: ", - "Redirect homepage to feed: ": "Redirecționați pagina principală la pagina de abonamente: ", - "preferences_max_results_label": "Numărul de videoclipuri afișate pe pagina de abonamente: ", - "preferences_sort_label": "Sortați videoclipurile în funcție de: ", - "published": "data publicării", - "published - reverse": "data publicării - inversată", - "alphabetically": "în ordine alfabetică", - "alphabetically - reverse": "în ordine alfabetică - inversată", - "channel name": "numele canalului", - "channel name - reverse": "numele canalului - inversat", - "Only show latest video from channel: ": "Afișați numai cel mai recent videoclip publicat de canalele la care v-ați abonat: ", - "Only show latest unwatched video from channel: ": "Afișați numai cel mai recent videoclip nevizionat publicat de canalele la care v-ați abonat: ", - "preferences_unseen_only_label": "Afișați numai videoclipurile nevizionate: ", - "preferences_notifications_only_label": "Afișați numai notificările (dacă există): ", - "Enable web notifications": "Activați notificările web", - "`x` uploaded a video": "`x` a publicat un videoclip", - "`x` is live": "`x` este în direct", - "preferences_category_data": "Preferințe legate de date", - "Clear watch history": "Ștergeți istoricul videoclipurilor vizionate", - "Import/export data": "Importați/exportați datele", - "Change password": "Schimbați parola", - "Manage subscriptions": "Gestionați abonamentele", - "Manage tokens": "Gestionați tokenele", - "Watch history": "Istoricul videoclipurilor vizionate", - "Delete account": "Ștergeți contul", - "preferences_category_admin": "Preferințele Administratorului", - "preferences_default_home_label": "Pagina principală implicită: ", - "preferences_feed_menu_label": "Preferințe legate de pagina de abonamente: ", - "Top enabled: ": "Top activat: ", - "CAPTCHA enabled: ": "CAPTCHA activat : ", - "Login enabled: ": "Autentificare activată : ", - "Registration enabled: ": "Înregistrate activată: ", - "Report statistics: ": "Raportarea statisticilor: ", - "Save preferences": "Salvați preferințele", - "Subscription manager": "Gestionați abonamentele", - "Token manager": "Manager de Tokene", - "Token": "Token", - "Import/export": "Importați/Exportați", - "unsubscribe": "dezabonați-vă", - "revoke": "revocați", - "Subscriptions": "Abonamente", - "search": "căutați", - "Log out": "Deconectați-vă", - "Source available here.": "Codul sursă este disponibil aici.", - "View JavaScript license information.": "Informații legate de licența JavaScript.", - "View privacy policy.": "Politica de confidențialitate.", - "Trending": "Tendințe", - "Public": "Public", - "Unlisted": "Necatalogat", - "Private": "Privat", - "View all playlists": "Afișați toate listele de redare", - "Updated `x` ago": "Actualizat acum `x`", - "Delete playlist `x`?": "Sigur doriți să ștergeți lista de redare?", - "Delete playlist": "Ștergeți lista de redare", - "Create playlist": "Creați o listă de redare", - "Title": "Titlu", - "Playlist privacy": "Parametrii de confidențialitate ai listei de redare", - "Editing playlist `x`": "Modificați lista de redare `x`", - "Watch on YouTube": "Urmăriți videoclipul pe YouTube", - "Hide annotations": "Ascundeți adnotările", - "Show annotations": "Afișați adnotările", - "Genre: ": "Categorie: ", - "License: ": "Licență: ", - "Family friendly? ": "Adecvat pentru întreaga familie? ", - "Wilson score: ": "Scor Wilson: ", - "Engagement: ": "Procentul celor care au apăsat pe \"Îmi place\" sau \"Nu îmi place\" : ", - "Whitelisted regions: ": "Regiunile de pe lista albă: ", - "Blacklisted regions: ": "Regiunile de pe lista neagră: ", - "Shared `x`": "Publicat pe `x`", - "Premieres in `x`": "Premiera în `x`", - "Premieres `x`": "Premiera pe `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Se pare că ați dezactivat JavaScript. Apăsați aici pentru a vizualiza comentariile. Țineți minte faptul că încărcarea lor ar putea să dureze puțin mai mult.", - "View YouTube comments": "Vedeți comentariile de pe YouTube", - "View more comments on Reddit": "Vedeți mai multe comentarii pe Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Afișați `x` comentarii", - "": "Afișați `x` comentarii" - }, - "View Reddit comments": "Afișați comentariile de pe Reddit", - "Hide replies": "Ascundeți replicile", - "Show replies": "Afișați replicile", - "Incorrect password": "Parolă incorectă", - "Wrong answer": "Răspuns invalid", - "Erroneous CAPTCHA": "CAPTCHA invalid", - "CAPTCHA is a required field": "Câmpul CAPTCHA este obligatoriu", - "User ID is a required field": "Câmpul ID Utilizator este obligatoriu", - "Password is a required field": "Câmpul Parolă este obligatoriu", - "Wrong username or password": "Nume de utilizator sau parolă invalidă", - "Password cannot be empty": "Parola nu poate fi goală", - "Password cannot be longer than 55 characters": "Parola nu poate să conțină mai mult de 55 de caractere", - "Please log in": "Vă rog conectați-vă", - "Invidious Private Feed for `x`": "Feed RSS privat pentru `x`", - "channel:`x`": "canal:`x`", - "Deleted or invalid channel": "Canal șters sau invalid", - "This channel does not exist.": "Acest canal nu există.", - "Could not get channel info.": "Nu am putut primi informații despre acest canal.", - "Could not fetch comments": "Încărcarea comentariilor a eșuat", - "`x` ago": "acum `x`", - "Load more": "Vedeți mai mult", - "Could not create mix.": "Nu am putut crea această listă de redare.", - "Empty playlist": "Lista de redare este goală", - "Not a playlist.": "Lista de redare este invalidă.", - "Playlist does not exist.": "Această listă de redare nu există.", - "Could not pull trending pages.": "Încărcarea paginilor de tendințe a eșuat.", - "Hidden field \"challenge\" is a required field": "Câmpul ascuns \"challenge\" este un câmp obligatoriu", - "Hidden field \"token\" is a required field": "Câmpul ascuns \"token\" este un câmp obligatoriu", - "Erroneous challenge": "Challenge invalid", - "Erroneous token": "Token invalid", - "No such user": "Acest utilizator nu există", - "Token is expired, please try again": "Jetonul a expirat, vă rugăm să încercați din nou", - "English": "Engleză", - "English (auto-generated)": "Engleză (generată automat)", - "Afrikaans": "Afrikaans", - "Albanian": "Albaneză", - "Amharic": "Amharică", - "Arabic": "Arabă", - "Armenian": "Arméniană", - "Azerbaijani": "Azeră", - "Bangla": "Bangla", - "Basque": "Basque", - "Belarusian": "Belarusă", - "Bosnian": "Bosniacă", - "Bulgarian": "Bulgară", - "Burmese": "Birmană", - "Catalan": "Catalană", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Chineză (Simplificată)", - "Chinese (Traditional)": "Chinois (Tradițională)", - "Corsican": "Corsicană", - "Croatian": "Croată", - "Czech": "Cehă", - "Danish": "Daneză", - "Dutch": "Olandeză", - "Esperanto": "Esperanto", - "Estonian": "Estoniană", - "Filipino": "Filipineză", - "Finnish": "Finlandeză", - "French": "Franceză", - "Galician": "Galiciană", - "Georgian": "Georgiană", - "German": "Germană", - "Greek": "Greacă", - "Gujarati": "Gujarati", - "Haitian Creole": "Creola Haitiană", - "Hausa": "Haousa", - "Hawaiian": "Hawaiană", - "Hebrew": "Ebraică", - "Hindi": "Hindi", - "Hmong": "Hmong", - "Hungarian": "Ungară", - "Icelandic": "Islandeză", - "Igbo": "Igbo", - "Indonesian": "Indoneziană", - "Irish": "Irlandeză", - "Italian": "Italiană", - "Japanese": "Japoneză", - "Javanese": "Javaneză", - "Kannada": "Kannada", - "Kazakh": "Kazakh", - "Khmer": "Khmer", - "Korean": "Coreană", - "Kurdish": "Kurdă", - "Kyrgyz": "Kirghize", - "Lao": "Lao", - "Latin": "Latină", - "Latvian": "Letonă", - "Lithuanian": "Lituaniană", - "Luxembourgish": "Luxemburgheză", - "Macedonian": "Macedoniană", - "Malagasy": "Malgașă", - "Malay": "Malaieză", - "Malayalam": "Malayalam", - "Maltese": "Malteză", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongoliană", - "Nepali": "Nepaleză", - "Norwegian Bokmål": "Norvegiană", - "Nyanja": "Nyanja", - "Pashto": "Pachtou", - "Persian": "Persană", - "Polish": "Poloneză", - "Portuguese": "Portugheză", - "Punjabi": "Punjabi", - "Romanian": "Română", - "Russian": "Rusă", - "Samoan": "Samoan", - "Scottish Gaelic": "Galic Scoțian", - "Serbian": "Sârbă", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Sinhala", - "Slovak": "Slovacă", - "Slovenian": "Slovenă", - "Somali": "Somaleză", - "Southern Sotho": "Sotho de Sud", - "Spanish": "Spaniolă", - "Spanish (Latin America)": "Spaniolă (America Latină)", - "Sundanese": "Sundaneză", - "Swahili": "Swahili", - "Swedish": "Suedeză", - "Tajik": "Tajik", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Tailandeză", - "Turkish": "Turcă", - "Ukrainian": "Ucrainiană", - "Urdu": "Urdu", - "Uzbek": "Uzbek", - "Vietnamese": "Vietnameză", - "Welsh": "Galeză", - "Western Frisian": "Frisiană de Vest", - "Xhosa": "Xhosa", - "Yiddish": "Yiddish", - "Yoruba": "Yoruba", - "Zulu": "Zoulou", - "Fallback comments: ": "Comentarii alternative: ", - "Popular": "Populare", - "Top": "Top", - "About": "Despre", - "Rating: ": "Evaluare: ", - "preferences_locale_label": "Limbă: ", - "View as playlist": "Vizualizați ca listă de redare", - "Default": "Implicit", - "Music": "Muzică", - "Gaming": "Jocuri Video", - "News": "Noutăți", - "Movies": "Filme", - "Download": "Descărcați", - "Download as: ": "Descărcați ca: ", - "%A %B %-d, %Y": "%A %-d %B %Y", - "(edited)": "(editat)", - "YouTube comment permalink": "Permalink pentru comentariul de pe YouTube", - "permalink": "permalink", - "`x` marked it with a ❤": "`x` l-a marcat cu o ❤", - "Audio mode": "Mod audio", - "Video mode": "Mod video", - "channel_tab_videos_label": "Videoclipuri", - "Playlists": "Liste de redare", - "channel_tab_community_label": "Comunitate", - "Current version: ": "Versiunea actuală: ", - "crash_page_read_the_faq": "citit lista Întrebărilor Frecvente (FAQ)", - "generic_count_days_0": "{{count}} zi", - "generic_count_days_1": "{{count}} zile", - "generic_count_days_2": "{{count}} de zile", - "generic_count_hours_0": "{{count}} oră", - "generic_count_hours_1": "{{count}} ore", - "generic_count_hours_2": "{{count}} de ore", - "generic_count_minutes_0": "{{count}} minut", - "generic_count_minutes_1": "{{count}} minute", - "generic_count_minutes_2": "{{count}} de minute", - "generic_views_count_0": "{{count}} vizionare", - "generic_views_count_1": "{{count}} vizionări", - "generic_views_count_2": "{{count}} de vizionări", - "subscriptions_unseen_notifs_count_0": "{{count}} notificare neverificată", - "subscriptions_unseen_notifs_count_1": "{{count}} notificări neverificate", - "subscriptions_unseen_notifs_count_2": "{{count}} de notificări neverificate", - "crash_page_refresh": "încercat să reîmprospătați pagina", - "crash_page_switch_instance": "am încercat să folosim o altă instanță", - "preferences_watch_history_label": "Activează istoricul: ", - "invidious": "Invidious", - "preferences_vr_mode_label": "Videoclipuri interactive de 360 de grade (necesită WebGL): ", - "English (United Kingdom)": "Engleză (Regatul Unit)", - "English (United States)": "Engleză (Statele Unite ale Americii)", - "Chinese": "Chineză", - "Chinese (China)": "Chineză (China)", - "Chinese (Hong Kong)": "Chineză (Hong Kong)", - "Chinese (Taiwan)": "Chineză (Taiwan)", - "Cantonese (Hong Kong)": "Cantoneză (Hong Kong)", - "Portuguese (auto-generated)": "Portugheză (generată automat)", - "Portuguese (Brazil)": "Portugheză (Brazilia)", - "Russian (auto-generated)": "Rusă (generată automat)", - "Turkish (auto-generated)": "Turcă (generată automat)", - "Vietnamese (auto-generated)": "Vietnameză (generată automat)", - "videoinfo_started_streaming_x_ago": "În direct de acum `x`", - "preferences_quality_dash_option_2160p": "2160p", - "footer_modfied_source_code": "Codul sursă modificat", - "preferences_quality_dash_label": "Calitatea video DASH preferată: ", - "generic_videos_count_0": "{{count}} videoclip", - "generic_videos_count_1": "{{count}} videoclipuri", - "generic_videos_count_2": "{{count}} de videoclipuri", - "generic_playlists_count_0": "{{count}} playlist", - "generic_playlists_count_1": "{{count}} playlisturi", - "generic_playlists_count_2": "{{count}} de playlisturi", - "tokens_count_0": "{{count}} jeton", - "tokens_count_1": "{{count}} jetoane", - "tokens_count_2": "{{count}} de jetoane", - "comments_points_count_0": "{{count}} punct", - "comments_points_count_1": "{{count}} puncte", - "comments_points_count_2": "{{count}} de puncte", - "Spanish (Spain)": "Spaniolă (Spania)", - "Video unavailable": "Videoclip indisponibil", - "crash_page_search_issue": "căutat sugestiile existente pe GitHub", - "Show more": "Afișați mai mult", - "Released under the AGPLv3 on Github.": "Lansat sub licența AGPLv3 pe GitHub.", - "preferences_quality_option_dash": "DASH (calitate adaptativă)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_small": "Mică", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_category_misc": "Setări diverse", - "preferences_automatic_instance_redirect_label": "Redirecționare automată de instanță (trecere prin redirect.invidious.io): ", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_option_medium": "Medie", - "Switch Invidious Instance": "Schimbă instanța Invidious", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_auto": "Automatică", - "preferences_quality_dash_option_best": "Cea mai bună", - "preferences_quality_dash_option_worst": "Cea mai redusă", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_360p": "360p", - "preferences_region_label": "Țară de conținut: ", - "preferences_extend_desc_label": "Extindeți automat descrierea: ", - "preferences_show_nick_label": "Afișați numele de utilizator pe partea de sus: ", - "generic_subscribers_count_0": "{{count}} abonat", - "generic_subscribers_count_1": "{{count}} abonați", - "generic_subscribers_count_2": "{{count}} de abonați", - "generic_subscriptions_count_0": "{{count}} abonament", - "generic_subscriptions_count_1": "{{count}} abonamente", - "generic_subscriptions_count_2": "{{count}} de abonamente", - "Search": "Căutați", - "search_filters_title": "Filtre", - "search_filters_date_label": "Data încărcării", - "none": "niciunul", - "search_message_use_another_instance": " Puteți căuta într-o altă instanță.", - "comments_view_x_replies_0": "Afișați {{count}} răspuns", - "comments_view_x_replies_1": "Afișați {{count}} răspunsuri", - "comments_view_x_replies_2": "Afișați {{count}} de răspunsuri", - "search_message_no_results": "Nu s-au găsit rezultate.", - "Dutch (auto-generated)": "Olandeză (generată automat)", - "Indonesian (auto-generated)": "Indoneziană (generată automat)", - "German (auto-generated)": "Germană (generată automat)", - "French (auto-generated)": "Franceză (generată automat)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italiană (generată automat)", - "Japanese (auto-generated)": "Japoneză (generată automat)", - "Korean (auto-generated)": "Coreeană (generată automat)", - "Spanish (auto-generated)": "Spaniolă (generată automat)", - "search_filters_date_option_none": "Oricând", - "search_filters_date_option_year": "an", - "search_filters_type_option_channel": "canal", - "Spanish (Mexico)": "Spaniolă (Mexic)", - "generic_count_weeks_0": "{{count}} săptămână", - "generic_count_weeks_1": "{{count}} săptămâni", - "generic_count_weeks_2": "{{count}} de săptămâni", - "generic_count_seconds_0": "{{count}} secundă", - "generic_count_seconds_1": "{{count}} secunde", - "generic_count_seconds_2": "{{count}} de secunde", - "search_filters_type_option_video": "videoclip", - "generic_count_years_0": "{{count}} an", - "generic_count_years_1": "{{count}} ani", - "generic_count_years_2": "{{count}} de ani", - "generic_count_months_0": "{{count}} lună", - "generic_count_months_1": "{{count}} luni", - "generic_count_months_2": "{{count}} de luni", - "search_filters_duration_label": "durată", - "search_filters_date_option_month": "lună", - "search_filters_type_label": "Tip", - "search_filters_date_option_today": "azi", - "search_filters_date_option_week": "săptămână", - "search_filters_features_option_vr180": "VR180", - "search_filters_type_option_playlist": "playlist", - "search_filters_type_option_movie": "film", - "search_filters_type_option_show": "emisiune", - "search_filters_duration_option_short": "Scurt (< 4 minute)", - "search_filters_duration_option_medium": "Medie (4 - 20 de minute)", - "search_filters_duration_option_none": "Fără limită", - "search_filters_duration_option_long": "Lungă (> 20 de minute)", - "search_filters_features_label": "atribute", - "search_filters_features_option_live": "în direct", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_subtitles": "subtitrări/CC", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_hdr": "HDR", - "search_filters_features_option_purchased": "Cumpărate", - "next_steps_error_message": "După ce ar trebui să încercați să: ", - "user_saved_playlists": "`x` playlisturi salvate", - "search_filters_features_option_location": "locație", - "search_filters_sort_label": "Sortați după", - "search_filters_sort_option_relevance": "relevanță", - "search_filters_sort_option_rating": "clasificare", - "search_filters_sort_option_date": "Data încărcării", - "search_filters_sort_option_views": "Numărul de vizionări", - "footer_source_code": "Codul sursă", - "search_filters_apply_button": "Aplicați filtrele selectate", - "footer_original_source_code": "Codul sursă original", - "next_steps_error_message_refresh": "Reîmprospătează", - "next_steps_error_message_go_to_youtube": "Mergeți pe YouTube", - "footer_donate_page": "Donați", - "adminprefs_modified_source_code_url_label": "URL către depozitul de cod sursă modificat", - "footer_documentation": "Documentație", - "videoinfo_youTube_embed_link": "Încorporați", - "videoinfo_watch_on_youTube": "Vizionați pe YouTube", - "videoinfo_invidious_embed_link": "Link de încorporare", - "download_subtitles": "Subtitrări - `x` (.vtt)", - "user_created_playlists": "`x` playlisturi create", - "preferences_save_player_pos_label": "Salvați poziția de redare: ", - "crash_page_you_found_a_bug": "Se pare că ați găsit un bug în aplicația Invidious!", - "crash_page_before_reporting": "Înainte de a reporta bugul, asigurați-vă că ați:", - "search_filters_date_option_hour": "oră", - "search_message_change_filters_or_query": "Încercați să lărgiți căutarea sau să modificați filtrele.", - "crash_page_report_issue": "Dacă niciuna dintre sugestiile de mai sus v-a ajutat, vă rugăm să postați o nouă sugestie pe GitHub (cel mai bine în engleză), și să includeți următorul text în post (să nu îl traduceți):", - "search_filters_type_option_all": "orice tip", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "Show less": "Afișați mai puțin" -} diff --git a/invidious/locales/ru.json b/invidious/locales/ru.json deleted file mode 100755 index 61bf9e9..0000000 --- a/invidious/locales/ru.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "LIVE": "ПРЯМОЙ ЭФИР", - "Shared `x` ago": "Опубликовано `x` назад", - "Unsubscribe": "Отписаться", - "Subscribe": "Подписаться", - "View channel on YouTube": "Смотреть канал на YouTube", - "View playlist on YouTube": "Посмотреть плейлист на YouTube", - "newest": "сначала новые", - "oldest": "сначала старые", - "popular": "популярные", - "last": "последние", - "Next page": "Следующая страница", - "Previous page": "Предыдущая страница", - "Clear watch history?": "Очистить историю просмотров?", - "New password": "Новый пароль", - "New passwords must match": "Новые пароли не совпадают", - "Authorize token?": "Авторизовать токен?", - "Authorize token for `x`?": "Токен авторизации для `x`?", - "Yes": "Да", - "No": "Нет", - "Import and Export Data": "Импорт и экспорт данных", - "Import": "Импорт", - "Import Invidious data": "Импортировать JSON с данными Invidious", - "Import YouTube subscriptions": "Импортировать подписки из YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Импортировать подписки из FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Импортировать подписки из NewPipe (.json)", - "Import NewPipe data (.zip)": "Импортировать данные из NewPipe (.zip)", - "Export": "Экспорт", - "Export subscriptions as OPML": "Экспортировать подписки в формате OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Экспортировать подписки в формате OPML (для NewPipe и FreeTube)", - "Export data as JSON": "Экспортировать данные Invidious в формате JSON", - "Delete account?": "Удалить учётную запись?", - "History": "История", - "An alternative front-end to YouTube": "Альтернативный фронтенд для YouTube", - "JavaScript license information": "Информация о лицензиях JavaScript", - "source": "источник", - "Log in": "Войти", - "Log in/register": "Войти или зарегистрироваться", - "User ID": "ИД пользователя", - "Password": "Пароль", - "Time (h:mm:ss):": "Время (ч:мм:сс):", - "Text CAPTCHA": "Текстовая капча (англ.)", - "Image CAPTCHA": "Капча-картинка", - "Sign In": "Войти", - "Register": "Регистрация", - "E-mail": "Эл. почта", - "Preferences": "Настройки", - "preferences_category_player": "Настройки проигрывателя", - "preferences_video_loop_label": "Всегда повторять: ", - "preferences_autoplay_label": "Автовоспроизведение: ", - "preferences_continue_label": "Переходить к следующему видео? ", - "preferences_continue_autoplay_label": "Автопроигрывание следующего видео: ", - "preferences_listen_label": "Режим «только аудио» по умолчанию: ", - "preferences_local_label": "Проигрывать видео через прокси? ", - "preferences_speed_label": "Скорость видео по умолчанию: ", - "preferences_quality_label": "Предпочтительное качество видео: ", - "preferences_volume_label": "Громкость видео: ", - "preferences_comments_label": "Источник комментариев: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Основной язык субтитров: ", - "Fallback captions: ": "Дополнительный язык субтитров: ", - "preferences_related_videos_label": "Показывать похожие видео? ", - "preferences_annotations_label": "Показывать аннотации по умолчанию: ", - "preferences_extend_desc_label": "Автоматически раскрывать описание видео: ", - "preferences_vr_mode_label": "Интерактивные 360-градусные видео (необходим WebGL): ", - "preferences_category_visual": "Настройки сайта", - "preferences_player_style_label": "Стиль проигрывателя: ", - "Dark mode: ": "Тёмное оформление: ", - "preferences_dark_mode_label": "Тема: ", - "dark": "тёмная", - "light": "светлая", - "preferences_thin_mode_label": "Облегчённое оформление: ", - "preferences_category_misc": "Прочие настройки", - "preferences_automatic_instance_redirect_label": "Автоматическая смена зеркала (переход на redirect.invidious.io): ", - "preferences_category_subscription": "Настройки подписок", - "preferences_annotations_subscribed_label": "Всегда показывать аннотации на каналах из ваших подписок? ", - "Redirect homepage to feed: ": "Показывать подписки на главной странице: ", - "preferences_max_results_label": "Число видео в ленте: ", - "preferences_sort_label": "Сортировать видео по: ", - "published": "дате публикации", - "published - reverse": "дате публикации в обратном порядке", - "alphabetically": "алфавиту", - "alphabetically - reverse": "алфавиту в обратном порядке", - "channel name": "названию канала", - "channel name - reverse": "названию канала в обратном порядке", - "Only show latest video from channel: ": "Показывать только последние видео с каналов: ", - "Only show latest unwatched video from channel: ": "Показывать только последние непросмотренные видео с канала: ", - "preferences_unseen_only_label": "Показывать только непросмотренные видео: ", - "preferences_notifications_only_label": "Показывать только оповещения, если они есть: ", - "Enable web notifications": "Включить уведомления в браузере", - "`x` uploaded a video": "`x` разместил видео", - "`x` is live": "`x` в прямом эфире", - "preferences_category_data": "Настройки данных", - "Clear watch history": "Очистить историю просмотров", - "Import/export data": "Импорт и экспорт данных", - "Change password": "Изменить пароль", - "Manage subscriptions": "Управление подписками", - "Manage tokens": "Управление токенами", - "Watch history": "История просмотров", - "Delete account": "Удалить аккаунт", - "preferences_category_admin": "Настройки администратора", - "preferences_default_home_label": "Главная страница по умолчанию: ", - "preferences_feed_menu_label": "Меню ленты видео: ", - "preferences_show_nick_label": "Показать ник вверху: ", - "Top enabled: ": "Включить топ видео? ", - "CAPTCHA enabled: ": "Включить капчу? ", - "Login enabled: ": "Включить авторизацию: ", - "Registration enabled: ": "Включить регистрацию? ", - "Report statistics: ": "Сообщать статистику? ", - "Save preferences": "Сохранить настройки", - "Subscription manager": "Управление подписками", - "Token manager": "Управление токенами", - "Token": "Токен", - "Import/export": "Импорт и экспорт", - "unsubscribe": "отписаться", - "revoke": "отозвать", - "Subscriptions": "Подписки", - "search": "поиск", - "Log out": "Выйти", - "Released under the AGPLv3 on Github.": "Выпущено под лицензией AGPLv3 на GitHub.", - "Source available here.": "Исходный код.", - "View JavaScript license information.": "Информация о лицензиях JavaScript.", - "View privacy policy.": "Политика конфиденциальности.", - "Trending": "В тренде", - "Public": "Публичный", - "Unlisted": "Нет в списке", - "Private": "Приватный", - "View all playlists": "Посмотреть все плейлисты", - "Updated `x` ago": "Обновлено `x` назад", - "Delete playlist `x`?": "Удалить плейлист `x`?", - "Delete playlist": "Удалить плейлист", - "Create playlist": "Создать плейлист", - "Title": "Заголовок", - "Playlist privacy": "Видимость плейлиста", - "Editing playlist `x`": "Редактирование плейлиста `x`", - "Show more": "Показать больше", - "Show less": "Показать меньше", - "Watch on YouTube": "Смотреть на YouTube", - "Switch Invidious Instance": "Сменить зеркало Invidious", - "Hide annotations": "Скрыть аннотации", - "Show annotations": "Показать аннотации", - "Genre: ": "Жанр: ", - "License: ": "Лицензия: ", - "Family friendly? ": "Семейный просмотр: ", - "Wilson score: ": "Оценка Уилсона: ", - "Engagement: ": "Вовлечённость: ", - "Whitelisted regions: ": "Доступно в регионах: ", - "Blacklisted regions: ": "Недоступно в регионах: ", - "Shared `x`": "Опубликовано `x`", - "Premieres in `x`": "Премьера через `x`", - "Premieres `x`": "Премьера `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Похоже, у вас отключён JavaScript. Нажмите сюда, чтобы увидеть комментарии. Но учтите: они могут загружаться немного медленнее.", - "View YouTube comments": "Показать комментарии с YouTube", - "View more comments on Reddit": "Посмотреть больше комментариев на Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Показано `x` комментариев", - "": "Показано `x` комментариев" - }, - "View Reddit comments": "Смотреть комментарии с Reddit", - "Hide replies": "Скрыть ответы", - "Show replies": "Показать ответы", - "Incorrect password": "Неправильный пароль", - "Wrong answer": "Неправильный ответ", - "Erroneous CAPTCHA": "Неправильная капча", - "CAPTCHA is a required field": "Необходимо решить капчу", - "User ID is a required field": "Необходимо ввести идентификатор пользователя", - "Password is a required field": "Необходимо ввести пароль", - "Wrong username or password": "Неправильный логин или пароль", - "Password cannot be empty": "Пароль не может быть пустым", - "Password cannot be longer than 55 characters": "Пароль не может быть длиннее 55 символов", - "Please log in": "Пожалуйста, войдите", - "Invidious Private Feed for `x`": "Приватная лента Invidious для `x`", - "channel:`x`": "канал: `x`", - "Deleted or invalid channel": "Канал удалён или не найден", - "This channel does not exist.": "Такого канала не существует.", - "Could not get channel info.": "Не удаётся получить информацию об этом канале.", - "Could not fetch comments": "Не удаётся загрузить комментарии", - "`x` ago": "`x` назад", - "Load more": "Загрузить ещё", - "Could not create mix.": "Не удалось создать микс.", - "Empty playlist": "Плейлист пуст", - "Not a playlist.": "Это не плейлист.", - "Playlist does not exist.": "Плейлист не существует.", - "Could not pull trending pages.": "Не удаётся загрузить страницы «в тренде».", - "Hidden field \"challenge\" is a required field": "Необходимо заполнить скрытое поле «challenge»", - "Hidden field \"token\" is a required field": "Необходимо заполнить скрытое поле «токен»", - "Erroneous challenge": "Неправильный ответ в «challenge»", - "Erroneous token": "Неправильный токен", - "No such user": "Пользователь не найден", - "Token is expired, please try again": "Срок действия токена истёк, попробуйте позже", - "English": "Английский", - "English (auto-generated)": "Английский (созданы автоматически)", - "Afrikaans": "Африкаанс", - "Albanian": "Албанский", - "Amharic": "Амхарский", - "Arabic": "Арабский", - "Armenian": "Армянский", - "Azerbaijani": "Азербайджанский", - "Bangla": "Бенгальский", - "Basque": "Баскский", - "Belarusian": "Белорусский", - "Bosnian": "Боснийский", - "Bulgarian": "Болгарский", - "Burmese": "Бирманский", - "Catalan": "Каталонский", - "Cebuano": "Себуанский", - "Chinese (Simplified)": "Китайский (упрощённый)", - "Chinese (Traditional)": "Китайский (традиционный)", - "Corsican": "Корсиканский", - "Croatian": "Хорватский", - "Czech": "Чешский", - "Danish": "Датский", - "Dutch": "Голландский", - "Esperanto": "Эсперанто", - "Estonian": "Эстонский", - "Filipino": "Филиппинский", - "Finnish": "Финский", - "French": "Французский", - "Galician": "Галисийский", - "Georgian": "Грузинский", - "German": "Немецкий", - "Greek": "Греческий", - "Gujarati": "Гуджарати", - "Haitian Creole": "Гаитянский креольский", - "Hausa": "Хауса", - "Hawaiian": "Гавайский", - "Hebrew": "Иврит", - "Hindi": "Хинди", - "Hmong": "Хмонг (мяо)", - "Hungarian": "Венгерский", - "Icelandic": "Исландский", - "Igbo": "Игбо", - "Indonesian": "Индонезийский", - "Irish": "Ирландский", - "Italian": "Итальянский", - "Japanese": "Японский", - "Javanese": "Яванский", - "Kannada": "Каннада", - "Kazakh": "Казахский", - "Khmer": "Кхмерский", - "Korean": "Корейский", - "Kurdish": "Курдский", - "Kyrgyz": "Киргизский", - "Lao": "Лаосский", - "Latin": "Латынь", - "Latvian": "Латышский", - "Lithuanian": "Литовский", - "Luxembourgish": "Люксембургский", - "Macedonian": "Македонский", - "Malagasy": "Малагасийский", - "Malay": "Малайский", - "Malayalam": "Малаялам", - "Maltese": "Мальтийский", - "Maori": "Маори", - "Marathi": "Маратхи", - "Mongolian": "Монгольский", - "Nepali": "Непальский", - "Norwegian Bokmål": "Норвежский букмол", - "Nyanja": "Ньянджа", - "Pashto": "Пушту", - "Persian": "Персидский", - "Polish": "Польский", - "Portuguese": "Португальский", - "Punjabi": "Панджаби", - "Romanian": "Румынский", - "Russian": "Русский", - "Samoan": "Самоанский", - "Scottish Gaelic": "Шотландский (гэльский)", - "Serbian": "Сербский", - "Shona": "Шона", - "Sindhi": "Синдхи", - "Sinhala": "Сингальский", - "Slovak": "Словацкий", - "Slovenian": "Словенский", - "Somali": "Сомалийский", - "Southern Sotho": "Сесото (южный сото)", - "Spanish": "Испанский", - "Spanish (Latin America)": "Испанский (Латинская Америка)", - "Sundanese": "Сунданский", - "Swahili": "Суахили", - "Swedish": "Шведский", - "Tajik": "Таджикский", - "Tamil": "Тамильский", - "Telugu": "Телугу", - "Thai": "Тайский", - "Turkish": "Турецкий", - "Ukrainian": "Украинский", - "Urdu": "Урду", - "Uzbek": "Узбекский", - "Vietnamese": "Вьетнамский", - "Welsh": "Валлийский", - "Western Frisian": "Западнофризский", - "Xhosa": "Коса (кхоса)", - "Yiddish": "Идиш", - "Yoruba": "Йоруба", - "Zulu": "Зулусский", - "Fallback comments: ": "Резервные комментарии: ", - "Popular": "Популярное", - "Search": "Поиск", - "Top": "Топ", - "About": "О сайте", - "Rating: ": "Рейтинг: ", - "preferences_locale_label": "Язык: ", - "View as playlist": "Смотреть как плейлист", - "Default": "По умолчанию", - "Music": "Музыка", - "Gaming": "Игры", - "News": "Новости", - "Movies": "Фильмы", - "Download": "Скачать", - "Download as: ": "Скачать как: ", - "%A %B %-d, %Y": "%-d %B %Y, %A", - "(edited)": "(изменено)", - "YouTube comment permalink": "Прямая ссылка на YouTube", - "permalink": "постоянная ссылка", - "`x` marked it with a ❤": "❤ от автора канала \"`x`\"", - "Audio mode": "Аудио режим", - "Video mode": "Видео режим", - "channel_tab_videos_label": "Видео", - "Playlists": "Плейлисты", - "channel_tab_community_label": "Сообщество", - "search_filters_sort_option_relevance": "актуальности", - "search_filters_sort_option_rating": "рейтингу", - "search_filters_sort_option_date": "дате загрузки", - "search_filters_sort_option_views": "просмотрам", - "search_filters_type_label": "Тип", - "search_filters_duration_label": "Длительность", - "search_filters_features_label": "Дополнительно", - "search_filters_sort_label": "Сортировать по", - "search_filters_date_option_hour": "Последний час", - "search_filters_date_option_today": "Сегодня", - "search_filters_date_option_week": "Эта неделя", - "search_filters_date_option_month": "Этот месяц", - "search_filters_date_option_year": "Этот год", - "search_filters_type_option_video": "Видео", - "search_filters_type_option_channel": "Канал", - "search_filters_type_option_playlist": "Плейлист", - "search_filters_type_option_movie": "Фильм", - "search_filters_type_option_show": "Сериал", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Субтитры", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Прямой эфир", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Местоположение", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Текущая версия: ", - "next_steps_error_message": "После чего следует попробовать: ", - "next_steps_error_message_refresh": "Обновить", - "next_steps_error_message_go_to_youtube": "Перейти на YouTube", - "search_filters_duration_option_short": "Короткие (< 4 минут)", - "search_filters_duration_option_long": "Длинные (> 20 минут)", - "preferences_quality_dash_option_best": "Наилучшее", - "generic_count_weeks_0": "{{count}} неделя", - "generic_count_weeks_1": "{{count}} недели", - "generic_count_weeks_2": "{{count}} недель", - "English (United Kingdom)": "Английский (Великобритания)", - "English (United States)": "Английский (США)", - "Cantonese (Hong Kong)": "Кантонский (Гонконг)", - "Chinese (Taiwan)": "Китайский (Тайвань)", - "Dutch (auto-generated)": "Голландский (созданы автоматически)", - "German (auto-generated)": "Немецкий (созданы автоматически)", - "Indonesian (auto-generated)": "Индонезийский (созданы автоматически)", - "Italian (auto-generated)": "Итальянский (созданы автоматически)", - "Interlingue": "Окциденталь", - "Russian (auto-generated)": "Русский (созданы автоматически)", - "Spanish (auto-generated)": "Испанский (созданы автоматически)", - "Spanish (Spain)": "Испанский (Испания)", - "Turkish (auto-generated)": "Турецкий (созданы автоматически)", - "Vietnamese (auto-generated)": "Вьетнамский (созданы автоматически)", - "footer_documentation": "Документация", - "adminprefs_modified_source_code_url_label": "Ссылка на репозиторий с измененными исходными кодами", - "none": "ничего", - "videoinfo_watch_on_youTube": "Смотреть на YouTube", - "videoinfo_youTube_embed_link": "Версия для встраивания", - "videoinfo_invidious_embed_link": "Ссылка для встраивания", - "download_subtitles": "Субтитры - `x` (.vtt)", - "user_created_playlists": "`x` созданных плейлистов", - "crash_page_you_found_a_bug": "Похоже, вы нашли ошибку в Invidious!", - "crash_page_before_reporting": "Прежде чем сообщать об ошибке, убедитесь, что вы:", - "crash_page_refresh": "пробовали перезагрузить страницу", - "crash_page_report_issue": "Если ни один вариант не помог, пожалуйста откройте новую проблему на GitHub (на английском, пжлста) и приложите следующий текст к вашему сообщению (НЕ переводите его):", - "generic_videos_count_0": "{{count}} видео", - "generic_videos_count_1": "{{count}} видео", - "generic_videos_count_2": "{{count}} видео", - "generic_playlists_count_0": "{{count}} плейлист", - "generic_playlists_count_1": "{{count}} плейлиста", - "generic_playlists_count_2": "{{count}} плейлистов", - "tokens_count_0": "{{count}} токен", - "tokens_count_1": "{{count}} токена", - "tokens_count_2": "{{count}} токенов", - "subscriptions_unseen_notifs_count_0": "{{count}} новое уведомление", - "subscriptions_unseen_notifs_count_1": "{{count}} новых уведомления", - "subscriptions_unseen_notifs_count_2": "{{count}} новых уведомлений", - "comments_view_x_replies_0": "{{count}} ответ", - "comments_view_x_replies_1": "{{count}} ответа", - "comments_view_x_replies_2": "{{count}} ответов", - "generic_count_years_0": "{{count}} год", - "generic_count_years_1": "{{count}} года", - "generic_count_years_2": "{{count}} лет", - "generic_count_minutes_0": "{{count}} минута", - "generic_count_minutes_1": "{{count}} минуты", - "generic_count_minutes_2": "{{count}} минут", - "generic_subscribers_count_0": "{{count}} подписчик", - "generic_subscribers_count_1": "{{count}} подписчика", - "generic_subscribers_count_2": "{{count}} подписчиков", - "generic_views_count_0": "{{count}} просмотр", - "generic_views_count_1": "{{count}} просмотра", - "generic_views_count_2": "{{count}} просмотров", - "French (auto-generated)": "Французский (созданы автоматически)", - "Portuguese (auto-generated)": "Португальский (созданы автоматически)", - "generic_count_days_0": "{{count}} день", - "generic_count_days_1": "{{count}} дня", - "generic_count_days_2": "{{count}} дней", - "preferences_quality_dash_option_auto": "Авто", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "generic_subscriptions_count_0": "{{count}} подписка", - "generic_subscriptions_count_1": "{{count}} подписки", - "generic_subscriptions_count_2": "{{count}} подписок", - "preferences_quality_option_small": "Низкое", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "generic_count_seconds_0": "{{count}} секунда", - "generic_count_seconds_1": "{{count}} секунды", - "generic_count_seconds_2": "{{count}} секунд", - "search_filters_features_option_purchased": "Приобретено", - "videoinfo_started_streaming_x_ago": "Трансляция началась `x` назад", - "crash_page_switch_instance": "пробовали использовать другое зеркало", - "crash_page_read_the_faq": "прочли ответы на Частые Вопросы (ЧаВо)", - "Chinese": "Китайский", - "Chinese (Hong Kong)": "Китайский (Гонконг)", - "Japanese (auto-generated)": "Японский (созданы автоматически)", - "Chinese (China)": "Китайский (Китай)", - "Korean (auto-generated)": "Корейский (созданы автоматически)", - "generic_count_months_0": "{{count}} месяц", - "generic_count_months_1": "{{count}} месяца", - "generic_count_months_2": "{{count}} месяцев", - "generic_count_hours_0": "{{count}} час", - "generic_count_hours_1": "{{count}} часа", - "generic_count_hours_2": "{{count}} часов", - "Portuguese (Brazil)": "Португальский (Бразилия)", - "footer_source_code": "Исходный код", - "footer_original_source_code": "Оригинальный исходный код", - "footer_modfied_source_code": "Изменённый исходный код", - "user_saved_playlists": "`x` сохранённых плейлистов", - "crash_page_search_issue": "поискали похожую проблему на GitHub", - "comments_points_count_0": "{{count}} плюс", - "comments_points_count_1": "{{count}} плюса", - "comments_points_count_2": "{{count}} плюсов", - "Spanish (Mexico)": "Испанский (Мексика)", - "footer_donate_page": "Поддержать проект", - "preferences_quality_option_dash": "DASH (автоматическое качество)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Среднее", - "preferences_quality_dash_label": "Предпочтительное качество для DASH: ", - "preferences_quality_dash_option_worst": "Очень низкое", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_three_sixty": "360°", - "Video unavailable": "Видео недоступно", - "preferences_save_player_pos_label": "Запоминать позицию: ", - "preferences_region_label": "Страна источник ", - "preferences_watch_history_label": "Включить историю просмотров: ", - "search_filters_title": "Фильтр", - "search_filters_duration_option_none": "Любой длины", - "search_filters_type_option_all": "Любого типа", - "search_filters_date_option_none": "Любая дата", - "search_filters_date_label": "Дата загрузки", - "search_message_no_results": "Ничего не найдено.", - "search_message_use_another_instance": " Дополнительно вы можете поискать на других зеркалах.", - "search_filters_features_option_vr180": "VR180", - "search_message_change_filters_or_query": "Попробуйте расширить поисковый запрос и/или изменить фильтры.", - "search_filters_duration_option_medium": "Средние (4 - 20 минут)", - "search_filters_apply_button": "Применить фильтры", - "Popular enabled: ": "Популярное включено: ", - "error_video_not_in_playlist": "Запрошенного видео нет в этом плейлисте. Нажмите тут, чтобы вернуться к странице плейлиста.", - "channel_tab_playlists_label": "Плейлисты", - "channel_tab_channels_label": "Каналы", - "channel_tab_streams_label": "Стримы", - "channel_tab_shorts_label": "Shorts", - "Music in this video": "Музыка в этом видео", - "Artist: ": "Исполнитель: ", - "Album: ": "Альбом: ", - "Song: ": "Композиция: ", - "Standard YouTube license": "Стандартная лицензия YouTube", - "Channel Sponsor": "Спонсор канала", - "Download is disabled": "Загрузка отключена", - "Import YouTube playlist (.csv)": "Импорт плейлиста YouTube (.csv)", - "channel_tab_releases_label": "Релизы", - "generic_button_delete": "Удалить", - "generic_button_edit": "Редактировать", - "generic_button_save": "Сохранить", - "generic_button_cancel": "Отменить", - "generic_button_rss": "RSS", - "playlist_button_add_items": "Добавить видео", - "channel_tab_podcasts_label": "Подкасты", - "generic_channels_count_0": "{{count}} канал", - "generic_channels_count_1": "{{count}} канала", - "generic_channels_count_2": "{{count}} каналов", - "Import YouTube watch history (.json)": "Импортировать историю просмотра из YouTube (.json)" -} diff --git a/invidious/locales/si.json b/invidious/locales/si.json deleted file mode 100755 index 4637cbd..0000000 --- a/invidious/locales/si.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "generic_views_count": "බැලීම් {{count}}", - "generic_views_count_plural": "බැලීම් {{count}}", - "generic_videos_count": "{{count}} වීඩියෝව", - "generic_videos_count_plural": "වීඩියෝ {{count}}", - "generic_subscribers_count": "ග්‍රාහකයන් {{count}}", - "generic_subscribers_count_plural": "ග්‍රාහකයන් {{count}}", - "generic_subscriptions_count": "දායකත්ව {{count}}", - "generic_subscriptions_count_plural": "දායකත්ව {{count}}", - "Shared `x` ago": "`x` පෙර බෙදා ගන්නා ලදී", - "Unsubscribe": "දායක නොවන්න", - "View playlist on YouTube": "YouTube හි ධාවන ලැයිස්තුව බලන්න", - "newest": "අලුත්ම", - "oldest": "පැරණිතම", - "popular": "ජනප්‍රිය", - "last": "අවසන්", - "Authorize token?": "ටෝකනය අනුමත කරනවා ද?", - "Authorize token for `x`?": "`x` සඳහා ටෝකනය අනුමත කරනවා ද?", - "Yes": "ඔව්", - "Import and Export Data": "දත්ත ආනයනය සහ අපනයනය කිරීම", - "Import": "ආනයන", - "Import Invidious data": "Invidious JSON දත්ත ආයාත කරන්න", - "Import FreeTube subscriptions (.db)": "FreeTube දායකත්වයන් (.db) ආයාත කරන්න", - "Import NewPipe subscriptions (.json)": "NewPipe දායකත්වයන් (.json) ආයාත කරන්න", - "Import NewPipe data (.zip)": "NewPipe දත්ත (.zip) ආයාත කරන්න", - "Export": "අපනයන", - "Export data as JSON": "Invidious දත්ත JSON ලෙස අපනයනය කරන්න", - "Delete account?": "ගිණුම මකාදමනවා ද?", - "History": "ඉතිහාසය", - "An alternative front-end to YouTube": "YouTube සඳහා විකල්ප ඉදිරිපස අන්තයක්", - "source": "මූලාශ්‍රය", - "Log in/register": "පුරන්න/ලියාපදිංචිවන්න", - "Password": "මුරපදය", - "Time (h:mm:ss):": "වේලාව (h:mm:ss):", - "Sign In": "පුරන්න", - "Preferences": "මනාපයන්", - "preferences_category_player": "වීඩියෝ ධාවක මනාපයන්", - "preferences_video_loop_label": "නැවත නැවතත්: ", - "preferences_autoplay_label": "ස්වයංක්‍රීය වාදනය: ", - "preferences_continue_label": "මීලඟට වාදනය කරන්න: ", - "preferences_continue_autoplay_label": "මීළඟ වීඩියෝව ස්වයංක්‍රීයව ධාවනය කරන්න: ", - "preferences_local_label": "Proxy වීඩියෝ: ", - "preferences_watch_history_label": "නැරඹුම් ඉතිහාසය සබල කරන්න: ", - "preferences_speed_label": "පෙරනිමි වේගය: ", - "preferences_quality_option_dash": "DASH (අනුවර්තිත ගුණත්වය)", - "preferences_quality_option_medium": "මධ්‍යස්ථ", - "preferences_quality_dash_label": "කැමති DASH වීඩියෝ ගුණත්වය: ", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_144p": "144p", - "preferences_volume_label": "ධාවකයේ හඬ: ", - "preferences_comments_label": "පෙරනිමි අදහස්: ", - "youtube": "YouTube", - "reddit": "Reddit", - "invidious": "Invidious", - "preferences_captions_label": "පෙරනිමි උපසිරැසි: ", - "preferences_related_videos_label": "අදාළ වීඩියෝ පෙන්වන්න: ", - "preferences_annotations_label": "අනුසටහන් පෙන්වන්න: ", - "preferences_vr_mode_label": "අන්තර්ක්‍රියාකාරී අංශක 360 වීඩියෝ (WebGL අවශ්‍යයි): ", - "preferences_region_label": "අන්තර්ගත රට: ", - "preferences_player_style_label": "වීඩියෝ ධාවක විලාසය: ", - "Dark mode: ": "අඳුරු මාදිලිය: ", - "preferences_dark_mode_label": "තේමාව: ", - "light": "ආලෝකමත්", - "generic_playlists_count": "{{count}} ධාවන ලැයිස්තුව", - "generic_playlists_count_plural": "ධාවන ලැයිස්තු {{count}}", - "LIVE": "සජීව", - "Subscribe": "දායක වන්න", - "View channel on YouTube": "YouTube හි නාලිකාව බලන්න", - "Next page": "ඊළඟ පිටුව", - "Previous page": "පෙර පිටුව", - "Clear watch history?": "නැරඹුම් ඉතිහාසය මකාදමනවා ද?", - "No": "නැත", - "Log in": "පුරන්න", - "New password": "නව මුරපදය", - "Import YouTube subscriptions": "YouTube/OPML දායකත්වයන් ආයාත කරන්න", - "Register": "ලියාපදිංචිවන්න", - "New passwords must match": "නව මුරපද ගැලපිය යුතුය", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML ලෙස දායකත්වයන් අපනයනය කරන්න (NewPipe සහ FreeTube සඳහා)", - "Export subscriptions as OPML": "දායකත්වයන් OPML ලෙස අපනයනය කරන්න", - "JavaScript license information": "JavaScript බලපත්‍ර තොරතුරු", - "User ID": "පරිශීලක කේතය", - "Text CAPTCHA": "CAPTCHA පෙල", - "Image CAPTCHA": "CAPTCHA රූපය", - "E-mail": "විද්‍යුත් තැපෑල", - "preferences_quality_label": "කැමති වීඩියෝ ගුණත්වය: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_auto": "ස්වයංක්‍රීය", - "preferences_quality_option_small": "කුඩා", - "preferences_quality_dash_option_best": "හොඳම", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_240p": "240p", - "preferences_extend_desc_label": "වීඩියෝ විස්තරය ස්වයංක්‍රීයව දිගහරින්න: ", - "preferences_category_visual": "දෘශ්‍ය මනාපයන්", - "dark": "අඳුරු", - "preferences_category_misc": "විවිධ මනාප", - "preferences_category_subscription": "දායකත්ව මනාප", - "Redirect homepage to feed: ": "මුල් පිටුව පෝෂණය වෙත හරවා යවන්න: ", - "preferences_max_results_label": "සංග්‍රහයේ පෙන්වන වීඩියෝ ගණන: ", - "preferences_sort_label": "වීඩියෝ වර්ග කරන්න: ", - "alphabetically": "අකාරාදී ලෙස", - "alphabetically - reverse": "අකාරාදී - ආපසු", - "channel name": "නාලිකාවේ නම", - "Only show latest video from channel: ": "නාලිකාවේ නවතම වීඩියෝව පමණක් පෙන්වන්න: ", - "preferences_unseen_only_label": "නොබැලූ පමණක් පෙන්වන්න: ", - "Enable web notifications": "වෙබ් දැනුම්දීම් සබල කරන්න", - "Import/export data": "දත්ත ආනයනය / අපනයනය", - "Change password": "මුරපදය වෙනස් කරන්න", - "Manage subscriptions": "දායකත්ව කළමනාකරණය", - "Manage tokens": "ටෝකන කළමනාකරණය", - "Watch history": "නැරඹුම් ඉතිහාසය", - "Save preferences": "මනාප සුරකින්න", - "Token": "ටෝකනය", - "View privacy policy.": "රහස්‍යතා ප්‍රතිපත්තිය බලන්න.", - "Only show latest unwatched video from channel: ": "නාලිකාවේ නවතම නැරඹන නොලද වීඩියෝව පමණක් පෙන්වන්න: ", - "preferences_category_data": "දත්ත මනාප", - "Clear watch history": "නැරඹුම් ඉතිහාසය මකාදැමීම", - "Subscriptions": "දායකත්ව", - "generic_button_rss": "RSS", - "generic_button_save": "සුරකින්න", - "generic_button_cancel": "අවලංගු කරන්න", - "preferences_quality_dash_option_worst": "නරකම" -} diff --git a/invidious/locales/sk.json b/invidious/locales/sk.json deleted file mode 100755 index 8add0f5..0000000 --- a/invidious/locales/sk.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "LIVE": "NAŽIVO", - "Unsubscribe": "Zrušiť odber", - "Subscribe": "Odoberať", - "View channel on YouTube": "Zobraziť kanál na YouTube", - "newest": "najnovšie", - "oldest": "najstaršie", - "popular": "populárne", - "last": "posledné", - "Next page": "Ďalšia strana", - "Previous page": "Predchádzajúca strana", - "Clear watch history?": "Vymazať históriu pozerania?", - "New password": "Nové heslo", - "New passwords must match": "Nové heslá sa musia zhodovať", - "Authorize token?": "Autorizovať token?", - "Yes": "Áno", - "No": "Nie", - "Import and Export Data": "Import a Export údajov", - "Import": "Import", - "Import Invidious data": "Importovať JSON údaje Invidious", - "Import YouTube subscriptions": "Importovať odbery YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Importovať odbery FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importovať odbery NewPipe (.json)", - "Import NewPipe data (.zip)": "Importovať údaje NewPipe (.zip)", - "Export": "Export", - "Export subscriptions as OPML": "Exportovať odbery ako OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportovať odbery ako OPML (pre NewPipe a FreeTube)", - "Export data as JSON": "Exportovať údaje Invidious ako JSON", - "Delete account?": "Zrušiť účet?", - "History": "História", - "An alternative front-end to YouTube": "Alternatívny front-end pre YouTube", - "JavaScript license information": "Informácie o licencii JavaScript", - "source": "zdroj", - "Log in": "Prihlásiť sa", - "Log in/register": "Prihlásiť sa/Registrovať", - "User ID": "ID používateľa", - "Password": "Heslo", - "Time (h:mm:ss):": "Čas (h:mm:ss):", - "Text CAPTCHA": "Textové CAPTCHA", - "Image CAPTCHA": "Obrázkové CAPTCHA", - "Sign In": "Prihlásiť sa", - "Register": "Registrovať", - "E-mail": "E-mail", - "Preferences": "Nastavenia", - "preferences_category_player": "Nastavenia prehrávača", - "preferences_video_loop_label": "Vždy opakovať: ", - "preferences_autoplay_label": "Automatické prehrávanie: ", - "preferences_continue_autoplay_label": "Automatické prehrávanie nasledujúceho videa: ", - "preferences_listen_label": "Predvolene počúvať: ", - "preferences_local_label": "Proxy videá: ", - "preferences_speed_label": "Predvolená rýchlosť: ", - "preferences_quality_label": "Preferovaná kvalita videa: ", - "preferences_volume_label": "Hlasitosť prehrávača: ", - "preferences_comments_label": "Predvolené komentáre: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Predvolené titulky: ", - "Fallback captions: ": "Náhradné titulky: ", - "preferences_related_videos_label": "Zobraziť súvisiace videá: ", - "preferences_annotations_label": "Predvolene zobraziť anotácie: ", - "preferences_category_visual": "Vizuálne nastavenia", - "preferences_player_style_label": "Štýl prehrávača: ", - "Dark mode: ": "Tmavý režim: ", - "preferences_dark_mode_label": "Téma: ", - "dark": "tmavá", - "light": "svetlá", - "preferences_thin_mode_label": "Tenký režim: ", - "preferences_category_subscription": "Nastavenia predplatného", - "preferences_annotations_subscribed_label": "Predvolene zobraziť anotácie odoberaných kanálov: ", - "Redirect homepage to feed: ": "Presmerovanie domovskej stránky na informačný kanál: ", - "preferences_max_results_label": "Počet videí zobrazených v informačnom kanáli: ", - "preferences_sort_label": "Zoradiť videá podľa: ", - "published": "zverejnené (od najnovších)", - "published - reverse": "zverejnené (od najstarších)", - "alphabetically": "abecedne (A-Z)", - "alphabetically - reverse": "abecedne (Z-A)", - "channel name": "názov kanála (A-Z)", - "channel name - reverse": "názov kanála (Z-A)", - "Only show latest video from channel: ": "Zobraziť iba najnovšie video z kanála: ", - "Only show latest unwatched video from channel: ": "Zobraziť iba najnovšie neprehrané video z kanála: ", - "preferences_unseen_only_label": "Zobraziť iba neprehrané: ", - "preferences_notifications_only_label": "Zobraziť iba upozornenia (ak existujú): ", - "Enable web notifications": "Povoliť webové upozornenia", - "`x` uploaded a video": "`x` nahral(a) video", - "generic_views_count_0": "{{count}} zhliadnutie", - "generic_views_count_1": "{{count}} zhliadnutia", - "generic_views_count_2": "{{count}} zhliadnutí", - "generic_subscribers_count_0": "{{count}} odberateľ", - "generic_subscribers_count_1": "{{count}} odberatelia", - "generic_subscribers_count_2": "{{count}} odberateľov", - "Shared `x` ago": "Zverejnené pred `x`", - "generic_playlists_count_0": "{{count}} playlist", - "generic_playlists_count_1": "{{count}} playlisty", - "generic_playlists_count_2": "{{count}} playlistov", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} videá", - "generic_videos_count_2": "{{count}} videí", - "generic_subscriptions_count_0": "{{count}} odber", - "generic_subscriptions_count_1": "{{count}} odbery", - "generic_subscriptions_count_2": "{{count}} odberov", - "Authorize token for `x`?": "Autorizovať token pre `x`?", - "View playlist on YouTube": "Zobraziť playlist na YouTube", - "preferences_quality_dash_option_best": "Najlepšia", - "preferences_quality_dash_option_worst": "Najhoršia", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_label": "Preferovaná video kvalita DASH: ", - "preferences_quality_option_dash": "DASH (adaptívna kvalita)", - "preferences_quality_option_small": "Malá", - "preferences_watch_history_label": "Zapnúť históriu pozerania: ", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_dash_option_2160p": "2160p", - "invidious": "Invidious", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_360p": "360p" -} diff --git a/invidious/locales/sl.json b/invidious/locales/sl.json deleted file mode 100755 index 3803d09..0000000 --- a/invidious/locales/sl.json +++ /dev/null @@ -1,525 +0,0 @@ -{ - "No": "Ne", - "Subscribe": "Naroči se", - "View playlist on YouTube": "Ogled seznama predvajanja v YouTubu", - "last": "zadnji", - "Next page": "Naslednja stran", - "Previous page": "Prejšnja stran", - "Clear watch history?": "Izbrisati zgodovino ogledov?", - "New password": "Novo geslo", - "New passwords must match": "Nova gesla se morajo ujemati", - "Authorize token?": "Naj odobrim žeton?", - "Yes": "Da", - "Import and Export Data": "Uvoz in izvoz podatkov", - "Import": "Uvozi", - "Import Invidious data": "Uvozi Invidious JSON podatke", - "Import YouTube subscriptions": "Uvozi YouTube/OPML naročnine", - "Import FreeTube subscriptions (.db)": "Uvozi FreeTube (.db) naročnine", - "Import NewPipe data (.zip)": "Uvozi NewPipe (.zip) podatke", - "Export": "Izvozi", - "Export subscriptions as OPML": "Izvozi naročnine kot OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Izvozi naročnine kot OPML (za NewPipe in FreeTube)", - "Log in": "Prijava", - "Log in/register": "Prijava/registracija", - "User ID": "ID uporabnika", - "Password": "Geslo", - "Time (h:mm:ss):": "Čas (h:mm:ss):", - "Text CAPTCHA": "Besedilo CAPTCHA", - "source": "izvorna koda", - "Image CAPTCHA": "Slika CAPTCHA", - "Sign In": "Prijavi se", - "Register": "Registriraj se", - "E-mail": "E-pošta", - "Preferences": "Nastavitve", - "preferences_video_loop_label": "Vedno v zanki: ", - "preferences_autoplay_label": "Samodejno predvajanje: ", - "preferences_continue_autoplay_label": "Samodejno predvajanje naslednjega videoposnetka: ", - "preferences_listen_label": "Privzeto poslušaj: ", - "preferences_local_label": "Proxy za videoposnetke: ", - "preferences_speed_label": "Privzeta hitrost: ", - "preferences_quality_label": "Prednostna kakovost videoposnetka: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_best": "najboljša", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_volume_label": "Glasnost predvajalnika: ", - "reddit": "Reddit", - "preferences_player_style_label": "Slog predvajalnika: ", - "dark": "temna", - "light": "svetla", - "preferences_thin_mode_label": "Tanki način: ", - "preferences_automatic_instance_redirect_label": "Samodejna preusmeritev (na redirect.invidious.io): ", - "preferences_annotations_subscribed_label": "Privzeto prikazati opombe za naročene kanale? ", - "Redirect homepage to feed: ": "Preusmeri domačo stran na vir: ", - "preferences_max_results_label": "Število videoposnetkov, prikazanih v viru: ", - "preferences_sort_label": "Razvrsti videoposnetke po: ", - "published": "datumu objave", - "published - reverse": "datumu objave - obratno", - "alphabetically": "abecednem vrstnem redu", - "alphabetically - reverse": "po abecednem vrstnem redu - obratno", - "channel name": "imenu kanala", - "channel name - reverse": "imenu kanala - obratno", - "Only show latest video from channel: ": "Pokaži samo najnovejši videoposnetek iz kanala: ", - "Only show latest unwatched video from channel: ": "Pokaži samo najnovejši še neogledani videoposnetek iz kanala: ", - "preferences_unseen_only_label": "Pokaži samo neogledane: ", - "preferences_notifications_only_label": "Pokaži samo obvestila (če obstajajo): ", - "preferences_category_data": "Nastavitve podatkov", - "Clear watch history": "Počisti zgodovino ogledov", - "Import/export data": "Uvoz/izvoz podatkov", - "Change password": "Spremeni geslo", - "Watch history": "Oglej si zgodovino", - "Delete account": "Izbriši račun", - "preferences_category_admin": "Skrbniške nastavitve", - "preferences_default_home_label": "Privzeta domača stran: ", - "preferences_feed_menu_label": "Meni vira: ", - "Top enabled: ": "Vrh omogočen: ", - "CAPTCHA enabled: ": "CAPTCHA omogočeni: ", - "Login enabled: ": "Prijava je omogočena: ", - "Registration enabled: ": "Registracija je omogočena: ", - "Token manager": "Upravitelj žetonov", - "Token": "Žeton", - "tokens_count_0": "{{count}} žeton", - "tokens_count_1": "{{count}} žetona", - "tokens_count_2": "{{count}} žetoni", - "tokens_count_3": "{{count}} žetonov", - "Import/export": "Uvoz/izvoz", - "unsubscribe": "odjava", - "revoke": "prekliči", - "search": "iskanje", - "Log out": "Odjava", - "Released under the AGPLv3 on Github.": "Objavljeno pod licenco AGPLv3 na GitHubu.", - "Trending": "Trendi", - "Private": "Zasebno", - "View all playlists": "Oglej si vse sezname predvajanja", - "Updated `x` ago": "Posodobljeno pred `x`", - "Delete playlist `x`?": "Brisanje seznama predvajanja `x`?", - "Delete playlist": "Izbriši seznam predvajanja", - "Title": "Naslov", - "Playlist privacy": "Zasebnost seznama predvajanja", - "Editing playlist `x`": "Urejanje seznama predvajanja `x`", - "Show more": "Pokaži več", - "Switch Invidious Instance": "Preklopi Invidious instanco", - "search_message_change_filters_or_query": "Poskusi razširiti iskalno poizvedbo in/ali spremeniti filtre.", - "search_message_use_another_instance": " Lahko tudi iščeš v drugi istanci.", - "Wilson score: ": "Wilsonov rezultat: ", - "Engagement: ": "Sodelovanje: ", - "Blacklisted regions: ": "Regije na seznamu nedovoljenih: ", - "Shared `x`": "V skupni rabi od: `x`", - "Premieres `x`": "Premiere `x`", - "View YouTube comments": "Oglej si YouTube komentarje", - "View more comments on Reddit": "Prikaži več komentarjev na Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Poglej `x` komentar", - "": "Poglej `x` komentarjev" - }, - "Password cannot be empty": "Geslo ne sme biti prazno", - "`x` ago": "`x` nazaj", - "Load more": "Naloži več", - "comments_points_count_0": "{{count}} točka", - "comments_points_count_1": "{{count}} točki", - "comments_points_count_2": "{{count}} točke", - "comments_points_count_3": "{{count}} točk", - "Hidden field \"token\" is a required field": "Skrito polje »žeton« je zahtevano polje", - "Erroneous challenge": "Napačen izziv", - "English": "angleščina", - "English (United States)": "angleščina (Združene države)", - "Albanian": "albanščina", - "Amharic": "amharščina", - "Azerbaijani": "azerbajdžanščina", - "Bangla": "bengalščina", - "Belarusian": "beloruščina", - "Burmese": "birmanščina", - "Cebuano": "cebuanščina", - "Chinese (Hong Kong)": "kitajščina (Hongkong)", - "Chinese (Simplified)": "kitajščina (poenostavljena)", - "Chinese (Taiwan)": "kitajščina (Tajvan)", - "Corsican": "korzijščina", - "Croatian": "hrvaščina", - "Danish": "danščina", - "Dutch": "nizozemščina", - "Estonian": "estonščina", - "Filipino": "filipinščina", - "Finnish": "finščina", - "French": "francoščina", - "French (auto-generated)": "francoščina (samodejno ustvarjeno)", - "Georgian": "gruzinščina", - "German": "nemščina", - "Greek": "grščina", - "Gujarati": "gudžaratščina", - "Haitian Creole": "haitijska kreolščina", - "Hausa": "havščina", - "Hawaiian": "havajščina", - "Hmong": "hmonščina", - "Hungarian": "madžarščina", - "Icelandic": "islandščina", - "Igbo": "igbo", - "Interlingue": "interlingua", - "Italian (auto-generated)": "italijanščina (samodejno ustvarjeno)", - "Japanese": "japonščina", - "Japanese (auto-generated)": "japonščina (samodejno ustvarjeno)", - "Khmer": "kmerščina", - "Korean": "korejščina", - "Korean (auto-generated)": "korejščina (samodejno ustvarjeno)", - "Kurdish": "kurdščina", - "Kannada": "kanadejščina", - "Latvian": "latvijščina", - "Lithuanian": "litovščina", - "Luxembourgish": "luksemburščina", - "Macedonian": "makedonščina", - "Malagasy": "malgaščina", - "Malay": "malajščina", - "Nepali": "nepalščina", - "Norwegian Bokmål": "norveščina bokmal", - "Nyanja": "njanščina", - "Punjabi": "pandžabščina", - "Romanian": "romunščina", - "Russian": "ruščina", - "Samoan": "samoanščina", - "Scottish Gaelic": "škotska galščina", - "Shona": "šonaščina", - "Sundanese": "sudanščina", - "Thai": "tajščina", - "Turkish": "turščina", - "Turkish (auto-generated)": "turščina (samodejno ustvarjeno)", - "Ukrainian": "ukrajinščina", - "Urdu": "urdujščina", - "Telugu": "telugu", - "Vietnamese": "vietnamščina", - "Welsh": "valižanščina", - "Western Frisian": "zahodnofrizijščina", - "Yiddish": "jidiš", - "Yoruba": "joruba", - "Xhosa": "xhosa", - "generic_count_years_0": "{{count}} letom", - "generic_count_years_1": "{{count}} leti", - "generic_count_years_2": "{{count}} leti", - "generic_count_years_3": "{{count}} leti", - "generic_count_days_0": "{{count}} dnevom", - "generic_count_days_1": "{{count}} dnevoma", - "generic_count_days_2": "{{count}} dnevi", - "generic_count_days_3": "{{count}} dnevi", - "generic_count_hours_0": "{{count}} uro", - "generic_count_hours_1": "{{count}} urami", - "generic_count_hours_2": "{{count}} urami", - "generic_count_hours_3": "{{count}} urami", - "generic_count_minutes_0": "{{count}} minuto", - "generic_count_minutes_1": "{{count}} minutami", - "generic_count_minutes_2": "{{count}} minutami", - "generic_count_minutes_3": "{{count}} minutami", - "Search": "Iskanje", - "Top": "Vrh", - "About": "O aplikaciji", - "%A %B %-d, %Y": "%A %-d %B %Y", - "Audio mode": "Avdio način", - "channel_tab_videos_label": "Videoposnetki", - "search_filters_date_label": "Datum nalaganja", - "search_filters_date_option_today": "Danes", - "search_filters_date_option_week": "Ta teden", - "search_filters_type_label": "Vrsta", - "search_filters_type_option_all": "Katerakoli vrsta", - "search_filters_type_option_playlist": "Seznam predvajanja", - "search_filters_features_option_subtitles": "Podnapisi/CC", - "search_filters_features_option_location": "Lokacija", - "footer_donate_page": "Prispevaj", - "footer_documentation": "Dokumentacija", - "footer_original_source_code": "Izvirna izvorna koda", - "none": "ni", - "videoinfo_started_streaming_x_ago": "Začetek pretakanja `x` nazaj", - "videoinfo_watch_on_youTube": "Oglej si v YouTubu", - "user_saved_playlists": "`x` shranjenih seznamov predvajanja", - "Video unavailable": "Video ni na voljo", - "preferences_save_player_pos_label": "Shrani položaj predvajanja: ", - "crash_page_you_found_a_bug": "Videti je, da si v Invidiousu našel hrošča!", - "crash_page_read_the_faq": "prebral/a Pogosto zastavljena vprašanja (FAQ)", - "generic_videos_count_0": "{{count}} video", - "generic_videos_count_1": "{{count}} videa", - "generic_videos_count_2": "{{count}} videi", - "generic_videos_count_3": "{{count}} videov", - "generic_views_count_0": "Ogledov: {{count}}", - "generic_views_count_1": "Ogledov: {{count}}", - "generic_views_count_2": "Ogledov: {{count}}", - "generic_views_count_3": "Ogledov: {{count}}", - "generic_playlists_count_0": "{{count}} seznam predvajanja", - "generic_playlists_count_1": "{{count}} seznama predvajanja", - "generic_playlists_count_2": "{{count}} seznami predvajanja", - "generic_playlists_count_3": "{{count}} seznamov predvajanja", - "generic_subscribers_count_0": "{{count}} naročnik", - "generic_subscribers_count_1": "{{count}} naročnika", - "generic_subscribers_count_2": "{{count}} naročniki", - "generic_subscribers_count_3": "{{count}} naročnikov", - "generic_subscriptions_count_0": "{{count}} naročnina", - "generic_subscriptions_count_1": "{{count}} naročnini", - "generic_subscriptions_count_2": "{{count}} naročnine", - "generic_subscriptions_count_3": "{{count}} naročnin", - "LIVE": "V ŽIVO", - "Shared `x` ago": "Deljeno pred `x`", - "View channel on YouTube": "Ogled kanala v YouTubu", - "newest": "najnovejši", - "Unsubscribe": "Odjavi se", - "Authorize token for `x`?": "Odobriti žeton za `x`?", - "Import NewPipe subscriptions (.json)": "Uvozi NewPipe (.json) naročnine", - "History": "Zgodovina", - "JavaScript license information": "Podatki o licenci JavaScript", - "oldest": "najstarejši", - "popular": "priljubljen", - "Export data as JSON": "Izvozi Invidious podatke kot JSON", - "Delete account?": "Izbrisati račun?", - "An alternative front-end to YouTube": "Alternativni vmesnik za YouTube", - "preferences_category_player": "Nastavitve predvajalnika", - "preferences_continue_label": "Privzeto predvajaj naslednjega: ", - "preferences_watch_history_label": "Omogoči zgodovino ogledov: ", - "preferences_quality_option_medium": "srednja", - "preferences_quality_option_dash": "DASH (prilagodljiva kakovost)", - "preferences_quality_option_small": "majhna", - "preferences_quality_dash_option_worst": "najslabša", - "preferences_quality_dash_label": "Prednostna kakovost videoposnetkov DASH: ", - "preferences_comments_label": "Privzeti komentarji: ", - "preferences_quality_dash_option_auto": "samodejna", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_144p": "144p", - "youtube": "YouTube", - "invidious": "Invidious", - "preferences_vr_mode_label": "Interaktivni videoposnetki na 360 stopinj (zahteva WebGL): ", - "preferences_captions_label": "Privzeti napisi: ", - "Fallback captions: ": "Pomožni napisi: ", - "preferences_extend_desc_label": "Samodejno razširi opis videoposnetka: ", - "preferences_related_videos_label": "Prikaži povezane videoposnetke: ", - "preferences_annotations_label": "Privzeto prikaži opombe: ", - "preferences_category_visual": "Vizualne nastavitve", - "preferences_region_label": "Država vsebine: ", - "Dark mode: ": "Temni način: ", - "preferences_dark_mode_label": "Tema: ", - "preferences_category_misc": "Različne nastavitve", - "preferences_category_subscription": "Nastavitve naročnine", - "Unlisted": "Nerazporejeno", - "Enable web notifications": "Omogoči spletna obvestila", - "`x` is live": "`x` je v živo", - "Manage subscriptions": "Upravljaj naročnine", - "Manage tokens": "Upravljaj žetone", - "Subscription manager": "Upravitelj naročnin", - "`x` uploaded a video": "`x` je naložil/a videoposnetek", - "preferences_show_nick_label": "Prikaži vzdevek na vrhu: ", - "search_message_no_results": "Ni zadetkov.", - "Save preferences": "Shrani nastavitve", - "Subscriptions": "Naročnine", - "Report statistics: ": "Poročilo o statistiki: ", - "subscriptions_unseen_notifs_count_0": "{{count}} neogledano obvestilo", - "subscriptions_unseen_notifs_count_1": "{{count}} neogledani obvestili", - "subscriptions_unseen_notifs_count_2": "{{count}} neogledana obvestila", - "subscriptions_unseen_notifs_count_3": "{{count}} neogledanih obvestil", - "View JavaScript license information.": "Oglej si informacije o licenci za JavaScript.", - "Show less": "Pokaži manj", - "Watch on YouTube": "Oglej si v YouTubu", - "Source available here.": "Izvorna koda na voljo tukaj.", - "License: ": "Licenca: ", - "View privacy policy.": "Oglej si pravilnik o zasebnosti.", - "Public": "Javno", - "Create playlist": "Ustvari seznam predvajanja", - "Hide annotations": "Skrij opombe", - "Show annotations": "Pokaži opombe", - "Genre: ": "Žanr: ", - "Family friendly? ": "Družinam prijazno? ", - "Whitelisted regions: ": "Regije na seznamu dovoljenih: ", - "Premieres in `x`": "Premiere v `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Živjo! Izgleda, da imaš izklopljene JavaScripte . Klikni tukaj, če si želiš ogledati komentarje, vendar vedi, da bo lahko nalaganje trajajo nekoliko dlje.", - "Show replies": "Pokaži odgovore", - "Erroneous CAPTCHA": "Napačna CAPTCHA", - "User ID is a required field": "ID uporabnika je obvezno polje", - "Password is a required field": "Geslo je obvezno polje", - "Wrong username or password": "Napačno uporabniško ime ali geslo", - "Password cannot be longer than 55 characters": "Geslo ne sme biti daljše od 55 znakov", - "channel:`x`": "kanal: `x`", - "Could not fetch comments": "Ni bilo mogoče pridobiti komentarjev", - "Could not pull trending pages.": "Ni bilo mogoče povleči trendovskih strani.", - "Please log in": "Prosim, prijavi se", - "Playlist does not exist.": "Seznam predvajanja ne obstaja.", - "Incorrect password": "Napačno geslo", - "View Reddit comments": "Oglej si komentarje na Redditu", - "This channel does not exist.": "Ta kanal ne obstaja.", - "Hide replies": "Skrij odgovore", - "Invidious Private Feed for `x`": "Invidious zasebni vir za `x`", - "Deleted or invalid channel": "Izbrisan ali neveljaven kanal", - "Empty playlist": "Prazen seznam predvajanja", - "No such user": "Ni tega uporabnika", - "Token is expired, please try again": "Žeton je potekel, poskusi znova", - "English (United Kingdom)": "angleščina (Združeno kraljestvo)", - "Wrong answer": "Napačen odgovor", - "CAPTCHA is a required field": "CAPTCHA je obvezno polje", - "Could not get channel info.": "Ni bilo mogoče dobiti informacij o kanalu.", - "comments_view_x_replies_0": "Poglej {{count}} odgovor", - "comments_view_x_replies_1": "Poglej {{count}} odgovora", - "comments_view_x_replies_2": "Poglej {{count}} odgovore", - "comments_view_x_replies_3": "Poglej {{count}} odgovorov", - "Could not create mix.": "Ni bilo mogoče ustvariti mixa.", - "Not a playlist.": "Ni seznam predvajanja.", - "Hidden field \"challenge\" is a required field": "Skrito polje »izziv« je obvezno polje", - "Erroneous token": "Napačen žeton", - "Afrikaans": "afrikanščina", - "Arabic": "arabščina", - "Armenian": "armenščina", - "English (auto-generated)": "angleščina (samodejno ustvarjeno)", - "Bulgarian": "bolgarščina", - "Catalan": "katalonščina", - "Cantonese (Hong Kong)": "kantonščina (Hongkong)", - "Chinese (Traditional)": "kitajščina (tradicionalna)", - "Basque": "baskovščina", - "Czech": "češčina", - "Bosnian": "bosanščina", - "Chinese": "kitajščina", - "Chinese (China)": "kitajščina (Kitajska)", - "Dutch (auto-generated)": "nizozemščina (samodejno ustvarjeno)", - "Esperanto": "esperanto", - "Galician": "galicijščina", - "German (auto-generated)": "nemščina (samodejno ustvarjeno)", - "Hebrew": "hebrejščina", - "Malayalam": "malajalamščina", - "Hindi": "hindijščina", - "Indonesian": "indonezijščina", - "Kazakh": "kazahstanščina", - "Indonesian (auto-generated)": "indonezijščina (samodejno generirano)", - "Irish": "irščina", - "Persian": "perzijščina", - "Slovak": "slovaščina", - "Italian": "italijanščina", - "Maori": "maorščina", - "Portuguese": "portugalščina", - "Javanese": "javanščina", - "Kyrgyz": "kirgiščina", - "Lao": "laoščina", - "Latin": "latinščina", - "Mongolian": "mongolščina", - "Portuguese (auto-generated)": "portugalščina (samodejno ustvarjeno)", - "Sindhi": "sindščina", - "Maltese": "malteščina", - "Marathi": "maratščina", - "Pashto": "paštu", - "Polish": "poljščina", - "Portuguese (Brazil)": "portugalščina (Brazilija)", - "Fallback comments: ": "Nadomestni komentarji: ", - "Gaming": "Igralništvo", - "Russian (auto-generated)": "ruščina (samodejno ustvarjeno)", - "Serbian": "srbščina", - "Sinhala": "singalščina", - "Slovenian": "slovenščina", - "Somali": "somalijščina", - "Spanish": "španščina", - "Southern Sotho": "južni sotho", - "Spanish (auto-generated)": "španščina (samodejno ustvarjeno)", - "Spanish (Mexico)": "španščina (Mehika)", - "Spanish (Latin America)": "španščina (Latinska Amerika)", - "Spanish (Spain)": "španščina (Španija)", - "Tajik": "tadžiščina", - "Tamil": "tamilščina", - "generic_count_weeks_0": "{{count}} tednom", - "generic_count_weeks_1": "{{count}} tedni", - "generic_count_weeks_2": "{{count}} tedni", - "generic_count_weeks_3": "{{count}} tedni", - "Swahili": "svahilščina", - "Swedish": "švedščina", - "Vietnamese (auto-generated)": "vietnamščina (samodejno ustvarjeno)", - "generic_count_months_0": "{{count}} mesecem", - "generic_count_months_1": "{{count}} meseci", - "generic_count_months_2": "{{count}} meseci", - "generic_count_months_3": "{{count}} meseci", - "Uzbek": "uzbeščina", - "Zulu": "zulujščina", - "generic_count_seconds_0": "{{count}} sekundo", - "generic_count_seconds_1": "{{count}} sekundami", - "generic_count_seconds_2": "{{count}} sekundami", - "generic_count_seconds_3": "{{count}} sekundami", - "Popular": "Priljubljeni", - "Music": "Glasba", - "Movies": "Filmi", - "YouTube comment permalink": "Stalna povezava za komentar na YouTubu", - "search_filters_title": "Filtri", - "preferences_locale_label": "Jezik: ", - "Rating: ": "Ocena: ", - "Default": "Privzeto", - "News": "Novice", - "Download as: ": "Prenesi kot: ", - "(edited)": "(urejeno)", - "View as playlist": "Poglej kot seznam predvajanja", - "Download": "Prenesi", - "permalink": "stalna povezava", - "`x` marked it with a ❤": "`x` ga je označil/a z ❤", - "channel_tab_community_label": "Skupnost", - "search_filters_features_option_three_sixty": "360°", - "Video mode": "Video način", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "Playlists": "Seznami predvajanja", - "search_filters_date_option_none": "Katerikoli datum", - "search_filters_date_option_month": "Ta mesec", - "search_filters_date_option_year": "Letos", - "search_filters_type_option_movie": "Film", - "search_filters_duration_option_long": "Dolg (> 20 minut)", - "search_filters_features_label": "Lastnosti", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_hdr": "HDR", - "next_steps_error_message_refresh": "Osveži", - "search_filters_date_option_hour": "Zadnja ura", - "search_filters_features_option_purchased": "Kupljeno", - "search_filters_sort_label": "Razvrsti po", - "search_filters_sort_option_views": "številu ogledov", - "Current version: ": "Trenutna različica: ", - "search_filters_features_option_live": "V živo", - "search_filters_features_option_hd": "HD", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_show": "Pokaži", - "search_filters_duration_label": "Trajanje", - "search_filters_duration_option_none": "Poljubno trajanje", - "search_filters_duration_option_short": "Kratek (< 4 minute)", - "search_filters_duration_option_medium": "Srednji (4 - 20 minut)", - "search_filters_features_option_vr180": "VR180", - "search_filters_sort_option_date": "datumu nalaganja", - "search_filters_type_option_video": "Videoposnetek", - "search_filters_sort_option_relevance": "ustreznosti", - "search_filters_sort_option_rating": "oceni", - "search_filters_apply_button": "Uporabi izbrane filtre", - "next_steps_error_message": "Po tem moraš poskusiti: ", - "next_steps_error_message_go_to_youtube": "Pojdi na YouTube", - "footer_source_code": "Izvorna koda", - "footer_modfied_source_code": "Spremenjena izvorna koda", - "user_created_playlists": "`x` ustvarjenih seznamov predvajanja", - "adminprefs_modified_source_code_url_label": "URL do shrambe spremenjene izvorne kode", - "videoinfo_youTube_embed_link": "Vdelaj", - "videoinfo_invidious_embed_link": "Povezava za vdelavo", - "crash_page_switch_instance": "poskušal/a uporabiti drugo instanco", - "download_subtitles": "Podnapisi - `x` (.vtt)", - "crash_page_refresh": "poskušal/a osvežiti stran", - "crash_page_before_reporting": "Preden prijaviš napako, se prepričaj, da si:", - "crash_page_search_issue": "preiskal/a obstoječe težave na GitHubu", - "crash_page_report_issue": "Če nič od navedenega ni pomagalo, prosim odpri novo težavo v GitHubu (po možnosti v angleščini) in v svoje sporočilo vključi naslednje besedilo (tega besedila NE prevajaj):", - "Popular enabled: ": "Priljubljeni omogočeni: ", - "error_video_not_in_playlist": "Zahtevani videoposnetek ne obstaja na tem seznamu predvajanja. Klikni tukaj za domačo stran seznama predvajanja.", - "channel_tab_playlists_label": "Seznami predvajanja", - "channel_tab_shorts_label": "Kratki videoposnetki", - "channel_tab_channels_label": "Kanali", - "channel_tab_streams_label": "Prenosi v živo", - "Artist: ": "Umetnik/ca: ", - "Music in this video": "Glasba v tem videoposnetku", - "Album: ": "Album: ", - "Song: ": "Pesem: ", - "Standard YouTube license": "Standardna licenca YouTube", - "Channel Sponsor": "Sponzor kanala", - "Download is disabled": "Prenos je onemogočen", - "Import YouTube playlist (.csv)": "Uvoz seznama predvajanja YouTube (.csv)", - "generic_button_delete": "Izbriši", - "generic_button_edit": "Uredi", - "generic_button_save": "Shrani", - "generic_button_cancel": "Prekliči", - "generic_button_rss": "RSS", - "playlist_button_add_items": "Dodaj videoposnetke", - "channel_tab_podcasts_label": "Poddaje", - "channel_tab_releases_label": "Izdaje", - "generic_channels_count_0": "{{count}} kanal", - "generic_channels_count_1": "{{count}} kanala", - "generic_channels_count_2": "{{count}} kanali", - "generic_channels_count_3": "{{count}} kanalov", - "Import YouTube watch history (.json)": "Uvozi zgodovino gledanja YouTube (.json)" -} diff --git a/invidious/locales/sq.json b/invidious/locales/sq.json deleted file mode 100755 index 363a70b..0000000 --- a/invidious/locales/sq.json +++ /dev/null @@ -1,488 +0,0 @@ -{ - "Albanian": "Shqip", - "Amharic": "Amharike", - "Arabic": "Arabisht", - "Armenian": "Armenisht", - "Gujarati": "Gujaratase", - "Haitian Creole": "Kreolase Haiti", - "Hausa": "Hausisht", - "Hawaiian": "Havajane", - "Hebrew": "Hebraisht", - "Hindi": "Indiane", - "Hungarian": "Hungarisht", - "Icelandic": "Islandisht", - "Igbo": "Igboisht", - "Irish": "Irlandisht", - "Javanese": "Xhavanisht", - "Kazakh": "Kazake", - "Khmer": "Khmere", - "Korean": "Koreane", - "Kurdish": "Kurdisht", - "Kyrgyz": "Kirgizisht", - "Sundanese": "Sundaneze", - "Swahili": "Suahilisht", - "Swedish": "Suedisht", - "Tajik": "Taxhike", - "Tamil": "Tamilisht", - "Telugu": "Telugu", - "Vietnamese": "Vietnamisht", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Drejtpërsëdrejti", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Vendndodhja", - "videoinfo_watch_on_youTube": "Shiheni në YouTube", - "videoinfo_youTube_embed_link": "Trupëzojeni", - "videoinfo_invidious_embed_link": "Lidhje Trupëzimi", - "oldest": "më të vjetrat", - "New passwords must match": "Fjalëkalimet e rinj duhet të përputhen me njëri-tjetrin", - "Authorize token?": "Të autorizohet token-i?", - "Authorize token for `x`?": "Të autorizohet token-i për `x`?", - "Log in/register": "Hyni/regjistrohuni", - "User ID": "ID Përdoruesi", - "Password": "Fjalëkalim", - "Time (h:mm:ss):": "Kohë (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA Tekst", - "Image CAPTCHA": "CAPTCHA Figurë", - "Sign In": "Hyni", - "Register": "Regjistrohuni", - "E-mail": "Email", - "Preferences": "Parapëlqime", - "preferences_category_player": "Parapëlqime Lojtësi", - "preferences_autoplay_label": "Vetëluaje: ", - "preferences_continue_label": "Luaj pasuesen, si parazgjedhje: ", - "preferences_continue_autoplay_label": "Vetëluaj videon pasuese: ", - "preferences_listen_label": "Si parazgjedhje, dëgjojeni me: ", - "preferences_speed_label": "Shpejtësi parazgjedhje: ", - "preferences_quality_label": "Cilësi e parapëlqyer për videot: ", - "preferences_quality_option_dash": "DASH (cilësi që përshtatet)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_option_medium": "Mesatare", - "preferences_quality_option_small": "E ulët", - "preferences_quality_dash_label": "Cilësi DASH e parapëlqyer për videot: ", - "preferences_quality_dash_option_auto": "Auto", - "preferences_quality_dash_option_best": "Më e mira", - "preferences_quality_dash_option_worst": "Më e keqja", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "preferences_volume_label": "Volum lojtësi: ", - "preferences_comments_label": "Komente parazgjedhje: ", - "youtube": "YouTube", - "reddit": "Reddit", - "invidious": "Invidious", - "preferences_captions_label": "Titra parazgjedhje: ", - "preferences_extend_desc_label": "Zgjero automatikisht përshkrimin e videos: ", - "preferences_player_style_label": "Stil lojtësi: ", - "Dark mode: ": "Mënyra e errët: ", - "preferences_dark_mode_label": "Temë: ", - "dark": "e errët", - "light": "e çelët", - "preferences_thin_mode_label": "Mënyrë e hollë: ", - "preferences_category_misc": "Parapëlqime të ndryshme", - "preferences_automatic_instance_redirect_label": "Ridrejtim i automatizuar i instancës (si parazgjedhje, te redirect.invidious.io): ", - "preferences_category_subscription": "Parapëlqime pajtimesh", - "preferences_annotations_subscribed_label": "Të shfaqen, si parazgjedhje, shënime për kanalet e pajtuar? ", - "Redirect homepage to feed: ": "Ridrejtoje faqen hyrëse te prurje: ", - "preferences_max_results_label": "Numër videosh të shfaqura në prurje: ", - "preferences_sort_label": "Renditi videot sipas: ", - "published": "e publikuar", - "alphabetically": "alfabetikisht", - "alphabetically - reverse": "alfabetikisht - së prapthi", - "channel name": "emër kanali", - "Only show latest video from channel: ": "Shfaq vetëm videot më të reja nga kanali: ", - "Only show latest unwatched video from channel: ": "Shfaq vetëm videot më të reja të papara në kanal: ", - "preferences_unseen_only_label": "Shfaq vetëm të paparat: ", - "preferences_notifications_only_label": "Shfaq vetëm njoftime (nëse ka të tilla): ", - "Enable web notifications": "Aktivizoni njoftime web", - "`x` uploaded a video": "`x` ngarkoi një video", - "`x` is live": "`x` funksionon", - "preferences_category_data": "Parapëlqime për të dhënat", - "Clear watch history": "Spastro historik parjesh", - "Import/export data": "Importoni/eksportoni të dhëna", - "Change password": "Ndryshoni fjalëkalimin", - "Manage subscriptions": "Administroni pajtimet", - "Manage tokens": "Administroni token-ë", - "Watch history": "Shihni historikun", - "Delete account": "Fshije llogarinë", - "preferences_category_admin": "Parapëlqime përgjegjësi", - "preferences_default_home_label": "Faqe hyrëse parazgjedhje: ", - "preferences_feed_menu_label": "Menu prurjesh: ", - "Registration enabled: ": "Regjistrim i aktivizuar: ", - "Save preferences": "Ruaji parapëlqimet", - "Token": "Token", - "Subscription manager": "Përgjegjës pajtimesh", - "Token manager": "Përgjegjës token-ësh", - "Import/export": "Importim/eksportim", - "unsubscribe": "shpajtohuni", - "revoke": "shfuqizoje", - "Subscriptions": "Pajtime", - "search": "kërko", - "Log out": "Dilni", - "Released under the AGPLv3 on Github.": "Hedhur në qarkullim në GitHub sipas licencës AGPLv3.", - "Source available here.": "Burimi i passhëm që këtu.", - "View JavaScript license information.": "Shihni hollësi licence JavaScript.", - "View privacy policy.": "Shihni rregulla privatësie.", - "Trending": "Në modë", - "Public": "Publike", - "Unlisted": "Jo në listë", - "Private": "Private", - "View all playlists": "Shihni krejt luajlistat", - "Updated `x` ago": "Përditësuar `x` më parë", - "Delete playlist": "Fshije luajlistën", - "Delete playlist `x`?": "Të fshihet luajlista `x`?", - "Create playlist": "Krijoni luajlistë", - "Title": "Titull", - "Playlist privacy": "Privatësi luajliste", - "Editing playlist `x`": "Po përpunohet luajlista `x`", - "Show more": "Shfaq më tepër", - "Show less": "Shfaq më pak", - "Watch on YouTube": "Shiheni në YouTube", - "Switch Invidious Instance": "Ndërroni Instancë Invidious", - "Hide annotations": "Fshihi shënimet", - "Show annotations": "Shfaq shënime", - "License: ": "Licencë: ", - "Family friendly? ": "E përshtatshme për familje? ", - "Wilson score: ": "Klasifikim Wilson: ", - "Engagement: ": "Angazhim: ", - "Whitelisted regions: ": "Rajone të lejuara: ", - "Premieres `x`": "Premiera `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Njatjeta! Duket sikur keni JavaScript-in të çaktivizuar. Klikoni këtu që të shihni komentet, mbani parasysh se mund të duhet pak më tepër kohë që të ngarkohen.", - "Blacklisted regions: ": "Rajone të palejuara: ", - "Premieres in `x`": "Premiera në `x`", - "Wrong answer": "Përgjigje e gabuar", - "Erroneous CAPTCHA": "CAPTCHA e gabuar", - "CAPTCHA is a required field": "CAPTCHA është fushë e domosdoshme", - "User ID is a required field": "ID-ja e përdoruesit është fushë e domosdoshme", - "Password is a required field": "Fusha e fjalëkalimit është e domosdoshme", - "Wrong username or password": "Emër përdoruesi ose fjalëkalim i gabuar", - "Password cannot be empty": "Fjalëkalimi s’mund të jetë i zbrazët", - "Password cannot be longer than 55 characters": "Fjalëkalimi s’mund të jetë më i gjatë se 55 shenja", - "Please log in": "Ju lutemi, bëni hyrjen", - "Invidious Private Feed for `x`": "Prurje Private Invidious për `x`", - "channel:`x`": "kanal:`x`", - "Deleted or invalid channel": "Kanal i fshirë ose i pavlefshëm", - "This channel does not exist.": "Ky kanal s’ekziston.", - "Could not get channel info.": "S’u morën dot hollësi kanali.", - "Could not fetch comments": "S’u sollën dot komente", - "`x` ago": "`x` më parë", - "Load more": "Ngarko më tepër", - "Empty playlist": "Luajlistë e zbrazët", - "Not a playlist.": "S’është luajlistë.", - "Playlist does not exist.": "Luajlista s’ekziston.", - "Hidden field \"challenge\" is a required field": "Fusha e fshehur “challenge” është fushë e domosdoshme", - "Hidden field \"token\" is a required field": "Fusha e fshehur “token” është fushë e domosdoshme", - "Erroneous token": "Token i gabuar", - "No such user": "S’ka përdorues të tillë", - "Token is expired, please try again": "Token-i ka skaduar, ju lutemi, riprovoni", - "English": "Anglisht", - "English (auto-generated)": "Anglisht (të vetë-prodhuara)", - "Afrikaans": "Afrikaans", - "Azerbaijani": "Azerbajxhanase", - "Bangla": "Bangla", - "Basque": "Baske", - "Burmese": "Burmanisht", - "Catalan": "Katalane", - "Belarusian": "Bjellorusisht", - "Bosnian": "Boshnjake", - "Bulgarian": "Bullgarisht", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Kineze (E thjeshtuar)", - "Chinese (Traditional)": "Kineze (Tradicionale)", - "Corsican": "Korsikanisht", - "Croatian": "Kroatisht", - "Czech": "Çekisht", - "Danish": "Danisht", - "Dutch": "Holandisht", - "Esperanto": "Esperanto", - "Estonian": "Estonisht", - "Filipino": "Filipineze", - "Finnish": "Finlandisht", - "French": "Frëngjisht", - "Galician": "Galicisht", - "Georgian": "Gjeorgjisht", - "German": "Gjermanisht", - "Greek": "Greqisht", - "Indonesian": "Indonezisht", - "Italian": "Italisht", - "Japanese": "Japonisht", - "Lao": "Laosisht", - "Lithuanian": "Lituanisht", - "Luxembourgish": "Luksemburgisht", - "Latin": "Latinisht", - "Latvian": "Letonisht", - "Macedonian": "Maqedonisht", - "Nyanja": "Nianja", - "Pashto": "Pashtune", - "Persian": "Perisht", - "Polish": "Polonisht", - "Portuguese": "Portugalisht", - "Punjabi": "Panxhabe", - "Romanian": "Rumanisht", - "Russian": "Rusisht", - "Samoan": "Samoanisht", - "Scottish Gaelic": "Galike Skoceze", - "Serbian": "Serbisht", - "Shona": "Shonisht", - "Sindhi": "Sindi", - "Sinhala": "Sinhaleze", - "Slovak": "Slovakisht", - "Slovenian": "Sllovenisht", - "Somali": "Somalisht", - "Southern Sotho": "Sotoishte Jugore", - "Spanish": "Spanjisht", - "Spanish (Latin America)": "Spanjisht (Amerikë Latine)", - "Thai": "Tajlandeze", - "Turkish": "Turqisht", - "Ukrainian": "Ukrainase", - "Urdu": "Urdisht", - "Uzbek": "Uzbeke", - "Welsh": "Uellase", - "Western Frisian": "Frizishte Perëndimore", - "Xhosa": "Xhosa", - "Yiddish": "Jidisht", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(u përpunua)", - "YouTube comment permalink": "Permalidhje komenti YouTube", - "Audio mode": "Mënyrë për audion", - "Playlists": "Luajlista", - "channel_tab_community_label": "Bashkësi", - "search_filters_sort_option_relevance": "Rëndësi", - "Video mode": "Mënyrë video", - "channel_tab_videos_label": "Video", - "search_filters_sort_option_rating": "Vlerësim", - "search_filters_sort_option_date": "Datë Ngarkimi", - "search_filters_sort_option_views": "Numër parjesh", - "search_filters_type_label": "Lloj", - "search_filters_duration_label": "Kohëzgjatje", - "search_filters_features_label": "Veçori", - "search_filters_sort_label": "Renditi Sipas", - "search_filters_date_option_hour": "Orën e Fundit", - "search_filters_date_option_today": "Sot", - "search_filters_duration_option_long": "E gjatë (> 20 minuta)", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Titra/CC", - "search_filters_features_option_hdr": "HDR", - "search_filters_date_option_week": "Këtë javë", - "search_filters_date_option_month": "Këtë muaj", - "search_filters_date_option_year": "Këtë vit", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Luajlistë", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Shfaqe", - "search_filters_duration_option_short": "E shkurtër (< 4 minuta)", - "search_filters_features_option_purchased": "Të blera", - "footer_modfied_source_code": "Kod burim i ndryshuar", - "adminprefs_modified_source_code_url_label": "URL e depos së ndryshuar të kodit burim", - "none": "asnjë", - "videoinfo_started_streaming_x_ago": "Filloi transmetimin `x` më parë", - "LIVE": "DREJTPËRSËDREJTI", - "Shared `x` ago": "Ndarë me të tjerë `x` më parë", - "Unsubscribe": "Shpajtohuni", - "Subscribe": "Pajtomë", - "View channel on YouTube": "Shihni kanalin në YouTube", - "View playlist on YouTube": "Shihni luajlistën në YouTube", - "newest": "më të rejat", - "popular": "popullore", - "last": "e fundit", - "Next page": "Faqja pasuese", - "Previous page": "Faqja e mëparshme", - "Clear watch history?": "Të spastrohet historiku i parjeve?", - "New password": "Fjalëkalim i ri", - "preferences_related_videos_label": "Shfaq video të afërta: ", - "preferences_annotations_label": "Si parazgjedhje, shfaqi shënimet: ", - "preferences_show_nick_label": "Shfaqe nofkën në krye: ", - "CAPTCHA enabled: ": "Me CAPTCHA të aktivizuar: ", - "Login enabled: ": "Me hyrjen të aktivizuar: ", - "Genre: ": "Zhanër: ", - "Could not create mix.": "S’u krijua dot përzierja.", - "Yoruba": "Jorubaisht", - "Zulu": "Zulu", - "Popular": "Popullore", - "Search": "Kërko", - "About": "Mbi", - "Rating: ": "Vlerësim: ", - "preferences_locale_label": "Gjuhë: ", - "View as playlist": "Shiheni si luajlistë", - "Default": "Parazgjedhje", - "Music": "Muzikë", - "Gaming": "Lojëra", - "News": "Lajme", - "Movies": "Filma", - "Download": "Shkarkoje", - "Download as: ": "Shkarkoje si: ", - "permalink": "permalidhje", - "`x` marked it with a ❤": "`x` i është vënë një ❤", - "download_subtitles": "Titra - `x` (.vtt)", - "user_created_playlists": "`x` krijoi luajlista", - "user_saved_playlists": "`x` ruajti luajlista", - "Video unavailable": "Video jo e passhme", - "Yes": "Po", - "No": "Jo", - "Import and Export Data": "Importoni dhe Eksportoni të Dhëna", - "Import": "Importo", - "Import FreeTube subscriptions (.db)": "Importoni pajtime FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Importoni pajtime NewPipe (.json)", - "Import NewPipe data (.zip)": "Importoni të dhëna NewPipe (.zip)", - "Export": "Eksporto", - "Export subscriptions as OPML": "Eksportoni pajtime si OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Eksportoji pajtimet si OPML (për NewPipe & FreeTube)", - "Delete account?": "Të fshihet llogaria?", - "History": "Historik", - "An alternative front-end to YouTube": "Një front-end alternativ për YouTube-in", - "JavaScript license information": "Hollësi licence JavaScript", - "source": "burim", - "Log in": "Hyni", - "preferences_category_visual": "Parapëlqime pamore", - "preferences_region_label": "Vend lënde: ", - "View YouTube comments": "Shihni komente Youtube", - "View more comments on Reddit": "Shihni më tepër komente në Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Shihni `x` koment", - "": "Shihni `x` komente" - }, - "View Reddit comments": "Shihni komente Reddit", - "Hide replies": "Fshihi përgjigjet", - "Show replies": "Shfaq përgjigje", - "Incorrect password": "Fjalëkalim i pasaktë", - "Malagasy": "Malagashe", - "Malay": "Malajase", - "Malayalam": "Malajalamase", - "Maltese": "Maltisht", - "Maori": "Maori", - "Marathi": "Marati", - "Mongolian": "Mongolisht", - "Nepali": "Nepaleze", - "Norwegian Bokmål": "Norvegjishte Bokmål", - "search_filters_features_option_three_sixty": "360°", - "Current version: ": "Versioni i tanishëm: ", - "next_steps_error_message": "Pas të cilës duhet të provoni të: ", - "next_steps_error_message_refresh": "Rifreskoje", - "next_steps_error_message_go_to_youtube": "Kaloni në Youtube", - "footer_donate_page": "Dhuroni", - "footer_documentation": "Dokumentim", - "footer_source_code": "Kod burim", - "footer_original_source_code": "Kodim burim origjinal", - "generic_count_hours": "{{count}} orë", - "generic_count_hours_plural": "{{count}} orë", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} video", - "generic_playlists_count": "{{count}} luajlistë", - "generic_playlists_count_plural": "{{count}} luajlista", - "generic_subscribers_count": "{{count}} pajtimtar", - "generic_subscribers_count_plural": "{{count}} pajtimtarë", - "subscriptions_unseen_notifs_count": "{{count}} njoftim që s’është parë", - "subscriptions_unseen_notifs_count_plural": "{{count}} njoftime që s’janë parë", - "comments_view_x_replies": "Shihni {{count}} përgjigje", - "comments_view_x_replies_plural": "Shihni {{count}} përgjigje", - "comments_points_count": "{{count}} pikë", - "comments_points_count_plural": "{{count}} pikë", - "generic_count_years": "{{count}} vit", - "generic_count_years_plural": "{{count}} vjet", - "generic_count_months": "{{count}} muaj", - "generic_count_months_plural": "{{count}} muaj", - "generic_count_weeks": "{{count}} javë", - "generic_count_weeks_plural": "{{count}} javë", - "generic_count_days": "{{count}} ditë", - "generic_count_days_plural": "{{count}} ditë", - "generic_count_minutes": "{{count}} minutë", - "generic_count_minutes_plural": "{{count}} minuta", - "generic_count_seconds": "{{count}} sekondë", - "generic_count_seconds_plural": "{{count}} sekonda", - "crash_page_you_found_a_bug": "Duket sikur gjetët një të metë në Invidious!", - "crash_page_before_reporting": "Para se të njoftoni një të metë, sigurohuni se keni:", - "crash_page_refresh": "provuar të rifreskoni faqen", - "crash_page_switch_instance": "provuar të përdorni tjetër instancë", - "crash_page_read_the_faq": "lexuar Pyetje të Bëra Rëndom (PBR)", - "generic_views_count": "{{count}} parje", - "generic_views_count_plural": "{{count}} parje", - "English (United Kingdom)": "Anglisht (Mbretëri e Bashkuar)", - "English (United States)": "Anglisht (Shtetet e Bashkuara)", - "Cantonese (Hong Kong)": "Kantoneze (Hong Kong)", - "Chinese": "Kinezçe", - "Chinese (China)": "Kinezçe (Kinë)", - "Chinese (Hong Kong)": "Kinezçe (Hong-Kong)", - "Chinese (Taiwan)": "Kinezçe (Tajvan)", - "Dutch (auto-generated)": "Holandisht (e prodhuar automatikisht)", - "French (auto-generated)": "Anglisht (të prodhuara automatikisht)", - "German (auto-generated)": "Gjermanisht (të prodhuara automatikisht)", - "Hmong": "Hmong", - "Indonesian (auto-generated)": "Indonezisht (të prodhuara automatikisht)", - "Interlingue": "Interlingue", - "Italian (auto-generated)": "Italisht (të prodhuara automatikisht)", - "Japanese (auto-generated)": "Japonisht (të prodhuara automatikisht)", - "Korean (auto-generated)": "Koreane (të prodhuara automatikisht)", - "Portuguese (auto-generated)": "Portugalisht (të prodhuara automatikisht)", - "Portuguese (Brazil)": "Portugeze (Brazil)", - "Russian (auto-generated)": "Rusisht (të prodhuara automatikisht)", - "Spanish (auto-generated)": "Spanjisht (të prodhuara automatikisht)", - "Spanish (Mexico)": "Spanjisht (Meksikë)", - "Spanish (Spain)": "Spanjisht (Spanjë)", - "Turkish (auto-generated)": "Turqisht (të prodhuara automatikisht)", - "Vietnamese (auto-generated)": "Vietnamisht (të prodhuara automatikisht)", - "crash_page_search_issue": "kërkuar për çështje ekzistuese në GitHub", - "crash_page_report_issue": "Nëse asnjë nga sa më sipër s’ndihmoi, ju lutemi, hapni një çështje në GitHub (mundësisht në anglisht) dhe përfshini në mesazhin tuaj tekstin vijues (MOS e përktheni këtë tekst):", - "generic_subscriptions_count": "{{count}} pajtim", - "generic_subscriptions_count_plural": "{{count}} pajtime", - "tokens_count": "{{count}} token", - "tokens_count_plural": "{{count}} tokenë", - "preferences_save_player_pos_label": "Mba mend pozicionin e luajtjes: ", - "Import Invidious data": "Importoni të dhëna JSON Invidious", - "Import YouTube subscriptions": "Importoni pajtime YouTube/OPML", - "Export data as JSON": "Eksportoji të dhënat Invidious si JSON", - "preferences_vr_mode_label": "Video me ndërveprim 360 gradë (lyp WebGL): ", - "Shared `x`": "Ndarë me të tjerë më `x`", - "search_filters_title": "Filtra", - "Popular enabled: ": "Me populloret të aktivizuara: ", - "error_video_not_in_playlist": "Videoja e kërkuar s’ekziston në këtë luajlistë. Klikoni këtu për faqen hyrëse të luajlistës.", - "search_message_use_another_instance": " Mundeni edhe të kërkoni në një instancë tjetër.", - "search_filters_date_label": "Datë ngarkimi", - "preferences_watch_history_label": "Aktivizo historik parjesh: ", - "Top enabled: ": "Me kryesueset të aktivizuara: ", - "preferences_video_loop_label": "Përsërite gjithmonë: ", - "search_message_no_results": "S’u gjetën përfundime.", - "Could not pull trending pages.": "S’u morën dot faqet në modë.", - "search_filters_date_option_none": "Çfarëdo date", - "search_message_change_filters_or_query": "Provoni të zgjeroni kërkesën tuaj të kërkimit dhe/ose të ndryshoni filtrat.", - "search_filters_type_option_all": "Çfarëdo lloji", - "search_filters_duration_option_none": "Çfarëdo kohëzgjatjeje", - "search_filters_duration_option_medium": "Mesatare (4 - 20 minuta)", - "search_filters_features_option_vr180": "VR180", - "search_filters_apply_button": "Apliko filtrat e përzgjedhur", - "channel_tab_playlists_label": "Luajlista", - "Artist: ": "Artist: ", - "Album: ": "Album: ", - "channel_tab_channels_label": "Kanale", - "Music in this video": "Muzikë në këtë video", - "channel_tab_shorts_label": "Të shkurtra", - "channel_tab_streams_label": "Transmetime të drejtpërdrejta", - "generic_button_cancel": "Anuloje", - "generic_channels_count": "{{count}} kanal", - "generic_channels_count_plural": "{{count}} kanale", - "generic_button_rss": "RSS", - "generic_button_delete": "Fshije", - "generic_button_save": "Ruaje", - "generic_button_edit": "Përpunoni", - "playlist_button_add_items": "Shtoni video", - "Report statistics: ": "Statistika raportimesh: ", - "Download is disabled": "Shkarkimi është i çaktivizuar", - "Channel Sponsor": "Sponsor Kanali", - "channel_tab_releases_label": "Hedhje në qarkullim", - "Song: ": "Pjesë: ", - "Import YouTube playlist (.csv)": "Importoni luajlistë YouTube (.csv)", - "Standard YouTube license": "Licencë YouTube standarde", - "published - reverse": "publikuar më - së prapthi", - "channel_tab_podcasts_label": "Podcast-e", - "channel name - reverse": "emër kanali - së prapthi", - "Import YouTube watch history (.json)": "Importo historik parjesh YouTube (.json)", - "preferences_local_label": "Video përmes ndërmjetësi: ", - "Fallback captions: ": "Titra nga halli: ", - "Erroneous challenge": "Zgjidhje e gabuar" -} diff --git a/invidious/locales/sr.json b/invidious/locales/sr.json deleted file mode 100755 index b4a98da..0000000 --- a/invidious/locales/sr.json +++ /dev/null @@ -1,508 +0,0 @@ -{ - "LIVE": "UŽIVO", - "Shared `x` ago": "Deljeno pre `x`", - "Unsubscribe": "Prekini praćenje", - "Subscribe": "Zaprati", - "View channel on YouTube": "Pogledaj kanal na YouTube-u", - "View playlist on YouTube": "Pogledaj plejlistu na YouTube-u", - "newest": "najnovije", - "oldest": "najstarije", - "popular": "popularno", - "last": "poslednje", - "Next page": "Sledeća stranica", - "Previous page": "Prethodna stranica", - "Clear watch history?": "Očistiti istoriju gledanja?", - "New password": "Nova lozinka", - "New passwords must match": "Nove lozinke moraju da se podudaraju", - "Authorize token?": "Autorizovati token?", - "Authorize token for `x`?": "Autorizovati token za `x`?", - "Yes": "Da", - "No": "Ne", - "Import and Export Data": "Uvoz i izvoz podataka", - "Import": "Uvezi", - "Import Invidious data": "Uvezi Invidious JSON podatke", - "Import YouTube subscriptions": "Uvezi YouTube/OPML praćenja", - "Import FreeTube subscriptions (.db)": "Uvezi FreeTube praćenja (.db)", - "Import NewPipe subscriptions (.json)": "Uvezi NewPipe praćenja (.json)", - "Import NewPipe data (.zip)": "Uvezi NewPipe podatke (.zip)", - "Export": "Izvezi", - "Export subscriptions as OPML": "Izvezi praćenja kao OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Izvezi praćenja kao OPML (za NewPipe i FreeTube)", - "Export data as JSON": "Izvezi Invidious podatke kao JSON", - "Delete account?": "Izbrisati nalog?", - "History": "Istorija", - "An alternative front-end to YouTube": "Alternativni front-end za YouTube", - "JavaScript license information": "Informacije o JavaScript licenci", - "source": "izvor", - "Log in": "Prijava", - "Log in/register": "Prijava/registracija", - "User ID": "ID korisnika", - "Password": "Lozinka", - "Time (h:mm:ss):": "Vreme (č:mm:ss):", - "Text CAPTCHA": "Tekst CAPTCHA", - "Image CAPTCHA": "Slika CAPTCHA", - "Sign In": "Prijava", - "Register": "Registracija", - "E-mail": "Imejl", - "Preferences": "Podešavanja", - "preferences_category_player": "Podešavanja plejera", - "preferences_video_loop_label": "Uvek ponavljaj: ", - "preferences_autoplay_label": "Automatski pusti: ", - "preferences_continue_label": "Podrazumevano pusti sledeće: ", - "preferences_continue_autoplay_label": "Automatski pusti sledeći video snimak: ", - "preferences_listen_label": "Podrazumevano uključi samo zvuk: ", - "preferences_local_label": "Proksi video snimci: ", - "Playlist privacy": "Privatnost plejliste", - "Editing playlist `x`": "Izmenjivanje plejliste `x`", - "Playlist does not exist.": "Plejlista ne postoji.", - "Erroneous challenge": "Pogrešan izazov", - "Maltese": "Malteški", - "Download": "Preuzmi", - "Download as: ": "Preuzeti kao: ", - "Bangla": "Bengalski", - "preferences_quality_dash_label": "Preferirani DASH kvalitet video snimka: ", - "Token manager": "Upravljanje tokenima", - "Token": "Token", - "Import/export": "Uvoz/izvoz", - "revoke": "opozovi", - "search": "pretraga", - "Log out": "Odjava", - "Source available here.": "Izvorni kôd je dostupan ovde.", - "Trending": "U trendu", - "Updated `x` ago": "Ažurirano pre `x`", - "Delete playlist `x`?": "Izbrisati plejlistu `x`?", - "Create playlist": "Napravi plejlistu", - "Show less": "Prikaži manje", - "Switch Invidious Instance": "Promeni Invidious instancu", - "Hide annotations": "Sakrij napomene", - "User ID is a required field": "ID korisnika je obavezno polje", - "Wrong username or password": "Pogrešno korisničko ime ili lozinka", - "Please log in": "Molimo, prijavite se", - "channel:`x`": "kanal:`x`", - "Could not fetch comments": "Nije moguće prikupiti komentare", - "Could not create mix.": "Nije moguće napraviti miks.", - "Empty playlist": "Prazna plejlista", - "Not a playlist.": "Nije plejlista.", - "Could not pull trending pages.": "Nije moguće povući stranice „U trendu“.", - "Token is expired, please try again": "Token je istekao, pokušajte ponovo", - "English (auto-generated)": "Engleski (automatski generisano)", - "Afrikaans": "Afrikans", - "Albanian": "Albanski", - "Armenian": "Jermenski", - "Azerbaijani": "Azerbejdžanski", - "Basque": "Baskijski", - "Bosnian": "Bosanski", - "Bulgarian": "Bugarski", - "Burmese": "Burmanski", - "Catalan": "Katalonski", - "Cebuano": "Cebuanski", - "Chinese (Traditional)": "Kineski (Tradicionalni)", - "Corsican": "Korzikanski", - "Danish": "Danski", - "Kannada": "Kanada", - "Kazakh": "Kazaški", - "Russian": "Ruski", - "Scottish Gaelic": "Škotski Gelski", - "Sinhala": "Sinhalski", - "Slovak": "Slovački", - "Spanish": "Španski", - "Spanish (Latin America)": "Španski (Latinska Amerika)", - "Sundanese": "Sundanski", - "Swedish": "Švedski", - "Tajik": "Tadžički", - "Telugu": "Telugu", - "Turkish": "Turski", - "Ukrainian": "Ukrajinski", - "Urdu": "Urdu", - "Uzbek": "Uzbečki", - "Vietnamese": "Vijetnamski", - "Rating: ": "Ocena: ", - "View as playlist": "Pogledaj kao plejlistu", - "Default": "Podrazumevano", - "Gaming": "Video igre", - "Movies": "Filmovi", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(izmenjeno)", - "YouTube comment permalink": "Trajni link YouTube komentara", - "Audio mode": "Režim audio snimka", - "Playlists": "Plejliste", - "search_filters_sort_option_relevance": "Relevantnost", - "search_filters_sort_option_rating": "Ocena", - "search_filters_sort_option_date": "Datum otpremanja", - "search_filters_sort_option_views": "Broj pregleda", - "`x` marked it with a ❤": "`x` je označio/la sa ❤", - "search_filters_duration_label": "Trajanje", - "search_filters_features_label": "Karakteristike", - "search_filters_date_option_hour": "Poslednji sat", - "search_filters_date_option_week": "Ove nedelje", - "search_filters_date_option_month": "Ovog meseca", - "search_filters_date_option_year": "Ove godine", - "search_filters_type_option_video": "Video snimak", - "search_filters_type_option_playlist": "Plejlista", - "search_filters_type_option_movie": "Film", - "search_filters_duration_option_long": "Dugo (> 20 minuta)", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_hdr": "HDR", - "next_steps_error_message": "Nakon toga treba da pokušate da: ", - "next_steps_error_message_go_to_youtube": "Odete na YouTube", - "footer_documentation": "Dokumentacija", - "preferences_region_label": "Država sadržaja: ", - "preferences_player_style_label": "Stil plejera: ", - "preferences_dark_mode_label": "Tema: ", - "light": "svetla", - "preferences_thin_mode_label": "Kompaktni režim: ", - "preferences_category_misc": "Ostala podešavanja", - "preferences_automatic_instance_redirect_label": "Automatsko preusmeravanje instance (povratak na redirect.invidious.io): ", - "alphabetically - reverse": "abecedno - obrnuto", - "Enable web notifications": "Omogući veb obaveštenja", - "`x` is live": "`x` je uživo", - "Manage tokens": "Upravljaj tokenima", - "Watch history": "Istorija gledanja", - "preferences_feed_menu_label": "Fid meni: ", - "preferences_show_nick_label": "Prikaži nadimke na vrhu: ", - "CAPTCHA enabled: ": "CAPTCHA omogućena: ", - "Registration enabled: ": "Registracija omogućena: ", - "Subscription manager": "Upravljanje praćenjima", - "Wilson score: ": "Vilsonova ocena: ", - "Engagement: ": "Angažovanje: ", - "Whitelisted regions: ": "Dostupni regioni: ", - "Shared `x`": "Deljeno `x`", - "Premieres in `x`": "Premijera u `x`", - "Premieres `x`": "Premijera `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hej! Izgleda da ste isključili JavaScript. Kliknite ovde da biste videli komentare, imajte na umu da će možda potrajati malo duže da se učitaju.", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Pogledaj `x` komentar", - "": "Pogledaj`x` komentare" - }, - "View Reddit comments": "Pogledaj Reddit komentare", - "CAPTCHA is a required field": "CAPTCHA je obavezno polje", - "Croatian": "Hrvatski", - "Estonian": "Estonski", - "Filipino": "Filipinski", - "French": "Francuski", - "Galician": "Galicijski", - "German": "Nemački", - "Greek": "Grčki", - "Hausa": "Hausa", - "Italian": "Italijanski", - "Khmer": "Kmerski", - "Kurdish": "Kurdski", - "Kyrgyz": "Kirgiski", - "Latvian": "Letonski", - "Lithuanian": "Litvanski", - "Macedonian": "Makedonski", - "Malagasy": "Malgaški", - "Malay": "Malajski", - "Marathi": "Maratski", - "Mongolian": "Mongolski", - "Norwegian Bokmål": "Norveški Bokmal", - "Nyanja": "Nijandža", - "Pashto": "Paštunski", - "Persian": "Persijski", - "Punjabi": "Pandžapski", - "Romanian": "Rumunski", - "Welsh": "Velški", - "Western Frisian": "Zapadnofrizijski", - "Fallback comments: ": "Rezervni komentari: ", - "Popular": "Popularno", - "Search": "Pretraga", - "About": "O sajtu", - "footer_source_code": "Izvorni kôd", - "footer_original_source_code": "Originalni izvorni kôd", - "preferences_related_videos_label": "Prikaži povezane video snimke: ", - "preferences_annotations_label": "Podrazumevano prikaži napomene: ", - "preferences_extend_desc_label": "Automatski proširi opis video snimka: ", - "preferences_vr_mode_label": "Interaktivni video snimci od 360 stepeni (zahteva WebGl): ", - "preferences_category_visual": "Vizuelna podešavanja", - "preferences_captions_label": "Podrazumevani titlovi: ", - "Music": "Muzika", - "search_filters_type_label": "Vrsta", - "Tamil": "Tamilski", - "Save preferences": "Sačuvaj podešavanja", - "Only show latest unwatched video from channel: ": "Prikaži samo najnoviji neodgledani video snimak sa kanala: ", - "Xhosa": "Kosa (Khosa)", - "search_filters_type_option_channel": "Kanal", - "Hungarian": "Mađarski", - "Maori": "Maorski", - "Manage subscriptions": "Upravljaj praćenjima", - "Hindi": "Hindi", - "`x` ago": "pre `x`", - "Import/export data": "Uvezi/Izvezi podatke", - "`x` uploaded a video": "`x` je otpremio/la video snimak", - "Delete account": "Izbriši nalog", - "preferences_default_home_label": "Podrazumevana početna stranica: ", - "Serbian": "Srpski", - "License: ": "Licenca: ", - "search_filters_features_option_live": "Uživo", - "Report statistics: ": "Izveštavaj statistike: ", - "Only show latest video from channel: ": "Prikaži samo najnoviji video snimak sa kanala: ", - "channel name - reverse": "ime kanala - obrnuto", - "Could not get channel info.": "Nije moguće prikupiti informacije o kanalu.", - "View privacy policy.": "Pogledaj politiku privatnosti.", - "Change password": "Promeni lozinku", - "Malayalam": "Malajalamski", - "View more comments on Reddit": "Pogledaj više komentara na Reddit-u", - "Portuguese": "Portugalski", - "View YouTube comments": "Pogledaj YouTube komentare", - "published - reverse": "objavljeno - obrnuto", - "Dutch": "Holandski", - "preferences_volume_label": "Jačina zvuka plejera: ", - "preferences_locale_label": "Jezik: ", - "adminprefs_modified_source_code_url_label": "URL adresa do repozitorijuma izmenjenog izvornog koda", - "channel_tab_community_label": "Zajednica", - "Video mode": "Režim video snimka", - "Fallback captions: ": "Rezervni titlovi: ", - "Private": "Privatno", - "alphabetically": "abecedno", - "No such user": "Ne postoji korisnik", - "Subscriptions": "Praćenja", - "search_filters_date_option_today": "Danas", - "Finnish": "Finski", - "Lao": "Laoski", - "Login enabled: ": "Prijava omogućena: ", - "Shona": "Šona", - "search_filters_features_option_location": "Lokacija", - "Load more": "Učitaj više", - "Released under the AGPLv3 on Github.": "Objavljeno pod licencom AGPLv3 na GitHub-u.", - "Slovenian": "Slovenački", - "View JavaScript license information.": "Pogledaj informacije o JavaScript licenci.", - "Chinese (Simplified)": "Kineski (Pojednostavljeni)", - "preferences_comments_label": "Podrazumevani komentari: ", - "Incorrect password": "Netačna lozinka", - "Show replies": "Prikaži odgovore", - "Invidious Private Feed for `x`": "Invidious privatni fid za `x`", - "Watch on YouTube": "Gledaj na YouTube-u", - "Wrong answer": "Pogrešan odgovor", - "preferences_quality_label": "Preferirani kvalitet video snimka: ", - "Hide replies": "Sakrij odgovore", - "Erroneous CAPTCHA": "Pogrešna CAPTCHA", - "Erroneous token": "Pogrešan token", - "Czech": "Češki", - "Latin": "Latinski", - "channel_tab_videos_label": "Video snimci", - "search_filters_features_option_four_k": "4К", - "footer_donate_page": "Doniraj", - "English": "Engleski", - "Arabic": "Arapski", - "Unlisted": "Po pozivu", - "Hidden field \"challenge\" is a required field": "Skriveno polje „izazov“ je obavezno polje", - "Hidden field \"token\" is a required field": "Skriveno polje „token“ je obavezno polje", - "Georgian": "Gruzijski", - "Hawaiian": "Havajski", - "Hebrew": "Hebrejski", - "Icelandic": "Islandski", - "Igbo": "Igbo", - "Japanese": "Japanski", - "Javanese": "Javanski", - "Sindhi": "Sindi", - "Swahili": "Suvali", - "Yiddish": "Jidiš", - "Zulu": "Zulu", - "search_filters_features_option_subtitles": "Titlovi/Skriveni titlovi", - "Password cannot be longer than 55 characters": "Lozinka ne može biti duža od 55 znakova", - "This channel does not exist.": "Ovaj kanal ne postoji.", - "Belarusian": "Beloruski", - "Gujarati": "Gudžarati", - "Haitian Creole": "Haićanski Kreolski", - "Somali": "Somalijski", - "Top": "Top", - "footer_modfied_source_code": "Izmenjeni izvorni kôd", - "preferences_category_subscription": "Podešavanja praćenja", - "preferences_annotations_subscribed_label": "Podrazumevano prikazati napomene za kanale koje pratite? ", - "preferences_max_results_label": "Broj video snimaka prikazanih u fidu: ", - "preferences_sort_label": "Sortiraj video snimke po: ", - "preferences_unseen_only_label": "Prikaži samo neodgledano: ", - "preferences_notifications_only_label": "Prikaži samo obaveštenja (ako ih ima): ", - "preferences_category_data": "Podešavanja podataka", - "Clear watch history": "Očisti istoriju gledanja", - "preferences_category_admin": "Podešavanja administratora", - "published": "objavljeno", - "search_filters_sort_label": "Sortiranje po", - "search_filters_type_option_show": "Emisija", - "search_filters_duration_option_short": "Kratko (< 4 minuta)", - "Current version: ": "Trenutna verzija: ", - "Top enabled: ": "Top omogućeno: ", - "Public": "Javno", - "Delete playlist": "Izbriši plejlistu", - "Title": "Naslov", - "Show annotations": "Prikaži napomene", - "Password cannot be empty": "Lozinka ne može biti prazna", - "Deleted or invalid channel": "Izbrisan ili nevažeći kanal", - "Esperanto": "Esperanto", - "Hmong": "Hmong", - "Luxembourgish": "Luksemburški", - "Nepali": "Nepalski", - "Samoan": "Samoanski", - "News": "Vesti", - "permalink": "trajni link", - "Password is a required field": "Lozinka je obavezno polje", - "Amharic": "Amharski", - "Indonesian": "Indonezijski", - "Irish": "Irski", - "Korean": "Korejski", - "Southern Sotho": "Južni Soto", - "Thai": "Tajski", - "preferences_speed_label": "Podrazumevana brzina: ", - "Dark mode: ": "Tamni režim: ", - "dark": "tamna", - "Redirect homepage to feed: ": "Preusmeri početnu stranicu na fid: ", - "channel name": "ime kanala", - "View all playlists": "Pogledaj sve plejliste", - "Show more": "Prikaži više", - "Genre: ": "Žanr: ", - "Family friendly? ": "Pogodno za porodicu? ", - "next_steps_error_message_refresh": "Osvežite", - "youtube": "YouTube", - "reddit": "Reddit", - "unsubscribe": "prekini praćenje", - "Blacklisted regions: ": "Nedostupni regioni: ", - "Polish": "Poljski", - "Yoruba": "Joruba", - "search_filters_title": "Filteri", - "Korean (auto-generated)": "Korejski (automatski generisano)", - "search_filters_features_option_three_sixty": "360°", - "preferences_quality_dash_option_worst": "Najgore", - "channel_tab_podcasts_label": "Podkasti", - "preferences_save_player_pos_label": "Sačuvaj poziciju reprodukcije: ", - "Spanish (Mexico)": "Španski (Meksiko)", - "generic_subscriptions_count_0": "{{count}} praćenje", - "generic_subscriptions_count_1": "{{count}} praćenja", - "generic_subscriptions_count_2": "{{count}} praćenja", - "search_filters_apply_button": "Primeni izabrane filtere", - "Download is disabled": "Preuzimanje je onemogućeno", - "comments_points_count_0": "{{count}} poen", - "comments_points_count_1": "{{count}} poena", - "comments_points_count_2": "{{count}} poena", - "preferences_quality_dash_option_2160p": "2160p", - "German (auto-generated)": "Nemački (automatski generisano)", - "Japanese (auto-generated)": "Japanski (automatski generisano)", - "preferences_quality_option_medium": "Srednje", - "search_message_change_filters_or_query": "Pokušajte da proširite upit za pretragu i/ili promenite filtere.", - "crash_page_before_reporting": "Pre nego što prijavite grešku, uverite se da ste:", - "preferences_quality_dash_option_best": "Najbolje", - "Channel Sponsor": "Sponzor kanala", - "generic_videos_count_0": "{{count}} video snimak", - "generic_videos_count_1": "{{count}} video snimka", - "generic_videos_count_2": "{{count}} video snimaka", - "videoinfo_started_streaming_x_ago": "Započeto strimovanje pre `x`", - "videoinfo_youTube_embed_link": "Ugrađeno", - "channel_tab_streams_label": "Strimovi uživo", - "playlist_button_add_items": "Dodaj video snimke", - "generic_count_minutes_0": "{{count}} minut", - "generic_count_minutes_1": "{{count}} minuta", - "generic_count_minutes_2": "{{count}} minuta", - "preferences_quality_dash_option_720p": "720p", - "preferences_watch_history_label": "Omogući istoriju gledanja: ", - "user_saved_playlists": "Sačuvanih plejlista: `x`", - "Spanish (Spain)": "Španski (Španija)", - "invidious": "Invidious", - "crash_page_refresh": "pokušali da osvežite stranicu", - "Chinese (Hong Kong)": "Kineski (Hong Kong)", - "Artist: ": "Izvođač: ", - "generic_count_months_0": "{{count}} mesec", - "generic_count_months_1": "{{count}} meseca", - "generic_count_months_2": "{{count}} meseci", - "search_message_use_another_instance": " Takođe, možete pretraživati na drugoj instanci.", - "generic_subscribers_count_0": "{{count}} pratilac", - "generic_subscribers_count_1": "{{count}} pratioca", - "generic_subscribers_count_2": "{{count}} pratilaca", - "download_subtitles": "Titlovi - `x` (.vtt)", - "generic_button_save": "Sačuvaj", - "crash_page_search_issue": "pretražili postojeće izveštaje o problemima na GitHub-u", - "generic_button_cancel": "Otkaži", - "none": "nijedno", - "English (United States)": "Engleski (Sjedinjene Američke Države)", - "subscriptions_unseen_notifs_count_0": "{{count}} neviđeno obaveštenje", - "subscriptions_unseen_notifs_count_1": "{{count}} neviđena obaveštenja", - "subscriptions_unseen_notifs_count_2": "{{count}} neviđenih obaveštenja", - "Album: ": "Album: ", - "preferences_quality_option_dash": "DASH (adaptivni kvalitet)", - "preferences_quality_dash_option_1080p": "1080p", - "Video unavailable": "Video snimak nedostupan", - "tokens_count_0": "{{count}} token", - "tokens_count_1": "{{count}} tokena", - "tokens_count_2": "{{count}} tokena", - "Chinese (China)": "Kineski (Kina)", - "Italian (auto-generated)": "Italijanski (automatski generisano)", - "channel_tab_shorts_label": "Shorts", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_360p": "360p", - "search_message_no_results": "Nisu pronađeni rezultati.", - "channel_tab_releases_label": "Izdanja", - "preferences_quality_dash_option_144p": "144p", - "Interlingue": "Interlingva", - "Song: ": "Pesma: ", - "generic_channels_count_0": "{{count}} kanal", - "generic_channels_count_1": "{{count}} kanala", - "generic_channels_count_2": "{{count}} kanala", - "Chinese (Taiwan)": "Kineski (Tajvan)", - "Turkish (auto-generated)": "Turski (automatski generisano)", - "Indonesian (auto-generated)": "Indonezijski (automatski generisano)", - "Portuguese (auto-generated)": "Portugalski (automatski generisano)", - "generic_count_years_0": "{{count}} godina", - "generic_count_years_1": "{{count}} godine", - "generic_count_years_2": "{{count}} godina", - "videoinfo_invidious_embed_link": "Ugrađeni link", - "Popular enabled: ": "Popularno omogućeno: ", - "Spanish (auto-generated)": "Španski (automatski generisano)", - "preferences_quality_option_small": "Malo", - "English (United Kingdom)": "Engleski (Ujedinjeno Kraljevstvo)", - "channel_tab_playlists_label": "Plejliste", - "generic_button_edit": "Izmeni", - "generic_playlists_count_0": "{{count}} plejlista", - "generic_playlists_count_1": "{{count}} plejliste", - "generic_playlists_count_2": "{{count}} plejlista", - "preferences_quality_option_hd720": "HD720", - "search_filters_features_option_purchased": "Kupljeno", - "search_filters_date_option_none": "Bilo koji datum", - "preferences_quality_dash_option_auto": "Automatski", - "Cantonese (Hong Kong)": "Kantonski (Hong Kong)", - "crash_page_report_issue": "Ako ništa od gorenavedenog nije pomoglo, otvorite novi izveštaj o problemu na GitHub-u (po mogućnosti na engleskom) i uključite sledeći tekst u svoju poruku (NE prevodite taj tekst):", - "crash_page_switch_instance": "pokušali da koristite drugu instancu", - "generic_count_weeks_0": "{{count}} nedelja", - "generic_count_weeks_1": "{{count}} nedelje", - "generic_count_weeks_2": "{{count}} nedelja", - "videoinfo_watch_on_youTube": "Gledaj na YouTube-u", - "Music in this video": "Muzika u ovom video snimku", - "generic_button_rss": "RSS", - "preferences_quality_dash_option_4320p": "4320p", - "generic_count_hours_0": "{{count}} sat", - "generic_count_hours_1": "{{count}} sata", - "generic_count_hours_2": "{{count}} sati", - "French (auto-generated)": "Francuski (automatski generisano)", - "crash_page_read_the_faq": "pročitali Često Postavljana Pitanja (ČPP)", - "user_created_playlists": "Napravljenih plejlista: `x`", - "channel_tab_channels_label": "Kanali", - "search_filters_type_option_all": "Bilo koja vrsta", - "Russian (auto-generated)": "Ruski (automatski generisano)", - "preferences_quality_dash_option_480p": "480p", - "comments_view_x_replies_0": "Pogledaj {{count}} odgovor", - "comments_view_x_replies_1": "Pogledaj {{count}} odgovora", - "comments_view_x_replies_2": "Pogledaj {{count}} odgovora", - "Portuguese (Brazil)": "Portugalski (Brazil)", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Traženi video snimak ne postoji na ovoj plejlisti. Kliknite ovde za početnu stranicu plejliste.", - "Dutch (auto-generated)": "Holandski (automatski generisano)", - "generic_count_days_0": "{{count}} dan", - "generic_count_days_1": "{{count}} dana", - "generic_count_days_2": "{{count}} dana", - "Vietnamese (auto-generated)": "Vijetnamski (automatski generisano)", - "search_filters_duration_option_none": "Bilo koje trajanje", - "preferences_quality_dash_option_240p": "240p", - "Chinese": "Kineski", - "generic_button_delete": "Izbriši", - "Import YouTube playlist (.csv)": "Uvezi YouTube plejlistu (.csv)", - "Standard YouTube license": "Standardna YouTube licenca", - "search_filters_duration_option_medium": "Srednje (4 - 20 minuta)", - "generic_count_seconds_0": "{{count}} sekunda", - "generic_count_seconds_1": "{{count}} sekunde", - "generic_count_seconds_2": "{{count}} sekundi", - "search_filters_date_label": "Datum otpremanja", - "crash_page_you_found_a_bug": "Izgleda da ste pronašli grešku u Invidious-u!", - "generic_views_count_0": "{{count}} pregled", - "generic_views_count_1": "{{count}} pregleda", - "generic_views_count_2": "{{count}} pregleda", - "Import YouTube watch history (.json)": "Uvezi YouTube istoriju gledanja (.json)" -} diff --git a/invidious/locales/sr_Cyrl.json b/invidious/locales/sr_Cyrl.json deleted file mode 100755 index 52ac411..0000000 --- a/invidious/locales/sr_Cyrl.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "УЖИВО", - "Shared `x` ago": "Дељено пре `x`", - "Unsubscribe": "Прекини праћење", - "Subscribe": "Запрати", - "View channel on YouTube": "Погледај канал на YouTube-у", - "View playlist on YouTube": "Погледај плејлисту на YouTube-у", - "newest": "најновије", - "oldest": "најстарије", - "popular": "популарно", - "last": "последње", - "Next page": "Следећа страница", - "Previous page": "Претходна страница", - "Clear watch history?": "Очистити историју гледања?", - "New password": "Нова лозинка", - "New passwords must match": "Нове лозинке морају да се подударају", - "Authorize token?": "Ауторизовати токен?", - "Authorize token for `x`?": "Ауторизовати токен за `x`?", - "Yes": "Да", - "No": "Не", - "Import and Export Data": "Увоз и извоз података", - "Import": "Увези", - "Import Invidious data": "Увези Invidious JSON податке", - "Import YouTube subscriptions": "Увези YouTube/OPML праћења", - "Import FreeTube subscriptions (.db)": "Увези FreeTube праћења (.db)", - "Import NewPipe subscriptions (.json)": "Увези NewPipe праћења (.json)", - "Import NewPipe data (.zip)": "Увези NewPipe податке (.zip)", - "Export": "Извези", - "Export subscriptions as OPML": "Извези праћења као OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Извези праћења као OPML (за NewPipe и FreeTube)", - "Export data as JSON": "Извези Invidious податке као JSON", - "Delete account?": "Избрисати налог?", - "History": "Историја", - "An alternative front-end to YouTube": "Алтернативни фронт-енд за YouTube", - "JavaScript license information": "Информације о JavaScript лиценци", - "source": "извор", - "Log in": "Пријава", - "Log in/register": "Пријава/регистрација", - "User ID": "ID корисника", - "Password": "Лозинка", - "Time (h:mm:ss):": "Време (ч:мм:сс):", - "Text CAPTCHA": "Текст CAPTCHA", - "Image CAPTCHA": "Слика CAPTCHA", - "Sign In": "Пријава", - "Register": "Регистрација", - "E-mail": "Имејл", - "Preferences": "Подешавања", - "preferences_category_player": "Подешавања плејера", - "preferences_video_loop_label": "Увек понављај: ", - "preferences_autoplay_label": "Аутоматски пусти: ", - "preferences_continue_label": "Подразумевано пусти следеће: ", - "preferences_continue_autoplay_label": "Аутоматски пусти следећи видео снимак: ", - "preferences_listen_label": "Подразумевано укључи само звук: ", - "preferences_local_label": "Прокси видео снимци: ", - "preferences_speed_label": "Подразумевана брзина: ", - "preferences_quality_label": "Преферирани квалитет видео снимка: ", - "preferences_volume_label": "Јачина звука плејера: ", - "preferences_comments_label": "Подразумевани коментари: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Подразумевани титлови: ", - "Fallback captions: ": "Резервни титлови: ", - "preferences_related_videos_label": "Прикажи повезане видео снимке: ", - "preferences_annotations_label": "Подразумевано прикажи напомене: ", - "preferences_category_visual": "Визуелна подешавања", - "preferences_player_style_label": "Стил плејера: ", - "Dark mode: ": "Тамни режим: ", - "preferences_dark_mode_label": "Тема: ", - "dark": "тамна", - "light": "светла", - "preferences_thin_mode_label": "Компактни режим: ", - "preferences_category_subscription": "Подешавања праћења", - "preferences_annotations_subscribed_label": "Подразумевано приказати напомене за канале које пратите? ", - "Redirect homepage to feed: ": "Преусмери почетну страницу на фид: ", - "preferences_max_results_label": "Број видео снимака приказаних у фиду: ", - "preferences_sort_label": "Сортирај видео снимке по: ", - "published": "објављено", - "published - reverse": "објављено - обрнуто", - "alphabetically": "абецедно", - "alphabetically - reverse": "абецедно - обрнуто", - "channel name": "име канала", - "channel name - reverse": "име канала - обрнуто", - "Only show latest video from channel: ": "Прикажи само најновији видео снимак са канала: ", - "Only show latest unwatched video from channel: ": "Прикажи само најновији неодгледани видео снимак са канала: ", - "preferences_unseen_only_label": "Прикажи само недогледано: ", - "preferences_notifications_only_label": "Прикажи само обавештења (ако их има): ", - "Enable web notifications": "Омогући веб обавештења", - "`x` uploaded a video": "`x` је отпремио/ла видео снимак", - "`x` is live": "`x` је уживо", - "preferences_category_data": "Подешавања података", - "Clear watch history": "Очисти историју гледања", - "Import/export data": "Увези/Извези податке", - "Change password": "Промени лозинку", - "Manage subscriptions": "Управљај праћењима", - "Manage tokens": "Управљај токенима", - "Watch history": "Историја гледања", - "Delete account": "Избриши налог", - "preferences_category_admin": "Подешавања администратора", - "preferences_default_home_label": "Подразумевана почетна страница: ", - "preferences_feed_menu_label": "Фид мени: ", - "CAPTCHA enabled: ": "CAPTCHA омогућена: ", - "Login enabled: ": "Пријава омогућена: ", - "Registration enabled: ": "Регистрација омогућена: ", - "Save preferences": "Сачувај подешавања", - "Subscription manager": "Управљање праћењима", - "Token manager": "Управљање токенима", - "Token": "Токен", - "Import/export": "Увоз/извоз", - "unsubscribe": "прекини праћење", - "revoke": "опозови", - "Subscriptions": "Праћења", - "search": "претрага", - "Log out": "Одјава", - "Source available here.": "Изворни кôд је доступан овде.", - "View JavaScript license information.": "Погледај информације о JavaScript лиценци.", - "View privacy policy.": "Погледај политику приватности.", - "Trending": "У тренду", - "Public": "Јавно", - "Unlisted": "По позиву", - "Private": "Приватно", - "View all playlists": "Погледај све плејлисте", - "Updated `x` ago": "Ажурирано пре `x`", - "Delete playlist `x`?": "Избрисати плејлисту `x`?", - "Delete playlist": "Избриши плејлисту", - "Create playlist": "Направи плејлисту", - "Title": "Наслов", - "Playlist privacy": "Приватност плејлисте", - "Editing playlist `x`": "Измењивање плејлисте `x`", - "Watch on YouTube": "Гледај на YouTube-у", - "Hide annotations": "Сакриј напомене", - "Show annotations": "Прикажи напомене", - "Genre: ": "Жанр: ", - "License: ": "Лиценца: ", - "Engagement: ": "Ангажовање: ", - "Whitelisted regions: ": "Доступни региони: ", - "Blacklisted regions: ": "Недоступни региони: ", - "Premieres in `x`": "Премијера у `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Хеј! Изгледа да сте искључили JavaScript. Кликните овде да бисте видели коментаре, имајте на уму да ће можда потрајати мало дуже да се учитају.", - "View YouTube comments": "Погледај YouTube коментаре", - "View more comments on Reddit": "Погледај више коментара на Reddit-у", - "View Reddit comments": "Погледај Reddit коментаре", - "Hide replies": "Сакриј одговоре", - "Show replies": "Прикажи одговоре", - "Incorrect password": "Нетачна лозинка", - "Current version: ": "Тренутна верзија: ", - "Wilson score: ": "Вилсонова оцена: ", - "Burmese": "Бурмански", - "preferences_quality_dash_label": "Преферирани DASH квалитет видео снимка: ", - "Erroneous token": "Погрешан токен", - "CAPTCHA is a required field": "CAPTCHA је обавезно поље", - "No such user": "Не постоји корисник", - "Chinese (Traditional)": "Кинески (Традиционални)", - "adminprefs_modified_source_code_url_label": "URL адреса до репозиторијума измењеног изворног кода", - "Lao": "Лаоски", - "Czech": "Чешки", - "Kannada": "Канада", - "Polish": "Пољски", - "Cebuano": "Цебуански", - "preferences_show_nick_label": "Прикажи надимке на врху: ", - "Report statistics: ": "Извештавај статистике: ", - "Show more": "Прикажи више", - "Wrong answer": "Погрешан одговор", - "Hidden field \"token\" is a required field": "Скривено поље „токен“ је обавезно поље", - "English": "Енглески", - "Albanian": "Албански", - "Amharic": "Амхарски", - "Azerbaijani": "Азербејџански", - "Basque": "Баскијски", - "Belarusian": "Белоруски", - "Chinese (Simplified)": "Кинески (Поједностављени)", - "Croatian": "Хрватски", - "Dutch": "Холандски", - "Esperanto": "Есперанто", - "Finnish": "Фински", - "French": "Француски", - "Georgian": "Грузијски", - "Greek": "Грчки", - "Hausa": "Хауса", - "search_filters_type_option_video": "Видео снимак", - "search_filters_type_option_playlist": "Плејлиста", - "search_filters_type_option_movie": "Филм", - "search_filters_duration_option_long": "Дуго (> 20 минута)", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_live": "Уживо", - "search_filters_features_option_location": "Локација", - "next_steps_error_message": "Након тога би требало да покушате да: ", - "footer_donate_page": "Донирај", - "footer_documentation": "Документација", - "footer_modfied_source_code": "Измењени изворни кôд", - "preferences_region_label": "Држава садржаја: ", - "preferences_category_misc": "Остала подешавања", - "User ID is a required field": "ID корисника је обавезно поље", - "Password is a required field": "Лозинка је обавезно поље", - "Wrong username or password": "Погрешно корисничко име или лозинка", - "Password cannot be empty": "Лозинка не може бити празна", - "Password cannot be longer than 55 characters": "Лозинка не може бити дужа од 55 знакова", - "Invidious Private Feed for `x`": "Invidious приватни фид за `x`", - "Deleted or invalid channel": "Избрисан или неважећи канал", - "This channel does not exist.": "Овај канал не постоји.", - "Could not create mix.": "Није могуће направити микс.", - "Empty playlist": "Празна плејлиста", - "Not a playlist.": "Није плејлиста.", - "Playlist does not exist.": "Плејлиста не постоји.", - "Could not pull trending pages.": "Није могуће повући странице „У тренду“.", - "Hidden field \"challenge\" is a required field": "Скривено поље „изазов“ је обавезно поље", - "Telugu": "Телугу", - "Turkish": "Турски", - "Urdu": "Урду", - "Western Frisian": "Западнофризијски", - "Xhosa": "Коса (Кхоса)", - "Yiddish": "Јидиш", - "Hawaiian": "Хавајски", - "Hmong": "Хмонг", - "Hungarian": "Мађарски", - "Igbo": "Игбо", - "Javanese": "Јавански", - "Khmer": "Кмерски", - "Kyrgyz": "Киргиски", - "Macedonian": "Македонски", - "Maori": "Маорски", - "Marathi": "Маратски", - "Nepali": "Непалски", - "Norwegian Bokmål": "Норвешки Бокмал", - "Nyanja": "Нијанџа", - "Russian": "Руски", - "Scottish Gaelic": "Шкотски Гелски", - "Shona": "Шона", - "Slovak": "Словачки", - "Spanish (Latin America)": "Шпански (Латинска Америка)", - "Sundanese": "Сундански", - "Swahili": "Сували", - "Tajik": "Таџички", - "Search": "Претрага", - "Rating: ": "Оцена: ", - "Default": "Подразумевано", - "News": "Вести", - "Download": "Преузми", - "(edited)": "(измењено)", - "`x` marked it with a ❤": "`x` је означио/ла са ❤", - "Audio mode": "Режим аудио снимка", - "channel_tab_videos_label": "Видео снимци", - "search_filters_sort_option_views": "Број прегледа", - "search_filters_features_label": "Карактеристике", - "search_filters_date_option_today": "Данас", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "preferences_locale_label": "Језик: ", - "Persian": "Персијски", - "View `x` comments": { - "": "Погледај `x` коментаре", - "([^.,0-9]|^)1([^.,0-9]|$)": "Погледај `x` коментар" - }, - "search_filters_type_option_channel": "Канал", - "Haitian Creole": "Хаићански Креолски", - "Armenian": "Јерменски", - "next_steps_error_message_go_to_youtube": "Одете на YouTube", - "Indonesian": "Индонезијски", - "preferences_vr_mode_label": "Интерактивни видео снимци од 360 степени (захтева WebGL): ", - "Switch Invidious Instance": "Промени Invidious инстанцу", - "Portuguese": "Португалски", - "search_filters_date_option_week": "Ове недеље", - "search_filters_type_option_show": "Емисија", - "Fallback comments: ": "Резервни коментари: ", - "search_filters_features_option_hdr": "HDR", - "About": "О сајту", - "Kazakh": "Казашки", - "Shared `x`": "Дељено `x`", - "Playlists": "Плејлисте", - "Yoruba": "Јоруба", - "Erroneous challenge": "Погрешан изазов", - "Danish": "Дански", - "Could not get channel info.": "Није могуће прикупити информације о каналу.", - "search_filters_features_option_hd": "HD", - "Slovenian": "Словеначки", - "Load more": "Учитај више", - "German": "Немачки", - "Luxembourgish": "Луксембуршки", - "Mongolian": "Монголски", - "Latvian": "Летонски", - "channel:`x`": "канал:`x`", - "Southern Sotho": "Јужни Сото", - "Popular": "Популарно", - "Gujarati": "Гуџарати", - "search_filters_date_option_year": "Ове године", - "Irish": "Ирски", - "YouTube comment permalink": "Трајни линк YouTube коментара", - "Malagasy": "Малгашки", - "Token is expired, please try again": "Токен је истекао, покушајте поново", - "search_filters_duration_option_short": "Кратко (< 4 минута)", - "Samoan": "Самоански", - "Tamil": "Тамилски", - "Ukrainian": "Украјински", - "permalink": "трајни линк", - "Pashto": "Паштунски", - "channel_tab_community_label": "Заједница", - "Sindhi": "Синди", - "Could not fetch comments": "Није могуће прикупити коментаре", - "Bangla": "Бенгалски", - "Uzbek": "Узбечки", - "Lithuanian": "Литвански", - "Icelandic": "Исландски", - "Thai": "Тајски", - "search_filters_date_option_month": "Овог месеца", - "search_filters_type_label": "Врста", - "search_filters_date_option_hour": "Последњи сат", - "Spanish": "Шпански", - "search_filters_sort_option_date": "Датум отпремања", - "View as playlist": "Погледај као плејлисту", - "search_filters_sort_option_relevance": "Релевантност", - "Estonian": "Естонски", - "Sinhala": "Синхалски", - "Corsican": "Корзикански", - "Filipino": "Филипински", - "Gaming": "Видео игре", - "Movies": "Филмови", - "search_filters_sort_option_rating": "Оцена", - "Top enabled: ": "Топ омогућено: ", - "Released under the AGPLv3 on Github.": "Објављено под лиценцом AGPLv3 на GitHub-у.", - "Afrikaans": "Африканс", - "preferences_automatic_instance_redirect_label": "Аутоматско преусмеравање инстанце (повратак на redirect.invidious.io): ", - "Please log in": "Молимо, пријавите се", - "English (auto-generated)": "Енглески (аутоматски генерисано)", - "Hindi": "Хинди", - "Italian": "Италијански", - "Malayalam": "Малајаламски", - "Punjabi": "Панџапски", - "Somali": "Сомалијски", - "Vietnamese": "Вијетнамски", - "Welsh": "Велшки", - "Zulu": "Зулу", - "Maltese": "Малтешки", - "Swedish": "Шведски", - "Music": "Музика", - "Download as: ": "Преузети као: ", - "search_filters_duration_label": "Трајање", - "search_filters_sort_label": "Сортирање по", - "search_filters_features_option_subtitles": "Титлови/Скривени титлови", - "preferences_extend_desc_label": "Аутоматски прошири опис видео снимка: ", - "Show less": "Прикажи мање", - "Family friendly? ": "Погодно за породицу? ", - "Premieres `x`": "Премијера `x`", - "Bosnian": "Босански", - "Catalan": "Каталонски", - "Japanese": "Јапански", - "Latin": "Латински", - "next_steps_error_message_refresh": "Освежите", - "footer_original_source_code": "Оригинални изворни кôд", - "Romanian": "Румунски", - "Serbian": "Српски", - "Top": "Топ", - "Video mode": "Режим видео снимка", - "footer_source_code": "Изворни кôд", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_four_k": "4K", - "Erroneous CAPTCHA": "Погрешна CAPTCHA", - "`x` ago": "пре `x`", - "Arabic": "Арапски", - "Bulgarian": "Бугарски", - "Galician": "Галицијски", - "Hebrew": "Хебрејски", - "Korean": "Корејски", - "Kurdish": "Курдски", - "Malay": "Малајски", - "search_filters_title": "Филтери", - "Korean (auto-generated)": "Корејски (аутоматски генерисано)", - "search_filters_features_option_three_sixty": "360°", - "preferences_quality_dash_option_worst": "Најгоре", - "channel_tab_podcasts_label": "Подкасти", - "preferences_save_player_pos_label": "Сачувај позицију репродукције: ", - "Spanish (Mexico)": "Шпански (Мексико)", - "generic_subscriptions_count_0": "{{count}} праћење", - "generic_subscriptions_count_1": "{{count}} праћења", - "generic_subscriptions_count_2": "{{count}} праћења", - "search_filters_apply_button": "Примени изабране филтере", - "Download is disabled": "Преузимање је онемогућено", - "comments_points_count_0": "{{count}} поен", - "comments_points_count_1": "{{count}} поена", - "comments_points_count_2": "{{count}} поена", - "preferences_quality_dash_option_2160p": "2160p", - "German (auto-generated)": "Немачки (аутоматски генерисано)", - "Japanese (auto-generated)": "Јапански (аутоматски генерисано)", - "preferences_quality_option_medium": "Средње", - "search_message_change_filters_or_query": "Покушајте да проширите упит за претрагу и/или промените филтере.", - "crash_page_before_reporting": "Пре него што пријавите грешку, уверите се да сте:", - "preferences_quality_dash_option_best": "Најбоље", - "Channel Sponsor": "Спонзор канала", - "generic_videos_count_0": "{{count}} видео снимак", - "generic_videos_count_1": "{{count}} видео снимка", - "generic_videos_count_2": "{{count}} видео снимака", - "videoinfo_started_streaming_x_ago": "Започето стримовање пре `x`", - "videoinfo_youTube_embed_link": "Уграђено", - "channel_tab_streams_label": "Стримови уживо", - "playlist_button_add_items": "Додај видео снимке", - "generic_count_minutes_0": "{{count}} минут", - "generic_count_minutes_1": "{{count}} минута", - "generic_count_minutes_2": "{{count}} минута", - "preferences_quality_dash_option_720p": "720p", - "preferences_watch_history_label": "Омогући историју гледања: ", - "user_saved_playlists": "Сачуваних плејлиста: `x`", - "Spanish (Spain)": "Шпански (Шпанија)", - "invidious": "Invidious", - "crash_page_refresh": "покушали да освежите страницу", - "Chinese (Hong Kong)": "Кинески (Хонг Конг)", - "Artist: ": "Извођач: ", - "generic_count_months_0": "{{count}} месец", - "generic_count_months_1": "{{count}} месеца", - "generic_count_months_2": "{{count}} месеци", - "search_message_use_another_instance": " Такође, можете претраживати на другој инстанци.", - "generic_subscribers_count_0": "{{count}} пратилац", - "generic_subscribers_count_1": "{{count}} пратиоца", - "generic_subscribers_count_2": "{{count}} пратилаца", - "download_subtitles": "Титлови - `x` (.vtt)", - "generic_button_save": "Сачувај", - "crash_page_search_issue": "претражили постојеће извештаје о проблемима на GitHub-у", - "generic_button_cancel": "Откажи", - "none": "ниједно", - "English (United States)": "Енглески (Сједињене Америчке Државе)", - "subscriptions_unseen_notifs_count_0": "{{count}} невиђено обавештење", - "subscriptions_unseen_notifs_count_1": "{{count}} невиђена обавештења", - "subscriptions_unseen_notifs_count_2": "{{count}} невиђених обавештења", - "Album: ": "Албум: ", - "preferences_quality_option_dash": "DASH (адаптивни квалитет)", - "preferences_quality_dash_option_1080p": "1080p", - "Video unavailable": "Видео снимак недоступан", - "tokens_count_0": "{{count}} токен", - "tokens_count_1": "{{count}} токена", - "tokens_count_2": "{{count}} токена", - "Chinese (China)": "Кинески (Кина)", - "Italian (auto-generated)": "Италијански (аутоматски генерисано)", - "channel_tab_shorts_label": "Shorts", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_360p": "360p", - "search_message_no_results": "Нису пронађени резултати.", - "channel_tab_releases_label": "Издања", - "preferences_quality_dash_option_144p": "144p", - "Interlingue": "Интерлингва", - "Song: ": "Песма: ", - "generic_channels_count_0": "{{count}} канал", - "generic_channels_count_1": "{{count}} канала", - "generic_channels_count_2": "{{count}} канала", - "Chinese (Taiwan)": "Кинески (Тајван)", - "Turkish (auto-generated)": "Турски (аутоматски генерисано)", - "Indonesian (auto-generated)": "Индонезијски (аутоматски генерисано)", - "Portuguese (auto-generated)": "Португалски (аутоматски генерисано)", - "generic_count_years_0": "{{count}} година", - "generic_count_years_1": "{{count}} године", - "generic_count_years_2": "{{count}} година", - "videoinfo_invidious_embed_link": "Уграђени линк", - "Popular enabled: ": "Популарно омогућено: ", - "Spanish (auto-generated)": "Шпански (аутоматски генерисано)", - "preferences_quality_option_small": "Мало", - "English (United Kingdom)": "Енглески (Уједињено Краљевство)", - "channel_tab_playlists_label": "Плејлисте", - "generic_button_edit": "Измени", - "generic_playlists_count_0": "{{count}} плејлиста", - "generic_playlists_count_1": "{{count}} плејлисте", - "generic_playlists_count_2": "{{count}} плејлиста", - "preferences_quality_option_hd720": "HD720", - "search_filters_features_option_purchased": "Купљено", - "search_filters_date_option_none": "Било који датум", - "preferences_quality_dash_option_auto": "Аутоматски", - "Cantonese (Hong Kong)": "Кантонски (Хонг Конг)", - "crash_page_report_issue": "Ако ништа од горенаведеног није помогло, отворите нови извештај о проблему на GitHub-у (по могућности на енглеском) и укључите следећи текст у своју поруку (НЕ преводите тај текст):", - "crash_page_switch_instance": "покушали да користите другу инстанцу", - "generic_count_weeks_0": "{{count}} недеља", - "generic_count_weeks_1": "{{count}} недеље", - "generic_count_weeks_2": "{{count}} недеља", - "videoinfo_watch_on_youTube": "Гледај на YouTube-у", - "Music in this video": "Музика у овом видео снимку", - "generic_button_rss": "RSS", - "preferences_quality_dash_option_4320p": "4320p", - "generic_count_hours_0": "{{count}} сат", - "generic_count_hours_1": "{{count}} сата", - "generic_count_hours_2": "{{count}} сати", - "French (auto-generated)": "Француски (аутоматски генерисано)", - "crash_page_read_the_faq": "прочитали Често Постављана Питања (ЧПП)", - "user_created_playlists": "Направљених плејлиста: `x`", - "channel_tab_channels_label": "Канали", - "search_filters_type_option_all": "Било која врста", - "Russian (auto-generated)": "Руски (аутоматски генерисано)", - "preferences_quality_dash_option_480p": "480p", - "comments_view_x_replies_0": "Погледај {{count}} одговор", - "comments_view_x_replies_1": "Погледај {{count}} одговора", - "comments_view_x_replies_2": "Погледај {{count}} одговора", - "Portuguese (Brazil)": "Португалски (Бразил)", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Тражени видео снимак не постоји на овој плејлисти. Кликните овде за почетну страницу плејлисте.", - "Dutch (auto-generated)": "Холандски (аутоматски генерисано)", - "generic_count_days_0": "{{count}} дан", - "generic_count_days_1": "{{count}} дана", - "generic_count_days_2": "{{count}} дана", - "Vietnamese (auto-generated)": "Вијетнамски (аутоматски генерисано)", - "search_filters_duration_option_none": "Било које трајање", - "preferences_quality_dash_option_240p": "240p", - "Chinese": "Кинески", - "generic_button_delete": "Избриши", - "Import YouTube playlist (.csv)": "Увези YouTube плејлисту (.csv)", - "Standard YouTube license": "Стандардна YouTube лиценца", - "search_filters_duration_option_medium": "Средње (4 - 20 минута)", - "generic_count_seconds_0": "{{count}} секунда", - "generic_count_seconds_1": "{{count}} секунде", - "generic_count_seconds_2": "{{count}} секунди", - "search_filters_date_label": "Датум отпремања", - "crash_page_you_found_a_bug": "Изгледа да сте пронашли грешку у Invidious-у!", - "generic_views_count_0": "{{count}} преглед", - "generic_views_count_1": "{{count}} прегледа", - "generic_views_count_2": "{{count}} прегледа", - "Import YouTube watch history (.json)": "Увези YouTube историју гледањa (.json)", - "toggle_theme": "Укључи тему" -} diff --git a/invidious/locales/sv-SE.json b/invidious/locales/sv-SE.json deleted file mode 100755 index db3486d..0000000 --- a/invidious/locales/sv-SE.json +++ /dev/null @@ -1,492 +0,0 @@ -{ - "LIVE": "LIVE", - "Shared `x` ago": "Delad `x` sedan", - "Unsubscribe": "Avprenumerera", - "Subscribe": "Prenumerera", - "View channel on YouTube": "Visa kanalen på YouTube", - "View playlist on YouTube": "Visa spellistan på YouTube", - "newest": "nyaste", - "oldest": "äldsta", - "popular": "populärt", - "last": "sista", - "Next page": "Nästa sida", - "Previous page": "Tidigare sida", - "Clear watch history?": "Töm visningshistorik?", - "New password": "Nytt lösenord", - "New passwords must match": "Nya lösenord måste stämma överens", - "Authorize token?": "Auktorisera åtkomsttoken?", - "Authorize token for `x`?": "Auktorisera åtkomsttoken för `x`?", - "Yes": "Ja", - "No": "Nej", - "Import and Export Data": "Importera och exportera data", - "Import": "Importera", - "Import Invidious data": "Importera Invidious JSON data", - "Import YouTube subscriptions": "Importera YouTube/OPML prenumerationer", - "Import FreeTube subscriptions (.db)": "Importera FreeTube-prenumerationer (.db)", - "Import NewPipe subscriptions (.json)": "Importera NewPipe-prenumerationer (.json)", - "Import NewPipe data (.zip)": "Importera NewPipe-data (.zip)", - "Export": "Exportera", - "Export subscriptions as OPML": "Exportera prenumerationer som OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportera prenumerationer som OPML (för NewPipe och FreeTube)", - "Export data as JSON": "Exportera Invidious data som JSON", - "Delete account?": "Radera konto?", - "History": "Historik", - "An alternative front-end to YouTube": "Ett alternativt gränssnitt till YouTube", - "JavaScript license information": "JavaScript-licensinformation", - "source": "källa", - "Log in": "Logga in", - "Log in/register": "Logga in/registrera", - "User ID": "Användar-ID", - "Password": "Lösenord", - "Time (h:mm:ss):": "Tid (h:mm:ss):", - "Text CAPTCHA": "Text-CAPTCHA", - "Image CAPTCHA": "Bild-CAPTCHA", - "Sign In": "Inloggning", - "Register": "Registrera", - "E-mail": "E-post", - "Preferences": "Inställningar", - "preferences_category_player": "Spelarinställningar", - "preferences_video_loop_label": "Loopa alltid: ", - "preferences_autoplay_label": "Autouppspelning: ", - "preferences_continue_label": "Spela nästa som förval: ", - "preferences_continue_autoplay_label": "Autouppspela nästa video: ", - "preferences_listen_label": "Lyssna som förval: ", - "preferences_local_label": "Proxy:a videor: ", - "preferences_speed_label": "Förvald hastighet: ", - "preferences_quality_label": "Föredragen videokvalitet: ", - "preferences_volume_label": "Volym: ", - "preferences_comments_label": "Förvalda kommentarer: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Förvalda undertexter: ", - "Fallback captions: ": "Ersättningsundertexter: ", - "preferences_related_videos_label": "Visa relaterade videor? ", - "preferences_annotations_label": "Visa länkar-i-videon som förval? ", - "preferences_extend_desc_label": "Förläng videobeskrivning automatiskt: ", - "preferences_vr_mode_label": "Interaktiva 360-gradervideos (kräver WebGL): ", - "preferences_category_visual": "Visuella inställningar", - "preferences_player_style_label": "Spelarstil: ", - "Dark mode: ": "Mörkt läge: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "Mörkt", - "light": "Ljust", - "preferences_thin_mode_label": "Lättviktigt läge: ", - "preferences_category_misc": "Övriga inställningar", - "preferences_category_subscription": "Prenumerationsinställningar", - "preferences_annotations_subscribed_label": "Visa länkar-i-videor som förval för kanaler som prenumereras på? ", - "Redirect homepage to feed: ": "Omdirigera hemsida till flöde: ", - "preferences_max_results_label": "Antal videor att visa i flödet: ", - "preferences_sort_label": "Sortera videor: ", - "published": "publicering", - "published - reverse": "publicering - omvänd", - "alphabetically": "alfabetiskt", - "alphabetically - reverse": "alfabetiskt - omvänd", - "channel name": "kanalnamn", - "channel name - reverse": "kanalnamn - omvänd", - "Only show latest video from channel: ": "Visa bara senaste videon från kanal: ", - "Only show latest unwatched video from channel: ": "Visa bara senaste osedda videon från kanal: ", - "preferences_unseen_only_label": "Visa bara osedda: ", - "preferences_notifications_only_label": "Visa endast aviseringar (om det finns några): ", - "Enable web notifications": "Slå på aviseringar", - "`x` uploaded a video": "`x` laddade upp en video", - "`x` is live": "`x` sänder live", - "preferences_category_data": "Datainställningar", - "Clear watch history": "Töm visningshistorik", - "Import/export data": "Importera/Exportera data", - "Change password": "Byt lösenord", - "Manage subscriptions": "Hantera prenumerationer", - "Manage tokens": "Hantera åtkomst-tokens", - "Watch history": "Visningshistorik", - "Delete account": "Radera konto", - "preferences_category_admin": "Administratörsinställningar", - "preferences_default_home_label": "Förvald hemsida: ", - "preferences_feed_menu_label": "Flödesmeny: ", - "preferences_show_nick_label": "Visa smeknamn överst: ", - "Top enabled: ": "Topp påslaget? ", - "CAPTCHA enabled: ": "CAPTCHA påslaget? ", - "Login enabled: ": "Inloggning påslaget? ", - "Registration enabled: ": "Registrering påslaget? ", - "Report statistics: ": "Rapportera in statistik? ", - "Save preferences": "Spara inställningar", - "Subscription manager": "Prenumerationshanterare", - "Token manager": "Åtkomst-token-hanterare", - "Token": "Åtkomst-token", - "Import/export": "Importera/exportera", - "unsubscribe": "avprenumerera", - "revoke": "återkalla", - "Subscriptions": "Prenumerationer", - "search": "sök", - "Log out": "Logga ut", - "Source available here.": "Källkod tillgänglig här.", - "View JavaScript license information.": "Visa JavaScript-licensinformation.", - "View privacy policy.": "Visa privatlivspolicy.", - "Trending": "Trendar", - "Public": "Offentlig", - "Unlisted": "Olistad", - "Private": "Privat", - "View all playlists": "Visa alla spellistor", - "Updated `x` ago": "Uppdaterad `x` sedan", - "Delete playlist `x`?": "Radera spellistan `x`?", - "Delete playlist": "Radera spellista", - "Create playlist": "Skapa spellista", - "Title": "Titel", - "Playlist privacy": "Privatläge på spellista", - "Editing playlist `x`": "Redigerer spellistan `x`", - "Show more": "Visa mer", - "Show less": "Visa mindre", - "Watch on YouTube": "Titta på YouTube", - "Switch Invidious Instance": "Byt Invidious Instans", - "Hide annotations": "Dölj länkar-i-video", - "Show annotations": "Visa länkar-i-video", - "Genre: ": "Genre: ", - "License: ": "Licens: ", - "Family friendly? ": "Familjevänlig? ", - "Wilson score: ": "Wilson-poängsumma: ", - "Engagement: ": "Engagement: ", - "Whitelisted regions: ": "Vitlistade regioner: ", - "Blacklisted regions: ": "Svartlistade regioner: ", - "Shared `x`": "Delade `x`", - "Premieres in `x`": "Premiär om `x`", - "Premieres `x`": "Premiär av `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hej. Det ser ut som att du har JavaScript avstängt. Klicka här för att visa kommentarer, ha i åtanke att nedladdning tar längre tid.", - "View YouTube comments": "Visa YouTube-kommentarer", - "View more comments on Reddit": "Visa flera kommentarer på Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Visa `x` kommentar", - "": "Visa `x` kommentarer" - }, - "View Reddit comments": "Visa Reddit-kommentarer", - "Hide replies": "Dölj svar", - "Show replies": "Visa svar", - "Incorrect password": "Fel lösenord", - "Wrong answer": "Fel svar", - "Erroneous CAPTCHA": "Ogiltig CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA är ett obligatoriskt fält", - "User ID is a required field": "Användar-ID är ett obligatoriskt fält", - "Password is a required field": "Lösenord är ett obligatoriskt fält", - "Wrong username or password": "Ogiltigt användarnamn eller lösenord", - "Password cannot be empty": "Lösenordet kan inte vara tomt", - "Password cannot be longer than 55 characters": "Lösenordet kan inte vara längre än 55 tecken", - "Please log in": "Snälla logga in", - "Invidious Private Feed for `x`": "Ogiltig privat flöde för `x`", - "channel:`x`": "kanal `x`", - "Deleted or invalid channel": "Raderad eller ogiltig kanal", - "This channel does not exist.": "Denna kanal finns inte.", - "Could not get channel info.": "Kunde inte hämta kanalinfo.", - "Could not fetch comments": "Kunde inte hämta kommentarer", - "`x` ago": "`x` sedan", - "Load more": "Ladda fler", - "Could not create mix.": "Kunde inte skapa mix.", - "Empty playlist": "Spellistan är tom", - "Not a playlist.": "Ogiltig spellista.", - "Playlist does not exist.": "Spellistan finns inte.", - "Could not pull trending pages.": "Kunde inte hämta trendande sidor.", - "Hidden field \"challenge\" is a required field": "Dolt fält \"challenge\" är ett obligatoriskt fält", - "Hidden field \"token\" is a required field": "Dolt fält \"token\" är ett obligatoriskt fält", - "Erroneous challenge": "Felaktig challenge", - "Erroneous token": "Felaktig token", - "No such user": "Ogiltig användare", - "Token is expired, please try again": "Token föråldrad, försök igen", - "English": "Engelska", - "English (auto-generated)": "Engelska (auto-genererat)", - "Afrikaans": "Afrikanska", - "Albanian": "Albanska", - "Amharic": "Amhariska", - "Arabic": "Arabiska", - "Armenian": "Armeniska", - "Azerbaijani": "Azerbajdzjanska", - "Bangla": "Bengaliska", - "Basque": "Baskiska", - "Belarusian": "Vitryska", - "Bosnian": "Bosniska", - "Bulgarian": "Bulgariska", - "Burmese": "Burmesiska", - "Catalan": "Katalanska", - "Cebuano": "Cebuano", - "Chinese (Simplified)": "Kinesiska (Förenklad)", - "Chinese (Traditional)": "Kinesiska (Traditionell)", - "Corsican": "Korsikanska", - "Croatian": "Kroatiska", - "Czech": "Tjeckiska", - "Danish": "Danska", - "Dutch": "Nederländska", - "Esperanto": "Esperanto", - "Estonian": "Estniska", - "Filipino": "Filipino", - "Finnish": "Finska", - "French": "Franska", - "Galician": "Galiciska", - "Georgian": "Georgiska", - "German": "Tyska", - "Greek": "Grekiska", - "Gujarati": "Gujarati", - "Haitian Creole": "Haitisk Kreol", - "Hausa": "Hausa", - "Hawaiian": "Hawaiiska", - "Hebrew": "Hebreiska", - "Hindi": "Hindi", - "Hmong": "Hmong-mienspråk", - "Hungarian": "Ungerska", - "Icelandic": "Isländska", - "Igbo": "Igbo", - "Indonesian": "Indonesiska", - "Irish": "Irländska", - "Italian": "Italienska", - "Japanese": "Japanska", - "Javanese": "Javanesiska", - "Kannada": "Kanaresiska", - "Kazakh": "Kazakiska", - "Khmer": "Kambodjanska", - "Korean": "Koreanska", - "Kurdish": "Kurdiska", - "Kyrgyz": "Kirgiziska", - "Lao": "Laotiska", - "Latin": "Latin", - "Latvian": "Lettiska", - "Lithuanian": "Litauiska", - "Luxembourgish": "Luxemburgska", - "Macedonian": "Makedonska", - "Malagasy": "Malagassiska", - "Malay": "Malajiska", - "Malayalam": "Malayalam", - "Maltese": "Maltesiska", - "Maori": "Maori", - "Marathi": "Marathi", - "Mongolian": "Mongoliska", - "Nepali": "Nepali", - "Norwegian Bokmål": "Norska Bokmål", - "Nyanja": "Nyanja", - "Pashto": "Pashto", - "Persian": "Persiska", - "Polish": "Polska", - "Portuguese": "Portugisiska", - "Punjabi": "Punjabi", - "Romanian": "Rumänska", - "Russian": "Ryska", - "Samoan": "Samoanska", - "Scottish Gaelic": "Skotsk gäliska", - "Serbian": "Serbiska", - "Shona": "Shona", - "Sindhi": "Sindhi", - "Sinhala": "Singalesiska", - "Slovak": "Slovakiska", - "Slovenian": "Slovenska", - "Somali": "Somaliska", - "Southern Sotho": "Sydsotho", - "Spanish": "Spanska", - "Spanish (Latin America)": "Spanska (Latin Amerikansk)", - "Sundanese": "Sundanesiska", - "Swahili": "Swahili", - "Swedish": "Svenska", - "Tajik": "Tadzjikiska", - "Tamil": "Tamil", - "Telugu": "Telugu", - "Thai": "Thailändska", - "Turkish": "Turkiska", - "Ukrainian": "Ukrainska", - "Urdu": "Urdu", - "Uzbek": "Uzbekiska", - "Vietnamese": "Vietnamesiska", - "Welsh": "Walesiska", - "Western Frisian": "Västfrisiska", - "Xhosa": "Xhosa", - "Yiddish": "Jiddisch", - "Yoruba": "Yoruba", - "Zulu": "Zulu", - "Fallback comments: ": "Fallback-kommentarer: ", - "Popular": "Populärt", - "Search": "Sök", - "Top": "Topp", - "About": "Om", - "Rating: ": "Betyg: ", - "preferences_locale_label": "Språk: ", - "View as playlist": "Visa som spellista", - "Default": "Förvalt", - "Music": "Musik", - "Gaming": "Spel", - "News": "Nyheter", - "Movies": "Filmer", - "Download": "Ladda ned", - "Download as: ": "Ladda ned som: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(redigerad)", - "YouTube comment permalink": "Permanent YouTube-länk till innehållet", - "permalink": "permanent länk", - "`x` marked it with a ❤": "`x` markerade det med ett ❤", - "Audio mode": "Ljudläge", - "Video mode": "Videoläge", - "channel_tab_videos_label": "Videor", - "Playlists": "Spellistor", - "channel_tab_community_label": "Gemenskap", - "search_filters_sort_option_relevance": "Relevans", - "search_filters_sort_option_rating": "Rankning", - "search_filters_sort_option_date": "Uppladdnings Datum", - "search_filters_sort_option_views": "Visningar", - "search_filters_type_label": "Typ", - "search_filters_duration_label": "Varaktighet", - "search_filters_features_label": "Funktioner", - "search_filters_sort_label": "Sortera efter", - "search_filters_date_option_hour": "Senaste Timmen", - "search_filters_date_option_today": "Idag", - "search_filters_date_option_week": "Denna vecka", - "search_filters_date_option_month": "Denna månad", - "search_filters_date_option_year": "Detta år", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Spellista", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Serie", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Undertexter/CC", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Live", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Plats", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Nuvarande version: ", - "next_steps_error_message_refresh": "Uppdatera", - "next_steps_error_message_go_to_youtube": "Gå till Youtube", - "Released under the AGPLv3 on Github.": "Publicerad under AGPLv3 på GitHub.", - "footer_source_code": "Källkod", - "search_filters_duration_option_long": "Lång (> 20 minuter)", - "footer_documentation": "Dokumentation", - "search_filters_duration_option_short": "Kort (< 4 minuter)", - "search_filters_title": "Filter", - "Korean (auto-generated)": "Koreanska (auto-genererad)", - "search_filters_features_option_three_sixty": "360°", - "preferences_quality_dash_option_worst": "Sämst", - "channel_tab_podcasts_label": "Podcaster", - "preferences_save_player_pos_label": "Spara uppspelningsposition: ", - "Spanish (Mexico)": "Spanska (Mexiko)", - "preferences_region_label": "Innehållsland: ", - "generic_subscriptions_count": "{{count}} prenumeration", - "generic_subscriptions_count_plural": "{{count}} prenumerationer", - "search_filters_apply_button": "Använd valda filter", - "Download is disabled": "Nedladdning är inaktiverad", - "comments_points_count": "{{count}} poäng", - "comments_points_count_plural": "{{count}} poäng", - "preferences_quality_dash_option_2160p": "2160p", - "German (auto-generated)": "Tyska (auto-genererad)", - "Japanese (auto-generated)": "Japanska (auto-genererad)", - "preferences_quality_option_medium": "Medium", - "footer_donate_page": "Donera", - "search_message_change_filters_or_query": "Prova att bredda din sökfråga och/eller ändra filtren.", - "crash_page_before_reporting": "Innan du rapporterar en bugg, se till att du har:", - "preferences_quality_dash_option_best": "Bäst", - "Channel Sponsor": "Kanal Sponsor", - "generic_videos_count": "{{count}} video", - "generic_videos_count_plural": "{{count}} videor", - "videoinfo_started_streaming_x_ago": "Började sända `x` sedan", - "videoinfo_youTube_embed_link": "Bädda in", - "channel_tab_streams_label": "Livesändningar", - "playlist_button_add_items": "Lägg till videor", - "generic_count_minutes": "{{count}}minut", - "generic_count_minutes_plural": "{{count}}minuter", - "preferences_quality_dash_option_720p": "720p", - "preferences_watch_history_label": "Aktivera visningshistorik: ", - "user_saved_playlists": "`x` sparade spellistor", - "Spanish (Spain)": "Spanska (Spanien)", - "invidious": "Invidious", - "crash_page_refresh": "försökte uppdatera sidan", - "Chinese (Hong Kong)": "Kinesiska (Hong Kong)", - "Artist: ": "Artist: ", - "generic_count_months": "{{count}}månad", - "generic_count_months_plural": "{{count}}månader", - "search_message_use_another_instance": " Du kan också söka på en annan instans.", - "generic_subscribers_count": "{{count}} prenumerant", - "generic_subscribers_count_plural": "{{count}} prenumeranter", - "download_subtitles": "Undertexter - `x` (.vtt)", - "generic_button_save": "Spara", - "crash_page_search_issue": "sökte efter befintliga problem på GitHub", - "generic_button_cancel": "Avbryt", - "none": "ingen", - "English (United States)": "English (Förenta staterna)", - "subscriptions_unseen_notifs_count": "{{count}}osedd notifikation", - "subscriptions_unseen_notifs_count_plural": "{{count}}osedda notifikationer", - "Album: ": "Album: ", - "preferences_quality_option_dash": "DASH (adaptiv kvalitet)", - "preferences_quality_dash_option_1080p": "1080p", - "Video unavailable": "Video inte tillgänglig", - "tokens_count": "{{count}}nyckel", - "tokens_count_plural": "{{count}}nycklar", - "Chinese (China)": "Kinesiska (Kina)", - "Italian (auto-generated)": "Italienska (auto-genererad)", - "channel_tab_shorts_label": "Shorts", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_360p": "360p", - "search_message_no_results": "Inga resultat hittades.", - "channel_tab_releases_label": "Releaser", - "preferences_quality_dash_option_144p": "144p", - "Interlingue": "Interlingue (auto-genererad)", - "Song: ": "Låt: ", - "generic_channels_count": "{{count}} kanal", - "generic_channels_count_plural": "{{count}} kanaler", - "Chinese (Taiwan)": "Kinesiska (Taiwan)", - "preferences_quality_dash_label": "Önskad DASH-videokvalitet: ", - "adminprefs_modified_source_code_url_label": "URL till modifierad källkodslager", - "Turkish (auto-generated)": "Turkiska (auto-genererad)", - "Indonesian (auto-generated)": "Indonesiska (auto-genererad)", - "Portuguese (auto-generated)": "Portugisiska (auto-genererad)", - "generic_count_years": "{{count}}år", - "generic_count_years_plural": "{{count}}år", - "videoinfo_invidious_embed_link": "Bädda in länk", - "Popular enabled: ": "Populär aktiverad: ", - "Spanish (auto-generated)": "Spanska (auto-genererad)", - "preferences_quality_option_small": "Liten", - "English (United Kingdom)": "Engelska (Storbritannien)", - "channel_tab_playlists_label": "Spellistor", - "generic_button_edit": "Redigera", - "generic_playlists_count": "{{count}} spellista", - "generic_playlists_count_plural": "{{count}} spellistor", - "preferences_quality_option_hd720": "HD720p", - "search_filters_features_option_purchased": "Köpt", - "search_filters_date_option_none": "Vilket datum som helst", - "preferences_quality_dash_option_auto": "Auto", - "Cantonese (Hong Kong)": "Katonesiska (Hong Kong)", - "crash_page_report_issue": "Om inget av ovanstående hjälpte, vänligen öppna ett nytt nummer på GitHub (helst på engelska) och inkludera följande text i ditt meddelande (översätt INTE den texten):", - "crash_page_switch_instance": "försökte använda en annan instans", - "generic_count_weeks": "{{count}}vecka", - "generic_count_weeks_plural": "{{count}}veckor", - "videoinfo_watch_on_youTube": "Titta på YouTube", - "Music in this video": "Musik i denna video", - "footer_modfied_source_code": "Modifierad källkod", - "generic_button_rss": "RSS", - "preferences_quality_dash_option_4320p": "4320p", - "generic_count_hours": "{{count}}timme", - "generic_count_hours_plural": "{{count}}timmar", - "French (auto-generated)": "Franska (auto-genererad)", - "crash_page_read_the_faq": "läs Vanliga frågor (FAQ)", - "user_created_playlists": "`x` skapade spellistor", - "channel_tab_channels_label": "Kanaler", - "search_filters_type_option_all": "Vilken typ som helst", - "Russian (auto-generated)": "Ryska (auto-genererad)", - "preferences_quality_dash_option_480p": "480p", - "comments_view_x_replies": "Se {{count}} svar", - "comments_view_x_replies_plural": "Se {{count}} svar", - "footer_original_source_code": "Ursprunglig källkod", - "Portuguese (Brazil)": "Portugisiska (Brasilien)", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Den begärda videon finns inte i den här spellistan. Klicka här för startsidan för spellistan.", - "Dutch (auto-generated)": "Nederländska (auto-genererad)", - "generic_count_days": "{{count}}dag", - "generic_count_days_plural": "{{count}}dagar", - "Vietnamese (auto-generated)": "Vietnamesiska (auto-genererad)", - "search_filters_duration_option_none": "Vilken varaktighet som helst", - "preferences_quality_dash_option_240p": "240p", - "Chinese": "Kinesiska", - "preferences_automatic_instance_redirect_label": "Automatisk instansomdirigering (återgång till redirect.invidious.io): ", - "generic_button_delete": "Radera", - "Import YouTube playlist (.csv)": "Importera YouTube spellista (.csv)", - "next_steps_error_message": "Därefter bör du försöka: ", - "Standard YouTube license": "Standard YouTube licens", - "Import YouTube watch history (.json)": "Importera YouTube visningshistorik (.json)", - "search_filters_duration_option_medium": "Medium (4 - 20 minuter)", - "generic_count_seconds": "{{count}}sekund", - "generic_count_seconds_plural": "{{count}}sekunder", - "search_filters_date_label": "Uppladdningsdatum", - "crash_page_you_found_a_bug": "Det verkar som att du har hittat en bugg i Invidious!", - "generic_views_count": "{{count}} visning", - "generic_views_count_plural": "{{count}} visningar", - "toggle_theme": "Växla tema" -} diff --git a/invidious/locales/tr.json b/invidious/locales/tr.json deleted file mode 100755 index d25cfd6..0000000 --- a/invidious/locales/tr.json +++ /dev/null @@ -1,492 +0,0 @@ -{ - "LIVE": "CANLI", - "Shared `x` ago": "`x` Önce Paylaşıldı", - "Unsubscribe": "Abonelikten Çık", - "Subscribe": "Abone Ol", - "View channel on YouTube": "Kanalı YouTube'da Görüntüle", - "View playlist on YouTube": "Oynatma Listesini YouTube'da Görüntüle", - "newest": "En Yeni", - "oldest": "En Eski", - "popular": "Popüler", - "last": "Son", - "Next page": "Sonraki Sayfa", - "Previous page": "Önceki Sayfa", - "Clear watch history?": "İzleme geçmişi temizlensin mi?", - "New password": "Yeni Parola", - "New passwords must match": "Yeni Parolalar Eşleşmek Zorunda", - "Authorize token?": "Belirteç yetkilendirilsin mi?", - "Authorize token for `x`?": "`x` için belirteç yetkilendirilsin mi?", - "Yes": "Evet", - "No": "Hayır", - "Import and Export Data": "Verileri İçe ve Dışa Aktar", - "Import": "İçe Aktar", - "Import Invidious data": "Invidious JSON Verilerini İçe Aktar", - "Import YouTube subscriptions": "YouTube/OPML Aboneliklerini İçe Aktar", - "Import FreeTube subscriptions (.db)": "FreeTube Aboneliklerini İçe Aktar (.db)", - "Import NewPipe subscriptions (.json)": "NewPipe Aboneliklerini İçe Aktar (.json)", - "Import NewPipe data (.zip)": "NewPipe Verilerini İçe Aktar (.zip)", - "Export": "Dışa Aktar", - "Export subscriptions as OPML": "Abonelikleri OPML Olarak Dışa Aktar", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Abonelikleri OPML Olarak Dışa Aktar (NewPipe ve FreeTube İçin)", - "Export data as JSON": "İnvidious Verilerini JSON Olarak Dışa Aktar", - "Delete account?": "Hesap silinsin mi?", - "History": "Geçmiş", - "An alternative front-end to YouTube": "YouTube İçin Alternatif Bir Ön-Yüz", - "JavaScript license information": "JavaScript Lisans Bilgileri", - "source": "Kaynak", - "Log in": "Oturum Aç", - "Log in/register": "Oturum Aç/Kayıt Ol", - "User ID": "Kullanıcı Kimliği", - "Password": "Parola", - "Time (h:mm:ss):": "Zaman (h:mm:ss):", - "Text CAPTCHA": "Metin CAPTCHA", - "Image CAPTCHA": "Resim CAPTCHA", - "Sign In": "Oturum Aç", - "Register": "Kayıt Ol", - "E-mail": "E-Posta", - "Preferences": "Tercihler", - "preferences_category_player": "Oynatıcı Tercihleri", - "preferences_video_loop_label": "Sürekli Döngü: ", - "preferences_autoplay_label": "Otomatik Oynat: ", - "preferences_continue_label": "Öntanımlı Olarak Sonrakini Oynat: ", - "preferences_continue_autoplay_label": "Sonraki Videoyu Otomatik Oynat: ", - "preferences_listen_label": "Öntanımlı Olarak Dinle: ", - "preferences_local_label": "Videolara Proxy Uygula: ", - "preferences_speed_label": "Öntanımlı Hız: ", - "preferences_quality_label": "Tercih Edilen Video Kalitesi: ", - "preferences_volume_label": "Oynatıcı Ses Seviyesi: ", - "preferences_comments_label": "Öntanımlı Yorumlar: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Öntanımlı Altyazılar: ", - "Fallback captions: ": "Yedek Altyazılar: ", - "preferences_related_videos_label": "İlgili Videoları Göster: ", - "preferences_annotations_label": "Öntanımlı Olarak Ek Açıklamaları Göster: ", - "preferences_extend_desc_label": "Video Açıklamasını Otomatik Olarak Genişlet: ", - "preferences_vr_mode_label": "Etkileşimli 360 Derece Videolar (WebGL Gerektirir): ", - "preferences_category_visual": "Görsel Tercihler", - "preferences_player_style_label": "Oynatıcı Biçimi: ", - "Dark mode: ": "Koyu Mod: ", - "preferences_dark_mode_label": "Tema: ", - "dark": "Koyu", - "light": "Açık", - "preferences_thin_mode_label": "İnce Mod: ", - "preferences_category_misc": "Çeşitli Tercihler", - "preferences_automatic_instance_redirect_label": "Otomatik Örnek Yeniden Yönlendirmesi (Yedek: redirect.invidious.io): ", - "preferences_category_subscription": "Abonelik Tercihleri", - "preferences_annotations_subscribed_label": "Abone Olunan Kanallar İçin Ek Açıklamaları Öntanımlı Olarak Göster: ", - "Redirect homepage to feed: ": "Ana Sayfayı Akışa Yönlendir: ", - "preferences_max_results_label": "Akışta Gösterilen Video Sayısı: ", - "preferences_sort_label": "Videoları Sıralama Kriteri: ", - "published": "Yayınlandı", - "published - reverse": "Yayınlandı - Ters", - "alphabetically": "Alfabetik Olarak", - "alphabetically - reverse": "Alfabetik Olarak - Ters", - "channel name": "Kanal Adı", - "channel name - reverse": "Kanal Adı - Ters", - "Only show latest video from channel: ": "Sadece Kanaldaki En Son Videoyu Göster: ", - "Only show latest unwatched video from channel: ": "Sadece Kanaldaki En Son İzlenmemiş Videoyu Göster: ", - "preferences_unseen_only_label": "Sadece İzlenmemişleri Göster: ", - "preferences_notifications_only_label": "Sadece Bildirimleri Göster (Eğer Varsa): ", - "Enable web notifications": "Ağ Bildirimlerini Etkinleştir", - "`x` uploaded a video": "`x` Bir Video Yükledi", - "`x` is live": "`x` Canlı Yayında", - "preferences_category_data": "Veri Tercihleri", - "Clear watch history": "İzleme Geçmişini Temizle", - "Import/export data": "Verileri İçe/Dışa Aktar", - "Change password": "Parolayı Değiştir", - "Manage subscriptions": "Abonelikleri Yönet", - "Manage tokens": "Belirteçleri Yönet", - "Watch history": "İzleme Geçmişi", - "Delete account": "Hesap Silme", - "preferences_category_admin": "Yönetici Tercihleri", - "preferences_default_home_label": "Öntanımlı Ana Sayfa: ", - "preferences_feed_menu_label": "Akış Menüsü: ", - "preferences_show_nick_label": "Takma Adı Üstte Göster: ", - "Top enabled: ": "Top Etkin: ", - "CAPTCHA enabled: ": "CAPTCHA Etkin: ", - "Login enabled: ": "Oturum Açma Etkin: ", - "Registration enabled: ": "Kayıt Olma Etkin: ", - "Report statistics: ": "Rapor İstatistikleri: ", - "Save preferences": "Tercihleri Kaydet", - "Subscription manager": "Abonelik Yöneticisi", - "Token manager": "Belirteç Yöneticisi", - "Token": "Belirteç", - "Import/export": "İçe/Dışa Aktar", - "unsubscribe": "Abonelikten Çık", - "revoke": "Geri Al", - "Subscriptions": "Abonelikler", - "search": "Ara", - "Log out": "Çıkış Yap", - "Released under the AGPLv3 on Github.": "GitHub'da AGPLv3 altında yayınlandı.", - "Source available here.": "Kaynak kodları burada bulunabilir.", - "View JavaScript license information.": "JavaScript lisans bilgilerini görüntüle.", - "View privacy policy.": "Gizlilik politikasını görüntüle.", - "Trending": "Trendler", - "Public": "Genel", - "Unlisted": "Listelenmemiş", - "Private": "Özel", - "View all playlists": "Tüm Oynatma Listelerini Görüntüle", - "Updated `x` ago": "`x` Önce Güncellendi", - "Delete playlist `x`?": "`x` oynatma listesi silinsin mi?", - "Delete playlist": "Oynatma Listesini Sil", - "Create playlist": "Oynatma Listesi Oluştur", - "Title": "Başlık", - "Playlist privacy": "Oynatma Listesi Gizliliği", - "Editing playlist `x`": "`x` Oynatma Listesi Düzenleniyor", - "Show more": "Daha Fazla Göster", - "Show less": "Daha Az Göster", - "Watch on YouTube": "YouTube'da İzle", - "Switch Invidious Instance": "Invidious Örneğini Değiştir", - "Hide annotations": "Ek Açıklamaları Gizle", - "Show annotations": "Ek Açıklamaları Göster", - "Genre: ": "Tür: ", - "License: ": "Lisans: ", - "Family friendly? ": "Aile için uygun mu? ", - "Wilson score: ": "Wilson Puanı: ", - "Engagement: ": "İzleyenlerin Oy Verme Oranı: ", - "Whitelisted regions: ": "Beyaz Listeye Alınan Bölgeler: ", - "Blacklisted regions: ": "Kara Listeye Alınan Bölgeler: ", - "Shared `x`": "`x` Paylaşıldı", - "Premieres in `x`": "`x`İçinde İlk Gösterim", - "Premieres `x`": "`x` İlk Gösterim", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Merhaba! JavaScript'i kapatmış gibi görünüyorsun. Yorumları görüntülemek için buraya tıkla, yüklenmelerinin biraz uzun sürebileceğini unutma.", - "View YouTube comments": "YouTube Yorumlarını Görüntüle", - "View more comments on Reddit": "Reddit'te Daha Fazla Yorum Görüntüle", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Yorumu Görüntüle", - "": "`x` Yorumu Görüntüle" - }, - "View Reddit comments": "Reddit Yorumlarını Görüntüle", - "Hide replies": "Cevapları Gizle", - "Show replies": "Cevapları Göster", - "Incorrect password": "Yanlış Parola", - "Wrong answer": "Yanlış Cevap", - "Erroneous CAPTCHA": "Hatalı CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA Zorunlu Bir Alandır", - "User ID is a required field": "Kullanıcı Kimliği Zorunlu Bir Alandır", - "Password is a required field": "Parola Zorunlu Bir Alandır", - "Wrong username or password": "Yanlış Kullanıcı Adı ya da Parola", - "Password cannot be empty": "Parola Boş Olamaz", - "Password cannot be longer than 55 characters": "Parola 55 Karakterden Uzun Olamaz", - "Please log in": "Lütfen Oturum Açın", - "Invidious Private Feed for `x`": "`x` İçin Invidious Özel Akışı", - "channel:`x`": "Kanal:`x`", - "Deleted or invalid channel": "Silinmiş ya da Geçersiz Kanal", - "This channel does not exist.": "Bu kanal mevcut değil.", - "Could not get channel info.": "Kanal bilgisi alınamadı.", - "Could not fetch comments": "Yorumlar Alınamadı", - "`x` ago": "`x` Önce", - "Load more": "Daha Fazla Yükle", - "Could not create mix.": "Mix oluşturulamadı.", - "Empty playlist": "Boş Oynatma Listesi", - "Not a playlist.": "Oynatma listesi değil.", - "Playlist does not exist.": "Oynatma listesi mevcut değil.", - "Could not pull trending pages.": "Trend sayfaları alınamıyor.", - "Hidden field \"challenge\" is a required field": "Gizli Alan \"Challenge\" Zorunlu Bir Alandır", - "Hidden field \"token\" is a required field": "\"Belirteç\" Gizli Alanı Zorunlu Bir Alandır", - "Erroneous challenge": "Hatalı Challenge", - "Erroneous token": "Hatalı Belirteç", - "No such user": "Böyle Bir Kullanıcı Yok", - "Token is expired, please try again": "Belirtecin Süresi Doldu, Lütfen Tekrar Deneyin", - "English": "İngilizce", - "English (auto-generated)": "İngilizce (Otomatik Oluşturuldu)", - "Afrikaans": "Afrikanca", - "Albanian": "Arnavutça", - "Amharic": "Amharca", - "Arabic": "Arapça", - "Armenian": "Ermenice", - "Azerbaijani": "Azerice", - "Bangla": "Bengalce", - "Basque": "Baskça", - "Belarusian": "Belarusça", - "Bosnian": "Boşnakça", - "Bulgarian": "Bulgarca", - "Burmese": "Birmanca", - "Catalan": "Katalanca", - "Cebuano": "Sebuanca", - "Chinese (Simplified)": "Çince (Basitleştirilmiş)", - "Chinese (Traditional)": "Çince (Geleneksel)", - "Corsican": "Korsikaca", - "Croatian": "Hırvatça", - "Czech": "Çekçe", - "Danish": "Danca", - "Dutch": "Felemenkçe", - "Esperanto": "Esperanto", - "Estonian": "Estonca", - "Filipino": "Filipince", - "Finnish": "Fince", - "French": "Fransızca", - "Galician": "Galiçyaca", - "Georgian": "Gürcüce", - "German": "Almanca", - "Greek": "Yunanca", - "Gujarati": "Guceratça", - "Haitian Creole": "Haiti Creole Dili", - "Hausa": "Hausaca", - "Hawaiian": "Hawaii Dili", - "Hebrew": "İbranice", - "Hindi": "Hintçe", - "Hmong": "Hmong", - "Hungarian": "Macarca", - "Icelandic": "İzlandaca", - "Igbo": "İgbo", - "Indonesian": "Endonezce", - "Irish": "İrlandaca", - "Italian": "İtalyanca", - "Japanese": "Japonca", - "Javanese": "Cava dili", - "Kannada": "Kannada Dili", - "Kazakh": "Kazakça", - "Khmer": "Kmerce", - "Korean": "Korece", - "Kurdish": "Kürtçe", - "Kyrgyz": "Kırgızca", - "Lao": "Laoca", - "Latin": "Latince", - "Latvian": "Letonca", - "Lithuanian": "Litvanyaca", - "Luxembourgish": "Lüksemburgca", - "Macedonian": "Makedonca", - "Malagasy": "Malgaşça", - "Malay": "Malayca", - "Malayalam": "Malayalam Dili", - "Maltese": "Maltaca", - "Maori": "Maori Dili", - "Marathi": "Marati Dili", - "Mongolian": "Moğolca", - "Nepali": "Nepalce", - "Norwegian Bokmål": "Norveççe Bokmål", - "Nyanja": "Çevaca", - "Pashto": "Peştuca", - "Persian": "Farsça", - "Polish": "Lehçe", - "Portuguese": "Portekizce", - "Punjabi": "Pencap Dili", - "Romanian": "Rumence", - "Russian": "Rusça", - "Samoan": "Samoa Dili", - "Scottish Gaelic": "İskoç Galcesi", - "Serbian": "Sırpça", - "Shona": "Şona Dili", - "Sindhi": "Sintçe", - "Sinhala": "Seylanca", - "Slovak": "Slovakça", - "Slovenian": "Slovence", - "Somali": "Somalice", - "Southern Sotho": "Güney Sotho Dili", - "Spanish": "İspanyolca", - "Spanish (Latin America)": "İspanyolca (Latin Amerika)", - "Sundanese": "Sundaca", - "Swahili": "Svahili dili", - "Swedish": "İsveççe", - "Tajik": "Tacikçe", - "Tamil": "Tamilce", - "Telugu": "Telugu Dili", - "Thai": "Tayca", - "Turkish": "Türkçe", - "Ukrainian": "Ukraynaca", - "Urdu": "Urduca", - "Uzbek": "Özbekçe", - "Vietnamese": "Vietnamca", - "Welsh": "Galce", - "Western Frisian": "Batı Frizcesi", - "Xhosa": "Xhosa Dili", - "Yiddish": "Yiddiş", - "Yoruba": "Yoruba Dili", - "Zulu": "Zuluca", - "Fallback comments: ": "Yedek Yorumlar: ", - "Popular": "Popüler", - "Search": "Ara", - "Top": "Enler", - "About": "Hakkında", - "Rating: ": "Değerlendirme: ", - "preferences_locale_label": "Dil: ", - "View as playlist": "Oynatma Listesi Olarak Görüntüle", - "Default": "Öntanımlı", - "Music": "Müzik", - "Gaming": "Oyun", - "News": "Haberler", - "Movies": "Filmler", - "Download": "İndir", - "Download as: ": "Şu Şekilde İndir: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(Düzenlendi)", - "YouTube comment permalink": "YouTube Yorumu Kalıcı Linki", - "permalink": "Kalıcı Link", - "`x` marked it with a ❤": "`x` ❤ İle İşaretledi", - "Audio mode": "Ses Modu", - "Video mode": "Video Modu", - "channel_tab_videos_label": "Videolar", - "Playlists": "Oynatma Listeleri", - "channel_tab_community_label": "Topluluk", - "search_filters_sort_option_relevance": "İlgi", - "search_filters_sort_option_rating": "Değerlendirme", - "search_filters_sort_option_date": "Yükleme Tarihi", - "search_filters_sort_option_views": "Görüntüleme Sayısı", - "search_filters_type_label": "Tür", - "search_filters_duration_label": "Süre", - "search_filters_features_label": "Özellikler", - "search_filters_sort_label": "Sıralama Ölçütü", - "search_filters_date_option_hour": "Son Saat", - "search_filters_date_option_today": "Bugün", - "search_filters_date_option_week": "Bu Hafta", - "search_filters_date_option_month": "Bu Ay", - "search_filters_date_option_year": "Bu Yıl", - "search_filters_type_option_video": "Video", - "search_filters_type_option_channel": "Kanal", - "search_filters_type_option_playlist": "Oynatma Listesi", - "search_filters_type_option_movie": "Film", - "search_filters_type_option_show": "Gösteri", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Alt Yazılar", - "search_filters_features_option_c_commons": "Yaratıcı", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Canlı", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Konum", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Şu Anki Sürüm: ", - "next_steps_error_message": "Bundan Sonra Şunları Denemelisiniz: ", - "next_steps_error_message_refresh": "Yenile", - "next_steps_error_message_go_to_youtube": "YouTube'a Git", - "search_filters_duration_option_short": "Kısa (4 Dakikadan Az)", - "search_filters_duration_option_long": "Uzun (20 Dakikadan Fazla)", - "footer_documentation": "Belgelendirme", - "footer_source_code": "Kaynak Kodları", - "footer_original_source_code": "Orijinal Kaynak Kodları", - "footer_modfied_source_code": "Değiştirilmiş kaynak kodları", - "adminprefs_modified_source_code_url_label": "Değiştirilmiş Kaynak Kodları Deposunun URL'si", - "footer_donate_page": "Bağış Yap", - "preferences_region_label": "İçerik Ülkesi: ", - "preferences_quality_dash_label": "Tercih Edilen DASH Video Kalitesi: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_best": "En İyi", - "preferences_quality_dash_option_worst": "En Kötü", - "preferences_quality_dash_option_4320p": "4320P", - "preferences_quality_dash_option_2160p": "2160P", - "preferences_quality_dash_option_480p": "480P", - "preferences_quality_dash_option_360p": "360P", - "preferences_quality_dash_option_240p": "240P", - "preferences_quality_dash_option_144p": "144P", - "invidious": "Invidious", - "none": "Yok", - "videoinfo_started_streaming_x_ago": "`x` Önce Yayına Başladı", - "videoinfo_youTube_embed_link": "Entegre Et", - "videoinfo_invidious_embed_link": "Bağlantıyı Entegre Et", - "user_created_playlists": "`x` Oluşturulan Oynatma Listeleri", - "user_saved_playlists": "`x` Kaydedilen Oynatma Listeleri", - "preferences_quality_option_small": "Küçük", - "preferences_quality_dash_option_720p": "720P", - "preferences_quality_option_medium": "Orta", - "preferences_quality_dash_option_1440p": "1440P", - "preferences_quality_dash_option_1080p": "1080P", - "Video unavailable": "Video Kullanılamıyor", - "preferences_quality_option_dash": "DASH (Uyarlanabilir Kalite)", - "preferences_quality_dash_option_auto": "Otomatik", - "search_filters_features_option_purchased": "Satın Alınan", - "search_filters_features_option_three_sixty": "360°", - "videoinfo_watch_on_youTube": "YouTube'da İzle", - "download_subtitles": "Alt Yazılar - `x` (.vtt)", - "preferences_save_player_pos_label": "Oynatma Konumunu Kaydet: ", - "generic_views_count": "{{count}} Görüntülenme", - "generic_views_count_plural": "{{count}} Görüntülenme", - "generic_subscribers_count": "{{count}} Abone", - "generic_subscribers_count_plural": "{{count}} Abone", - "generic_subscriptions_count": "{{count}} Abonelik", - "generic_subscriptions_count_plural": "{{count}} Abonelik", - "subscriptions_unseen_notifs_count": "{{count}} Okunmamış Bildirim", - "subscriptions_unseen_notifs_count_plural": "{{count}} Okunmamış Bildirim", - "comments_points_count": "{{count}} Puan", - "comments_points_count_plural": "{{count}} Puan", - "generic_count_hours": "{{count}} Saat", - "generic_count_hours_plural": "{{count}} Saat", - "generic_count_minutes": "{{count}} Dakika", - "generic_count_minutes_plural": "{{count}} Dakika", - "generic_count_seconds": "{{count}} Saniye", - "generic_count_seconds_plural": "{{count}} Saniye", - "generic_playlists_count": "{{count}} Oynatma Listesi", - "generic_playlists_count_plural": "{{count}} Oynatma Listesi", - "tokens_count": "{{count}} Belirteç", - "tokens_count_plural": "{{count}} Belirteç", - "comments_view_x_replies": "{{count}} Yanıtı Görüntüle", - "comments_view_x_replies_plural": "{{count}} Yanıtı Görüntüle", - "generic_count_years": "{{count}} Yıl", - "generic_count_years_plural": "{{count}} Yıl", - "generic_count_months": "{{count}} Ay", - "generic_count_months_plural": "{{count}} Ay", - "generic_count_days": "{{count}} Gün", - "generic_count_days_plural": "{{count}} Gün", - "generic_videos_count": "{{count}} Video", - "generic_videos_count_plural": "{{count}} Video", - "generic_count_weeks": "{{count}} Hafta", - "generic_count_weeks_plural": "{{count}} Hafta", - "crash_page_you_found_a_bug": "Görünüşe göre Invidious'ta bir hata buldunuz!", - "crash_page_before_reporting": "Bir hatayı bildirmeden önce, şunları yaptığınızdan emin olun:", - "crash_page_refresh": "Sayfayı Yenilemeye Çalıştınız", - "crash_page_switch_instance": "Başka Bir Örnek Kullanmaya Çalıştınız", - "crash_page_read_the_faq": "Sık Sorulan Soruları (SSS) Okudunuz", - "crash_page_search_issue": "GitHub'daki Sorunlarda Aradınız", - "crash_page_report_issue": "Yukarıdakilerin hiçbiri yardımcı olmadıysa, lütfen GitHub'da yeni bir sorun açın (Tercihen İngilizce) ve mesajınıza aşağıdaki metni ekleyin (Bu metni ÇEVİRMEYİN):", - "English (United Kingdom)": "İngilizce (Birleşik Krallık)", - "Chinese": "Çince", - "Interlingue": "İnterlingue", - "Italian (auto-generated)": "İtalyanca (Otomatik Oluşturuldu)", - "Japanese (auto-generated)": "Japonca (Otomatik Oluşturuldu)", - "Portuguese (Brazil)": "Portekizce (Brezilya)", - "Russian (auto-generated)": "Rusça (Otomatik Oluşturuldu)", - "Spanish (auto-generated)": "İspanyolca (Otomatik Oluşturuldu)", - "Spanish (Mexico)": "İspanyolca (Meksika)", - "English (United States)": "İngilizce (ABD)", - "Cantonese (Hong Kong)": "Kantonca (Hong Kong)", - "Chinese (Taiwan)": "Çince (Tayvan)", - "Dutch (auto-generated)": "Felemenkçe (Otomatik Oluşturuldu)", - "Indonesian (auto-generated)": "Endonezyaca (Otomatik Oluşturuldu)", - "Chinese (Hong Kong)": "Çince (Hong Kong)", - "French (auto-generated)": "Fransızca (Otomatik Oluşturuldu)", - "Korean (auto-generated)": "Korece (Otomatik Oluşturuldu)", - "Turkish (auto-generated)": "Türkçe (Otomatik Oluşturuldu)", - "Chinese (China)": "Çince (Çin)", - "German (auto-generated)": "Almanca (Otomatik Oluşturuldu)", - "Portuguese (auto-generated)": "Portekizce (Otomatik Oluşturuldu)", - "Spanish (Spain)": "İspanyolca (İspanya)", - "Vietnamese (auto-generated)": "Vietnamca (Otomatik Oluşturuldu)", - "preferences_watch_history_label": "İzleme Geçmişini Etkinleştir: ", - "search_message_use_another_instance": " Ayrıca başka bir örnekte arayabilirsiniz.", - "search_filters_type_option_all": "Herhangi Bir Tür", - "search_filters_duration_option_none": "Herhangi Bir Süre", - "search_message_no_results": "Sonuç bulunamadı.", - "search_filters_date_label": "Yükleme Tarihi", - "search_filters_apply_button": "Seçili Filtreleri Uygula", - "search_filters_date_option_none": "Herhangi Bir Tarih", - "search_filters_duration_option_medium": "Orta (4 - 20 Dakika)", - "search_filters_features_option_vr180": "VR180", - "search_filters_title": "Filtreler", - "search_message_change_filters_or_query": "Arama sorgunuzu genişletmeyi ve/veya filtreleri değiştirmeyi deneyin.", - "Popular enabled: ": "Popüler Etkin: ", - "error_video_not_in_playlist": "İstenen video bu oynatma listesinde yok. Oynatma listesi ana sayfası için buraya tıklayın.", - "channel_tab_channels_label": "Kanallar", - "channel_tab_shorts_label": "Kısa Çekimler", - "channel_tab_streams_label": "Canlı Yayınlar", - "channel_tab_playlists_label": "Oynatma Listeleri", - "Album: ": "Albüm: ", - "Music in this video": "Bu videodaki müzik", - "Artist: ": "Sanatçı: ", - "Channel Sponsor": "Kanal Sponsoru", - "Song: ": "Şarkı: ", - "Standard YouTube license": "Standart YouTube lisansı", - "Download is disabled": "İndirme devre dışı", - "Import YouTube playlist (.csv)": "YouTube Oynatma Listesini İçe Aktar (.csv)", - "generic_button_delete": "Sil", - "generic_button_edit": "Düzenle", - "generic_button_save": "Kaydet", - "generic_button_cancel": "İptal", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "Yayınlar", - "playlist_button_add_items": "Video ekle", - "channel_tab_podcasts_label": "Podcast'ler", - "generic_channels_count": "{{count}} kanal", - "generic_channels_count_plural": "{{count}} kanal", - "Import YouTube watch history (.json)": "YouTube İzleme Geçmişini İçe Aktar (.json)", - "toggle_theme": "Temayı Değiştir" -} diff --git a/invidious/locales/uk.json b/invidious/locales/uk.json deleted file mode 100755 index f9640bb..0000000 --- a/invidious/locales/uk.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "LIVE": "НАЖИВО", - "Shared `x` ago": "Розміщено `x` тому", - "Unsubscribe": "Відписатися", - "Subscribe": "Підписатися", - "View channel on YouTube": "Подивитися канал на YouTube", - "View playlist on YouTube": "Подивитися плейлист на YouTube", - "newest": "найновіше", - "oldest": "найстаріше", - "popular": "популярне", - "last": "останнє", - "Next page": "Наступна сторінка", - "Previous page": "Попередня сторінка", - "Clear watch history?": "Очистити історію переглядів?", - "New password": "Новий пароль", - "New passwords must match": "Нові паролі не співпадають", - "Authorize token?": "Авторизувати токен?", - "Authorize token for `x`?": "Авторизувати токен для `x`?", - "Yes": "Так", - "No": "Ні", - "Import and Export Data": "Імпорт і експорт даних", - "Import": "Імпорт", - "Import Invidious data": "Імпортувати JSON-дані Invidious", - "Import YouTube subscriptions": "Імпортувати підписки з YouTube чи OPML", - "Import FreeTube subscriptions (.db)": "Імпортувати підписки з FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Імпортувати підписки з NewPipe (.json)", - "Import NewPipe data (.zip)": "Імпортувати дані з NewPipe (.zip)", - "Export": "Експорт", - "Export subscriptions as OPML": "Експортувати підписки у форматі OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Експортувати підписки у форматі OPML (для NewPipe та FreeTube)", - "Export data as JSON": "Експортувати дані Invidious у форматі JSON", - "Delete account?": "Видалити обліковий запис?", - "History": "Історія", - "An alternative front-end to YouTube": "Альтернативний фронтенд до YouTube", - "JavaScript license information": "Інформація щодо ліцензій JavaScript", - "source": "джерело", - "Log in": "Увійти", - "Log in/register": "Увійти або зареєструватися", - "User ID": "ID користувача", - "Password": "Пароль", - "Time (h:mm:ss):": "Час (г:хх:сс):", - "Text CAPTCHA": "Текст CAPTCHA", - "Image CAPTCHA": "Зображення CAPTCHA", - "Sign In": "Увійти", - "Register": "Зареєструватися", - "E-mail": "Електронна пошта", - "Preferences": "Налаштування", - "preferences_category_player": "Налаштування програвача", - "preferences_video_loop_label": "Завжди повторювати: ", - "preferences_autoplay_label": "Автовідтворення: ", - "preferences_continue_label": "Завжди вмикати наступне відео: ", - "preferences_continue_autoplay_label": "Автовідтворення наступного відео: ", - "preferences_listen_label": "Режим «тільки звук» як усталений: ", - "preferences_local_label": "Відтворення відео через проксі: ", - "preferences_speed_label": "Усталена швидкість відео: ", - "preferences_quality_label": "Пріорітетна якість відео: ", - "preferences_volume_label": "Гучність відео: ", - "preferences_comments_label": "Джерело коментарів: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Основна мова субтитрів: ", - "Fallback captions: ": "Запасна мова субтитрів: ", - "preferences_related_videos_label": "Показувати схожі відео: ", - "preferences_annotations_label": "Завжди показувати анотації: ", - "preferences_category_visual": "Налаштування сайту", - "preferences_player_style_label": "Стиль програвача: ", - "Dark mode: ": "Темний режим: ", - "preferences_dark_mode_label": "Тема: ", - "dark": "Темна", - "light": "Світла", - "preferences_thin_mode_label": "Полегшене оформлення: ", - "preferences_category_subscription": "Налаштування підписок", - "preferences_annotations_subscribed_label": "Завжди показувати анотації у відео каналів, на які ви підписані? ", - "Redirect homepage to feed: ": "Показувати відео з каналів, на які підписані, як головну сторінку: ", - "preferences_max_results_label": "Кількість відео з каналів, на які підписані, у потоці: ", - "preferences_sort_label": "Сортувати відео: ", - "published": "за датою розміщення", - "published - reverse": "за датою розміщення в зворотному порядку", - "alphabetically": "за абеткою", - "alphabetically - reverse": "за абеткою в зворотному порядку", - "channel name": "за назвою каналу", - "channel name - reverse": "за назвою каналу в зворотному порядку", - "Only show latest video from channel: ": "Показувати тільки останнє відео з каналів: ", - "Only show latest unwatched video from channel: ": "Показувати тільки непереглянуті відео з каналів: ", - "preferences_unseen_only_label": "Показувати тільки непереглянуті відео: ", - "preferences_notifications_only_label": "Показувати лише сповіщення, якщо вони є: ", - "Enable web notifications": "Ввімкнути сповіщення в браузері", - "`x` uploaded a video": "`x` розмістив відео", - "`x` is live": "`x` у прямому ефірі", - "preferences_category_data": "Налаштування даних", - "Clear watch history": "Очистити історію переглядів", - "Import/export data": "Імпорт і експорт даних", - "Change password": "Змінити пароль", - "Manage subscriptions": "Керування підписками", - "Manage tokens": "Керувати токенами", - "Watch history": "Історія переглядів", - "Delete account": "Видалити обліківку", - "preferences_category_admin": "Адміністраторські налаштування", - "preferences_default_home_label": "Усталена домашня сторінка: ", - "preferences_feed_menu_label": "Меню потоку з відео: ", - "Top enabled: ": "Увімкнути топ відео: ", - "CAPTCHA enabled: ": "Увімкнути CAPTCHA: ", - "Login enabled: ": "Увімкнути вхід: ", - "Registration enabled: ": "Увімкнути реєстрацію: ", - "Report statistics: ": "Повідомляти статистику: ", - "Save preferences": "Зберегти налаштування", - "Subscription manager": "Менеджер підписок", - "Token manager": "Менеджер токенів", - "Token": "Токен", - "Import/export": "Імпорт і експорт", - "unsubscribe": "відписатися", - "revoke": "скасувати", - "Subscriptions": "Підписки", - "search": "пошук", - "Log out": "Вийти", - "Source available here.": "Програмний код доступний тут.", - "View JavaScript license information.": "Переглянути інформацію щодо ліцензії JavaScript.", - "View privacy policy.": "Переглянути політику приватності.", - "Trending": "У тренді", - "Public": "Прилюдний", - "Unlisted": "Немає в списку", - "Private": "Особистий", - "View all playlists": "Переглянути всі списки відтворення", - "Updated `x` ago": "Оновлено `x` тому", - "Delete playlist `x`?": "Видалити список відтворення `x`?", - "Delete playlist": "Видалити список відтворення", - "Create playlist": "Створити список відтворення", - "Title": "Заголовок", - "Playlist privacy": "Конфіденційність списку відтворення", - "Editing playlist `x`": "Редагування списку відтворення \"x\"", - "Watch on YouTube": "Дивитися на YouTube", - "Hide annotations": "Приховати анотації", - "Show annotations": "Показати анотації", - "Genre: ": "Жанр: ", - "License: ": "Ліцензія: ", - "Family friendly? ": "Перегляд із родиною? ", - "Wilson score: ": "Рейтинг Вілсона: ", - "Engagement: ": "Залученість: ", - "Whitelisted regions: ": "Доступно у регіонах: ", - "Blacklisted regions: ": "Недоступно у регіонах: ", - "Shared `x`": "Розміщено `x`", - "Premieres in `x`": "Прем’єра за `x`", - "Premieres `x`": "Прем’єра `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Схоже, у вас відключений JavaScript. Щоб побачити коментарі, натисніть сюда, але майте на увазі, що вони можуть завантажуватися трохи довше.", - "View YouTube comments": "Переглянути коментарі з YouTube", - "View more comments on Reddit": "Переглянути більше коментарів на Reddit", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "Переглянути `x` коментар / коментарів / коментаря", - "": "Переглянути `x` коментар / коментарів / коментаря" - }, - "View Reddit comments": "Переглянути коментарі з Reddit", - "Hide replies": "Сховати відповіді", - "Show replies": "Показати відповіді", - "Incorrect password": "Неправильний пароль", - "Wrong answer": "Неправильна відповідь", - "Erroneous CAPTCHA": "Неправильна капча", - "CAPTCHA is a required field": "Необхідно пройти CAPTCHA", - "User ID is a required field": "Необхідно ввести ID користувача", - "Password is a required field": "Необхідно ввести пароль", - "Wrong username or password": "Неправильний логін чи пароль", - "Password cannot be empty": "Пароль не може бути порожнім", - "Password cannot be longer than 55 characters": "Пароль не може бути довшим за 55 знаків", - "Please log in": "Будь ласка, увійдіть", - "Invidious Private Feed for `x`": "Приватний потік відео Invidious для `x`", - "channel:`x`": "канал: `x`", - "Deleted or invalid channel": "Канал видалено або не знайдено", - "This channel does not exist.": "Такого каналу не існує.", - "Could not get channel info.": "Не вдається отримати інформацію щодо цього каналу.", - "Could not fetch comments": "Не вдається завантажити коментарі", - "`x` ago": "`x` тому", - "Load more": "Завантажити більше", - "Could not create mix.": "Не вдається створити мікс.", - "Empty playlist": "Плейлист порожній", - "Not a playlist.": "Недійсний плейлист.", - "Playlist does not exist.": "Плейлист не існує.", - "Could not pull trending pages.": "Не вдається завантажити сторінки «у тренді».", - "Hidden field \"challenge\" is a required field": "Необхідно заповнити приховане поле «challenge»", - "Hidden field \"token\" is a required field": "Необхідно заповнити приховане поле «token»", - "Erroneous challenge": "Неправильна відповідь у «challenge»", - "Erroneous token": "Недійсний токен", - "No such user": "Недопустиме ім’я користувача", - "Token is expired, please try again": "Термін дії токена закінчився, спробуйте пізніше", - "English": "Англійська", - "English (auto-generated)": "Англійська (автогенератор)", - "Afrikaans": "Африкаанс", - "Albanian": "Албанська", - "Amharic": "Амхарська", - "Arabic": "Арабська", - "Armenian": "Вірменська", - "Azerbaijani": "Азербайджанська", - "Bangla": "Бенгальска", - "Basque": "Баскська", - "Belarusian": "Білоруська", - "Bosnian": "Боснійська", - "Bulgarian": "Болгарська", - "Burmese": "Бірманська", - "Catalan": "Каталонська", - "Cebuano": "Себуанська", - "Chinese (Simplified)": "Китайська (спрощена)", - "Chinese (Traditional)": "Китайська (традиційна)", - "Corsican": "Корсиканська", - "Croatian": "Хорватська", - "Czech": "Чеська", - "Danish": "Данська", - "Dutch": "Нідерландська", - "Esperanto": "Есперанто", - "Estonian": "Естонська", - "Filipino": "Філіппінська", - "Finnish": "Фінська", - "French": "Французька", - "Galician": "Галісійська", - "Georgian": "Грузинська", - "German": "Німецька", - "Greek": "Грецька", - "Gujarati": "Гуджаратська", - "Haitian Creole": "Гаїтянська креольська", - "Hausa": "Хауса", - "Hawaiian": "Гавайська", - "Hebrew": "Іврит", - "Hindi": "Гінді", - "Hmong": "Хмонгська", - "Hungarian": "Угорська", - "Icelandic": "Ісландська", - "Igbo": "Ігбо", - "Indonesian": "Індонезійська", - "Irish": "Ірландська", - "Italian": "Італійська", - "Japanese": "Японська", - "Javanese": "Яванська", - "Kannada": "Каннада", - "Kazakh": "Казахська", - "Khmer": "Кхмерська", - "Korean": "Корейська", - "Kurdish": "Курдська", - "Kyrgyz": "Киргизька", - "Lao": "Лаоська", - "Latin": "Латинська", - "Latvian": "Латиська", - "Lithuanian": "Литовська", - "Luxembourgish": "Люксембурзька", - "Macedonian": "Македонська", - "Malagasy": "Малагасійська", - "Malay": "Малайська", - "Malayalam": "Малаялам", - "Maltese": "Мальтійська", - "Maori": "Маорі", - "Marathi": "Маратхі", - "Mongolian": "Монгольська", - "Nepali": "Непальська", - "Norwegian Bokmål": "Норвезька", - "Nyanja": "Ньянджа", - "Pashto": "Пушту", - "Persian": "Перська", - "Polish": "Польська", - "Portuguese": "Португальська", - "Punjabi": "Пенджабська", - "Romanian": "Румунська", - "Russian": "Російська", - "Samoan": "Самоанська", - "Scottish Gaelic": "Шотландська ґельська", - "Serbian": "Сербська", - "Shona": "Шона", - "Sindhi": "Сіндгі", - "Sinhala": "Сингальська", - "Slovak": "Словацька", - "Slovenian": "Словенська", - "Somali": "Сомалійська", - "Southern Sotho": "Сесото (південна сото)", - "Spanish": "Іспанська", - "Spanish (Latin America)": "Іспанська (Латинська Америка)", - "Sundanese": "Сунданська", - "Swahili": "Суахілі", - "Swedish": "Шведська", - "Tajik": "Таджицька", - "Tamil": "Тамільська", - "Telugu": "Телугу", - "Thai": "Тайська", - "Turkish": "Турецька", - "Ukrainian": "Українська", - "Urdu": "Урду", - "Uzbek": "Узбецька", - "Vietnamese": "В’єтнамська", - "Welsh": "Валлійська", - "Western Frisian": "Західнофризька", - "Xhosa": "Коса", - "Yiddish": "Їдиш", - "Yoruba": "Йоруба", - "Zulu": "Зулу", - "Fallback comments: ": "Резервні коментарі: ", - "Popular": "Популярне", - "Top": "Топ", - "About": "Про сайт", - "Rating: ": "Рейтинг: ", - "preferences_locale_label": "Мова: ", - "View as playlist": "Дивитися як плейлист", - "Default": "Усталено", - "Music": "Музика", - "Gaming": "Ігри", - "News": "Новини", - "Movies": "Фільми", - "Download": "Завантажити", - "Download as: ": "Завантажити як: ", - "%A %B %-d, %Y": "%-d %B %Y, %A", - "(edited)": "(змінено)", - "YouTube comment permalink": "Пряме посилання на коментар в YouTube", - "permalink": "постійне посилання", - "`x` marked it with a ❤": "❤ цьому від каналу `x`", - "Audio mode": "Аудіорежим", - "Video mode": "Відеорежим", - "channel_tab_videos_label": "Відео", - "Playlists": "Плейлисти", - "channel_tab_community_label": "Спільнота", - "Current version: ": "Поточна версія: ", - "generic_views_count_0": "{{count}} перегляд", - "generic_views_count_1": "{{count}} перегляди", - "generic_views_count_2": "{{count}} переглядів", - "generic_videos_count_0": "{{count}} відео", - "generic_videos_count_1": "{{count}} відео", - "generic_videos_count_2": "{{count}} відео", - "generic_playlists_count_0": "{{count}} список відтворення", - "generic_playlists_count_1": "{{count}} списки відтворення", - "generic_playlists_count_2": "{{count}} списків відтворення", - "generic_subscribers_count_0": "{{count}} стежить", - "generic_subscribers_count_1": "{{count}} стежать", - "generic_subscribers_count_2": "{{count}} стежать", - "generic_subscriptions_count_0": "{{count}} підписка", - "generic_subscriptions_count_1": "{{count}} підписки", - "generic_subscriptions_count_2": "{{count}} підписок", - "tokens_count_0": "{{count}} токен", - "tokens_count_1": "{{count}} токени", - "tokens_count_2": "{{count}} токенів", - "subscriptions_unseen_notifs_count_0": "{{count}} нове сповіщення", - "subscriptions_unseen_notifs_count_1": "{{count}} нові сповіщення", - "subscriptions_unseen_notifs_count_2": "{{count}} нових сповіщень", - "comments_view_x_replies_0": "Переглянути {{count}} відповідь", - "comments_view_x_replies_1": "Переглянути {{count}} відповіді", - "comments_view_x_replies_2": "Переглянути {{count}} відповідей", - "generic_count_years_0": "{{count}} рік", - "generic_count_years_1": "{{count}} роки", - "generic_count_years_2": "{{count}} років", - "generic_count_weeks_0": "{{count}} тиждень", - "generic_count_weeks_1": "{{count}} тижні", - "generic_count_weeks_2": "{{count}} тижнів", - "generic_count_days_0": "{{count}} день", - "generic_count_days_1": "{{count}} дні", - "generic_count_days_2": "{{count}} днів", - "generic_count_hours_0": "{{count}} годину", - "generic_count_hours_1": "{{count}} години", - "generic_count_hours_2": "{{count}} годин", - "crash_page_switch_instance": "спробуйте використати інший сервер", - "crash_page_read_the_faq": "прочитайте часті питання (ЧаП)", - "crash_page_search_issue": "перегляньте наявні обговорення на GitHub", - "crash_page_report_issue": "Якщо нічого не допомогло, просимо створити обговорення на GitHub (бажано англійською), додавши наступний текст у повідомлення (НЕ перекладайте цього тексту):", - "Chinese (Hong Kong)": "Китайська (Гонконг)", - "Cantonese (Hong Kong)": "Кантонська (Гонконг)", - "Chinese": "Китайська", - "Chinese (China)": "Китайська (Китай)", - "Interlingue": "Інтерлінгва", - "Italian (auto-generated)": "Італійська (автогенератор)", - "Turkish (auto-generated)": "Турецька (автогенератор)", - "Vietnamese (auto-generated)": "В'єтнамська (автогенератор)", - "user_created_playlists": "Створено списків відтворення: `x`", - "user_saved_playlists": "Збережено списків відтворення: `x`", - "Video unavailable": "Відео недоступне", - "preferences_watch_history_label": "Історія переглядів: ", - "preferences_quality_dash_label": "Бажана DASH-якість відео: ", - "preferences_quality_dash_option_144p": "144p", - "preferences_vr_mode_label": "Взаємодія з 360-градусними відео (потребує WebGL): ", - "Released under the AGPLv3 on Github.": "Випущено під AGPLv3 на GitHub.", - "English (United Kingdom)": "Англійська (Сполучене Королівство)", - "English (United States)": "Англійська (США)", - "French (auto-generated)": "Французька (автогенератор)", - "German (auto-generated)": "Німецька (автогенератор)", - "Portuguese (auto-generated)": "Португальська (автогенератор)", - "Portuguese (Brazil)": "Португальська (Бразилія)", - "Russian (auto-generated)": ":^)", - "Spanish (auto-generated)": "Іспанська (автогенератор)", - "Spanish (Mexico)": "Іспанська (Мексика)", - "Spanish (Spain)": "Іспанська (Іспанія)", - "next_steps_error_message_go_to_youtube": "Перейти до YouTube", - "footer_donate_page": "Підтримати", - "footer_documentation": "Документація", - "footer_source_code": "Джерельний код", - "footer_original_source_code": "Оригінал джерельного коду", - "footer_modfied_source_code": "Змінений джерельний код", - "adminprefs_modified_source_code_url_label": "URL-адреса репозиторію зміненого джерельного коду", - "none": "нема", - "videoinfo_started_streaming_x_ago": "Трансляцію розпочато `x` тому", - "crash_page_you_found_a_bug": "Схоже, ви знайшли ваду в Invidious!", - "crash_page_before_reporting": "Перш ніж прозвітувати про ваду:", - "crash_page_refresh": "спробуйте оновити сторінку", - "preferences_quality_dash_option_auto": "Авто", - "preferences_quality_dash_option_best": "Найкраща", - "preferences_quality_dash_option_worst": "Найгірша", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_save_player_pos_label": "Зберегти позицію відтворення: ", - "preferences_show_nick_label": "Псевдонім угорі: ", - "Show more": "Докладніше", - "next_steps_error_message": "Після чого спробуйте: ", - "next_steps_error_message_refresh": "Оновити сторінку", - "Search": "Пошук", - "preferences_extend_desc_label": "Автоматично розгортати опис відео: ", - "preferences_category_misc": "Різноманітні параметри", - "Show less": "Коротше", - "preferences_quality_option_small": "Низька", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_option_medium": "Середня", - "preferences_quality_dash_option_4320p": "4320p", - "invidious": "Invidious", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_360p": "360p", - "preferences_region_label": "Ваша країна: ", - "preferences_quality_option_dash": "DASH (змінна якість)", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_automatic_instance_redirect_label": "Автоматична зміна сервера (redirect.invidious.io як резерв): ", - "Switch Invidious Instance": "Інший сервер Invidious", - "preferences_quality_dash_option_480p": "480p", - "Chinese (Taiwan)": "Китайська (Тайвань)", - "Dutch (auto-generated)": "Нідерландська (автогенератор)", - "Indonesian (auto-generated)": "Індонезійська (автогенератор)", - "Japanese (auto-generated)": "Японська (автогенератор)", - "Korean (auto-generated)": "Корейська (автогенератор)", - "generic_count_months_0": "{{count}} місяць", - "generic_count_months_1": "{{count}} місяці", - "generic_count_months_2": "{{count}} місяців", - "videoinfo_youTube_embed_link": "Вкласти", - "generic_count_minutes_0": "{{count}} хвилину", - "generic_count_minutes_1": "{{count}} хвилини", - "generic_count_minutes_2": "{{count}} хвилин", - "generic_count_seconds_0": "{{count}} секунду", - "generic_count_seconds_1": "{{count}} секунди", - "generic_count_seconds_2": "{{count}} секунд", - "videoinfo_watch_on_youTube": "Переглянути на YouTube", - "videoinfo_invidious_embed_link": "Вкласти посилання", - "download_subtitles": "Субтитри — `x` (.vtt)", - "comments_points_count_0": "{{count}} пункт", - "comments_points_count_1": "{{count}} пункти", - "comments_points_count_2": "{{count}} пунктів", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_location": "Геомітка", - "search_filters_duration_option_none": "Будь-які", - "search_filters_features_option_hd": "HD", - "search_message_change_filters_or_query": "Спробуйте ширший запит і/або інші фільтри.", - "search_filters_type_option_all": "Будь-що", - "search_filters_type_option_movie": "Фільм", - "search_filters_type_option_show": "Шоу", - "search_filters_duration_label": "Тривалість", - "search_filters_duration_option_short": "Короткі (до 4 хвилин)", - "search_message_no_results": "Результатів не знайдено.", - "search_filters_date_label": "Дата вивантаження", - "search_filters_date_option_none": "Будь-яка дата", - "search_filters_date_option_today": "Сьогодні", - "search_filters_date_option_week": "Цей тиждень", - "search_filters_type_label": "Тип", - "search_filters_type_option_channel": "Канал", - "search_message_use_another_instance": " Можете також пошукати іншим сервером.", - "search_filters_title": "Фільтри", - "search_filters_date_option_hour": "Остання година", - "search_filters_date_option_month": "Цей місяць", - "search_filters_date_option_year": "Цей рік", - "search_filters_type_option_video": "Відео", - "search_filters_type_option_playlist": "Добірка", - "search_filters_duration_option_medium": "Середні (4–20 хвилин)", - "search_filters_duration_option_long": "Довгі (понад 20 хвилин)", - "search_filters_features_label": "Особливості", - "search_filters_features_option_live": "Наживо", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_subtitles": "Субтитри", - "search_filters_features_option_c_commons": "Creative Commons", - "search_filters_features_option_three_sixty": "360°", - "search_filters_features_option_hdr": "HDR", - "search_filters_sort_label": "Спершу", - "search_filters_sort_option_date": "Нещодавні", - "search_filters_apply_button": "Застосувати фільтри", - "search_filters_features_option_vr180": "VR180", - "search_filters_features_option_purchased": "Придбано", - "search_filters_sort_option_relevance": "Відповідні", - "search_filters_sort_option_rating": "Рейтингові", - "search_filters_sort_option_views": "Популярні", - "Popular enabled: ": "Популярне ввімкнено: ", - "error_video_not_in_playlist": "Запитуваного відео в цьому списку відтворення не існує. Клацніть тут, щоб переглянути домашню сторінку списку відтворення.", - "channel_tab_shorts_label": "Shorts", - "channel_tab_streams_label": "Прямі трансляції", - "channel_tab_playlists_label": "Добірки", - "channel_tab_channels_label": "Канали", - "Music in this video": "Музика в цьому відео", - "Artist: ": "Виконавець: ", - "Album: ": "Альбом: ", - "Song: ": "Пісня: ", - "Channel Sponsor": "Спонсор каналу", - "Standard YouTube license": "Стандартна ліцензія YouTube", - "Download is disabled": "Завантаження вимкнено", - "Import YouTube playlist (.csv)": "Імпорт списку відтворення YouTube (.csv)", - "channel_tab_podcasts_label": "Подкасти", - "playlist_button_add_items": "Додати відео", - "generic_button_cancel": "Скасувати", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "Випуски", - "generic_button_delete": "Видалити", - "generic_button_edit": "Змінити", - "generic_button_save": "Зберегти", - "generic_channels_count_0": "{{count}} канал", - "generic_channels_count_1": "{{count}} канали", - "generic_channels_count_2": "{{count}} каналів", - "Import YouTube watch history (.json)": "Імпортувати історію переглядів YouTube (.json)", - "toggle_theme": "Перемкнути тему" -} diff --git a/invidious/locales/vi.json b/invidious/locales/vi.json deleted file mode 100755 index 4f8dc30..0000000 --- a/invidious/locales/vi.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "generic_videos_count_0": "{{count}} video", - "generic_subscribers_count_0": "{{count}} người đăng ký", - "LIVE": "TRỰC TIẾP", - "Shared `x` ago": "Đã chia sẻ `x` trước", - "Unsubscribe": "Hủy đăng ký", - "Subscribe": "Đăng ký", - "View channel on YouTube": "Xem kênh trên YouTube", - "View playlist on YouTube": "Xem danh sách phát trên YouTube", - "newest": "Mới nhất", - "oldest": "Cũ nhất", - "popular": "Phổ biến", - "last": "cuối cùng", - "Next page": "Trang tiếp theo", - "Previous page": "Trang trước", - "Clear watch history?": "Xóa lịch sử xem?", - "New password": "Mật khẩu mới", - "New passwords must match": "Mật khẩu mới phải khớp", - "Authorize token?": "Cấp phép mã thông báo?", - "Authorize token for `x`?": "Cấp phép mã thông báo cho `x`?", - "Yes": "Có", - "No": "Không", - "Import and Export Data": "Nhập và xuất dữ liệu", - "Import": "Nhập", - "Import Invidious data": "Nhập dữ liệu Invidious dưới dạng JSON", - "Import YouTube subscriptions": "Nhập các kênh đã đăng ký từ YouTube/OPML", - "Import FreeTube subscriptions (.db)": "Nhập các kênh đã đăng ký từ FreeTube (.db)", - "Import NewPipe subscriptions (.json)": "Nhập các kênh đã đăng ký từ NewPipe (.json)", - "Import NewPipe data (.zip)": "Nhập dữ liệu từ NewPipe (.zip)", - "Export": "Xuất", - "Export subscriptions as OPML": "Xuất các kênh đã đăng ký dưới dạng OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "Xuất các kênh đã đăng ký dưới dạng OPML (cho NewPipe & FreeTube)", - "Export data as JSON": "Xuất dữ liệu Invidious dưới dạng JSON", - "Delete account?": "Xóa tài khoản?", - "History": "Lịch sử", - "An alternative front-end to YouTube": "Một front-end thay thế cho YouTube", - "JavaScript license information": "Thông tin giấy phép JavaScript", - "source": "nguồn", - "Log in": "Đăng nhập", - "Log in/register": "Đăng nhập / đăng ký", - "User ID": "ID người dùng", - "Password": "Mật khẩu", - "Time (h:mm:ss):": "Thời gian (h:mm:ss):", - "Text CAPTCHA": "CAPTCHA dạng chữ", - "Image CAPTCHA": "CAPTCHA dạng ảnh", - "Sign In": "Đăng nhập", - "Register": "Đăng ký", - "E-mail": "E-mail", - "Preferences": "Sở thích", - "preferences_category_player": "Tùy chọn trình phát video", - "preferences_video_loop_label": "Luôn lặp lại: ", - "preferences_autoplay_label": "Tự động phát: ", - "preferences_continue_label": "Phát kế tiếp theo mặc định: ", - "preferences_continue_autoplay_label": "Tự động phát video tiếp theo: ", - "preferences_listen_label": "Nghe theo mặc định: ", - "preferences_local_label": "Video proxy: ", - "preferences_speed_label": "Tốc độ mặc định: ", - "preferences_quality_label": "Chất lượng video ưa thích: ", - "preferences_volume_label": "Âm lượng video: ", - "preferences_comments_label": "Nhận xét mặc định: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "Phụ đề mặc định: ", - "Fallback captions: ": "Phụ đề dự phòng: ", - "preferences_related_videos_label": "Hiển thị các video có liên quan: ", - "preferences_annotations_label": "Hiển thị chú thích theo mặc định: ", - "preferences_extend_desc_label": "Tự động mở rộng phần mô tả của video: ", - "preferences_vr_mode_label": "Video 360 độ tương tác (yêu cầu WebGL): ", - "preferences_category_visual": "Tùy chọn hình ảnh", - "preferences_player_style_label": "Phong cách trình phát: ", - "Dark mode: ": "Chế độ tối: ", - "preferences_dark_mode_label": "Chủ đề: ", - "dark": "tối", - "light": "sáng", - "preferences_thin_mode_label": "Chế độ mỏng: ", - "preferences_category_misc": "Tùy chọn khác", - "preferences_automatic_instance_redirect_label": "Tự động chuyển hướng phiên bản (dự phòng về redirect.invidious.io): ", - "preferences_category_subscription": "Tùy chọn đăng ký", - "preferences_annotations_subscribed_label": "Hiển thị chú thích theo mặc định cho các kênh đã đăng ký: ", - "Redirect homepage to feed: ": "Chuyển hướng trang chủ đến nguồn cấp dữ liệu: ", - "preferences_max_results_label": "Số lượng video được hiển thị trong nguồn cấp dữ liệu: ", - "preferences_sort_label": "Sắp xếp video theo: ", - "published": "được phát hành", - "published - reverse": "đã xuất bản - đảo ngược", - "alphabetically": "Thứ tự (A - Z)", - "alphabetically - reverse": "Thứ tự (Z - A)", - "channel name": "Tên kênh (A - Z)", - "channel name - reverse": "Tên kênh (Z - A)", - "Only show latest video from channel: ": "Chỉ hiển thị video mới nhất từ kênh: ", - "Only show latest unwatched video from channel: ": "Chỉ hiển thị video chưa xem mới nhất từ kênh: ", - "preferences_unseen_only_label": "Chỉ hiển thị các video chưa từng xem: ", - "preferences_notifications_only_label": "Chỉ hiển thị thông báo (nếu có): ", - "Enable web notifications": "Bật thông báo web", - "`x` uploaded a video": "`x` đã tải lên một video", - "`x` is live": "`x` đang phát trực tiếp", - "preferences_category_data": "Tùy chọn dữ liệu", - "Clear watch history": "Xóa lịch sử xem", - "Import/export data": "Nhập / xuất dữ liệu", - "Change password": "Đổi mật khẩu", - "Manage subscriptions": "Quản lý các mục đăng kí", - "Manage tokens": "Quản lý mã thông báo", - "Watch history": "Xem lịch sử", - "Delete account": "Xóa tài khoản", - "preferences_category_admin": "Tùy chọn quản trị viên", - "preferences_default_home_label": "Trang chủ mặc định: ", - "preferences_feed_menu_label": "Menu nguồn cấp dữ liệu: ", - "preferences_show_nick_label": "Hiển thị biệt hiệu ở trên cùng: ", - "Top enabled: ": "Đã bật hàng đầu: ", - "CAPTCHA enabled: ": "Đã bật CAPTCHA: ", - "Login enabled: ": "Đã bật đăng nhập: ", - "Registration enabled: ": "Đã bật đăng ký: ", - "Report statistics: ": "Báo cáo thống kê: ", - "Save preferences": "Lưu tùy chọn", - "Subscription manager": "Người quản lý đăng ký", - "Token manager": "Trình quản lý mã thông báo", - "Token": "Mã thông báo", - "search": "tìm kiếm", - "Log out": "Đăng xuất", - "Source available here.": "Nguồn có sẵn ở đây.", - "View JavaScript license information.": "Xem thông tin giấy phép JavaScript.", - "View privacy policy.": "Xem chính sách bảo mật.", - "Trending": "Xu hướng", - "Public": "Công khai", - "Unlisted": "Không công khai", - "Private": "Riêng tư", - "View all playlists": "Xem tất cả danh sách phát", - "Updated `x` ago": "Đã cập nhật` x` trước", - "Delete playlist `x`?": "Xóa danh sách phát` x`?", - "Delete playlist": "Xóa danh sách phát", - "Create playlist": "Tạo danh sách phát", - "Title": "Tiêu đề", - "Playlist privacy": "Bảo mật danh sách phát", - "Editing playlist `x`": "Chỉnh sửa danh sách phát` x`", - "Show more": "Hiển thị thêm", - "Show less": "Hiển thị ít hơn", - "Watch on YouTube": "Xem trên YouTube", - "Switch Invidious Instance": "Chuyển phiên bản Invidious", - "Hide annotations": "Ẩn chú thích", - "Show annotations": "Hiển thị chú thích", - "Genre: ": "Thể loại: ", - "License: ": "Giấy phép: ", - "Family friendly? ": "Thân thiện với gia đình? ", - "Wilson score: ": "Điểm số Wilson: ", - "Engagement: ": "Hôn ước: ", - "Whitelisted regions: ": "Các vùng nằm trong danh sách trắng: ", - "Blacklisted regions: ": "Các vùng nằm trong danh sách đen: ", - "Shared `x`": "Chia sẻ` x`", - "View Reddit comments": "Xem bình luận trên Reddit", - "Hide replies": "Ẩn phản hồi", - "Show replies": "Hiển thị phản hồi", - "Incorrect password": "Mật khẩu không chính xác", - "Wrong answer": "Câu trả lời sai", - "Erroneous CAPTCHA": "CAPTCHA bị lỗi", - "CAPTCHA is a required field": "CAPTCHA là trường bắt buộc", - "User ID is a required field": "User ID là trường bắt buộc", - "Password is a required field": "Mật khẩu là trường bắt buộc", - "Wrong username or password": "Tên người dùng hoặc mật khẩu sai", - "Password cannot be empty": "Mật khẩu không được để trống", - "Password cannot be longer than 55 characters": "Mật khẩu không được dài hơn 55 ký tự", - "Please log in": "Xin vui lòng đăng nhập", - "Invidious Private Feed for `x`": "Nguồn cấp dữ liệu riêng tư Invidious cho` x`", - "channel:`x`": "kênh:` x`", - "Deleted or invalid channel": "Kênh đã xóa hoặc không hợp lệ", - "This channel does not exist.": "Kênh này không tồn tại.", - "Could not get channel info.": "Không thể tải thông tin kênh.", - "Could not fetch comments": "Không thể tìm nạp nhận xét", - "Could not create mix.": "Không thể tạo kết hợp.", - "Empty playlist": "Danh sách phát trống", - "Not a playlist.": "Không phải danh sách phát.", - "Playlist does not exist.": "Danh sách phát không tồn tại.", - "Could not pull trending pages.": "Không thể kéo các trang thịnh hành.", - "Hidden field \"challenge\" is a required field": "Trường ẩn \"challenge\" là trường bắt buộc", - "Hidden field \"token\" is a required field": "Trường ẩn \"token\" là trường bắt buộc", - "Erroneous challenge": "Thử thách sai", - "Erroneous token": "Mã thông báo bị lỗi", - "No such user": "Không có người dùng như vậy", - "Token is expired, please try again": "Token đã hết hạn, vui lòng thử lại", - "English": "Tiếng Anh", - "English (auto-generated)": "Tiếng Anh (auto-generated))", - "Afrikaans": "Tiếng Afrikaans", - "Albanian": "Tiếng Albania", - "Amharic": "Amharic", - "Arabic": "Tiếng Ả Rập", - "Armenian": "Tiếng Armenia", - "Azerbaijani": "Tiếng Azerbaijan", - "Bangla": "Tiếng Bengal", - "Basque": "Tiếng Basque", - "Belarusian": "Tiếng Belarus", - "Bosnian": "Tiếng Bosnia", - "Bulgarian": "Tiếng Bungari", - "Burmese": "Tiếng Miến Điện", - "Catalan": "Tiếng Catalan", - "Cebuano": "Tiếng Cebu", - "Chinese (Simplified)": "Tiếng Trung (Giản thể)", - "Chinese (Traditional)": "Tiếng Trung (Phồn thể)", - "Corsican": "Tiếng Corse", - "Croatian": "Tiếng Croatia", - "Czech": "Tiếng Séc", - "Danish": "Tiếng Đan Mạch", - "Dutch": "Tiếng Hà Lan", - "Esperanto": "Quốc tế ngữ", - "Estonian": "Tiếng Estonia", - "Filipino": "Tiếng Philippines", - "Finnish": "Tiếng Phần Lan", - "French": "Tiếng Pháp", - "Galician": "Tiếng Galicia", - "Georgian": "Tiếng Georgia", - "German": "Tiếng Đức", - "Greek": "Tiếng Hy Lạp", - "Gujarati": "Tiếng Gujarat", - "Haitian Creole": "Tiếng Creole (Haiti)", - "Hausa": "Tiếng Hausa", - "Hawaiian": "Tiếng Hawaii", - "Hebrew": "Tiếng Do Thái", - "Hindi": "Tiếng Hindi", - "Hmong": "Tiếng Hmong", - "Hungarian": "Tiếng Hungary", - "Icelandic": "Tiếng Iceland", - "Igbo": "Tiếng Igbo", - "Indonesian": "Tiếng Indonesia", - "Irish": "Tiếng Ireland", - "Italian": "Tiếng Ý", - "Japanese": "Tiếng Nhật", - "Javanese": "Tiếng Java", - "Kannada": "Tiếng Kannada", - "Kazakh": "Tiếng Kazakh", - "Khmer": "Tiếng Khmer", - "Korean": "Tiếng Hàn", - "Kurdish": "Tiếng Kurd", - "Kyrgyz": "Tiếng Kyrgyz", - "Lao": "Tiếng Lào", - "Latin": "Tiếng Latin", - "Latvian": "Tiếng Latvia", - "Lithuanian": "Tiếng Litva", - "Luxembourgish": "Tiếng Luxembourg", - "Macedonian": "Tiếng Macedonian", - "Malagasy": "Tiếng Malagasy", - "Malay": "Tiếng Mã Lai", - "Malayalam": "Tiếng Malayalam", - "Maltese": "Tiếng Malta", - "Maori": "Tiếng Maori", - "Marathi": "Tiếng Marathi", - "Mongolian": "Tiếng Mông Cổ", - "Nepali": "Tiếng Nepal", - "Norwegian Bokmål": "Tiếng Na Uy (Bokmål)", - "Nyanja": "Tiếng Chewa / Nyanja", - "Pashto": "Tiếng Pashtun", - "Persian": "Tiếng Ba Tư", - "Polish": "Tiếng Ba Lan", - "Portuguese": "Tiếng Bồ Đào Nha", - "Punjabi": "Tiếng Punjab", - "Romanian": "Tiếng Rumani", - "Russian": "Tiếng Nga", - "Samoan": "Tiếng Samoa", - "Scottish Gaelic": "Tiếng Gaelic (Scotland)", - "Serbian": "Tiếng Serbia", - "Shona": "Tiếng Shona", - "Sindhi": "Tiếng Sindh", - "Sinhala": "Tiếng Sinhala", - "Slovak": "Tiếng Slovak", - "Slovenian": "Tiếng Slovenia", - "Somali": "Tiếng Somali", - "Southern Sotho": "Southern Sotho", - "Spanish": "Tiếng Tây Ban Nha", - "Spanish (Latin America)": "Tiếng Tây Ban Nha (Mỹ Latinh)", - "Sundanese": "Tiếng Sundan", - "Swahili": "Tiếng Swahili", - "Swedish": "Tiếng Thụy Điển", - "Tajik": "Tiếng Tajik", - "Tamil": "Tiếng Tamil", - "Telugu": "Tiếng Telugu", - "Thai": "Tiếng Thái", - "Turkish": "Tiếng Thổ Nhĩ Kỳ", - "Ukrainian": "Tiếng Ukraina", - "Urdu": "Tiếng Urdu", - "Uzbek": "Tiếng Uzbek", - "Vietnamese": "Tiếng Việt", - "Welsh": "Tiếng Wales", - "Western Frisian": "Tiếng Tây Frisia", - "Xhosa": "Tiếng Nam Phi", - "Yiddish": "Tiếng Yiddish", - "Yoruba": "Tiếng Yoruba", - "Zulu": "Tiếng Zulu", - "Fallback comments: ": "Nhận xét dự phòng: ", - "Popular": "Phổ biến", - "Search": "Tìm kiếm", - "Top": "Hàng đầu", - "About": "Giới thiệu", - "Rating: ": "Xếp hạng: ", - "preferences_locale_label": "Ngôn ngữ: ", - "View as playlist": "Xem dưới dạng danh sách phát", - "Default": "Mặc định", - "Music": "Âm nhạc", - "Gaming": "Trò chơi", - "News": "Tin tức", - "Movies": "Phim", - "Download": "Tải xuống", - "Download as: ": "Tải xuống dưới dạng: ", - "%A %B %-d, %Y": "% A% B% -d,% Y", - "(edited)": "(đã chỉnh sửa)", - "YouTube comment permalink": "Liên kết cố định nhận xét trên YouTube", - "permalink": "liên kết cố định", - "`x` marked it with a ❤": "` x` đã đánh dấu nó bằng một ❤", - "Audio mode": "Chế độ audio", - "Video mode": "Chế độ video", - "channel_tab_videos_label": "Video", - "Playlists": "Danh sách phát", - "channel_tab_community_label": "Cộng đồng", - "search_filters_sort_option_relevance": "Liên quan", - "search_filters_sort_option_rating": "Xếp hạng", - "search_filters_sort_option_date": "Ngày tải lên", - "search_filters_sort_option_views": "Lượt xem", - "search_filters_type_label": "Thể loại", - "search_filters_duration_label": "Thời lượng", - "search_filters_features_label": "Đặc điểm", - "search_filters_sort_label": "Sắp xếp theo", - "search_filters_date_option_hour": "Một giờ qua", - "search_filters_date_option_today": "Hôm nay", - "search_filters_date_option_week": "Tuần này", - "search_filters_date_option_month": "Tháng này", - "search_filters_date_option_year": "Năm này", - "search_filters_type_option_video": "video", - "search_filters_type_option_channel": "Kênh", - "search_filters_type_option_playlist": "Danh sách phát", - "search_filters_type_option_movie": "Phim", - "search_filters_type_option_show": "Hiện", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "Phụ đề", - "search_filters_features_option_c_commons": "Giấy phép Creative Commons", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "Trực tiếp", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "Vị trí", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "Phiên bản hiện tại: ", - "search_filters_title": "Bộ lọc", - "generic_playlists_count": "{{count}} danh sách phát", - "generic_views_count": "{{count}} lượt xem", - "View `x` comments": { - "": "Xem `x` bình luận", - "([^.,0-9]|^)1([^.,0-9]|$)": "Hiển thị `x`bình luận" - }, - "Song: ": "Ca khúc: ", - "Premieres in `x`": "Trình chiếu lần đầu vào `x`", - "preferences_quality_dash_option_worst": "Thấp nhất", - "preferences_watch_history_label": "Bật lịch sử video đã xem ", - "preferences_quality_option_hd720": "HD720", - "unsubscribe": "hủy đăng kí", - "revoke": "gỡ bỏ", - "preferences_quality_dash_label": "Chất lượng video DASH ưa thích ", - "preferences_quality_dash_option_auto": "Tự động", - "Subscriptions": "Thuê bao", - "View YouTube comments": "Hiển thị bình luận từ YouTube", - "View more comments on Reddit": "Hiển thị thêm bình luận từ Reddit", - "Music in this video": "Nhạc trong video này", - "Artist: ": "Nghệ sĩ: ", - "Premieres `x`": "Phát lần đầu `x`", - "preferences_region_label": "Nội dung theo quốc gia ", - "search_message_change_filters_or_query": "Thử mở rộng nội dung tìm kiếm hoặc thay đổi bộ lọc.", - "preferences_quality_option_small": "Thấp", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "preferences_quality_dash_option_240p": "240p", - "Import/export": "Nhập/Xuất", - "preferences_quality_dash_option_4320p": "4320p (8K)", - "preferences_quality_option_dash": "DASH (tự tối ưu chất lượng)", - "generic_subscriptions_count_0": "{{count}} người đăng kí", - "preferences_quality_dash_option_1440p": "1440p (2K)", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_2160p": "2160p (4K)", - "search_message_no_results": "Tìm kiếm không có kết quả.", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_option_medium": "Trung bình", - "Load more": "Tải thêm", - "comments_points_count_0": "{{count}} điểm", - "Import YouTube playlist (.csv)": "Nhập các danh sách phát từ YouTube (.csv)", - "preferences_quality_dash_option_best": "Tốt nhất", - "preferences_quality_dash_option_360p": "360p", - "subscriptions_unseen_notifs_count_0": "{{count}} thông báo chưa đọc", - "Released under the AGPLv3 on Github.": "Phát hành dưới giấy phép AGPLv3 trên GitHub.", - "search_message_use_another_instance": " Bạn cũng có thể tìm kiếm ở một phiên bản khác.", - "Standard YouTube license": "Giấy phép YouTube thông thường", - "Album: ": "Album: ", - "preferences_save_player_pos_label": "Lưu vị trí xem: ", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Xin chào! Có vẻ như bạn đã tắt JavaScript. Bấm vào đây để xem bình luận, lưu ý rằng thời gian tải có thể lâu hơn.", - "Chinese (China)": "Tiếng Trung (Trung Quốc)", - "generic_button_cancel": "Hủy", - "Chinese": "Tiếng Trung", - "generic_button_delete": "Xóa", - "Korean (auto-generated)": "Tiếng Hàn (được tạo tự động)", - "search_filters_features_option_three_sixty": "360°", - "channel_tab_podcasts_label": "Podcast", - "Spanish (Mexico)": "Tiếng Tây Ban Nha (Mexico)", - "search_filters_apply_button": "Áp dụng các mục đã chọn", - "Download is disabled": "Tải xuống đã bị vô hiệu hóa.", - "next_steps_error_message_go_to_youtube": "Đi đến YouTube", - "German (auto-generated)": "Tiếng Đức (được tạo tự động)", - "Japanese (auto-generated)": "Tiếng Nhật (được tạo tự động)", - "footer_donate_page": "Ủng hộ", - "crash_page_before_reporting": "Trước khi báo cáo lỗi, hãy chắc chắn rằng bạn đã:", - "Channel Sponsor": "Nhà tài trợ của kênh", - "videoinfo_started_streaming_x_ago": "Đã bắt đầu phát sóng `x` trước", - "videoinfo_youTube_embed_link": "Nhúng", - "channel_tab_streams_label": "Phát trực tiếp", - "playlist_button_add_items": "Thêm video", - "generic_count_minutes_0": "{{count}} phút", - "user_saved_playlists": "`x` danh sách phát đã lưu", - "Spanish (Spain)": "Tiếng Tây Ban Nha (Tây Ban Nha)", - "crash_page_refresh": "Đã thử tải lại trang", - "Chinese (Hong Kong)": "Tiếng Trung (Hồng Kông)", - "generic_count_months_0": "{{count}} tháng", - "download_subtitles": "Phụ đề - `x` (.vtt)", - "generic_button_save": "Lưu", - "crash_page_search_issue": "Tìm lỗi có sẵn trên GitHub", - "none": "không", - "English (United States)": "Tiếng Anh (Mỹ)", - "next_steps_error_message_refresh": "Tải lại", - "Video unavailable": "Video không có sẵn", - "footer_source_code": "Mã nguồn", - "search_filters_duration_option_short": "Ngắn (< 4 phút)", - "search_filters_duration_option_long": "Dài (> 20 phút)", - "tokens_count_0": "{{count}} mã thông báo", - "Italian (auto-generated)": "Tiếng Ý (được tạo tự động)", - "channel_tab_shorts_label": "Shorts", - "channel_tab_releases_label": "Mới tải lên", - "`x` ago": "`x` trước", - "Interlingue": "Tiếng Khoa học Quốc tế", - "generic_channels_count_0": "{{count}} kênh", - "Chinese (Taiwan)": "Tiếng Trung (Đài Loan)", - "adminprefs_modified_source_code_url_label": "URL tới kho lưu trữ mã nguồn đã sửa đổi", - "Turkish (auto-generated)": "Tiếng Thổ Nhĩ Kỳ (được tạo tự động)", - "Indonesian (auto-generated)": "Tiếng Indonesia (được tạo tự động)", - "Portuguese (auto-generated)": "Tiếng Bồ Đào Nha (được tạo tự động)", - "generic_count_years_0": "{{count}} năm", - "videoinfo_invidious_embed_link": "Liên kết nhúng", - "Popular enabled: ": "Đã bật phổ biến: ", - "Spanish (auto-generated)": "Tiếng Tây Ban Nha (được tạo tự động)", - "English (United Kingdom)": "Tiếng Anh Anh", - "channel_tab_playlists_label": "Danh sách phát", - "generic_button_edit": "Sửa", - "search_filters_features_option_purchased": "Đã mua", - "search_filters_date_option_none": "Mọi thời điểm", - "Cantonese (Hong Kong)": "Tiếng Quảng Châu (Hồng Kông)", - "crash_page_report_issue": "Nếu các điều trên không giúp được, xin hãy tạo vấn đề mới trên GitHub (ưu tiên tiếng Anh) và đính kèm đoạn chữ sau trong nội dung (giữ nguyên KHÔNG dịch):", - "crash_page_switch_instance": "Đã thử dùng một phiên bản khác", - "generic_count_weeks_0": "{{count}} tuần", - "videoinfo_watch_on_youTube": "Xem trên YouTube", - "footer_modfied_source_code": "Mã nguồn đã chỉnh sửa", - "generic_button_rss": "RSS", - "generic_count_hours_0": "{{count}} giờ", - "French (auto-generated)": "Tiếng Pháp (được tạo tự động)", - "crash_page_read_the_faq": "Đọc Hỏi đáp thường gặp (FAQ)", - "user_created_playlists": "`x` danh sách phát đã tạo", - "channel_tab_channels_label": "Kênh", - "search_filters_type_option_all": "Mọi thể loại", - "Russian (auto-generated)": "Tiếng Nga (được tạo tự động)", - "comments_view_x_replies_0": "Xem {{count}} lượt trả lời", - "footer_original_source_code": "Mã nguồn gốc", - "Portuguese (Brazil)": "Tiếng Bồ Đào Nha (Brazil)", - "search_filters_features_option_vr180": "VR180", - "error_video_not_in_playlist": "Video không tồn tại trong danh sách phát. Bấm để trở về trang chủ của danh sách phát.", - "Dutch (auto-generated)": "Tiếng Hà Lan (được tạo tự động)", - "generic_count_days_0": "{{count}} ngày", - "Vietnamese (auto-generated)": "Tiếng Việt (được tạo tự động)", - "search_filters_duration_option_none": "Mọi thời lượng", - "footer_documentation": "Tài liệu", - "next_steps_error_message": "Bạn có thể thử: ", - "Import YouTube watch history (.json)": "Nhập lịch sử xem từ YouTube (.json)", - "search_filters_duration_option_medium": "Trung bình (4 - 20 phút)", - "generic_count_seconds_0": "{{count}} giây", - "search_filters_date_label": "Ngày tải lên", - "crash_page_you_found_a_bug": "Có vẻ như bạn đã tìm ra lỗi trong Indivious!" -} diff --git a/invidious/locales/zh-CN.json b/invidious/locales/zh-CN.json deleted file mode 100755 index faa67e6..0000000 --- a/invidious/locales/zh-CN.json +++ /dev/null @@ -1,475 +0,0 @@ -{ - "generic_views_count_0": "{{count}} 播放", - "generic_videos_count_0": "{{count}} 个视频", - "generic_playlists_count_0": "{{count}} 个播放列表", - "generic_subscribers_count_0": "{{count}} 位订阅者", - "generic_subscriptions_count_0": "{{count}} 个订阅", - "LIVE": "直播", - "Shared `x` ago": "`x` 前分享", - "Unsubscribe": "取消订阅", - "Subscribe": "订阅", - "View channel on YouTube": "在 YouTube 查看频道", - "View playlist on YouTube": "在 YouTube 查看播放列表", - "newest": "最新", - "oldest": "最老", - "popular": "时下流行", - "last": "上一个", - "Next page": "下一页", - "Previous page": "上一页", - "Clear watch history?": "清除观看历史?", - "New password": "新密码", - "New passwords must match": "新密码必须匹配", - "Authorize token?": "授权令牌?", - "Authorize token for `x`?": "`x` 的授权令牌?", - "Yes": "是", - "No": "否", - "Import and Export Data": "导入与导出数据", - "Import": "导入", - "Import Invidious data": "导入 Invidious JSON 数据", - "Import YouTube subscriptions": "导入 YouTube/OPML 订阅", - "Import FreeTube subscriptions (.db)": "导入 FreeTube 订阅 (.db)", - "Import NewPipe subscriptions (.json)": "导入 NewPipe 订阅 (.json)", - "Import NewPipe data (.zip)": "导入 NewPipe 数据 (.zip)", - "Export": "导出", - "Export subscriptions as OPML": "导出订阅到 OPML 格式", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "导出订阅到 OPML 格式(用于 NewPipe 及 FreeTube)", - "Export data as JSON": "导出 Invidious 数据为 JSON 格式", - "Delete account?": "删除账户?", - "History": "历史", - "An alternative front-end to YouTube": "另一个 YouTube 前端", - "JavaScript license information": "JavaScript 授权信息", - "source": "source", - "Log in": "登录", - "Log in/register": "登录/注册", - "User ID": "用户 ID", - "Password": "密码", - "Time (h:mm:ss):": "时间 (h:mm:ss):", - "Text CAPTCHA": "文本验证码", - "Image CAPTCHA": "图片验证码", - "Sign In": "登录", - "Register": "注册", - "E-mail": "E-mail", - "Preferences": "偏好设置", - "preferences_category_player": "播放器偏好设置", - "preferences_video_loop_label": "始终循环: ", - "preferences_autoplay_label": "自动播放: ", - "preferences_continue_label": "默认自动播放下一个视频: ", - "preferences_continue_autoplay_label": "自动播放下一个视频: ", - "preferences_listen_label": "默认只听声音: ", - "preferences_local_label": "是否代理视频: ", - "preferences_speed_label": "默认速度: ", - "preferences_quality_label": "视频质量偏好: ", - "preferences_volume_label": "播放器音量: ", - "preferences_comments_label": "默认评论源: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "默认字幕语言: ", - "Fallback captions: ": "后备字幕语言: ", - "preferences_related_videos_label": "是否显示相关视频: ", - "preferences_annotations_label": "是否默认显示视频注释: ", - "preferences_extend_desc_label": "自动展开视频描述: ", - "preferences_vr_mode_label": "互动式 360 度视频 (需要 WebGL): ", - "preferences_category_visual": "视觉选项", - "preferences_player_style_label": "播放器样式: ", - "Dark mode: ": "深色模式: ", - "preferences_dark_mode_label": "主题: ", - "dark": "暗色", - "light": "亮色", - "preferences_thin_mode_label": "窄页模式: ", - "preferences_category_misc": "其他选项", - "preferences_automatic_instance_redirect_label": "自动实例重定向 (回退到redirect.invidious.io): ", - "preferences_category_subscription": "订阅设置", - "preferences_annotations_subscribed_label": "默认情况下显示已订阅频道的注释: ", - "Redirect homepage to feed: ": "跳转主页到 feed: ", - "preferences_max_results_label": "Feed 中显示的视频数量: ", - "preferences_sort_label": "视频排序方式: ", - "published": "发布时间", - "published - reverse": "发布时间(反向)", - "alphabetically": "字母序", - "alphabetically - reverse": "字母序(反向)", - "channel name": "频道名称", - "channel name - reverse": "频道名称(反向)", - "Only show latest video from channel: ": "只显示频道的最新视频: ", - "Only show latest unwatched video from channel: ": "只显示频道的最新未看过视频: ", - "preferences_unseen_only_label": "只显示未看过的视频: ", - "preferences_notifications_only_label": "只显示通知 (如果有的话): ", - "Enable web notifications": "启用浏览器通知", - "`x` uploaded a video": "`x` 上传了视频", - "`x` is live": "`x` 正在直播", - "preferences_category_data": "数据选项", - "Clear watch history": "清除观看历史", - "Import/export data": "导入/导出数据", - "Change password": "更改密码", - "Manage subscriptions": "管理订阅", - "Manage tokens": "管理令牌", - "Watch history": "观看历史", - "Delete account": "删除账户", - "preferences_category_admin": "管理员选项", - "preferences_default_home_label": "默认主页: ", - "preferences_feed_menu_label": "Feed 菜单: ", - "preferences_show_nick_label": "在顶部显示昵称: ", - "Top enabled: ": "是否启用“热门视频”页: ", - "CAPTCHA enabled: ": "是否启用验证码: ", - "Login enabled: ": "是否启用登录: ", - "Registration enabled: ": "是否启用注册: ", - "Report statistics: ": "是否报告统计信息: ", - "Save preferences": "保存选项", - "Subscription manager": "订阅管理器", - "Token manager": "令牌管理器", - "Token": "令牌", - "tokens_count_0": "{{count}} 个令牌", - "Import/export": "导入/导出", - "unsubscribe": "取消订阅", - "revoke": "吊销", - "Subscriptions": "订阅", - "subscriptions_unseen_notifs_count_0": "{{count}} 条未读通知", - "search": "搜索", - "Log out": "登出", - "Released under the AGPLv3 on Github.": "依据 AGPLv3 许可证发布于 GitHub。", - "Source available here.": "源码可在此查看。", - "View JavaScript license information.": "查看 JavaScript 协议信息。", - "View privacy policy.": "查看隐私政策。", - "Trending": "时下流行", - "Public": "公开", - "Unlisted": "不公开", - "Private": "私享", - "View all playlists": "查看所有播放列表", - "Updated `x` ago": "`x` 前更新", - "Delete playlist `x`?": "是否删除播放列表 `x`?", - "Delete playlist": "删除播放列表", - "Create playlist": "创建播放列表", - "Title": "标题", - "Playlist privacy": "播放列表隐私设置", - "Editing playlist `x`": "正在编辑播放列表 `x`", - "Show more": "显示更多", - "Show less": "显示较少", - "Watch on YouTube": "在 YouTube 观看", - "Switch Invidious Instance": "切换 Invidious 实例", - "Hide annotations": "隐藏注释", - "Show annotations": "显示注释", - "Genre: ": "风格: ", - "License: ": "许可: ", - "Family friendly? ": "家庭友好? ", - "Wilson score: ": "威尔逊得分: ", - "Engagement: ": "参与度: ", - "Whitelisted regions: ": "白名单地区: ", - "Blacklisted regions: ": "黑名单地区: ", - "Shared `x`": "`x`发布", - "Premieres in `x`": "首映于 `x` 后", - "Premieres `x`": "首映于 `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "你好!看起来你关闭了 JavaScript。点击这里阅读评论。注意它们加载的时间可能会稍长。", - "View YouTube comments": "查看 YouTube 评论", - "View more comments on Reddit": "在 Reddit 查看更多评论", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "查看 `x` 条评论", - "": "查看 `x` 条评论" - }, - "View Reddit comments": "查看 Reddit 评论", - "Hide replies": "隐藏回复", - "Show replies": "显示回复", - "Incorrect password": "密码错误", - "Wrong answer": "错误的回复", - "Erroneous CAPTCHA": "验证码错误", - "CAPTCHA is a required field": "验证码必填", - "User ID is a required field": "用户名必填", - "Password is a required field": "密码必填", - "Wrong username or password": "用户名或密码错误", - "Password cannot be empty": "密码不能为空", - "Password cannot be longer than 55 characters": "密码长度不能大于 55", - "Please log in": "请登录", - "Invidious Private Feed for `x`": "`x` 的 Invidious 私人 feed", - "channel:`x`": "频道:`x`", - "Deleted or invalid channel": "已删除或无效频道", - "This channel does not exist.": "频道不存在。", - "Could not get channel info.": "无法获取频道信息。", - "Could not fetch comments": "无法获取评论", - "comments_view_x_replies_0": "查看 {{count}} 条回复", - "`x` ago": "`x` 前", - "Load more": "加载更多", - "comments_points_count_0": "{{count}} 分", - "Could not create mix.": "无法创建合集。", - "Empty playlist": "空播放列表", - "Not a playlist.": "非播放列表。", - "Playlist does not exist.": "播放列表不存在。", - "Could not pull trending pages.": "无法获取“时下流行”页面。", - "Hidden field \"challenge\" is a required field": "隐藏表单项 \"challenge\" 为必填", - "Hidden field \"token\" is a required field": "隐藏表单项 \"token\" 为必填", - "Erroneous challenge": "错误的验证回复(challenge)", - "Erroneous token": "错误的令牌", - "No such user": "用户不存在", - "Token is expired, please try again": "令牌过期,请重试", - "English": "英语", - "English (auto-generated)": "英语(自动生成)", - "Afrikaans": "南非荷兰语", - "Albanian": "阿尔巴尼亚语", - "Amharic": "阿姆哈拉语", - "Arabic": "阿拉伯语", - "Armenian": "亚美尼亚语", - "Azerbaijani": "阿塞拜疆语", - "Bangla": "孟加拉语", - "Basque": "巴斯克语", - "Belarusian": "白俄罗斯语", - "Bosnian": "波黑语", - "Bulgarian": "保加利亚语", - "Burmese": "缅甸语", - "Catalan": "加泰罗尼亚语", - "Cebuano": "宿雾语", - "Chinese (Simplified)": "中文(简体)", - "Chinese (Traditional)": "中文(繁体)", - "Corsican": "科西嘉语", - "Croatian": "克罗地亚语", - "Czech": "捷克语", - "Danish": "丹麦语", - "Dutch": "荷兰语", - "Esperanto": "世界语", - "Estonian": "爱沙尼亚语", - "Filipino": "菲律宾语", - "Finnish": "芬兰语", - "French": "法语", - "Galician": "加利西亚语", - "Georgian": "格鲁吉亚语", - "German": "德语", - "Greek": "希腊语", - "Gujarati": "古吉拉特语", - "Haitian Creole": "海地克里奥尔语", - "Hausa": "豪萨语", - "Hawaiian": "夏威夷语", - "Hebrew": "希伯来语", - "Hindi": "印地语", - "Hmong": "苗语", - "Hungarian": "匈牙利语", - "Icelandic": "冰岛语", - "Igbo": "伊博语", - "Indonesian": "印度尼西亚语", - "Irish": "爱尔兰语", - "Italian": "意大利语", - "Japanese": "日语", - "Javanese": "爪哇语", - "Kannada": "卡纳达语", - "Kazakh": "哈萨克语", - "Khmer": "高棉语", - "Korean": "韩语", - "Kurdish": "库尔德语", - "Kyrgyz": "柯尔克孜语", - "Lao": "老挝语", - "Latin": "拉丁语", - "Latvian": "拉脱维亚语", - "Lithuanian": "立陶宛语", - "Luxembourgish": "卢森堡语", - "Macedonian": "马其顿语", - "Malagasy": "马尔加什语", - "Malay": "马来语", - "Malayalam": "马拉雅拉姆语", - "Maltese": "马耳他语", - "Maori": "毛利语", - "Marathi": "马拉语", - "Mongolian": "蒙古语", - "Nepali": "尼泊尔语", - "Norwegian Bokmål": "书面挪威语", - "Nyanja": "尼昂加语", - "Pashto": "普什图语", - "Persian": "波斯语", - "Polish": "抛光", - "Portuguese": "葡萄牙语", - "Punjabi": "旁遮普语", - "Romanian": "罗马尼亚语", - "Russian": "俄语", - "Samoan": "萨摩亚语", - "Scottish Gaelic": "苏格兰盖尔语", - "Serbian": "塞尔维亚语", - "Shona": "绍纳语", - "Sindhi": "信德语", - "Sinhala": "僧伽罗语", - "Slovak": "斯洛伐克语", - "Slovenian": "斯洛文尼亚语", - "Somali": "索马里语", - "Southern Sotho": "南索托语", - "Spanish": "西班牙语", - "Spanish (Latin America)": "西班牙语(拉丁美洲)", - "Sundanese": "巽丹语", - "Swahili": "斯瓦希里语", - "Swedish": "瑞典语", - "Tajik": "塔吉克语", - "Tamil": "泰米尔语", - "Telugu": "泰卢固语", - "Thai": "泰语", - "Turkish": "土耳其语", - "Ukrainian": "乌克兰语", - "Urdu": "乌尔都语", - "Uzbek": "乌兹别克", - "Vietnamese": "越南语", - "Welsh": "威尔士语", - "Western Frisian": "西弗里西亚语", - "Xhosa": "科萨语", - "Yiddish": "意第绪语", - "Yoruba": "约鲁巴语", - "Zulu": "祖鲁语", - "generic_count_years_0": "{{count}} 年", - "generic_count_months_0": "{{count}} 月", - "generic_count_weeks_0": "{{count}} 周", - "generic_count_days_0": "{{count}} 天", - "generic_count_hours_0": "{{count}} 小时", - "generic_count_minutes_0": "{{count}} 分钟", - "generic_count_seconds_0": "{{count}} 秒", - "Fallback comments: ": "后备评论: ", - "Popular": "热门频道", - "Search": "搜索", - "Top": "热门视频", - "About": "关于", - "Rating: ": "评分: ", - "preferences_locale_label": "语言: ", - "View as playlist": "作为播放列表查看", - "Default": "默认", - "Music": "音乐", - "Gaming": "游戏", - "News": "新闻", - "Movies": "电影", - "Download": "下载", - "Download as: ": "下载为: ", - "%A %B %-d, %Y": "%Y年%-m月%-d日 %a", - "(edited)": "(已编辑)", - "YouTube comment permalink": "YouTube 评论永久链接", - "permalink": "永久链接", - "`x` marked it with a ❤": "`x` 为此加 ❤", - "Audio mode": "音频模式", - "Video mode": "视频模式", - "channel_tab_videos_label": "视频", - "Playlists": "播放列表", - "channel_tab_community_label": "社区", - "search_filters_sort_option_relevance": "相关度", - "search_filters_sort_option_rating": "评分", - "search_filters_sort_option_date": "上传日期", - "search_filters_sort_option_views": "观看次数", - "search_filters_type_label": "类型", - "search_filters_duration_label": "持续时间", - "search_filters_features_label": "功能", - "search_filters_sort_label": "排序依据", - "search_filters_date_option_hour": "上个小时", - "search_filters_date_option_today": "今日", - "search_filters_date_option_week": "本周", - "search_filters_date_option_month": "本月", - "search_filters_date_option_year": "今年", - "search_filters_type_option_video": "视频", - "search_filters_type_option_channel": "频道", - "search_filters_type_option_playlist": "播放列表", - "search_filters_type_option_movie": "电影", - "search_filters_type_option_show": "真人秀", - "search_filters_features_option_hd": "高清", - "search_filters_features_option_subtitles": "字幕", - "search_filters_features_option_c_commons": "creative_commons 许可", - "search_filters_features_option_three_d": "3d", - "search_filters_features_option_live": "直播", - "search_filters_features_option_four_k": "4k", - "search_filters_features_option_location": "位置", - "search_filters_features_option_hdr": "hdr", - "Current version: ": "当前版本: ", - "next_steps_error_message": "在此之后你应尝试: ", - "next_steps_error_message_refresh": "刷新", - "next_steps_error_message_go_to_youtube": "转到 YouTube", - "search_filters_duration_option_short": "短(少于4分钟)", - "search_filters_duration_option_long": "长(多于 20 分钟)", - "footer_documentation": "文档", - "footer_source_code": "源代码", - "footer_modfied_source_code": "修改的源代码", - "adminprefs_modified_source_code_url_label": "更改的源代码仓库网址", - "footer_original_source_code": "原始源代码", - "footer_donate_page": "捐赠", - "preferences_region_label": "内容国家: ", - "preferences_quality_dash_label": "首选 DASH 视频分辨率: ", - "crash_page_you_found_a_bug": "你似乎找到了 Invidious 的一个 bug!", - "crash_page_before_reporting": "报告 bug 之前,请确保你已经:", - "crash_page_refresh": "试着 刷新页面", - "crash_page_switch_instance": "试着使用另一个实例", - "crash_page_read_the_faq": "阅读常见问题", - "crash_page_search_issue": "搜索过 GitHub 上的现有 issue", - "crash_page_report_issue": "如果以上这些都没用的话,请在 Github 上新开一个 issue(最好用英语撰写),并在你的消息中包含以下文本(不要翻译该文本):", - "videoinfo_invidious_embed_link": "嵌入链接", - "download_subtitles": "字幕 - `x` (.vtt)", - "preferences_quality_dash_option_360p": "360p", - "videoinfo_watch_on_youTube": "在 YouTube 上观看", - "videoinfo_youTube_embed_link": "嵌入的", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_worst": "最差", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_144p": "144p", - "preferences_quality_option_medium": "中等", - "preferences_quality_option_small": "小", - "preferences_quality_dash_option_auto": "自动", - "preferences_quality_option_dash": "DASH (自适应画质)", - "preferences_quality_dash_option_best": "最佳", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "invidious": "Invidious", - "videoinfo_started_streaming_x_ago": "`x` 前开始播放", - "user_created_playlists": "`x` 创建了播放列表", - "user_saved_playlists": "`x` 保存了播放列表", - "Video unavailable": "视频不可用", - "search_filters_features_option_purchased": "已购买", - "search_filters_features_option_three_sixty": "360°", - "none": "无", - "preferences_save_player_pos_label": "保存播放位置: ", - "Spanish (Mexico)": "西班牙语 (墨西哥)", - "Portuguese (auto-generated)": "葡萄牙语 (自动生成)", - "Portuguese (Brazil)": "葡萄牙语 (巴西)", - "English (United Kingdom)": "英语 (英国)", - "English (United States)": "英语 (美国)", - "Chinese": "中文", - "Chinese (China)": "中文 (中国)", - "Chinese (Hong Kong)": "中文 (中国香港)", - "Chinese (Taiwan)": "中文 (中国台湾)", - "German (auto-generated)": "德语 (自动生成)", - "Indonesian (auto-generated)": "印尼语 (自动生成)", - "Interlingue": "国际语", - "Italian (auto-generated)": "意大利语 (自动生成)", - "Japanese (auto-generated)": "日语 (自动生成)", - "Korean (auto-generated)": "韩语 (自动生成)", - "Russian (auto-generated)": "俄语 (自动生成)", - "Spanish (auto-generated)": "西班牙语 (自动生成)", - "Vietnamese (auto-generated)": "越南语 (自动生成)", - "Cantonese (Hong Kong)": "粤语 (中国香港)", - "Dutch (auto-generated)": "荷兰语 (自动生成)", - "French (auto-generated)": "法语 (自动生成)", - "Turkish (auto-generated)": "土耳其语 (自动生成)", - "Spanish (Spain)": "西班牙语 (西班牙)", - "preferences_watch_history_label": "启用观看历史: ", - "search_message_use_another_instance": " 你也可以 在另一实例上搜索。", - "search_filters_title": "过滤器", - "search_filters_date_label": "上传日期", - "search_filters_apply_button": "应用所选过滤器", - "search_message_no_results": "没找到结果。", - "search_filters_duration_option_medium": "中等(4-20 分钟)", - "search_filters_date_option_none": "任意日期", - "search_message_change_filters_or_query": "尝试扩大你的搜索查询和/或更改过滤器。", - "search_filters_duration_option_none": "任意时长", - "search_filters_type_option_all": "任意类型", - "search_filters_features_option_vr180": "VR180", - "Popular enabled: ": "已启用流行度: ", - "error_video_not_in_playlist": "此播放列表中不存在请求的视频。 单击析出查看播放列表主页。", - "Music in this video": "此视频中的音乐", - "channel_tab_playlists_label": "播放列表", - "Artist: ": "艺术家: ", - "channel_tab_streams_label": "直播", - "Album: ": "专辑: ", - "channel_tab_shorts_label": "短视频", - "channel_tab_channels_label": "频道", - "Song: ": "歌曲: ", - "Channel Sponsor": "频道赞助者", - "Standard YouTube license": "标准 YouTube 许可证", - "Download is disabled": "已禁用下载", - "Import YouTube playlist (.csv)": "导入 YouTube 播放列表(.csv)", - "Import YouTube watch history (.json)": "导入 YouTube 观看历史(.json)", - "generic_button_cancel": "取消", - "playlist_button_add_items": "添加视频", - "generic_button_delete": "删除", - "channel_tab_podcasts_label": "播客", - "generic_button_edit": "编辑", - "generic_button_save": "保存", - "generic_button_rss": "RSS", - "channel_tab_releases_label": "公告", - "generic_channels_count_0": "{{count}} 个频道", - "toggle_theme": "切换主题" -} diff --git a/invidious/locales/zh-TW.json b/invidious/locales/zh-TW.json deleted file mode 100755 index 1520c26..0000000 --- a/invidious/locales/zh-TW.json +++ /dev/null @@ -1,475 +0,0 @@ -{ - "generic_views_count_0": "{{count}} 次檢視", - "generic_videos_count_0": "{{count}} 部影片", - "generic_playlists_count_0": "{{count}} 播放清單", - "generic_subscribers_count_0": "{{count}} 個訂閱者", - "generic_subscriptions_count_0": "{{count}} 個訂閱", - "LIVE": "直播", - "Shared `x` ago": "`x` 前分享", - "Unsubscribe": "取消訂閱", - "Subscribe": "訂閱", - "View channel on YouTube": "在 YouTube 上檢視頻道", - "View playlist on YouTube": "在 YouTube 上檢視播放清單", - "newest": "最新", - "oldest": "最舊", - "popular": "流行", - "last": "上一個", - "Next page": "下一頁", - "Previous page": "上一頁", - "Clear watch history?": "清除觀看歷史?", - "New password": "新密碼", - "New passwords must match": "新密碼必須符合", - "Authorize token?": "授權 token?", - "Authorize token for `x`?": "`x` 的授權 token?", - "Yes": "是", - "No": "否", - "Import and Export Data": "匯入與匯出資料", - "Import": "匯入", - "Import Invidious data": "匯入 Invidious JSON 資料", - "Import YouTube subscriptions": "匯入 YouTube/OPML 訂閱", - "Import FreeTube subscriptions (.db)": "匯入 FreeTube 訂閱 (.db)", - "Import NewPipe subscriptions (.json)": "匯入 NewPipe 訂閱 (.json)", - "Import NewPipe data (.zip)": "匯入 NewPipe 資料 (.zip)", - "Export": "匯出", - "Export subscriptions as OPML": "將訂閱匯出為 OPML", - "Export subscriptions as OPML (for NewPipe & FreeTube)": "將訂閱匯出為 OPML(供 NewPipe 與 FreeTube 使用)", - "Export data as JSON": "將 Invidious 資料匯出為 JSON", - "Delete account?": "刪除帳號?", - "History": "歷史", - "An alternative front-end to YouTube": "一個 YouTube 的替代前端", - "JavaScript license information": "JavaScript 授權條款資訊", - "source": "來源", - "Log in": "登入", - "Log in/register": "登入/註冊", - "User ID": "使用者 ID", - "Password": "密碼", - "Time (h:mm:ss):": "時間 (h:mm:ss):", - "Text CAPTCHA": "文字 CAPTCHA", - "Image CAPTCHA": "圖片 CAPTCHA", - "Sign In": "登入", - "Register": "註冊", - "E-mail": "電子郵件", - "Preferences": "偏好設定", - "preferences_category_player": "播放器偏好設定", - "preferences_video_loop_label": "總是循環播放: ", - "preferences_autoplay_label": "自動播放: ", - "preferences_continue_label": "預設播放下一部: ", - "preferences_continue_autoplay_label": "自動播放下一部影片: ", - "preferences_listen_label": "預設聆聽: ", - "preferences_local_label": "代理影片: ", - "preferences_speed_label": "預設速度: ", - "preferences_quality_label": "偏好的影片畫質: ", - "preferences_volume_label": "播放器音量: ", - "preferences_comments_label": "預設留言: ", - "youtube": "YouTube", - "reddit": "Reddit", - "preferences_captions_label": "預設字幕: ", - "Fallback captions: ": "汰退字幕: ", - "preferences_related_videos_label": "顯示相關的影片: ", - "preferences_annotations_label": "預設顯示註釋: ", - "preferences_extend_desc_label": "自動展開影片描述: ", - "preferences_vr_mode_label": "互動式 360 度影片(需要 WebGL): ", - "preferences_category_visual": "視覺偏好設定", - "preferences_player_style_label": "播放器樣式: ", - "Dark mode: ": "深色模式: ", - "preferences_dark_mode_label": "佈景主題: ", - "dark": "深色", - "light": "淺色", - "preferences_thin_mode_label": "精簡模式: ", - "preferences_category_misc": "其他偏好設定", - "preferences_automatic_instance_redirect_label": "自動站台重新導向(汰退至 redirect.invidious.io): ", - "preferences_category_subscription": "訂閱偏好設定", - "preferences_annotations_subscribed_label": "預設為已訂閱的頻道顯示註釋: ", - "Redirect homepage to feed: ": "重新導向首頁至 feed: ", - "preferences_max_results_label": "顯示在 feed 中的影片數量: ", - "preferences_sort_label": "以此種方式排序影片: ", - "published": "已發佈", - "published - reverse": "已發佈 - 反向", - "alphabetically": "字母", - "alphabetically - reverse": "字母 - 反向", - "channel name": "頻道名稱", - "channel name - reverse": "頻道名稱 - 反向", - "Only show latest video from channel: ": "僅顯示從頻道而來的最新影片: ", - "Only show latest unwatched video from channel: ": "僅顯示從頻道而來的未觀看影片: ", - "preferences_unseen_only_label": "僅顯示未觀看的: ", - "preferences_notifications_only_label": "僅顯示通知(如果有的話): ", - "Enable web notifications": "啟用網路通知", - "`x` uploaded a video": "`x` 上傳了一部影片", - "`x` is live": "`x` 正在直播", - "preferences_category_data": "資料偏好設定", - "Clear watch history": "清除觀看歷史", - "Import/export data": "匯入/匯出資料", - "Change password": "變更密碼", - "Manage subscriptions": "管理訂閱", - "Manage tokens": "管理 tokens", - "Watch history": "觀看歷史", - "Delete account": "刪除帳號", - "preferences_category_admin": "管理員偏好設定", - "preferences_default_home_label": "預設首頁: ", - "preferences_feed_menu_label": "Feed 選單: ", - "preferences_show_nick_label": "在頂部顯示暱稱: ", - "Top enabled: ": "頂部啟用: ", - "CAPTCHA enabled: ": "CAPTCHA 啟用: ", - "Login enabled: ": "啟用登入: ", - "Registration enabled: ": "啟用註冊: ", - "Report statistics: ": "回報統計: ", - "Save preferences": "儲存偏好設定", - "Subscription manager": "訂閱管理員", - "Token manager": "Token 管理員", - "Token": "Token", - "tokens_count_0": "{{count}} 個存取金鑰", - "Import/export": "匯入/匯出", - "unsubscribe": "取消訂閱", - "revoke": "撤銷", - "Subscriptions": "訂閱", - "subscriptions_unseen_notifs_count_0": "{{count}} 個未讀的通知", - "search": "搜尋", - "Log out": "登出", - "Released under the AGPLv3 on Github.": "在 GitHub 上以 AGPLv3 釋出。", - "Source available here.": "原始碼在此提供。", - "View JavaScript license information.": "檢視 JavaScript 授權條款資訊。", - "View privacy policy.": "檢視隱私權政策。", - "Trending": "趨勢", - "Public": "公開", - "Unlisted": "未列出", - "Private": "私人", - "View all playlists": "檢視所有播放清單", - "Updated `x` ago": "更新於 `x` 之前", - "Delete playlist `x`?": "刪除播放清單 `x`?", - "Delete playlist": "刪除播放清單", - "Create playlist": "建立播放清單", - "Title": "標題", - "Playlist privacy": "播放清單隱私", - "Editing playlist `x`": "已編輯播放清單 `x`", - "Show more": "顯示更多", - "Show less": "顯示較少", - "Watch on YouTube": "在 YouTube 上觀看", - "Switch Invidious Instance": "切換 Invidious 站台", - "Hide annotations": "隱藏註釋", - "Show annotations": "顯示註釋", - "Genre: ": "風格: ", - "License: ": "授權條款: ", - "Family friendly? ": "家庭友好? ", - "Wilson score: ": "威爾遜分數: ", - "Engagement: ": "參與度: ", - "Whitelisted regions: ": "白名單區域: ", - "Blacklisted regions: ": "黑名單區域: ", - "Shared `x`": "`x` 發佈", - "Premieres in `x`": "首映於 `x`", - "Premieres `x`": "首映於 `x`", - "Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "嗨!看來您將 JavaScript 關閉了。點擊這裡以檢視留言,請注意,它們可能需要比較長的時間載入。", - "View YouTube comments": "檢視 YouTube 留言", - "View more comments on Reddit": "在 Reddit 上檢視更多留言", - "View `x` comments": { - "([^.,0-9]|^)1([^.,0-9]|$)": "檢視 `x` 則留言", - "": "檢視 `x` 則留言" - }, - "View Reddit comments": "檢視 Reddit 留言", - "Hide replies": "隱藏回覆", - "Show replies": "顯示回覆", - "Incorrect password": "不正確的密碼", - "Wrong answer": "錯誤的答案", - "Erroneous CAPTCHA": "錯誤的 CAPTCHA", - "CAPTCHA is a required field": "CAPTCHA 為必填欄位", - "User ID is a required field": "使用者 ID 為必填欄位", - "Password is a required field": "密碼為必填欄位", - "Wrong username or password": "錯誤的使用者名稱或密碼", - "Password cannot be empty": "密碼不能為空", - "Password cannot be longer than 55 characters": "密碼不能長於55個字元", - "Please log in": "請登入", - "Invidious Private Feed for `x`": "`x` 的 Invidious 私密 feed", - "channel:`x`": "頻道:`x`", - "Deleted or invalid channel": "已刪除或無效的頻道", - "This channel does not exist.": "此頻道不存在。", - "Could not get channel info.": "無法取得頻道資訊。", - "Could not fetch comments": "無法擷取留言", - "comments_view_x_replies_0": "檢視 {{count}} 則回覆", - "`x` ago": "`x` 以前", - "Load more": "載入更多", - "comments_points_count_0": "{{count}} 點", - "Could not create mix.": "無法建立混合。", - "Empty playlist": "空的播放清單", - "Not a playlist.": "不是播放清單。", - "Playlist does not exist.": "播放清單不存在。", - "Could not pull trending pages.": "無法拉取趨勢頁面。", - "Hidden field \"challenge\" is a required field": "隱藏的欄位 \"challenge\" 是必填欄位", - "Hidden field \"token\" is a required field": "隱藏的欄位 \"token\" 是必填欄位", - "Erroneous challenge": "錯誤的 challenge", - "Erroneous token": "錯誤的 token", - "No such user": "無此使用者", - "Token is expired, please try again": "Token 已過期,請再試一次", - "English": "英文", - "English (auto-generated)": "英文(自動生成)", - "Afrikaans": "南非語", - "Albanian": "阿爾巴尼亞語", - "Amharic": "阿姆哈拉語", - "Arabic": "阿拉伯語", - "Armenian": "亞美尼亞語", - "Azerbaijani": "亞塞拜然語", - "Bangla": "孟加拉文", - "Basque": "巴斯克語", - "Belarusian": "白俄羅斯語", - "Bosnian": "波士尼亞語", - "Bulgarian": "保加利亞語", - "Burmese": "緬甸語", - "Catalan": "加泰隆尼亞語", - "Cebuano": "宿霧語", - "Chinese (Simplified)": "簡體中文", - "Chinese (Traditional)": "繁體中文", - "Corsican": "科西嘉語", - "Croatian": "克羅埃西亞語", - "Czech": "捷克語", - "Danish": "丹麥語", - "Dutch": "荷蘭語", - "Esperanto": "世界語", - "Estonian": "愛沙尼亞語", - "Filipino": "菲律賓語", - "Finnish": "芬蘭語", - "French": "法語", - "Galician": "加利西亞語", - "Georgian": "喬治亞語", - "German": "德語", - "Greek": "希臘語", - "Gujarati": "古吉拉特語", - "Haitian Creole": "海地克里奧爾語", - "Hausa": "豪薩語", - "Hawaiian": "夏威夷語", - "Hebrew": "希伯來語", - "Hindi": "印地語", - "Hmong": "苗文", - "Hungarian": "匈牙利語", - "Icelandic": "冰島語", - "Igbo": "伊博語", - "Indonesian": "印尼語", - "Irish": "愛爾蘭語", - "Italian": "義大利語", - "Japanese": "日語", - "Javanese": "爪哇語", - "Kannada": "康納達語", - "Kazakh": "哈薩克語", - "Khmer": "高棉文", - "Korean": "韓語", - "Kurdish": "庫德語", - "Kyrgyz": "吉爾吉斯語", - "Lao": "寮語", - "Latin": "拉丁語", - "Latvian": "拉脫維亞語", - "Lithuanian": "立陶宛語", - "Luxembourgish": "盧森堡語", - "Macedonian": "馬其頓語", - "Malagasy": "馬拉加斯語", - "Malay": "馬來語", - "Malayalam": "馬拉雅拉姆語", - "Maltese": "馬爾他語", - "Maori": "毛利語", - "Marathi": "馬拉提語", - "Mongolian": "蒙古語", - "Nepali": "尼泊爾語", - "Norwegian Bokmål": "書面挪威語", - "Nyanja": "尼揚賈語", - "Pashto": "普什圖語", - "Persian": "波斯語", - "Polish": "波蘭人", - "Portuguese": "葡萄牙語", - "Punjabi": "旁遮普語", - "Romanian": "羅馬尼亞語", - "Russian": "俄語", - "Samoan": "薩摩亞語", - "Scottish Gaelic": "蘇格蘭蓋爾語", - "Serbian": "塞爾維亞語", - "Shona": "修納語", - "Sindhi": "信德語", - "Sinhala": "僧伽羅語", - "Slovak": "斯洛伐克語", - "Slovenian": "斯洛維尼亞語", - "Somali": "索馬利亞語", - "Southern Sotho": "南塞索托語", - "Spanish": "西班牙語", - "Spanish (Latin America)": "西班牙語(拉丁美洲)", - "Sundanese": "巽他語", - "Swahili": "斯瓦希里語", - "Swedish": "瑞典語", - "Tajik": "塔吉克語", - "Tamil": "坦米爾語", - "Telugu": "泰盧固語", - "Thai": "泰語", - "Turkish": "土耳其語", - "Ukrainian": "烏克蘭語", - "Urdu": "烏爾都語", - "Uzbek": "烏茲別克語", - "Vietnamese": "越南語", - "Welsh": "威爾斯語", - "Western Frisian": "西菲士蘭語", - "Xhosa": "科薩語", - "Yiddish": "意第緒語", - "Yoruba": "約魯巴語", - "Zulu": "祖魯語", - "generic_count_years_0": "{{count}} 年", - "generic_count_months_0": "{{count}} 月", - "generic_count_weeks_0": "{{count}} 週", - "generic_count_days_0": "{{count}} 天", - "generic_count_hours_0": "{{count}} 小時", - "generic_count_minutes_0": "{{count}} 分鐘", - "generic_count_seconds_0": "{{count}} 秒", - "Fallback comments: ": "汰退留言: ", - "Popular": "熱門頻道", - "Search": "搜尋", - "Top": "熱門影片", - "About": "關於", - "Rating: ": "評分: ", - "preferences_locale_label": "語言: ", - "View as playlist": "以播放清單檢視", - "Default": "預設值", - "Music": "音樂", - "Gaming": "遊戲", - "News": "新聞", - "Movies": "電影", - "Download": "下載", - "Download as: ": "下載為: ", - "%A %B %-d, %Y": "%A %B %-d, %Y", - "(edited)": "(已編輯)", - "YouTube comment permalink": "YouTube 留言永久連結", - "permalink": "永久連結", - "`x` marked it with a ❤": "`x` 為此標記 ❤", - "Audio mode": "音訊模式", - "Video mode": "視訊模式", - "channel_tab_videos_label": "影片", - "Playlists": "播放清單", - "channel_tab_community_label": "社群", - "search_filters_sort_option_relevance": "關聯", - "search_filters_sort_option_rating": "評分", - "search_filters_sort_option_date": "日期", - "search_filters_sort_option_views": "檢視", - "search_filters_type_label": "內容類型", - "search_filters_duration_label": "時長", - "search_filters_features_label": "特色", - "search_filters_sort_label": "排序", - "search_filters_date_option_hour": "小時", - "search_filters_date_option_today": "今天", - "search_filters_date_option_week": "週", - "search_filters_date_option_month": "月", - "search_filters_date_option_year": "年", - "search_filters_type_option_video": "影片", - "search_filters_type_option_channel": "頻道", - "search_filters_type_option_playlist": "播放清單", - "search_filters_type_option_movie": "電影", - "search_filters_type_option_show": "秀", - "search_filters_features_option_hd": "HD", - "search_filters_features_option_subtitles": "字幕", - "search_filters_features_option_c_commons": "創用 CC", - "search_filters_features_option_three_d": "3D", - "search_filters_features_option_live": "直播", - "search_filters_features_option_four_k": "4K", - "search_filters_features_option_location": "位置", - "search_filters_features_option_hdr": "HDR", - "Current version: ": "目前版本: ", - "next_steps_error_message": "之後您應該嘗試: ", - "next_steps_error_message_refresh": "重新整理", - "next_steps_error_message_go_to_youtube": "到 YouTube", - "search_filters_duration_option_short": "短(小於4分鐘)", - "search_filters_duration_option_long": "長(多於20分鐘)", - "footer_documentation": "文件", - "footer_source_code": "原始碼", - "footer_original_source_code": "原本的原始碼", - "footer_modfied_source_code": "修改後的原始碼", - "adminprefs_modified_source_code_url_label": "修改後的原始碼倉庫 URL", - "footer_donate_page": "捐款", - "preferences_region_label": "內容國家: ", - "preferences_quality_dash_label": "偏好的 DASH 影片品質: ", - "preferences_quality_option_hd720": "HD720", - "preferences_quality_dash_option_worst": "最差", - "preferences_quality_dash_option_4320p": "4320p", - "preferences_quality_dash_option_2160p": "2160p", - "preferences_quality_dash_option_1440p": "1440p", - "preferences_quality_dash_option_1080p": "1080p", - "preferences_quality_dash_option_720p": "720p", - "preferences_quality_dash_option_480p": "480p", - "preferences_quality_dash_option_360p": "360p", - "preferences_quality_dash_option_240p": "240p", - "preferences_quality_dash_option_144p": "144p", - "invidious": "Invidious", - "search_filters_features_option_purchased": "已購買", - "search_filters_features_option_three_sixty": "360°", - "none": "無", - "videoinfo_started_streaming_x_ago": "`x` 前開始串流", - "videoinfo_watch_on_youTube": "在 YouTube 上觀看", - "videoinfo_youTube_embed_link": "嵌入", - "videoinfo_invidious_embed_link": "嵌入連結", - "download_subtitles": "字幕 - `x` (.vtt)", - "user_created_playlists": "`x` 已建立的播放清單", - "user_saved_playlists": "`x` 已儲存的播放清單", - "Video unavailable": "影片不可用", - "preferences_quality_option_small": "小", - "preferences_quality_option_dash": "DASH(主動調整品質)", - "preferences_quality_option_medium": "中等", - "preferences_quality_dash_option_auto": "自動", - "preferences_quality_dash_option_best": "最佳", - "preferences_save_player_pos_label": "儲存播放位置: ", - "crash_page_you_found_a_bug": "看來您在 Invidious 中發現了一隻臭蟲!", - "crash_page_refresh": "嘗試過重新整理頁面", - "crash_page_switch_instance": "嘗試使用其他站台", - "crash_page_read_the_faq": "閱讀常見問題解答 (FAQ)", - "crash_page_search_issue": "搜尋 GitHub 上既有的問題", - "crash_page_report_issue": "若以上的動作都沒有幫到忙,請在 GitHub 上開啟新的議題(請盡量使用英文)並在您的訊息中包含以下文字(不要翻譯文字):", - "crash_page_before_reporting": "在回報臭蟲之前,請確保您有:", - "English (United Kingdom)": "英文(英國)", - "English (United States)": "英文(美國)", - "Cantonese (Hong Kong)": "粵語(香港)", - "Chinese": "中文", - "Chinese (China)": "中文(中國)", - "Chinese (Taiwan)": "中文(台灣)", - "Dutch (auto-generated)": "荷蘭語(自動產生)", - "German (auto-generated)": "德語(自動產生)", - "Korean (auto-generated)": "韓語(自動產生)", - "Russian (auto-generated)": "俄語(自動產生)", - "Spanish (auto-generated)": "西班牙語(自動產生)", - "Spanish (Mexico)": "西班牙語(墨西哥)", - "Spanish (Spain)": "西班牙語(西班牙)", - "Turkish (auto-generated)": "土耳其語(自動產生)", - "French (auto-generated)": "法語(自動產生)", - "Vietnamese (auto-generated)": "越南語(自動產生)", - "Interlingue": "西方國際語", - "Chinese (Hong Kong)": "中文(香港)", - "Italian (auto-generated)": "義大利語(自動產生)", - "Indonesian (auto-generated)": "印尼語(自動產生)", - "Portuguese (Brazil)": "葡萄牙語(巴西)", - "Japanese (auto-generated)": "日語(自動產生)", - "Portuguese (auto-generated)": "葡萄牙語(自動產生)", - "preferences_watch_history_label": "啟用觀看紀錄: ", - "search_message_change_filters_or_query": "嘗試擴大您的查詢字詞與/或變更過濾條件。", - "search_filters_apply_button": "套用選定的過濾條件", - "search_message_no_results": "找不到結果。", - "search_filters_duration_option_none": "任何時長", - "search_filters_duration_option_medium": "中等(4到20分鐘)", - "search_filters_features_option_vr180": "VR180", - "search_message_use_another_instance": " 您也可以在其他站台上搜尋。", - "search_filters_title": "過濾條件", - "search_filters_date_label": "上傳日期", - "search_filters_type_option_all": "任何類型", - "search_filters_date_option_none": "任何日期", - "Popular enabled: ": "已啟用人氣: ", - "error_video_not_in_playlist": "此播放清單不存在請求的影片。點擊此處檢視播放清單首頁。", - "channel_tab_shorts_label": "短片", - "channel_tab_playlists_label": "播放清單", - "channel_tab_channels_label": "頻道", - "channel_tab_streams_label": "直播", - "Artist: ": "藝術家: ", - "Album: ": "專輯: ", - "Music in this video": "此影片中的音樂", - "Channel Sponsor": "頻道贊助者", - "Song: ": "歌曲: ", - "Standard YouTube license": "標準 YouTube 授權條款", - "Download is disabled": "已停用下載", - "Import YouTube playlist (.csv)": "匯入 YouTube 播放清單 (.csv)", - "Import YouTube watch history (.json)": "匯入 YouTube 觀看歷史 (.json)", - "generic_button_cancel": "取消", - "generic_button_edit": "編輯", - "generic_button_save": "儲存", - "generic_button_rss": "RSS", - "generic_button_delete": "刪除", - "playlist_button_add_items": "新增影片", - "channel_tab_podcasts_label": "Podcast", - "channel_tab_releases_label": "發布", - "generic_channels_count_0": "{{count}} 個頻道", - "toggle_theme": "切換佈景主題" -} diff --git a/invidious/screenshots/01_player.png b/invidious/screenshots/01_player.png deleted file mode 100755 index 4ab8c4e5b59b1c3981207a7f497b61faf073ec37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441685 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≈ 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

!tJn(VLIC_7D&(IqGc!8^OlNswhh&}Gf@eLOaY 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

%2((~Pgf$C8I>q!+k?ZaO9xy& zt~i(cvUR9qi>GLd2dkoa1FNw!GGTdSFffu`1j#YYg!&e?;+fWaA6mbuz@N%HjN$)jB_(Yvc`GTjPprtV zQ-*+Xt3`3c{7yt2csX@k_-$YBBa16oVhd9a1kru?N{FB-V5B?I^L-J-zWyCER!gk>JOTh zoF3+t-3&tEZWX&p33;ss)6E4y7B$DG-wJ*=8acH*O7XaHNq+pG>7iMUDkW_->tQ?6 z;$pLi2(ly^9*|RhLKVMA`G85sl@;-l?|ZQy^od)=)_O~!Ct?Fh$%>`E>AAU)Dz3_i zm&H(U36!-Y9bA%`%a6=ZGi0@Wg-9<^`%%*N2lBZHlhHm!(;>hsrvR>~=uXe0jLDs= z_g(N`rdy6|;sV87)5BgzNTVkQU0%`l^^1{TzjVKvd%i^ItbDuoylQfrep#4GGj^_5 znnNj&)EMhN=ymt>=KB1-P4||60DX62^EFUz}Q>np%MRMx8v`1@Ll+-;m%0 z+7JgSpms!vovqs-6O)-_WnxGgpwu+tP040721%n$tWype4#h0dh&sbpyCfn+EmW}DAG)y!0Q)D<5&=<1s{A+An1ivAT(Ws_&$?Qi*v+6`n9ho`Px!KH7 z$F+P%6Y&#rirF5>*oE+{VJ+gz4c&g;iuJ3RJ44ZT6^-_kg4;*s-S(9BJYDRrztnzp zTfoMC`{K%N|BpU2Mwh$1d-oTJayDjN9qjOwc-q-8Y&l}k^;h|aC)*tp3M{iQ`QPO~ zg5UlaP_ADcUvwsT|3^En{XZw^_Z}CZz>Y5CrtMd=tVlUh;9JmKRB(&t&@5>ILN(u3 z?zP*1g?0JoZ_2h^v4|SnfX5pW%f*+;*`lxp&rlB61&XEsWf|X3yk{<-OcI2VO#uC& zU*4Ii=~shu#h!DRNeVAzEQiE=){M66#P@`g-DvVxyHGb$d)Xwe!(r4T0Xk9}O9~O@ z>JeCLiW{%jkEaE{Rk4j$IhH6&iro+&>yjMnzMNySuU1q~(o(P0O8CmGk`I=LbIRwj zDmaq8neMaJA6(bN{p+GcwzsJ%S`CMnAvovcd~?%=g;>bdu+&MK$(%CD_Jzq__-YF7 zaR|Psgv{&NPYDjXmkqtO0nn_2S1|cGOB0V7X9f%g;^a_+8svX0VVBqXVyTw$N;^wM z0Gp9FQ0TcDtKX?1Z8{{s5h6A0B+%>$7}z%vNTh!yyN@deQrBR24w}tV!DuD#*^uu% zV+YF~sjSWta7;NALNRSM92TtUueD;^Y02Jl3)C1&0g!AFKr)?>!B+)hFcA#7LjcEk zu^D^lM1oRY?@DB;45pE3)2eS>i+)K74aExo&+GA1amSi)S#{>W8-zNlS%mTuP0!fm zvHW~5e8~Yt*MoIFT7oj%j&S>q3cho!L?O-AI3Wn~x@<=7-6`V6$RXjWMf>-v)}fRr zz|O`ADFD2@YwyIhFTQ+Tuy}pFo7WcLee%2ZS9iSfiefz@x)9?SG)r-piRADqE0(Fp(Om6&N)1fMKdf+W=wpYXN zMrAaM!bT}tNkt+)$A-mAowGrY0>e`T<5XmQ!>zC1EIvt-No*Ebs-xbq#qe$EUvCEW zWq{O`^h>zpG0j*z5z{S(sM?UFVKv$8nUbMC3#S@0P-e~~L4mj`%D7;A+@UAg;45l+ z$561F>mo|+^T15mO`&(%s-muEj&p0+ir;bFO3WvjXPDj~~AV?zT!)eC_u&-_?<TAd&TPtr0}h#Uxmq!zRnRL#@YPKZ3T?(N4?Dw+x%2sr4Jnl&xovczHMdx|oWM zTZUsjaNnBabq-~+J36$&bl!^1x|8C&>=$u2!@k@%XW1rRKYaThM`Vkirg&!ARQPMt z^jifeeh{80c|D;C;gv#O6X{Hskm+aPsimf|#2Kg4aDhN(Nn*;;+79wr1}r9-+Gi0|N?iIc%Z3}U=bT8RE7zy_5!gc{T*%BSWG1JF+GYR(_udO6 zlSZWz1O2F^5U(H)H&^M)^dM#aOQ?D=_AA*1;b0{(A4^xM-?l{Pj6*L!vs&FiTrSR=$1=o3Uh9T zIn^4P<_mSGQ-9juD*kXJ)o{ttdMVxa<_AU0Yd?XdC)ytm6H|hJX_h1FXGDC$%fCem z;nSD7?=rS1G7vEGl*T$yOOv5OvBN{SQN*Q_Po0Yg2GOB9wh5a}2l|!xv1YJEnQe9wp7P&9HyEtYNl$6tXVRF}OM?l?h zl{eK|tyT{udd+TQ58MPS%H6Uw3b_4Ik!ODF&bsKzI`7IlURt#HkoHF}1E|Ba|EiFU zjYTJg)i`E}LotIz5>HM5(1)8z6ja1p90;_YvwZrswzXXl_3-TO$P5HliY+!&cTA44R4bT$#$!_g>+xlmY0}o_-5uVnvo|bb1p8D`S?~*?Pd!I z)Ji>*o0Yn2PLSqv`PsXGeD~b+dWJQ;`zb3U-d`3?4qT3kOlv~5Tc=}FT^Zl{`+D3N zCH2``cHTxA_&7Oo7_x^sFLOzY zPWVOrq;=-M-RsU4@1fCbo_Y^MTZr=8yu}b zWkkQL+zZVtxn=vjg`dv!i4oMV7!r{ID|72Z6Lm3SQnBR_aV3AHL9Sm_^y_?UDJU3U zbhS02XeE0fACu(x-kG*-sWp683{ymv$xl_r#TQJ2AaD5|q2i#-(o~Wm`I5cqy8&aa zn*bYX-&@a(ra)}5Zs2(x@s^FhC<76d)l}wuIMaW%VEnnICQUWgEYQJ%uipK5>(96~ zu+2DG^YGUI!-8nj3RG@xDUaGT2*~9ty|Ml9Asauw-TgtN%IZr>^uhzWcir7H2TOmt ztA`)H+_(G5mF{=+{WV#7^m%ggp-pKMW>F5-WP5n)5DS>*z87kho=tkG5^F7zk)IP? zuMw?aG(yTkL%~quKV(UyVAj!N)`F!qa>Ju;rpkEKgs_l|YHhV$P zRZ*NBFc(A;R!f9KL4sdTE^lP6Wm5`jO^SS83U6t;i=F^xye9^U&0i2`T}vA*s|bl# z&`SQM*(9Bj;zmi(>ZT4eySL$ykA@HA1DVCo0)0FrCGY${cUtrG7}Zc${)XtBv*7#7 z0(%GOgPvIyBX;cfJ1=!t&pH1APnuy#_2I8PjmpZ$u*UKRQD=HdrIDXZW-6;m{~Zn9 z;*s7ChX3JC8tP_~0u&jR>RNe@g4~Vy`y85<%+Q0r=>oj`4!7FLeB%Chm>i666Ht&w zoK+AVeTa@%!&+^+0suJ|tXRGVqzsxtv&j0iCPoCunhUp3bKMg6}fYgL@o zXU}?msCcEyFIEsj6XIr##r2?H5<*fEg8S;$sP^K(WN(J} zXpZzim}qB?cxR4i$0*~EQQ9A)^v%pPptiHpj_#`L86F{3N8|j;IiXo+_eWE^`i&IVYFA3{fmk+omO@)R4?W~JG8*GUKkzz ztb4P-OE4kzX$?W?d-&UReIb_neuAO#`nQ!p;0X^K>4}8+W7sj!LVu0Nc~2#u5-^T} z?CPKmUFc71vjBYNkE>n*Pw&0Ud1S8yPscYe27@v4#b~8m^*8#IoEDkS)lkGK3XjG3 zfaKYCgTvQT|3a>e)4RQF>2p!vM_ z_gv-DS6t|f@1-v}dvAYhNcr#D`*r`7a`ls)_!?P1)paB+A=)c{H-O&!NfvU@87Wk^ ztn=V}e~pHUWP5nhA_pkrZtU=T3p6C#K&pp*WKs7SUKn4rUWp4$c*y46Dd~NWu{hDA zU@i4eRo{~lvU%wk@tRa2PjR&&cN?1~NRmGzMf;RX!sp*LLqqO;4xi*1Jp_Xble!$r z1Z}gz#qsP$t++R0{p;3)+eVpW)D-=+abD#yWDb8&ca~=oEQaRj4v#w7`S~PhYF7Uh z@QEFdpMfTh(@w!?r4f+QO^5(OjgXg`VM7pxAYPi5NTjCnfN6)WEefFwj=? zu8r`lf^FWzXTopgy;JyLsEb)?n8H&D!)Jrf&`@ohF8dMwm3ys{$5V#(o!f((Q)Bnd zl=_h5-|p9(Z5CIlqu0a6kjFdwk_h zLm#i2LVm3hmoSUQOcbh}8c9_RM%+56tbUj=Oi#)a&qnQaVT6=rl#E3(zr_a;(gALq1gFlwLN;tWheTuTa2R zK+yv8D=l=-i{_2Z)Q-)3-WB~SF-@f>MxrGGD6`Cb^{SjVK{SO?0r{Ro0s0u%80ryT zEJn9(G~DjFbTW(HXwCL_&Y#<>CV?2e7TuEZGXAFU;u4j4BY(kH^YRtFSzv#1twNgp z(4!0EhB1~qXIgQ{kH4t7D$l0{Zt)fe zR?2MeiQd}A@`~Y*ph9~IQEuA1BKfTSp_G%s!-xlr z{j-=Tc6L7yC&%siv#Vd3Uzkz6G9@TwWbhe- z*7+u*QOX)uRiDhPsO0Et*5PU>fw%GMekav$4#ovk7ItP{ZZiF}8_=&)eWA~SQ%#H^ zY!^iqH@sE3Kld}JWfQop_R|j3-mmSE2rv0W5s^oCz3{q$Fb67Ht;R`AYVh%mk({>A zms}%M@)|UWSC~G1*Z6%m_uK6^QjB2e@JP7$h0C0ETkH#=YL z>@qt!Raf4oF{0a>-axzzLPy@c>*B>_9ONUF1FztCTr2}&$74G`#ZkN{xI;Km^o4}C z`03GFT3XpjK3P2cKZE3nCv*nB=JMx*-lbOht@}>-rXLCE#w&7N{N>Gn;6lt%rx$fZt zC-}7VL4NOR?fCb)F|g_h>%!*uw?jW%&xuAa^wvi!1VrVuEK$cE6(l12FN(0BDM9q~ zZrfGD($*-y`1=_AQa!Jud1yo3l6Ev|FF-33$TP_R-FB$40On!Vr?0n>?^!Nm4%)A7 z`Md}JEqLD%Sgp0b=p7(@JPmSxn$B*28mRx+e(t_BQmQv$n&2|7Z^)&utBgmaY!ChX z5^jH`+TbyuZ$rVxtYuV6o<{`YinmHr`F>_NT@qbZr^)7LP0O`Y$Li^cwr;|-XoyMC zK;LDOD5D$^VlP#K;7a37RA{jQ@TP})#S`c{+$(NhqL_T*yMN-7bN&cd=r z6L#i@_3@OlyJIFd;$t-)CT-aZ!m<^61rzHuf3t==RV`Fj>J3*x6WA&2bfJYRVP>3| z3e-jtg2{fAT5wAM8q8?J78}p^JSZl!jw*f~SIp;Vq%En(OJu0q(zj5^wzP)09AVCi zMatTviz+=S+ALaz@iD+aC7JXg9RfD zXrfjyV1gV^rOC!)T+k;*xw$(~w*neybqgvvaO!tl8c2>5?!i)e;zd~uJ~psfdH8~= zdhGheC&SCGz1K(950^IdD;D1}bY7j#8q7)kvm;NHe)TOS&Kzo?a%aO;zUS55Ly z4dKefEu?~g9YVoS7>)agq(IA?Xva;L3l+NxV>& zK}3>HL_%u7$R=T>qWL8^Cp^ZaH%6=|E1)PwsVJAVD1o&oLa8Xpt_a3j5A)HXlC$d& znAN84q@^C<#&O8YaVw27FNKi+oo4KZayQbWj#m=rZWjSZ7uN#L6W)`sx8*DDB`fZ^ z7)0oEBIqqMV7W!_A1DHUn)v@TOlP>3OjUneWGq=?toZ)1Y^kz*^kaG7N7gc9-AWvE zh#cr^{V*_romNc`E!Yvw;&6y)uzRyt`nXhH?p8`u%BlY|GUB7Ml-xllVyFP$=jUU4*f8Ti8%zxl59=F=XQ9`o_4B@$ z7FAvKeUA|ykP|RCIOYG~NcX{a3$-lVHWm-)a)LjoVc>Y&Lx8Ujw33HA*J)oj4{$wf zO5W_R>S&VX&kdDEXOMe(mBeL`_Ge_~Ka(qG_~1(;BeTWwIVJUM65?p!9?${LluV*%=l^cF`^?rTa z0upxYbyfvl^){xFa|yC4Zr@Y$>fVSmYAHk95nT_HKr;P)6_#)*&G|(I#L49 zx46x!LE>Y|UY!{rE}zjtzV*8{o{dY%Z00Qcb)QUIfneQgTI+jgAu3U3Uxb;9GFzLi zzJvA5CbVh-G`O3ak9JD(`Ho|h`=gj-5w0;*#VYRd4TrS-7XHGk#)eO6&+c9ahID6V zi~MVNH^|-_XqWF_v^o%9^lt5qF^8-0DZa|;AjPTIC1z50e#L;`hDdtvqy6#SFv0!q zz>D^OG4)>O$xnSeR*y7op?g@z-H!*gx9?^9+TVb3Z@8v-lLn}`5241&r=ifyNvGUR^)`aaA|1oR zTw>oy4Vhi5B=nAdz2jVOG%wcSQEC)#=gn)W>~2KUUzIUXvm2H@*KvioAGoLLoLaL; z_5Im{Pv462OtqwQa&N5mloyuK=>?7b1r>QSb#pTnezO_3kAuThAzTe%saR|nWz5Z7 zX{hTuRxCcK8e5a2ZA^V6&SXX#-7JCYG{OC`pZ?>o{R*=@Mfj-7r+KxeUy2zVsX>t$ z;HE^8*wk0CsSbIuSb3>gqaoFF{f0jisz$324IlGTs#`8vWJi%-XD$d&tlwOa2Mu0M zNq1(~O@&_6i9=5IMR#c=A%nXwnp5s0veqJ-Q+mWr|2s%PzXGs4Bq%o<%Kw|rWwMn~ zHgh@97~j9Q*yBQDG_Fd;B4UY`|Ir-1>&T~Bga#!+9~O{~;UrxNV%h594H`T*>Eh`d zSJenSJoPFJC`o54s@!Z?CYQR<6@MZ6Y>)O_Z^oHz(vGcdAgVz>vC}-d+$^TSROMBD z!uMnv7lwwJvu1d!<0l^($C86U(oYj&mCJ8I&134vE~L34;v5Kl5?(F62Jb) zBx0p#E~kXyPTqDO`@g)o&|M`;=_6;wdWNm*#@f?syOMT%qoG z%i1gi6yin_O!g8S2nlLL5GEoB#AI=OT{DA{UQa@-i}$xiupBIZCQMDHg$4;MPj|^q zp{XyV0Xj3za{?HaFf4nwl5;`VxD_KQ_^wOr zvM_@*)?x<*@`gkX7hL>x;*=#!oBk9?>JB9wTs`-=DCkzh7y_7_j_xN>wv(s&JeGHX zviOXSJhHuCpF?#*Fy{9-po0I=E~iCCR8r$d06a81E!q|m%GE8ATo?=j@pmCnq=SRw zXi(9oE9JsKTf*02VKj1<6^_3xCFsQhEK#cHf~A*s4`!1OOWo~OWB;=JN7&rdmW#Q> zJlFOW7u{j`@1$s;LUlG=ub6h*lyCv5AFoY-brC1!+?e_S$^>k);#w#Jc0*#Czp)+BQDFAi|f zk&(9d+i9MUmxm51(!B+;vXf&Q^gIt-C-$L>%q!T7*9JYQxtZR?_Xh-{_qWFF=QUPq z^FS9fCi*DYX8zhzl^LEyH4T%&>Q!(ZI$4O0KMlc2@ee3s(N8|;$gs?n3C)`}U z%2KsJI$I)`H#r4GD@B2(7Ik0Kl4ewfW~{KvzIWo)5;Z&-LEu#gzM% z?mI92;#NJ^QTs`&Z*qEE1s}ls%UZMTuPZP7^k2P%`0kliyZY-dG$(dmR#dqK<>y`& z=`H-D{b#{9Ir+ex99lmu)Lb+_CF=B)gt|Gy`M={Lb)}36P5t6|(~l12ivN%CivhS9 zVFL`g$H&fTV}Sb8=V00}1yNF0WPM~K+f!qo&Y+r&;mYT(Wa6k~;we)!DN!}6R<)?> zH?;lwy1ulQEpNQRd_aV<(cUpGmVw89p-#Z>gmYs`btLd_v6qM&Z&~n?Mrd}yn;P3_>L?FNKyA71Tu>C+~A&zEEc3ch_3~HNsS^=hzKZ(>Q42tfn_I_-vXS zDi_xdE+|_MSjX#MJ2UFTH0*me%X%%$dJT*@WUN73tih~6l?Ab~b}3_@v&NmVR(c_J zy%9NHWhPB!VuvK=D*PQ-#P$v#Vbh9i`0L%XpL?g`yJr$kBQ4XgwIPYvL9uX} z#6p*v6tk`m1Kcb;+JbL8C_0y31xbknosIfz(>Q--ubhtOD8PV{6hx5pq}vqaLtm-r zvLNJmp6h&Y!nmGu#+cnBbHc#zMN9anpw2_W*_b)o={tLU0hA$DlHpDsJK=s6w}`$$ zc}2s3TyRtTu{L^-^uWvTBpQ<@m7y2{v(|UUjjq`#j)n7Q(}_WsN5ZFhiWHCcvD_;+ z8WgdsepASnhmoi5VvB+x!mj`E+;tW(1#C^-63`mQfhexG;!Y#yP-1$DZ zg$nUFW3MHuNXaTRxDG6mF#A>&udc17X%%J}TsR&}-$EIl9;8kGc60L-@Nn&}U&mXg z6j819kP@D*#H(JIP$$bLjw7>=>NYL0Pn*6eZldk`k973%I3FX zatGp)ax#)A;!gy(i7SV9l|_y8QXU^JL)WWg!B#t4e$+2L%kiWtTyf=OTm&{Ye8TR< z+5pi)62)unYI#rQ-m<4`Cm82F)>e`F0BuH0Y17%d<=UnWk8|Ef%M@ z7G-L~YNVSPyhv3}E~Pqb<_rv?vaNLJpEveNaD-kE1k!cR%+~E{c7jWWCxNz5GmZ{Y1$p|$@1P$ z785R$P;g@yjOWbBUEWg$`?Bvf-#p)hXoIT`bl%*=&|8Ljz!X!H&R2EbZXzez&L8Vq zx))8pz8Ub!Ephl8&RMu46*N!N_w(eMZ#(oz<+$^4WXbcv_-2jZY4oktqeNTSo(j-e z6`2Ok&>|NwB7l`kkGL8pz?Z%7^Ti1nBRmq)EAQI16s41zl+h9CzXkN&A1y zJ!R3nT2AoYCPWtelQ#EuFLAnjLIe$s;rA^Kpi}#wN9~7M@=rJvh4S9fUY%C|vkY_Z zD5@a1`Wx;b zC0_gKL;d~Uvd6m;0`sy&rr|dLb-wt2Op!VPd>qI$S0PEb=%aK7RJKA?=*O&0W;zaK zGkrw~3{ViOJr>y(mXA?TtuGjDOl3Hz(TQ%{;Z09!@^9RqkGgTO^t{_?vFZWWYx=FS zCc`mf(HBX<&bzG!OV%utZmbo0A9^e!dN>LW>kRKpsSVwGx|xsdhz4WT{a= zH4iBTlCTDn2=Q{nm~&86kOil}xMQQFN^{H$!UYo3bGfB?#IYpKxqX5UeeP&|0%@Bi zc!V5ioX1_xsI)s#bf^FdAi;DadeJ6D`hIHQ7pM&KbCQu1hVTXW;O$Y96AR2tU@|APY}Q zrZ#O->5oa4@H^B6+LM%QOQFy2>fx)}=uj2|lyzx5S#2#cO*DuHi5yt|4fEF_7HbS~ zkwEY_Dq`V=B3o!sm>S94O+xtjH=Bd6^vc!de(%9ZGnD$e|(^uO0yPH2xnNsK(wwE^~1Fx=sSfkvGXh`|KAtby% z42)q23?q@d)Ix>)j)@eimzMiMjs-oxI(4si|FMFkLVa-4fwQ#Z8|>GoX_qoyDK ztiY+4L|-G9ufU$?SCrl-NmPc_=8fJ7Q%>Gc$QT3^)W=LmQcNGOn`-W)0BX?WRrG&j zXm2~yi4+Jz@^^Teh6L2gg!sv##%8}sDN@%#{r7>{OrhV$I7?tjckDJrqLr}ae0EXW za!CUDt$^j;@5*c?*a45N==V^O$kq9qtcWvZ*caBZPfvf1+@H>5Pd8rle(QOv&L$b0PI zXTLPel`DCT*sy%ugb%%rKEGL=-n!TE;18Cn`T5rLYmN;^=yawJlC&}#p$}3kR!Y}y z5R3e%sotQkrt8dDDWG55s8`ZxP~E6k-UxJi2A_O&YbMISK@}50scYT(BH2PsEzNM> z8>6JoL~0+3$?QFQ_Q4T}_r$Lw$=wKEeI79Wp2ODnu>xl4PkmJ9wcj|x(U$$EEo-d_ zmiD%eX~a+~tB1P2E46Vtd3OHzW5X7|M37aPgAMpPbb7K2)||F_g2w1HeP-vKsqkzU%+`Nd`11G`@_PMNM8>O`c9oo<}X(B|Xw? zI)X+Zp&47jObH}mw-p4-#A=>X8EwI8%pE0bg|i=cPD;J0aBN9z$?JCeW%>1zPM&^= z*luu~=ye-q)A5Ippn+wf%SHAh0aCY_4fnK+8Sa5!SqWWy@b9OF)opAur_D)I#-Q5e zdb=Zee%DnZ;3EFepBgWTu(~pbwuFdhWj~*lvFD|$@sVb{VrJ$kV-~Iix9BRme2AG1 z0ac+=SA|jU$#4LrP>)}195c$JT*#)J$JM_Jv+*8A4yUb+!q)i{JPt5m@Xc9=eJ4+v zU7y#xmxWkFl03k+(4(N-Ms6Yd*G{8Cdag4Dws{y(H_}hqct^YkWZ@T`pL{yFh0Kfq ztq{TjKps$_N(uw9c!nEJVpJmuR3jS9T%QODR1g-bJ(!qWgu_T&egCX^HpqAO_QLQ+ z%kY^djB>XMml}}Fl~kLekF`ldr5$2oe3FuLfo5_nCOOFOaPqTjb|KJAHtk@t++CSn zA2D&ge^eAXxd#FB>5djURPfr2c;X#2TP^uawvUqlI#6EEBc3sGZ&(MJ6v(6@jvc#z2k6$NYh^YBCYB%cKQW)vwL~AQHgF z(bN;|^}@TEn?33HrHco^`;_uYuG@@ z^l?GF)4&7!$rDG6scfIbm5A4N2;t7*Q>_1GFKNy>ow~#O$b`VvvbR&B)Csr#^l?wm zQyoLHrE?kn=H)Y-XMcU@Hjv4_;-WlT-5LpKdc&*ZFlL(=MiF`Tt2u6ahS5YRSuBOq zTB`p$enK=gnVMk~D@_7IMZL^H-5xw_2j(QBa4{62@%_~d_X5zcQQUBFd|0G4X5ZxK zIe#wc8((+SynE0gzR{V7GeN4+?74}uwCnj9_4wJ#bxym{*WW99^HJYnE(h8RNsLrY zaFl*GRSeV?26br7K6|$N_UCt}ozkRBnSSJ-b9}-cr4yv6^|(d*XK33vy|& zy2L+>#jSuvP(bGlHaV_%K+Q*%#rjZ~>40$f*IzuQ7pr8A#~+g#77!O-DnH(E zfVK#SPHT;Q(G!yqU6LvL{9hRZTs7eK8`m2$4y&2ad0CT72 zY{T!-i1`Kjk;XN+2iq8it&7H=Qb!q@Yzo;OIQvrXU6|}%Mx&Pfcv~v|TdBuF)wVpo zoLi9KIZKNO9ZbsbN$Yu)HY4 zMTFr_B^Z^}JaYkpSb&(ysT!rFEefD(wKy#1ee&_m**j?wkScR@n;qSsa}jYDXta&Z zvgpE>x`TblwtDILN0_Tu+HPawJ#wv}chh6@t?1yYzYZFb`d&X6XH#grJLL+I4qEWz&nIiNWMzO_o`Lde?h4fTJ-P9!)gT$*mv>_Z`v~$ zvauK|QiQ$tm7cNb;CruMW1rB!hxw-*ZKs}`Z2c*+TpN0*Z`gxpQw8mUI@=B_&Obaf zzYAf(XLKc;Y<7?(aQ%Kwj0)uX{L#>4xnzD(dT{%wiY$2vuO856vC63Bz z-Ha)-{qbcyT3}yifguf2HS=7#rF4uEioOP)OZ5^59u}8*FA@h{#-bBZh_xfTdzsbg){5iMZNA5?jezc#GooPDEORB#IzutI^9u#Vth;s@EP7Bu}F4g}0sTk!|nC(0d}fjb5pP z?clrXex^T7`6TiGdAR?sP%mr-$wUdTf;2BLYhBPTjQ0>iZ-Yu0)Z+%-{BeNfEk^Qk&*vugy7y%}kn2 za+*#1piK}~Sw9V{vO23g=ClIldI+_C5q`XJ#4wBUMw+$PNW<39(0IniaOTE%mY!3l zzEhg6t?|^R(B!em%vQ_vQQOQ>)681ybpG42Z^ae-GfKAQd-&l$|5>99iK8kuZkR15&fCQh$H07q9ami#y>wDjawJP1fa04#cn zC|(yps=W85r->?;n7E!uM@YBbqNfSqwP<;>h<26wJ(aL@5Dum+(jn84(f-xE zoGp0c8BfYMm?!RAl0nL*A|4i!f0ZIT{#%t{=j!CpewD#$>$Io7;j~H`Uxo^BGd#PT z`Ettm>EMUPWZry!;p5L2sL*p^z=6z%0l2itzRqDK0Y_=&t{pIH`0<9%5`NL%`07eF zCmSPElc%H?2lQps>k88XQrJ;4urr0EMg7_=7dO*?Ikj`xAk z6p9zBWXjdhTQPriwhd~aGz ze_NSY&>N@b*h=AIiG7`-k4V&?{M5U2$OIPW6DU#bM7(Iiu`h8XXO>J4}WVY1!Bu|vpv@pv*qED`8KUm(eU4Vh=t(|jp?W=+? z?7*DanfrZ9m+y5ofv2V(rPAdTQBL0Y-C-60{2XJ?W?0f>_D^NXzw9H9=RgxF&5U@};iK z%x&>oQOPNSPj^9?*@XsgiA#IbzCCH)mb_ys zre`CfVL-BQKvJe6tJ#6xeM2+*na~Xt0Qh8ucPFY>F%LLN0G?bSLg``$)|_>roYn9* zsrR-t$0^Fo%%#@cX%LPvbs@0)b;;$8V9xaM5@gv+c{1I|qVaSI7l5QpWXC9+HTtr5 zi4UhUG?m`sQcfwDQW?D2r{FHNovX6 zwBqaW#%>Gqu6^$7y-oucKOPrZR;*MDTANA8>@n-?QPb>h$9&FtA+>SEfEm!P78Waa zKor6wkUT!|IVONRZjoo-&$O9pn`J>D**N(I*>F|qbXhs4l0urAj7)p7a(QluJ*`CmBL}5qwryQ2*V@r>BV@_U%4>G= zFe-krrp1a~N266U()N-Ur4i0=YBBM}HnVA4<;szj+pw5bS!T_%Tf~r$+ z`GC}6NFKi~0bKgn2(K^m*v)~?1iTbJQ_~ahy%Z^YZs+e=7w9(}1bltzo{0ie?|ttS zk#8?}z5!j4kw!jg?uq@AKN1ACcN>V7rPd-~T5H#oCRWGD8wIIBE^U9v{#WetozM=* z&S$D8R-|r5#2V(mULby0L@jA=M=LOtwv8xoGZBoIQG~FrTdR{Y3?tU2 z<4xY_x|JhRT#4?av~)SP2l1WD?oAgAI{%kVEp5z=n)56ZR!|GaeGKD;Ko-?NWN3KP zps0ml!=!kb{lRKyllktZf9vK)8{7(pE(+eAj6_$bM4~)`bn5}O&;i+^BHcAHxDK`E zYEoEyPxxLgt)XAIP?|me(Kw!HPn~->Zl4}_Tvt$gT&T-&l!d^u3%#O2)*Pr@Hwk2u zQ$7w-@9L*T@u`Gq6%M2nk<&}W3#bJ17{&W7fZ}h%ovDF`p4=x-$SR*Xv?p! zYm_p}h+;Di<`({-{i;$rSuT1|KKW;ux}zu-E2-NUOU6|T%SQo!S!;gGh;)1d;FaO^VMKn^A*30zF%Q~+)=sh7=J<1Kjo=1u*hP+AAKXB+!{w)h#hJhA_oj--60V(|9~?C&O+2UN+x5;& zYRDsQhxc!2F^)7S=F7m4GWGeYg*hg!S*rQ@s@AW@qm~QVBUD=8(>K-jrO=-jH~Q zmB>en#>|>f0DT4<92j+X*paCSxZez+_EN|s-=DS&EQyi7e1VI1b^M-BEHTXlO_G5^ z1eA3(yLCY>Z}*#B=T%5h7C;j=9B4+2{onc-L{%Ueop7hBRa&-Hi{?yzPm z^SG89uhyJn#i@PSxy@?l%<0c*>+ZRW^6Y+Lp)_OR94f<()?I*3!~r)_4~GlB-sdMJMWkzGQFmcmxbt z`wMI6X+K)ytrj|GAE~K*Ls)Rep4+Ru%=|7K9kKc@KF6QKWK+92QwL?U>P53!PUFf2 z6Pl%B=J`T;jS^bTVkA1152ZMME^&f9D2X8iiOKvO=#KfxFZz`GJhs&?ZLNF9Huqr_ zLOw7kPgiV5cWX8?Z1cHhg)IM05WucbrHo6mQu*=qGN2>(wZpL%RYw(7_i5Ns9l!%n ze6I%93MB5%6ckn2K2hmjZS7=NH8HPzs;-(_Rya#XxkXyOP*Ox?Uf4A(E0q#@hJybp zfD!>GANOfZyH|H)7#R>+-Zmy#lfc$Z#GHfc%4JQ^390}X=; z1}a%@j{njuiClgHI55U}B$W9Ri?-EOM1}C?rSnTK2pHY@Gf4!V{ooPghZ&T6#vY`e z3k9}GA)%&<0qpv>Tc<;br9yJK(Rl-jf%26gAt;O6fDz!4Mj@M1O}qcNef(e?iC=Nw zukSFvzx4?4zdpIzzplu|ov(_$-(?)F6XXNJRwr<}`?HO1OW-Q(=n;A2oeE#~IiQs} z-hNdx_%_&yeNlRhPDi{RI9G20>Qettu6TeZ%!GmnoHBjTirnk$zlFQ+;ttkqqVC9Z zv{1>a0u*IFQSq+eh0}d%Y4I)saSk?Z})4O z=k~hosXWw+9s|CI`FeQo>XPW(vRIjyhI6u~IYRBf)6{%)D4xZijk3`_yHTuS@O+aA zk(nysQeaRlMl|SCsjP+eT_orEXn*Ef#S*+L($)0Ql6pWl^ zf?8K|7RzQ9)5ezJ?16Fu;vPhLuiDOR1BtW~6pc$a3vy=m*6WsIs`f4<91bfM({a4^i<6jV*jOCv9EiNLoxr+ zLcu@-IgrZ{hAwcru>U_kSS6=XDVs_ohXq9Cc&ats0#0>Xrk(pTe%i)Yxc{dGkT>Vj zacW<^Y+t!-Tf1!6yYyWC=(b98*sQYfje6l*N#~lRL`T|{BGMuu_AzfAyIZD>HJ8ek zWogldxLQS4x&s@d0Cx71Jo_D9<%yc=W<{YFNnUahrtAnt)$(Vl({@;0&k@LTi@Kzd zqRECJDeCvE>2@Ql#{CR3PJ&6}6AdUB=9t6RuCRoPMfS5~wf3>7K=FtkJq3^0Pg1?; zzIAwdZFqL!cy?KMdeLxp(xC#C!vxCUBekS`we73w3orGD4Ozr>*_f-;)Sdw}(16cmg;06E`o$)^2(B103sd&e>eEBH9sAvG%NPd2;uxVIbjRo006`(^oR| zLh#9xP$(0TjFyyb(iKh8l}(bARA$Tq46-pRKVVj}QF#Xak5HB+s*+u<(wU~x)7IJp z-+Fvr?O;JUzpQ+)o+OpF;#XZ6r*&x=MA6C&a5mHV;ics@*d8iQ+su5=bF-U7sd(St|9L^?+`RC_> z(dJ1-(Ieg*I4I5*_K@P_iINo3jF~U-(9%TY zfior#YqdFOdx0(WYf$KhVTMj}pe}axpZmZlwU_b7z*mSeM@B?-eI$6>g$X5X!zFw7 z*JE+ha9==QSnR=s!&=$)m5P2BVUWImKU_U9fLPuGHQE_*Y*I-SfoEKqBsahqr+;X= zC(3*fiRv8i@GHO|Zw1NAcX17~=Xs-i?x5WcF^edY4;f;r1?t zBdn+nCtsu_Y!c?kzU?Q@yW}$Vl=gL}&GIFKVwx?w8iD%>{ zuq?(}*dtQFbg<;kV3HUkCtIL`3-U#pgmSJX32d(rt!WvHd#Xbik;_i3k(`~($VZ-f zyxs4yH<$T-QAok8?n-Q4#_sUn*)-zWZL-I`m^S3lwfDEDz9R_Ym3h_}f z`^hf~`^#wUFkAa#@%3tUmrp3o$S4e|$jxaigG{7hp=5LY zstj*hvP18pS$prwOmAPtfk)|^2KCstc)aa?HR=}*1%$*oDxX}YF>{YG>J}}I_%9rZ zm%;9w{ZqL^1+oV&ea>hZ&ze7>&8k$37rPiT(d=p)A}Cq?ZCS%I&f&>BxN5(+Au%I6F zha0b0YenX=X${4yhOFaUqH5cM@{(ud?)HLWyFbU6qZ}Zc^LKk-Dj2j!z58QeI2Hkv z1p+Gw{b5rCjf!J{Sm$7a_}7VU*q}&IY0b)r#KKYh%TUbHh}7bt?DBA>O0Ya*kppvL zCl$GL42Z6}A!GmKQH?wo_lpZBBvd-=J_*Zq6RNwdRvxyZ*>YgmvY^>QFl=X4buuI^ zdegJ9VUP(ev%4AC9lp-Zno+c}q>U@krrwUzZqb#wNI`Riie~4d&0V_i<8P%lpLTlP z;4!d-7RcbdsQ=8LXKgP4&p-FYOr6^vdd~|_$k~LU=+drMQFbheH>$-}$jJHRp=iaU zXr-Z8l_lJ`z|^b4oSDMZixT$v3B2(OWbyd8G~e!7{i7NGt(sj|LA54t&>r4SKu_4k z+3lL=cEEcy?heVfDB&UuEn`Z79|Lb9?1HM%H3lF`SEm&1x+6s*As zN0Jd)GfXP|Ku05qCuxUwdOSFI%O}EwsVxVttV^oTjHyg z^_Fi!`-ats?W%YBQ}Fx(YHm@$pGj0`upZ&;7NL+J?uUdP4k(g$29W9oUww_ymdhPV z9>S7m#Btxe*~Z;$?>$|}3p(lEo3OC^R#wwn6=?66?=_5w5>&NuLpr3;P_QrM(Ajws>?>DQzn{mFj#=t43-udA28U{-eQiHPq}8z0 z=|)-Hit5{0?Z##*SWc?D!1hxaJ@FWjfeV{UR4UrF)?nTFK!HDBa*TQ3wIUWzJlL(T8Du5=vi=! zTfAZrz}*B(>fYH_pM;42wS%tIp5dX!zx8bUzc~Z8W5}=R^@O`U-CMg30;}8?ja%mj zuq60_!Z{v+W90%yuVH-OZJ@>sL;ZFeRhdtLH0coyHMuOf4J<435F8% zZa)V7nyG_FCh_+TRN8XCaBkB(oduw>Kn=K#=Y3~q0Gur4=dkgzg*Yvh?NliZtW^$e z)l#=ii7WPme^q$x*=;58Q+Y8zfZ_H&Rd(>nni2Zrm|{Z z*19Qe(v}bsV}3P`F~+1oR>7aPqbrccC|SKWrS5rD^^ZlhOGV5&B_c+UHf?P%%wtfE z3rA{#?b5A}VBjwo#`2R0|10(2$&>hGUkmG9ft>k0we6Eq<;qh4y8k&v%MmhR9&?%U zyBpqq4;JPvWzq&Eb%{iDzhQ8PWH49hpjuK?g?wa%cw~ceVu!HQS0kmbN=hCH`Rn!q zA9Q$QT3S;rj;h94)$%OLNhf5@+T+{peLLmx>u|AkL$Oy`Pg*UwttXryc;Dejkcrsh zH|^wR`9e$PiAz9`{f@aqR@HAZWiKco)k-y$N;TkBwNy=|R7=HFx^yyAI*lVM!i|tI z0OJ%Fdo>h0+h5YwU$eRw+cw1VxTTIAbJ@Dy38HdPUPGCepWw!Mm$|%pP}pxYlP`dc zLd@!P!-LV#XTKAAf08S(|M%aF|I1O1eBY}p)mC86#Hi+(*4>_Z}e!Sn$_O{k0D+?&uVL{u+;m zn9_&5`o^Wsn1b0-J%}IMN>a#7V7vGUc7V-06mcXae^}fq=sLXw^&fodV!poVcig<# zx|_`6*zSxgBWXqGcCq@kt%;1*fy{3X;?;jjW5q4}a)QZ-(8DDM1W7nU4ZDfbJ}VyKk3F7 z+|pIa;=wL)N^^4Qk8w~@;wMsMcVrn)NnIpOC>_BT%Af_;b@nOdg(vJPrjog;u&OwDx*Lv@tF5`WB=R+< z!^PT8=$Z3oPHjcJekhSsFsqdtS+feNXA;Pl$-#Sr1=b@a?7PXwO;i+SacU-LG%^|G z;57Tf(Zj;=Jdvu6NJ)6Z^8&V;rW=Y~M&z#H{u*pyMZ2PMS8{&MY0`tj8Ma(Q59 zRn2=I;$lOU`YUzX@d!c{HJYkIk*Z+0?23AI*?eW1Vu=Q4yy8AXJ59cEj|*O;YW^RM zHGRQp?NP0v*hjrxyk&w9dLJ4&;5?|DyfdQYa>yUIBCz}n+M{M-wXW7&Nc)jwc+|@O zl!(%v|F!d`7K-;oeEDvaIbg@LLVyhGz53-3SSU2~O&$(rg@q%#}cE8&QetKZI_0#d!{1C>QsqlGAPnR1%>wDJWrwTSLIWx7))n049k4 zCGGs?D?Y=+l_qZ2be2+k9f8Rdi z-F)WrSuNDsuR$-$Cl5`at3~8jC(w!)`9j>Uk#c7cr01Zf>FLf-VvELWefbpx{?>6A z2{X!Nzx9s1b{9DH8^4?L!_}1bYscw!=>Gyamr}s`dfU6=nZ?pHDinBYYhge#)JXOJ zgLBp#g>790^R}F^vqtbd3nHYlM{L^51G&rnn9IGW%fDk|bPA=7RN+^WgjjX7>h8yt%V2S9 zHS{#SQuSN8%9T9f0TI$uDT$l!bjA}s=qgcDs+9&g!$ju z{djc!R%~F|=0`u3g9)XnfVPp!*ZAh3{FuVv)u5y&dA6x6OD2x0=Ou={+ihk1rrbp)fT$&uPT}aI@$#~8VFztQquqf_Q^=c zE=X!G1SaPV$vF&>I1K4IMA(pdIPnl`+0#~SYCIsDdxbTNGD;c2Q#rNvYvmUA4s7tK z$6jYTyEs9)Jo|rZw!B8508+k%<+|-h`(?%`@7KrOfqek4&*jUBSw{pC@+DAM(vx!vF=I(QJoxgXiyf$|`-cGkrHap~ zZOs}7A`zFzeme-ljYv|bk82yg&57ecc;Ck;^hua04ti7?CPPve7x&2I;TPu{=L_`v z^#+UJ>wwHA&o!^qrgs4$bKlh8imi(0Sp;5GKlu@wApJa$&5Cv z@EJ78F6o}hzz^nLJp&exK&ZV6qRsrW?)$UFo4g(~F2dvcyfWK~F6X>5%YSVFG(mBM zeM+FwQ>Z;+x4ijRSa4)G3Tn%m!K>!lJ%YP`fiedoiHiY762gl3N497*uju&uB$68v z*^ks|58#QHs6irA({JLES({^Vvd%xc0_gWuhg~+Yb29N!I;g(ekPlh3-Vec3nhvQqiRqdp!mdeQ6lI!}!CmAv>A4R8!1~ zKkC_+wgk%*aIJGP+Pi8WY3j_WbT4GpzDiJmzuQw*hsVko@S^TkQ!XzFM!UYIc#&5m zq4C8NY-1u0CaO{7h-V!O(P{}vdhY}(C*9apbEH)LmM_v}OS7HASfEg-pmK&=tUg*8 zwNfU}QH-_c{T7pDpRQ1*#hGRhGs2zAAHGyK&rO&+L_Chow(vbS_O#}~cL2Jtu3%=L zF{zP0cw!A5=QwIlsV&J5E9PK=j-|g&^E#(mTroZ8p%XHhl`T50o^k2mOga*ROK|tV z^9R}KN5R-UPdI;$(XXHDqHrzOD>+$HMK93#%r$??lsTBy)vxqr5Tqu?z1qqXzR-yg zjM5rAN}}|H=zMx$Ti%%}UdoeD@?ol*hCV+1kjhJs@OVs1zagQv%hq}uAZ+zc+wGwb z18zSpfV97^bAukIzM<_^+*E=_QT@-KKaiN*bp9TIPv}t)_47XP2$Y#Q+cMZ#p@8-B za-eDV?%UcsvL1YY-){vF`deRQJY0V%5lWDLAoy*UnwKaqI&rf%@Vgl*K0Q!Xm^%>> z0w5JkXUnF#?oix0FD{djwd24hv9aBs?xsg`)ULd0QPMggE7KFc!^u|0XepaBg~^po zQ_BU`s-vtS%Mz9$>-$CV{X=x=0ZpTobmIqcZGX{8LsHFtSkL;9Nmi`KMLb0O)YNuc znt$mStEGjude9tv;S1*&vrldW8_XY%{KbUdpG`gT<&8(AL_Kmbn|F6%JpvfY-osMs z&L<9irGEbHNVWGe5L=>;ZWSyL-5{k*<6FdZOiNj#q+VwDsYO4m#rRW=bi^Pxu0}bO zni*Nk12Mmroj;4#3uesgJKpzv@fQaU5l=Fnqp`g%H5&H{)xQcQoW{kZ^RlkxdB5fP zzGdC9fNW;m!YhQKJ+l2Yv;8=;{XBGEJXT>8c|)0eSfzlJ`KToxN;>=qFDMm9mFBk{ z&2MUzT2z=(4cIP3k|7_C{asM$id`p)uC4H%rmipEqyn z$jvSD=%{I~Lt-Q$&+-oS*!u|=gSp@QZ?7kT-&Iq_)+^PIK>xg{j=<@^&yLr)kM*fY zTN$o4H0(YfG?29bHxGXOk+N-GCgi0}Y~lJ`=AH5T5Bg6`j+nwOxVRs{*Y7z~kNuX3 zdLj9NvA}xK3)Nda=+VW04cR80JaLEvbzj$E$>Vn~j9)ONExba^?6XVUFoo+2t~v$$ z^nrg6j*xW(;cUS00eawcJK%FrSSPFMP+F30r}9)<5*$+^yQ@iQN)eJCcc3#@AYnk> z`_r9;qQ8I4l3+mW&yIwa)A0M1hsj7F2bMVqRyrhjNlkbyfb`w7=}KMh(gm@faLXCI z>l{DLD0jRvw5?66^qih_PRF^sqnkks2lN3pEC^3Zy>AB$8lF6b4aa zALQbQfpyQ>d)dgcqXPFit3B!V61O(~76Ug$G44mK@E30X^Ijx5*G}>_dM;FX!5wE zZ8F9;7aS3JUE*|h)N*!IO#@z!Q2dHHvF@?Rk)07Mq|a`a$@|kqfEwA^gJ+0me-B>n zLYr;2YKkU&Y}7PG8L{;c)1y{KFiw_>DjX^0SG0`7Kyjm)mUg48TP8-bvuw(kEQ^{0 z0CWPvqdSFPHI$UoLgZ=(ai}Hn=|!2rB}&qR6f!@PtcNnv6Eqw|G0H@HHDzT>q5b1> zTR)=7(32@M>&CeJgjU6#8E&;jtG{h=mYV$aNJ*WRk;dnekj0BIra(5dAgh-$w#** z3@c~tcZvqSzbXg2t?_c`578 z*s%EfTG5r>k%Qyf)B-E=>S`q=X)HLGKOtT7%3g*C-USh7a@xwsgQ$ni73bq#<5Z49 zB3p`NNn(upm&Yn7Sp{!QOE*=$?!4jlFGq*IiD!gXN2`zctItAZ7SBAoK)O>SH+Rk) z!jG5&6yLArL3>Z3|Ck-QfAo8knL`V|d4tS%6&js;9CH00oiXU|&H6`RgI=yZUeEpi zE4cz6A<{&B0;&j+>Jk~0`W;y@L`eGr*s{KpOUImQzb%SNH>90wl8P;1ByN2W?b`M< zDv}J63Nqq`!EPOYd=*=K`%Zk#1(h4Au1 zL6Y2&g|lG*EY!s7bmU>mpjq~b%3(Hnzd_!Z~Ioa~^G&%2W zkG4!K&jkr1QSiODGow8>n_Z8|nfsp^eh~Lh1Hcwy2XYZ)_j%QLIIfx)xYft2KY%!G zxP#Co!52(m`h(c6D}U0Ae&T*4bAq53M^3T8UQR5RZ=_EguwAVBlV#iZP^FgZw_1!} z*I9XW<~R{a6u9I=fP1-SVs^j)2F$1Ezix81`&2C%D8&UDb=swIY5n0ef(j2#`m7}> z>QscswBY1jnlwSqsE>1GdAP$lZL~h|j?zDL{{DnW-N!vNLEJmE$t75N{&;^V=#rZd zN*oSl{$AmBf&?Qy;RV9&eFMfitwx|m9~_WLFg{*g!-8l1wO97f7@yGSixGPDOL)gQB@A zarCi01cC^32f0r;Dm8E!jOs0a*W#2b>P*}m{fh!D!6`YSeuKkBPsQmvNRqOWq~)W; z;Ra0wRIAXk82qr(b!|jSnp2VwDF9-hu_IYnI>N`+8#UY zs!N^rV2-3fti&G0;7aGFs=!=n+&+JCX2<I$Aqr>-;KA6#xuLxHcpuG;D@dyv<`nUZApqnUY?{A=0z~n(b0Bfiph3@|c z=l;tC5C1n4tlqFL@(2yDCc@Cbmk;CA{`DF1t-N+ZUI)-XdazM4!o}cy!dy5SMJ`J= zs3$F6Y;2A3A$s2bt`f!ZR|I-3&5L17> zNCKY{56|BR0KKM!l7F|{yhd2FmoeZ3E%VlXijsYA%3G;H^;0d?b~V{IDwdzWx%u6j zO0|Ye=+TVF(o7~(jZx@keJOGDRc}xbd~#sxbV4>Mei?r@okeK04qv_{`|g7fP!h*) zM>aH#Ne5|L@IqdIpJcaMwjOhv&E77hw62(QEc3MV^2gKIvzAPYmRuMTaHGHq^ifQKp> zF6C1Q#uZK_N_N#4t6Gj(QT?o}S$OifD;gdO^k_TXVgXL}U_)`^6VrBq6y=?56~aUFW$NX#(kJD|Z4dN8BX$Z-oU z-lfqKW6zx3T345H~zUD&_447Tz~9O-BkJN-<1{)3{;ano!aGilY%E3}+B7 zrbGH>OKNF`ySe}kc%w7uP+0w*{2C;m*Bzlzqd{T&VvW2)vv?F`fj!8IgkTEu3ziUp zjF2oEDta(V-d2>fqfm2MT6JZvlCYGbOIpSaoNP_4uq#}!BVMrc3k(F_TaD%}iH?OB zEejdCHJUgz#+S4>5?-vNA3^f=6147x$-F8uxs~D`sbqZ7WJu8nma5{CsuDiQW(%c5 zG|tj$qq4tKa%@Y#DkwGm77pJO4*w~g^;0~0S~_@Iyzi%I{ZGY+O&R3_66+f@_NPW# zd732|GzLSZo9~N*lm0QwJaTB$dU1YleyK=*le)cl%Qdd06ElOEeW-#vtIP+LNcH%m z^&ibJD~T#-E}doBQ)p#SwDS4$V)l;I%cqMsJHeI{F4byZl5@Ud1umGGBUPx-<%os5 z2)4y|FN_^Ps0yaw775xZr!1AOKA}`7>?%xPPMc32Fk4)68+F9dpSl`PurBu!+%ZSO z&~N{st3T11-Ve6WU+;_C{`T)NU>@;p0e6O2H{4G*WAw6_Lh#cHk4nxAk~fh@r@ehg z7Vd=?&g8h|SNaV9ES^tZFE=X&_O9M57?YM?D}t=#=)76fN9G{1DEnAVLVSrobD>fG zW;m5L<_<`ZdK{$AosO0=jLD>HC+h4BmfdYPE`XEf#AFV?y5~90t$HT^uB))w@QDC8 zbpn+1!H?Gh&?8Vy{E@i!=-dw~wHrAfzKwzzt=D6Ge?tSg%%^D^0mn>xX=}URWF~{_ z)(L9QVS^d;cvSG5589LZGm^OR$O1(o)E@x&OBe2)5LU_R1$(` zJC%e-&`5KP(C6P1Qa48SPk2Zz&!x~k3NV|WOTlj#qU}Uq8XpayHXMf`Z?^1=%o6ig zrVMq=G1lHH;@2t&w@OG=c&RFVdh&DFXjyqpUU(%=>Jp}OG2$7t6f0lkvZbPiaU+NE zl#+FXi$#KTsYzHEu@z+5@f0v^Wag|>ikqxqmsNKzk0{J@(lE6#Xx+=v0ld1-vH7HH zgBW&MvT0Q`ZCAc&R`k=15C(h~lrkL@TW`#}5$wk6m!JZg!(cU9gHf%PD;CcXZxW0~ z7lSMhjw}v?1~a9Bl<;?wY>A#!?2L5Fk}&YlCZ_~MnUs>o4{`U1=wo@dMII{K7zOt5 zlU7chBYV%e7Ll3sI!%u=_Qt^eEUN;R%hd@@LBFjj$LS9byG!1F&j)_f?`>g8=i^-$ z{*-_UsEc2n&7(5VyK_4jG2#l5+h20{Ky}gpc4V9wKFA~O>YmN3Z4s)2B}5_5P~OpP+S2t?mr@wgmxW(=z5^ z(GT44blzZb3o2U)xTkgvo5QDGaqG7VmMqbb&JAs=H#gzs0gw zB+0tcpL3$V97V+{iGd3x0G}ojRuXLdB-tq%bL>Ey}BDyD`M%q%1g6hK9KtKN-Wq3bW&h5T=KS#lURO3*!%$}Tb(ew{EEWZTVcKC z^F#$Y!g*jMn zM<9jyTBPXHW}?}^nzP$?BC&~yB=%k$nO!6mcB0sl%gmtR60+lbw9mXG#eNOooi|t) zt|2t**kPR(BC%~e)sQ)w4Lg;U60qLylCP5F^Acoo@uJxT;S99UT|R^^`?~5^9F_Za zGHT+*Y7!<(gS+z+qpWnajW#r{HdR-6Rkt}+_j*-;I{sF-@-nl^9e5j7A*?Ie@beg_ z7qNyOtk}cF52b21pQsR&dc^S+m97Bx8@`08N zT}1*|P0FG>A3P&XV@!t0u9{^-0+8{(1yR?$@M-KX8wNf;TzWW%T#b&2(d3bzzI#m$ z_Birz-$!R`1!j$Gy{Z0~?btp_MB37Fx%301khWd?H?BZF_Y5Mzx}Vhm`YY7?bRi4j z4M*J$QZmm5RKgCX@>nQE6>C!TMy*bj$!5ysWER%QB(92l4))K~Dm$H4@euWGQO9v|7Rn%H zQ%SHfiDD(CBv{toPZvitOg9XHchHoaH5#{TGDg%vtjwuUeOY<@TO}qZCMyza6M{@g zK5Q_y2!L@(W8#wK=!9jIRFX>ealxJ37$Mw1l`xAtIJ}da?b6vY%-M1f8pAXgS0Wch zA~$`o6O-K;&+Ss?Aw_<{t9eD&aA>-k_i18$Syz4VcZjGDE33`*hn36}B}Zo-18>TO zCl?xb3)Pd4$>*bF6DK1@tY92c(tt5t)4vVEUjuOwkkZKvI&p4`AFb1;#oia(YV8jG zL}y0`dGP*xpf!)7N@2_suXjOzJeI+v5Reps>|#EDUZqKuNLb0wosWU4V;D>bLfR4ys%##h{GEFm@7!<>ueaEtvrE3Go$ zt)7*pEdmwRCEm_O}~6xA?BhEDturpUOLxatT%=-(pQzrHh9 z}|D8RzHmPdohzwBiwQXRJ>)m25RDjj;#5KzzjI*+hWzh5eJ{;*Fokr~>>uVwvn73JD|Jzq0TVN92 z)d_1e=Ge@}!o2@jxrQb8jD~=p|D|!CgOqOzqvgFcEVN*h`yx8*l{j|gz9~$AddQw9 z|3|s!2e&?4sed(d?0q;QuT8fL#Ic2EkCjeRyOsV->D2?5>Ys*H+x3J^0vT5DOD;JZ zM%4Sz6@KfQpH+ahf0MD-Qi$|mn~dXy$=F3}HHcN}$1C@t7rA{Pn^Th(r&o?$Do&Cx zRvs}`!rES(7;C0bIg~G1HzV2OP&;iwztXNGsvG`R^!r=UrdipT6{=C_z9$6DX%2|v zra6Gank}lZbi?co%btTsD1A86%FS)xFT4D2_@KNBvdc!^8Z{C6RDq6kCNW}tb+!_=lFn#ruD|F;ETNqqG9HhPu5Ciz& zU$8;Il?NNN{z3Rjac=gWMZurC>evg$>My7HF&TO(PZUK!7=mG#vj;k?#~wN=T~}Z& zg$A5UbmXWzFE-<67AwsYoFMu9?uf4I4e3_TX6^FCI>&d4}MgQicz5AWy(72 z#5Da-Wde(KgchqHO`&Pd3eQ?a7(EyxZB9!1Gfvo;gi}*WJ}y1ens819&eSwcd_*@Y zx&ijw!YsCryhr8S1ioMf@-Cvk~?1H$Nae>M;6Kai zRw!IjQ^wSkib!lA)@n4e`I0hM46^JkG;{p8Og1Rt<16N|<>*oVaVHOBm~!PROa(G& z$1=7Ht~Sb3k7#vf_uTXmCfG@)*jhu2G@ge9w*jBlxba;&3@2 z`wk$biot%02SO}CFAE#QOE9D7M7&=AbDCZ-L0$CVlgEg7&(nVhpf0pe5?koN{d9DUn19>R;9SC7K6dm;)Fk4YRbfB!7Y7A{-ElCTAMy6 zSeY-e^$+^`KAJgaU3s&T_=E^4egf^Gug2hyHPgEQn*Bf2tSEWu&KIrhaU=z!%kR-~ z->50J@O$)6;MELO;Z=W>RViu_ zT>(zK++kl3cu)^ox=B%@izS-Qj*jDw-Ima1VR^o?y+YMy>AyHzP&tFBrPr6N*Ojc- zlrV_N(JV=Si%v?nh0kO3;dIwoZq^w|IF*FEKlVP03SKg7y_kb%>U&_w>3{PiB@b*M zfB{d4wUx|c-j?tQ6QKuviiDzwBff_w5i)_^%ZJ)qWe4Q?UF~1rR?%-P>pyiQ{N}Hx zs{h1cXoo5EtDu49`}3|SqrP<*l7fEU>{uBRey3Me!S+Pt!y7Ok`ut)e_&)#q{q@L- z;PnqIpAp|w`GF*q`Gq8~X21u8%Y6@YuLSQK=eAXj??5g+zap2-X6JmLMeoZ3KhxZ7 z-~&3qG9!kd^>#f!Kt?Ic_b#G1r6&P71_ABcxrHzG$9(AE*Y6>w0?o;O*cjH5+z!{uH-LWo-23s zWV6)evMO_moY5s61RcWGN48~EGCub#DEB{Vr&o?uB_P-95IWUJI>d;&roteddfWAFenlg_U&i3ySfE@x* zW(Q~T3Zxs2+of`K7_5#HxD$04u1;=8dBE0J{(cPk{XIqP$nlpzZF*@tg_~Qa;?%+8 z@sdl@WObSKWWIQ5s3aape*8stLH+U-u0G z>=~A#Uck6>Z`9WYsAhYFqn-~v{)QOtbTa~&PiYC)IA8wpzFfS!ct41HuZP$pco}*T zgbHq9@!R^GKoKPO0$pybc%ZJ2O?fwhE!hBppf!0qI;yf{X-W@NUsAowD!m<2l0W&H5bud(Dzkg~J*=qZ&E z>D8o~9XYhyE(=4y`Xi(^CR;kFNB;c^C-DdFZZ3F(KksRLFU<#-B6@W&rl@s*?wg=to|HVF&3H z<$=zEO)OPq2TObv@iiqcN4mB~+Df})Dx96QODYO%+h4W*P%8V3Z^%)T%p;b8JG~^y+Gd~C5chkr)YNaUR#VWCl zWwCd;X-67MmA7V9&bU?697`G3fdkeWjvV0h-o2ro7he06V)T?^<&ll5Aet|~S7Ff8J1RPG2N;QxN--k=7%;(VRk7-*7Xd4JYzbbKBiXC6QsD!)j8M0z-Qd!LKDYKhO;N`)N; zQPGz3eSSE;iM|#XI1lYY65D5VO^Rd3CbA;LAKprLn&gqIC9&ieqM!PM)X zx=`%kT8v1JXbx=zZI8TP4w7h0>XSA@k{8Xa7fq5EoNXqmnl729ID&0vyoORaIA|cN zw#e@N0%m^6q$%1e)ZSki?E52;CHhP2n05PJGUiXCBL1P{S&`}*lj|B&ac?NP<>W?K zBb^piOAPQuptXY2f?tUasp%IK+;YN~yhxnIgu&O0GckE#ZdG(6h`V=uJ)5sa>_n0x|qM1$XW>jxNQGXB6n{{+vW6Vfd%LW8Ld zbybB zIfZ(%Nc*0WYE&nM)=H%yN3_J2`rk?BJoQ8=n+^9w)^a2DM6sYVZ0^aiy{eLx-7N6I zn%Y&FCs@lNnHSA3sdnt(#(#{x#$E^Ik7iGo#&=_0!T`iPL)@^0GMv8+NZUtp-`dj> zDNdi}CjY%z_W39_;qk8SADk--LRr!fG=A}kHEh;}LT;^Jx)?VO9+C9T3RTRFoxtYd zU&jMeJXTy}Pg06(D7fl_VOM8?{62|9;-W{UFjK`R4J~dK~tn z$H{SZ5~`cz^knhnG05S_M2DeqxG|=84XhxNx zW%FT_xC*5eQtdTLsjRf5g>@p_5n`}j#r^E0F-Hzy1hYofFS&`|pK|U#tuBSS3p*C2 z;y;NFbF6q6B+qC&ACIw0*`PSar}>dPJrl^IOmX>+Q9MrFwzSWoL33#pE-hm7Ef0jHIMmHG1dAmUl)t61|y0cj8_IRlPC=tGR ziCJI9xUOAQ%?>KF{cQR)5|vqZWzkhb828mZ%zHZ7Dg@CiG?5r@G7z;@!r-s>|`U7l66bqOZ zrOI3(_f!DKBhBk@32AU?zl0G<@3G&_Ac{8%i)Jdyc>jsWXU#;Cl)l2xCZ$Q3wPy|@ zBcb4p%$H>UR!}Ntrb#UArPLiwI;v2x@Rnw`^HI~;bh5mC!3=Arb~g58m;R#5>o1V| z$bxx2C7kYZDvT1dZtp_)!#xn89Z4jQAn4oW?ZuKVH4V4(;f15r1@X?{6Pr-yhmh8X zPuL=hf!SxIt3AI@WE0$`*+3T(GvFEK-Ux(IO;P z1Y~X#Pp07YjAs#utLvj9gh8sW*qaWFNFV?u`tc(o6e!6TWW3zSx7i{k`f(BBxzUJo zB_x1R91JFjbRp6u=y=(p>iXC-KM4y>8zN&ysOh=GwM~S?WYNgWi3*A%elIbKk*gwn zY5Izu1(b5oh(I>EagZGHHo3ac zk6~;^sZKAlNQjM$U>sAVOmV3veHSy!L=v9tH#k5sctyAw0?3pM=E}wL|HEgojpSHe`E8 z9hxn3X)?$Ew7oWU+ZS7E#PxvvYiQ)vvk5`U;@v0eqE+xLZ?afOU9FCxxC>4W_+D|NMp!!RZW)QjL2URABfd@q-725!Ms9t znxK@1?&6&H2Ny$H`t8s{)i0Xd-y3ZZq*q?PX>Sgs)hjMwH_s-4ed&_4n>&vaIiBhD z4@m#YP0RZ*j;a;ENDaN3RzN=tDKo$sVweS6BoE8$4Ig4p^zJ)E1d@n8UqHtM8#a$q?#H9*`JgI(H1{g1D6;0lQ{)3N~u!N4VTnJZ13?4KJD75&Hi13HU zVkG}InEiJ+^eJ>=h~N6lEfnDd!i}+G9o%iNWgYE8Zi1I5rHw0V+H=w>p2&LGH@@&b zo#*;dlvbpSRDJ8{| zN63T~b0&>JFWV$eMZnCQwL&o!(@19IfjY)Sxzyp1RF-P84Ul6l!Lo2NO{Pgf$-VtY zJ0r$KsH|IBS$!2-=s%+4s>>#}y4k@6_Yq_#`Gb9b%?&=&-QHurj|UYtqxXiq#8Z?> zgaq!3xJC}%m7cvL^ouxVZz*YG4VObp6i=r`e-zS|+#&hc#&-ZfXU9)r6$&tWB_j+i zf}dMkZDraxsRQLHO^``wXX;Y5?5)4J7}zk9I2j(_j(=?8QcNJ#4nBc8kr>zDL_co> z$*hyLIVKYH4;WKzV(*7!2JVFbc8$l5v^?9NagqdnNGtk##RXf{fL@n;?S!KFtOtuB%v9S_W6!kO`M?q{1$3&yNrZ3qKed9opqy zF-ZUWP(E)$k#1Jm?OLQccF3%bV(e)k7f$n_(Ts|dPD;}bQ?iqX8V53UAz45_QF8e7{(=O=|pOpi-5G^j1v?B?4b!?p~yt>#URx~U}YlUQ^--Y&{?KUzS^+C zW3b9|np07#rR6BPYNE+US8D6%4n@s^O$GcThVnA5h8RRM?#x+pWD|Pz4^zwl@{|v; zonR_l3JuC3TG==i)7WH_NVH^J!jMTPw#a~6Hn@pCZ1(g!Wz>3dfsuIUBGSoVu^uXpW{uG{b$W0zI72dZ zHX47Qu_85ZzI@F_-FG@^OR;h=STUDo-ABpi-jH$88>D|afH=XZNj+{V-a$Zsv4*#x zxE|Q&e@5A{ceGow68?(24 znXaYmVK}>e!U~`jty-U^9(Q*2Gx8Fmc7D=WdkSH*IaWjE@2H-iF5Fhw^;``>1~89T zML*vkeEC$q>IZ~yF zXbCCcgrVSoCR>0d1;UGby_AmW&4)iW?UjgzkJFPezVm}5KiEFZdAs_OGa>M~Jbr)M z%P^hWMwZ7I zIXg`Q7ED#g6U-$IKx{Jnt}ex;-MJIJ6%Z2P64NywQn%KSt&} z97q&HPKH@coh6YQWZns%t)ggIAEhr3`Aml&#l$D47OP%Dt(ux8uVfE1O%c*T0VCmJ|)U}(`OOAh!&CIE$0IgyZyDS;(+SQg?*G5GG$yd3Lmievs zhD9-~Hb%FUv~Hhw=5!tXRi>6EO5v`yeIbX>@u?j(`L2s{5^D+9`{HS!WZo$Nvo{P7 z31Q$x{na0^ofwHK^(U8iX7^(;o$vDW)Z!Rpw=xsgXl&_8bCBA@+4shxE9cv!uw(Al zY?&6X$1yZZPHX>U(c#k7sH7%ItIX#{W!2id5Q72WCi=F{tOhOpkSeG4u2R62P~bD;)Sp$2wg z(q6)^Vd*kvYUY*EUT;;)c1iX=rk{8hiNIXE$&}23aUEK6sf?ex+2JC#6asvSb+k}D ziILEfxbX0cyEqknJlf$(312pip#sP(-^3W9LrTywF8~P>QC$;v=asqOmZsGUwsvd)COi$dUj+= z`C>Mzd`-=SS?q|`W3CeQtvb{b_@VSPJIX=+B&T zSZZ_{z#?_tVAXx((NstE3c+&qsZufCZ2J9Rz>Z{-3pdxO&OCU~EORL{JQsECAgIPi zO|up}n)RM8x-Hf^9AK};Vc;~Z0%i>OG!dMtbKt4J#~C1W?>6;+4rRvJytR!+6Bul) z84y78Lz;YpeqaiF?~0?SyMP!r3H*i*kcP?-z#m$&)BNaC7@NrghOuKT*^Ze;Hw7t_ z!yp%9)zft*Oz243PkNsjcwtu2OV5Z%OIm5t>*?v>kn3~Cgja%Tn z($x@TNniZ_t1u3S;bd8Dqxa%QvpKc7fxaxSz2CHcf7!eOkyh^XSCdOnb6on-sqkRM z52Q)i1iL$@&n=-K@cpQuizP$=K_t&p7{>3v6s@Ljk^AZU3We&lY=-2_%~h zUEr^CKxV24lQEBLuU-}HZ#$O7!l2lQ9?MQT2wF+Ec0pUFoUqlto|;Uf$q zjQ0He`VO}-xZ@=YZgsv2gtz@@$k@I7VYTIU5YoO&#Gm{%6$f&Ru<;?(yb(sNiR@>M zzl$ajI_OzKAo!5-tew>2sW4$Z{jwnZZ)Sp^mc&_Cq4A>z41ewKWgpSWb`H}QB}8ox zfv`NDqGLb7q=%yIMiP{=Q*BHJ#Yk;`!@(?1iz>ld;|U$!cN&YkF6M&WUl|AM*Xs7@ z$?Fs%TKmC_PH4R`Fz{+P>$0J{=WZ0CQX4ISlis1lzJ;(9X*@+8x<|`abZssM^c{XkFq+j6KRGhd}PpkL_ zL_&4s+jPV&qS7kdm{8iN`9^_^wMu3h;j#DfbIVKV;|p9;VJ(!`Hye~2d^wYFm-{!D z-3u|aM2YyVNlxel{9GH*|RZk1SBQ>nBLqHXa*UQXc2coHgx22c-ajp^=jgV z6;osB;>Lxsdzyi3Gz7*psUgqrzB>S(%dWw6&&{1V&~3+O{#?$}6FW;j|Hu}I!QSuQ zV4=e+^8=@*&SeS?jBRKP;lg0H&+;oDQe=h4AV5sZ+7q&85w)>a@Xv7!xU}QZ2UF}~ z{gvnIkqznHc&TQ9H`rv8`-8#T#e@?ifG5!2-0>M3VEESR84vb&!%CbIl3Ko$mlBuv z#_4N_>D%)~;|w%>uYu2pVgKp38~KHU46C>xZND&@Wze>Uf}%M3RlQ)La=cs+L~1EyWCuKm6Scep5LzGf^kh0;ArJz| zu-$VF&4`V*MI`@Q2~!2aSw>9K8s@sVJl6b_Y44a36JM2LgTj>0imR+^4GyFQs9pbN|;F+ zDlcxEf(F855|sS+Rbg3$Nrc|UGe#vZkicFblxmEr2wAt+YhD+x-;1)lu3NE zFg?-H+xr7o6{v&{!9~$qvEJXu^G8~!)_f%Y{^^W78$mK|_}7nZN1Z))gDW#;C9X?+ zI(NGSo=FE|AYs{&@Wz`sQjA7xexiFEV6mlWjd$(17}osWzi+qPu(#fgZO1mOtlAZ^ z;ewN^@G2;dgR+P{tF$(2t;)UkzUQRDPN0w(q*pBCY|FBJwQbi6*8!d2R>Doz`4M%VG=(5ZH*v(ePV4XTEAw4$cAepGxWWXi0C+yFWl)1g#B(foB0|sC=P##b zm#=MoJ%RGVUxi_Fj@YjLe#Gb77Cg_rP(cpIbp~1uZFH|+$^z4Gx2HNr%m8miJck)vRdN}bD3Mg$u(hv0wFzW$R^qKgQB~>(B;@=f z5*Vq~kHnR$cpzq?ui|whocjIzdJjS0{D`A_aq3vjnQwzTGf2(`a#%eNq`kHnJZMJi z02UAANp^3;r(cQ!>^R3zD|9|fV;ssj&wP|dFXY)D^szyQH-b+QzPKVad;s&KimY=S ztSVs|i+^-z{xr~xg2eKV*)xpZ6iIQ56i0l-lACm7m6P(??=>k+m!mqaih~tu>}e$F zv+go-Ll7uU!KzU&CEB__XEb07nqQ0P@1#=?V0avwQ0l#~)YTG<)ZJlkJvV?e!{SgN*iw}T}@ z3q75rR558yLT3&GhCtY6s9yEOw!n_6btggMejRO69HTQyhS%XPtroy|FhrNvX=C3>o zmeTLn>ac;Itx+tWDg(pmv0s949ZXD%?|;Z5!!ZiLlO|IrpaNvTldtCYL#byTz}~`P zNxWnN=oBkvvy}&Cc6fa?HXbmXbcjqE-}RsZC^vJd>WL(sm^2`D*j$3?jld8Xd?5~s zPgQ)zSZ; z&V)2G=wZuS^SpaJs#8n5?NFR1z|W0DIPLuHN+{sY{*N4Zf(Xz6%wAUu@*!M%6+dx7 z4j0W4#%Du6lL2nd0uGG~9SHJ;zrEp4?~1;85qiBPK@@kr(jMe+fypH8yao7*2+;`% z&y4({B!-#%lXdhb>1>R8LYStGOnpJpcq6t8`>JdNi{&+WDuzg5<}unt3f}hH6ba;W zU?9A4sTQ&c2)p=1z?2d%WKjDGRjHR}Jj7F(-1Xgk{NW$_kk$~P5tQruI3sfXHbzod zpf@43I*xh5ltNjmoMv6pn<1A<7hF*cv>k7o*FmC{9VZ79 z$9BfZoql_IHAFi3$&&sI$u_!ZF$KgC6|wmMGF(VMHt44$%x@&}SAMg72MI*H*&RnZ zm;z|`VQyO6YfbzJ;jOtgT!&WL%XHRA?C$N~+Ns+Zu zAml6D((5gn2D;m2N3%d`@ns?+J_%oBVC8hThjtC*oje5LL?_9FQ z2b)1XuS(gwUX(2qVt{0+{DtJpQNYlu&D?XHAGeX)i?fvh;4C6!8?b}{{fg7q;|th9 zlJ49_VexW>AVl4rJXLwKXb62Dh}KTWoU*jTUu8#H%264Xq6w-}nzHiu5h7qmT*_1H zH?GOe_4a_hjate)6-np}E$PrV97|lW-1u#`{api!B~=sD-I{|FRmrQYI`k2xX;^h^ zYNUWlfRtT6XKohTkU%v>zPcu3Fk;L1=gVyO1@yZf^K|z+K0_{`euoZl(-?lu;Q4m_ zA(TLK@47RjghB#dq7Q}Nul=ugoKfq#d49gd0O}o&k}vCmcaHh#^Z3!#b`CHBuv`;QwgP08(LdxxMgvI)d=eYbL?5 z{PX_|&H|lQ{%wFgUaWlFC^?d!K!Tr?WVkARq>xR*AVgu)y#NVW|H!Ye=wuIMz%BXj zXQq&aIJ+cG@ZGfFLvL{EznMZrlVfiYvBig?xoTr_#Y;NpJ;7U{RXvE<8%UUD3TG0D zrqo0gyK5o8hySw|qO%%mgZ3~;X?Tsw5!9mm0^LS#eyOnyC2brD77qt6D%m{@H9+S{ zIVguERlF3Y`}|^Q`Cseqs)%p>G!6%<0<=c6ZdJkKbp1yNIqPdk?PNPc}_BvkFA2a&}}_?{B3^$}!$ONA+(r zOOO#fuLZJ*V)=w&BZQK2a)dVAY|EN3ZRPY)_PS9Hd{Io-DNBv>mKoNQVEbW6PP(~h z(w;#+hor?a!$wiQa3)R0AS#b9y2$rw#&~AVctIt-xI{=tK3Gyoz9Q0tCV+87uFXig zH1xrZquK^rS9M}uFS#6)@mr2t*>P4iDtebD}DH>1Tt`8#{B_?5{%N~?Q{MP6zKbp#9AJ#X4nn4_KO>2f4x*#>3#1~$qi5N>51 z)nby39rfHojIK`5r70J2p7Zz(`Zlj#KWB?|06$mCXD0eM<|FOF^KXP$Su#fE*uU@` z(PA--@SLneN<)k!D0$IbUd#(@W71QEo0JD|+S-`beJq^83BT>3>(OJGP zd$ePLDkA#&^gU#-Z~m!_y0qXejR_(obOj&i5b&JI&erz~SsbHHf{>r>BA;RVXd zW$npzo!s%^nWK#tKTOP6i}vjH2b55p0cm*0_7S9)KR016N-fLQ#kH|xhxL9_1#cBQ z{Ia#Ish%eBYQwqxNOJ>QLxlVBbCv9rm4TE{Hv8>z61b}RS;|0F7C3KckVRX8$r7&2wpuVq&>nion{0zua0!ilERXkvk4 zyM72!*Ho;7=|Q+gZ)Sd1(K<0oF+4(`4aT@^r64ah(b2XLs&N`_8|G{8k7DjHQzJat zK20(~7DOFS#=L5){WCwMi5hwKFqW}pf1TdEv7J}=8`2K@514Aku*_dMg%)2II?oi<|A92r(n)6*g7U-lSgzKxd~UV}4GxSJ-3-Dup7U!~Kh_mw3WZ7h zEe}D@ODGu_v&Avo=ZZUsH(GC8(Jsb6sHC2bn$CxsD4tR|q}QF`SXSqxP4vYO@F%D9 zBS?*C6a1Kjki>%{&IfDhvm^c1s2FCQYj~GtepT@xkb4{$E4jNu6Zu!$1VPDq7~*TK z4bcP`f7;kU@u!{-*U!0HVDH94h{!*{Gfs+-l+c~4JV!rWh_9f_{ zNv%rgdt@q$ezDUOSK7HxzQrFQ^W~a&?T@3op$9uRhrp|+O0X3g3bqoxA-x1vFv{cu zZiNP9@glDLgGN)`IeF_5#uDCj#aQ0--VjXH9d$~n z2(~aJ8RTeD9Lz8w(y#tO!jT`hGKe>W*k_Wqzj5%kFZLvSRdEj`Bd3x6{GH={-u{a! zJx7P8;0cJhLR|_~qeWA2Hyw79li;AmXj7qfDN;XDET7J0FQD1))k#6JQlY*o25yOF z{^zUR*HNkqby+J_CRbPT2>w_(&nyk%#tMOBW$)R7yI<1Vit)X<0Rxn4>t3gj?ylX#M|+t76Ezm>OJR|4NoV59}Mf5Rm^F&$i} zAkpxH_iXdVxy#~nmsr;E7A5?M5nCw1s-xzL|A+TnHNj|1%8)<78)`qrVp;chauV_n zhA854rruv=Lo#0^xo_H<6JS;w$K`&dsfX&+!m>Y+=4e>$U}gj^<}N|8XRa#Yn{=B0 z|GfbE5{5a%{vmnlI(#rT)tvv3>)e*XO6j+W6DFLaO^<&wU`_&cn3oWr_af32c%@Y3 zr!PzqBq0CvKNI`^s-re*?bkyl8|5L_~@xe5xos z=8t|l$cR+9uVwI*n%FXpoC(&lq=`Esy`di=@Ne+gPiT}^RLV#4zlPHRBc_nW(bwq{ zG!ji2@O_Zb*d%+)(X1MC z&>LQpBG%JGC&AJwqv=z9ia~mbeK)x$VAz*^AveA5pep2J&J;{d>+h<+wZ{!iy9-2Z zV1Vwxg)#ehZ10bJOcwiecw?JM4R_W8)hx2V@zBjS2_<`8WNsFulowHV6v zni9*p2w0UCDOF!pW+{q|Wf^&6*@{zO%*Ihf(hs6H4#H>fB~<0$n^VA0>WsNGk6A*a zoKjfYUs^DTK+3dC*Jz<*GX{o24@7wvd$+yf>8wnkybrp9jTF8;>`9f+iP{}!@sUm4 zk#(cBjm*MyLRG;`Rmp(mFTn{3tJ2IG`>}Vv21Z4IY$-2OsFWRhQ<`~2QcMbdBc{zf zW2QLZgAagFm?3P9G{qyZ+(`;Yw4mj+p9zzbW~>xXvn(G=8D<0-I_dy9dzR12>25k znaF*(fp(~(Y9?w+zPHl_lMjzwrjMI{Y(j5u zM9iP3l!rpReXAt-+yA1=mhLC%xVt~N?Tq}>Khh`bZ$jl6H+>T=`m~OT+NCb1;qJch zZka7l#%uFEL9DNWixY){1i=02uB%*pEe5V+!yFa2JzYGGe(4wIJ*_t)sN@kvPH<6` z@#j5@fqGMx@q>?03E`~fyQy$5UjXb^d)+;Kf`QXsJDVp6O~T@U=bEqAc5n$7)g)_| zhaw3yo41`7M_Na?tzwUZNNzQP3N~{{N7d`J_xIL!sn&N`*62|)w&xjlB^hp18I4pK zDEk>046L?tZ2hZjwqr8$Ddg$q6j2J|)MMi0BV@Gm{Z(z~rENp(W@%sJz1c09)Y*q< ze((z6TY3-eZdVWb7vQ(R&|5Mpvzc{8W#0a4Wr`Rw6NPN(a36nU+aWThX5_<2?7&Se zMQ$p^Ech0^^;K|VgZ*G4cEC;(+Et+M>K+>%hd5p?B}6Jo;^%ab)UN^B1=BP<8I7Y6 z^=#UORa&Ld;*}f)1Gz6K3w~MlpRxfUxG z%CCUvshe`q$gqB_+&)K@FI(mZ>wjZYm7rvnd*+Ee960pl-pNb!Q*Q&9KN8O6+6H2W zY!2x)rbK@2F*N#C2QbV-t(^$&bKSaP^jb%Wn+o6M`{3N_+YqD6u0n*Z!d@sbuOH3n zL6oOvs9vs;15;s5v}_kJJ!UbHHlYg+r8;AzHL(f+-F~ZrlwO8G-p9NVQ{fG-An^Xv z89uk}pL3)?Ia8|mMV*U7Uw5jx7eB2mT{S%+ifb~2O*LFJO`*9dvAx~l?vBXhUui?t zMnI;x!cg;W{N3euaHr4blb+snF4(0w=@AB59ty@h zr3JtT37iXtf86Az#n-;lt=x|&O|t+H0?N;Qd``pjXKT9aubl;91&G(5uYutBy3*W2 z{;$h0lDIC^pfj&HK)uCOnf>xD__t_(ufYw>b51>FR!F46ZgP8NPzh!Cw}9a}wgZwW zBEdXP2yiIM>i<#i-{NSMKhYS(zcPrU(TjgwlSdQF5y;Tifd|!pEiCSlkPC)Sg+(Vv zAeGsXPMA+O4rS@N77DS&#;D4bZZ#nTH9yndyv=AZ4=!NK%v31jhZSnS)Q8+VjVyU6 zPE1SU{b3$i_Lm*a8&mZ#N@Des9lw%H55{cJEX?au_QV@;aY>)=JPm1}0$t1mJI`qmylH0>`Cw$TF3C`@L#jKDUg$af-0W_qkg-oBYI{b0*@ z|GN8og-G^U`CCb_NeXJHnh>VwzA+|OFlZhH(Rzuw&?7qN1jRX}I6Zi|7U-Ne;YDlK;)qRNBbROs84?qUe*+^0*Oqx1^d&G%00b z$_(Q~YFePI7^fbM@rmL>!2CVG$DpxSsg5~V2|C@S<2nA_d~7|*Hm756p<@C2es5D{ zQ(xcwZ#+ykFcOSE1YkKB^v|Hq`hUZ{r>V|+(WUxkbdT_C%YBfe|b1be9 z^T5isGSF{L<0++=vo0RTcM&64jc=uas=f=I01Foo!^!Jem#>K6IWwp z?iNH)#NWmS-a8>}xNX#8bdY@NbaTkEu@|4;IS~FS&;ysBxAoqgzqhivxqY%Z>AdfB z*m^ZWweh-#UiR@MG*n}-orxx_8d}nqezfi$ zyHW6Xy#5T)$uDevycK?j93b%+hk8LVUFNdVZBog+~K|5Lc|ZsuQ!TY-mv!6_~QrJ>Q? zlzEiojFn(jqwqoHAA`zqQfeXKOV(+~l(EmYqTiI3M#UgRDlOblBZdkD+faZX+YS%D zn(7l;mpHMXDOvj{;x?7yO{4S(9UDr#ylGfBr~cZL5amUqf4_~hI)KEQJD|&8mmZv7 zW-pycWAl%T$#mUool;}>EkJY%6f{wx18+!=K+{I}@~_^w;H%P<^4c0?rXWK^=q<%n zCW-9U&Nqo|dQMY}$a-^NJ!Mh}b=9nds)ba2D)r6IM2fXqIlHBb)nv(xu1xZTqN^>! zgiQ%&8NV%f4Pa}ENCOv*E>o#fmn2cE8Y9N{ViU+0s74v!iAy!IEEuEO7v!0TC{pnI z!M3T)(M9CSf{dw4dTami%v>9n^k$~OTN>kx|7Fg&cw3A`|B;QsODKp)LIrX})u8`g zB(^7-x|B-~;%`FdIVo}E99^?cnkd%c4%U1|UcuxzPEaTk=ZBC(ub(8+6eVvRFY@ zHFKw>xU-hvo^@bS*F>o+e#Fv5&N2C?IYc=;>Y$~web!?JB80yotArEw5mOSTKDCLS zCus@ZyB734da8NP*#h}oO`+bqg*+jhhJC)tY<`INo!6B04JxG}QRn%dcK6lalqtB_ zcZB099hd!$y`0ZeTIzTlYO=Vbv0r^`A=xw>avN&7_utyh2CLZJpHncT*^hps2ZEoi zn+?z*WxGSkG%C#(&qJ#DCFQVw^Z38l<%M274wN3nz^?`mXAl!_5jLU zI+MxABkB0)?;T}iTr5&C@-qI~|CKNZZdMn3pS&x-zd6lPMNE7D^;Zos+WCrrFj;iDx=9 zRYEB)Gfy8$u+6gFbvzy*g9rwF`XqD^fg2`ue{!vQVwp0y<6q^MrdqLvTH5atdP!+D zO?IMCY@e|?Z51;!jo{RO3L{kxb0Cw*G@^I8FOD3yla-n^d5l}hl^$JBc3efDUDS+m%ytZ6DrvJl$1W3tAd68&xKEmMCT|C%C@gs76e)vsL3e8sOM@;Z zy~#J8-~Da4DUfix*9g`5BVL;Kb%r44V+%#GGcZPNG46Wu_3{e*`u=v}z0v9yrZt&s z^*J(kCg73ABt2EX-PBO!eJt?)I@MshiIsNVCUJRXk#^AzysWWfTz?jl_YC+u+k<+9 z_jcvG3zilG*1`UHkiZHLjaV0vNLN6$+4a++;74n9{x)qn4aBh0%?3Ey)&v-C5O6tJ zgdt5oTK=Bbyziu}-2~+?M|C13l zx*#d1(Sw~)0hg0XMlur`1~-F4uQ#O}?afgRw>uwugv4@?^`H3Pab6bzoZr`1aYJSW zS(&$~z-$_;QG0~$Tg;nR9kJ5MG*;IdmjQW&)c8Z)0 zmZ7^`445pnU$Mtg`iA%sH=h%qm?FrjWx{lgMHu8HXy(l@@#^Ga%`3+D2J~pBwdv+c zR4m3z7jmSFnj#M7Rdr`atreL{dNjrS<=C)F?ME><%2_QEYUO$fnFhb&$1*9(q>c>F zzA?5p08=UohoiFObu(x(3+9F+Gh_|#kP%IZqz%EbLv)%TKNNDu6u$Tx`nGtIIna>8 z5HSyi@7j2+GsR@^>^CJV#kUCO52GpqDmD(fSXW?-demAuW}6B{o@li>?ENerr%c%# zX{Jc3$Y|3UZNCHy2{UwToM;j64&`gxiD2!qVi{iGTc`*5*dk~!f3jIh3M}QAV#sI z?RfGjI0aeO(iOlgA35C-Qjslb*21=SS~tDxA#|?IJl+f&QSq9q$K^L z!K(6;7u{sT^RJcH_D~;>Dq`0pOa;CDPO*?KW)!9`y8IopFKuy0oI2~TEwN}PmezqT zy(&M`ND@zG^!ZiBH<>k@-&tZ~-YYZtKOJ`_t(t&-hC_Sl zT)+U0u{|w!V1UlhI?HLsQ+*tWr2_A{BT4VGW~)+Z?D^)h#P7bm=<}^Jg5^VHJpGd% zjKZT&C&K&spM^=;MjEcKmP`~aC&a%a6SEa!HXRQqWe)v^TlqK6j|yZHHl(RV(_B5P z;v;AFfiVv*R_1h`QhY?~*|d0erluX><5yv+2f^u%S~Js*1sy?*T_rx^u|zW^S&U=~ zrpfjU!gFWEfU5n6CG0Nz^@&3YmaF*H+S`$dBK?;soyoWJZ_+inJ6paqUe{~jzD&Jp;R znn4KC6;*Wf8(Ep*p<;%?H2u(j>XC*TL13t^Z;r9I!^ljd1|nGWOX_A^Qth;SVhn%2 z3kSR%c=n9nVQ%qCk8+}tb!QU~V4^~BSjuMzX`KMa@7hd1SQ*kbeWf`3B=lviuxCBG=&*ChQJPgl3MSHWsCXK%$65 zNFj}1_)1bqAw&(~pOdEU&CZKZj%mwLciQlqbx+x0v~0t)Y*|y$&WEe|n2WPab0$Mo zG`9`&4|gyyGO}2PcXR+v=HR*T>I*3qeUwXX)Pg#cf+gNSl(CDcWis)FqUIB)3x$>P zSB~JHOUIZ6Fd$a}9=Tu-^8b-HNhGRB42 zS!oD~BdMlg2vYZ?5)TLtfU z+AqH41*dJgHoHN5o;{e^`x7SX1)H$qhWVRZk}m~1p_>a4I)^V>^?(Mh6iJQF6n22& zLGK=d!Mu3(Ba>$S9&`k^^mw!tR{jAfm9C>YsTzYTjQpn!=g8(bAi6&Z)x0qFW0MxX z9?ZeK-e=<@R^PfKaKcAhiDpl3i7gwsxgIsRZtL^?TC4?5WxAd-V5J=DF_kl}A8A*?+)!SLAl50J(}JsfuI(hDgdbyhdE1#uq@O96Yrg z1~5hl_Xi!OvmEVg4CxM1FPnOZnFD6hKdN7?MvDKW&=i8v+fik7+|>vFB5SY37G5M7opIrsb^ zA(*1o4%F>gQIpfmRj%7<&DnR7(eY3RUYd}Np++C`lNUVJWt4@=t0 zQIivb@pn)G3_7~lNwGqyIs5;i>K%Y1>!PmVo=h;YIdM9+ZJQI@oQZAQwl%SB+qRvF zo&5d0@Bh_TUscz+w{PF7Th(>$I(x6R&fcWT^W(;3qlHh|NOK<7=wNwI#iga{Cxg0z zqD9~euG@%YDw})G0lD1Ujav~05+etv*NuGJ@=6SxH&VBey=Vial;N`qI0XgwbO6ej zMP>W~GttDy5`f|JF~C?fF}qIULlz)8tNslrM?EZ1)XChM4k3iE*V`TixK4TMA5B1!few4)i2EFG zVPVyL@;m4Bw3%;IY1dOlcDwB|bly2miK**iq{gIz4tT~gZ`L&`K90?&Shl;U$TrJ?gxJljQv z_wFkLZlSDU1n>=&0Zb5tK41W3ND~wac~P9iNEJgM!%QF@M^NbuF7dsFc|g2^Bq}4t zeAwJEYW|qe+0S7nDAMUk$Kz`sE&r$}SO;CS+5yRc&VqC^Q`nb`N&8RJ^D)%vAE}QO zzT{>v`fvW%vH&;3WT@#WMEx6k`0Q_t5@;C4y_78;Aq?wNAsX~8Oy@y|6ODKJy+Yp} zBRVuXdSKt&t~luKdj@-D!-)sF0fMW#`N<*=q z4gi#FQEv&H)pXz-8kym{lespqG}BXo?m>)Y`dc?AY#g1s@0bCR=J87)U5;?+IIIYb zN4P{vNtkmjSm@~HBLbkc9ql@8DT^@S*^b*6=q^J(JGn*+o)$LvQKr?(D>?@cu$jBO4%L&!{<>w6h# zq;c|mj*^6#5F78!={>nAQ)=pvz9-CgyRiFVtkW1qCM+XkLayY`5v*WC*+|mD8a~bd zT8)V2v!~foBEZIMPWo5YW zpvB7pi=_ml{r^MAdH^42GR5Ae(DkeB1y-+MZ)YSBPPs-T6C-i%kvjJ%cYw>^pllR9 zwn$#uCD8ZiG$Q%^Ci32W3^l|=HLn%VIuuclLp{RzW>E=d?-7^?=b_v>l=3?1?RbGP z_Y@wu``u7%E0*E4Ep+y~keD94{sB5s0f-OYBsXx(Nu2faThdLgJwxX#s2;)c5*-@x zBMjCN-=4;hA(t#jy%Fs!fBQ&+XfaJ6a)^*D&eq&mu(Z~dk2IL zMG@n$g_W)Y3%wlxjTzrd*NO9gN5lr(5U0C@n{Uz<+r%U`b^0}2C(YKXfoKBGEbhaG zKZyBW^_j&^N|xdS6&J`#Yh;DFe7+k}KDXn>2WZli6N+&uL?slYss1A9L3UK(hW?ac z(8Vlb!WxlBYyi+6*U}OmvGH&U)*@soslH!mA)}OV@Pz{OM0zB|YP3LkQ~^5)!oxVJ z@+eJ9S$8Wt$nq#iD#LqzSi&PhY{qZI`5%D;&rlnXgiP^=QcR6hFeGq^!@&x81aeuV znXicqI7-50(u;~I<#~L{f?9sjy*Rx4HjLI+5ysQ%xKPdHcGf;z*WGc0;@8Hvt8v;> z*%P~emEAm@s3NN6Ol}@LusuI?xy-hu4=>(EJ>96%Vq(;vPi(;m2x=ck!(6*KY<9;H zQD4qbVUN2cj^66aw4b@MV7E;fZoHNz|JKmyjU0{z@p!kWj5Ll9YPVZ&*4lkYVJ}xF z%B$Xt>s0Nm9VTgKP#mv`lr@eACBV))w0g5#h_H;h#$~$!bH*Hq>>`!@}eZt zVtA>6GH5Y>6M|oyQ83oWHJW5X{%Qrc=CJ%9F91dK6ppT|;z$B>^4&5yuG_>?nuUBT z)1?J_w&xQ3y2h1E&f$=9J#SjQ#0Ux|Cw>=X;G6`H*TV|;GqXn(weuZMt=>gMK>!l@ zFd!56-LBzj$RH21N;=53ee|DG((XA<=$Ab<3L>c#0j;|MR$jg>vFPpqq?mysmZZ{9 zTsc!hl^jqjMMl@0D+qb@AjC92uPGMIcmNnqIH48Qs~n_QK`K`+e0(LH+sQ1%&Hb+D ziE#677P~Gle#r2>v!0fSjyY8Ow{Sx{t=*Np;iGH32)$N3IP>rIYXgs;ffJd5F{3<{ zYML4wW}u18{O6n!MaL}ugbOud-3FELin&smFq>K8FiXGo|ZJ4EakrC#uwUmio)C235$(7!WQ^=tsuosn1V}?d@T+lGczB z1zmCmb!g1@%r+rxSy&pVS#WB>NT0Bfqh3=9*jxu2r15LYqg!qx2^pKp#0{byJ1eWT zCrwR#G(6xJR$kMlzktQhe3yn`1MHVVhmALT*E?ohvRv%>==i-+w-HlG43l&cVzXM{^ql7HkAr#t2bJ`|_ zaGIel)~@95q5+!DQs%3qMIfwi+7xuWN}R7H35}k#*Ia^9>ZXbv`vi=w1);HrQxpZ&&3)#bfM2Bl?119j%@*FYSW%f``!Jq3i|kgwzi{_ zI=TOCB9lk|=p#U~!-pXoaZ73^pjp=QpEE8&ht)wrzZjqE@<-8oUAD89cyfP>TP3&3D(d2j%McMXFn*b%;w!4{5M6ZW;Y1({$AY%Vw!am#Ohn^<@ z`jVJhl=w6T=}oi7)JGr24?&Q;I}F0u4(*=CaR}}1`2L5#tN;3G0lQGtzM!w;57ezo z)j1UHm2;y{zdL{*xT)$aC13P9!N5$s+1j5)TvrEr3D|*8`BSLBI0}h%Lqidkar=iaU#;bmFPs9r> z1dZoKRAhf{{#%A}2uJ+Z;4k%dT3fJ024h=HnU`|shgZ-VvSRyT|r{&Jk2^zehqcag7 zg>g3%^mUc3Sdu< z_TmC6YqT44bs`9mSU(wVi1L2rey}Cld%QZH_BtuO5r>RrZGPbXE^)mk|7WTBQ5kZG z|1IUG_8X_LRd4Y7_IAz}-z0NSAQz6|#Jv zh}h34!`G#-Q_yZVemWz49i)KsBsd!t#umxm9Wn@EtzU39%8V_nseZInuT7;Vo47K| zV(6FW{uUYqxdus@ufGHrV#dnw5b{kKV$<^k&Vo%A5TO+LiAxNU{D&Axql{qEmnbYW zQAO_72sM`=X4~jOo8ax&*r`rd3JV?T!>ed}?|&=Jwo8g`zv{OwQ<(pZn_t0{kPS&3 zBg3XX2cxW3P-qhp)96a>lYtPWw7f-CLBkH9j8;`fDJrIs>JO)Yr#5O(!Fpi-R!FQW z?FIr}WU27}L$u&A3I>VM<*?EAeHa?-|6*T5Ru_PTjrI@LAtWk8VakYwgrBB_vIWF^ z5@M0+B8lDq%mBdHLPAb#9EcYK&9VFkm4P578#aZE+>)jI5;8^EU;g1|Ky)VyoOA~k zM~t8utzx5Gq3QB9q#>=o)j7P$sb2NRsB~ASjR7sKcvmYcus?rfcP=lClrKv+Hs}T6BOS*ke6k?u|!>WN$mHn z%8*T&*uSjPRC(w0#~k0aIOoNlr-ZliDfT^#58AeZS0(lxDz$X%9cNGkgfX2P-u~S7 zsI{&0tkRpHE|AHi+#@)L_+%~=5EwFaK zlnr*q%Xc{!Tx08$J`WaVspc1%Z|i4?CdfCqBsyEh&G(*EJX_xIjX_(LaJOqhURpWQKFmKe)+%|J}p(Yhgua z2t<4+LDwI(+%8lUO=KO9_K9wRFgc_?0V~A>C7Bkz)-jA90oKd5?x}xVGVsy+@3`Kp_okX4e&f(V!k96$C^kITRwhHCY;L8(FrB34UNf>vJhO0 zLCR>xy*!RKDc2sJSPBg^|6EGFHNZfjug%DVcRbHEIoXX74hXvwuJ1TR zx8^Bsv&Cw6?4-bB6zQJ1e{K1cEFD*~Kz|0PZh!Tc-uu)t?@7uXP3(Clpf0~A_syVS zX@LJdlBE;P`JQoE0jN6`b(I}qx58UZI~OqvWv+yzyi}xg959{1P!kX~#$e5pTo5mu z`!i~$EJ*wIm)o_oE5Zv@?IAXKxcnJSHH|iMh*Wczgf4rr7<_0VEOJmw-KL4bnuQq& zZ#;H(;&sBB?f8f}IZireRH%$CT>{hRT~9mu8tfYiCWL*?521t6f#4LS#Cc)a54p8A z-GbI9JRA>1dE$}Ezct?SfEV$3BKCj%ukN5Ui{AG=npfcd*^F?JY;H%OXHk(d|PAIH0N4f!Ej zzIeaC(eL3fq#VYtwm@`+mRQpD#fpLt(FrA;2uK_;8Ak9*ls}RdjHdY0A)5pUQK?Cm z>Cxvo{ms0>gL!qPI@v}a=*bpX;pLLb?YgAP~+-rFGL{xJeoCVuZN-i{21PWq}*7JWpRxtS9EA zhqUM=sPZsYdInusP9A%fEnw+xvT#3M_ESZHzarO8MRdN@|7a0La|o>=n$lc{q{OB& z^U)3>>-?8vmGWGts^F6*L?`Gu6{<6w6}hcyVqPJU=|_a+X91<qoOHlndfV!Vg7nyR4U$jFuXEJA{kEt&a}fYEk%0T@R^ zDWL$07!^hIzaMUZFz6y0CGjRf@pz^m1u8;?3KE4m{IlLdh99C!=heVw08j@{|bTZ9qn2~z95L%TZE6pT|w(T&miWgq4W<}&*$tI9=S=Gz+ETk zA6?#a{h~!B0J)p$6EM0w`O~WTqz*Sq$~?bBxiF`TnQxrP)Ve3L!DGRy^r(WR2N@KN zH(TwB24IL%#=X13l&n&uc9h~C-ssSJf;_80jkwpIR<+;wvaF8hTb%jQtd3DzoqPKl zVI{TOW5F=*b_~1F`RSJIU*a3X!no*U798yI{iIWHT3yTHB2e+PGf#HjqzgQKEF$Yu zoNrH`=pAk+zHNDa(LUmPgSKUL^`BfVpRC@};r-msH~BC~Una=2*hIz|j+v=>WO%Sb zQ0_kZ@n99L%2kUWUadH#m7-<(-bs7p=6#4`L^h zy?p?!N$3L6+ZV@v`k?n_+wA3-`n2sy_)fesBnl4^Mc}u1EEGK9U}HN&(Gv-K;x0jA zST_su9|K(PuDDPUF@K=xLA)!PA+voPbn8fBS8_8o>@3`nR6BI;rL?KNBssa0O zPHX*#t6f!WtHX!utANvx>^>8~u2Ix0V)3D0Ob_#Eq~vAMFuA}}tO0hKfyxI%&z zRsh~AO$bRq+goKQ649wZ^F*u!Bvqv%9vFrQy3IIxiJIHm>EvTcSF;xl{u6D(QPn8uzslluZ?h)3W7lJ*&r@&5sJal#%5 zsHf8kJ=S7(O{9~1g021FTesK_-1s?H8%FU-rr#K0Am%C1WWYk7_A8Kh#EPEw7hd19 z#ICz%4nBNN?!J7~OFpTgP;EH08dLx3L^ITY2VWQ%<5x5V+;G;6BCzp)U(X5o(A8c& z9nxy#t6=hAGM=lUDhiEDL~*C3CPM~B1&^?B88Tznpw-c}XVShTSx?Xy&@d(_I#5}m zC~IV-j;#d(t!|Pf0g}c^oPHp}0_dBno|HIoR)_{kTXvsLvjFOLk6kK!Oe|!49Z=ng zq(=^c5`*LqHZc&05uZFO{_D~ihij{__IOhq)YlqY7$45}oylAM4J4TnRJ=KLE};4H z_yg><5Wfp}Q_F0u{x65TT-{1`{$vRw00QRb$J}YqO@+y@$2-KC0n$Cz$q}aY+B_MD z@tiGE$2%AtP%f*uJc;!;ODnqskHmgr9t)$7fyT6?#je=Nmh$$RAC#xix%R-=S5_39 zWho0S`XZ}{Og|f`;3i7!wJKxd_VC%u-pJqZrmpqzyYN)6%VVbmu=!>zvDx1!@ixCT zG(lTfK<5^T%6MdCR>_g_^5VR{I^H9mpZ;8$jy`->SUR0|rZzWH0=|$uS7dXd?CG@2K zV>7_L4btfz?)2p6l9tbwZ+iAO*3J(c_cvC@CrgX#AH}VrlEMMuubSu&Nt)$q;Pp&u z@^)?E#1X-s$_x;*RN*9xiDH%%F$;?LMMfqK!Qoi6=wh^owK%FnrIayBia1rdKp8o^ z(#U+Ib98l=?;~TS`j&f+>@L3Q$Om$O(HRSgAMq%(Fob>EF+T|S^Sy$wf($1Nv7zU3 zwE!qIB+E!Lc7egSSiICmjVd^-DrpTWX`pdYW$162+=5a{MG=v#yhCwxG7YZ{Cl}Xk zgCqLcDJ?65I`WXYEQJ*gG4>w>6J-w|_iO$NGg|*v9EGkX`snAP;)NdGpr2E1M=bJ9oG2htEy8JxHmndXP*Vw@r`|A5Y z8-!*0gZ?70)R7Qs2wT$awZp#Aa5Czy#Q~tFHjQt@i}n{^iq*D>!=*MEzjwk^%yyyO zr8d>_6sf~yW{}mkdds6M({h*O;aW3<_E%TxIHqQcYgfQE{p0Or(YLNnmVstW@#n`q zifvu>{$|Xj+sVPn%=U($dQ9EDh-=-W&T53)D{?5e!vQU8?q`JkH$`Mr^l8vm}OejY$D1PFhB67Lmdklr$-EYqEea zw+bmL{YKK1UpLs1>GN395+*#90XKohOQgkhM3hNR$!JR&@fv25rd~=g8FO>1>1mTx z5kZ0pX}a}6RqD*}iqMH61MxJlqSs`?EhC825JDZ8(l=UF;#Zgvs#+qJmYAaG>tz-m z0l`}&EIdL0d-lM0=bh)5ERyC|UUHr*C|^&J^N|o2Hg_|`pERE@SCE-8=G~Rii`~T@ z1p}b+@Z3I+{AbHv**=w1Zz{{xrEl3@hN2;Fv;1J;8DF2LlkQ)FUsT@ra#zU3H?{~!R4Mn__+MGk9)mZ= zq34bxB4=3i6|73I-cD^|ka`8-&n3_M{oM^>y)a5=XznuvcnJ*=%dp>xp&1HQO2X`c zq+&Badce1ZYJ@_ktiUBFl(r?Pxq88&9x_hh3^ceuDvWiClOtmAB?ip{QLi|VNXJF^V#orCALv4#G$XJm#In$ zC&jt*Rw{B!KsAM>) z44#)}cVPVG;|wfrP)MKeH=p{EM>;Q{CHDglV)s5#gt3O$KQG)|by0+A3u}A{frPtl ze`OVQ^6FFK5kaipg(3K(zz$d4=pf1t6>3TR?)8;oYXx_-o!bbsa*V1$KQBCOHt0-+Y*rX>%nEEjpyVyYfYxr_}A*BWSlOZW*)d8>5Jj!Bi}(>rB+k zd3vTy#%vqgKKy0z=E&$nG>iX39Y)Y4b1-IhBjXuAvN)a4>fYpQwVi1D*-qE>R+Upd z6?1bK^pMHf9ml-=XLrJ7o#Srv_mpRM%yhR$lzg{W(o>gv$UbN{%Fk;&!|6PimHSuj ziY=GaUcBp>&KHWyp9r%&-kHUX!{)f$Li_0jOGD8L{LaSq$HR`^Uwc6c^lX{L-*_9#?|{WH?9L`Nq1Z*S5dhI-lxOm_rd;HG$Vm#*z3}cC=f=v zJBIqVXH9T%^vvXw%@2$DL!&`rU~dowg9hz(!`da=dnri6VMF7D(Dd|{FjG6g);1nQ ziDw*}(wjwRaYxG$YwHB4H_74Z+_4EntpBKFEJ`nns;hj##+w~g=a*R0 zlb*%x>vqG-XAt9|&#mTOy{B$%=wF>Gh66B?2m@>6iVP1}0XF`@M!dV0&ve-B-*L6o z3t`>`)ZcGR#gv(_$r8sSBv021`^SE(B9*$gI#n!=l4%lpF%(y92HH<;X1wp@x zja7$9nX+TYk{f86OpNPUc@rv6v8~4^3|)TXd%#Al#AZ)fMg)C=!|K$M;SkHJ1P;Yk zh7%8|3C9-v$O#haz<4IHjorV_7bTV=qiKj7Xdsd*e^T1KVRP~tCeQ#_;JiD{&Lr*ts2diuQV^UuJz|+>BB9I-9%E(|THy zKf(V>%x>@5^Il;8T%CL+_;%ld>3h!)1hjhW6+cx;f|!_>yQK$iu#o_<1Q07z!+XLE zL5N7Hc51C%RBwlv9*{DIpmzxt_$nGIj7bvVC}80zW@0a5Wk&>@3@g=U-;>^ysJbWq z+ndpc;6nvj2%@m(>NMq!TOy|#{qCcoX4_SVdeR9Yhy1a$EA`Et7y=4;Y$M*E8q#9I`&q^s4>+3}1HENUNiQxw!ET!&P6EROq z>6m8}kOie}fS2&Ij;vzy>uAD%99Vc|ksa9s=X9z|>Q$x1Wf?9Psn*I>8dNDPbjxyU zW#qiVGS`SX8-wgE?{+qcrT&i>AfRkaQ7OB)h(b{^Pf^xeh9M}8`iyio zk++a8R2B(eK%?{r0;w$Z2fv<>S4Y^t2l6F78EpYVkT{Hy=5O5UuTm5rxkG60C+jmNeS{0D z`?JvVcYn8|l{38AWx&?8Iu5mZ;O6t^jpzMuo*ew9e=j$#Q<-uH8zC4|KFJdUt14C5 z(#LBrGA*ePsH?V=W_2B-x0T#{bO&}Hp7_gMle@#!^)0Wz$Wpo`4)@GPwO?2IiaTOT^Md&&(r<=+5o?p#zw{z-jPZNl%ymiOe&7e3uoLO_c8{-hWwuYeeE)PEHJ>0G* z_~d+UU`o0@llJv+4`zm|?RV}4AMyBllG(S7FF)C_SMM;q))8hqUv$=%35rbK8KR7a zEwH%7`p*hjD)^l5oHok~Km@zg<(U!aAUAn3EBT%Z9=rP!U>`mvNbRj&!W%8)d>`FO z;6nVLDJ#c!gaiQLv*fJ?dV})w&tqy}jX>5Db6)F{mTiDNKk@VXCgXgv1Jf(@&++)XTh~hG$>be<%gqE0X14op?CI$T{V7j+({;Ch8yANY?%vq- z$884P1BmP{oY~n_AiTG=OWtW2ARvcArjzq)p@;437mYr)=LA!O@W$^2f5n*@F=PbC zRtzIncnQh7MHHomBN0K93}i`fA*A*#v{W8pD2zi*7IrpAIDLhq=^afyxEYX$3VaSB zaZw|3MBD8gLG2Yn?6^!JamL8Kx#=am7u~;oS08$ zkk{(twIM?uNH(X}G6b>j?sDW)4qQk7p*`xgfwcddBg&?k{!0kJ9+vm_^d46hu=y0& zx*mV z67=X$~IBM9>PD_{OK$2!J4JRt~{bNgsCCO}tPuMuvE zv%ff~W)^{MGLTl@!RA=Is=FSEN%0)WzE0HVn(pi_m{iFw|2PYvE-e zb!~)hqbEFAt?ZOfNcbyE97f=`;7GLvjDR<&Ug$ly%OAkY<%yk72_49D0*X1j0I`iv z1Ol)B4NKMf^_$Z_Rnc`GnAZN9H2jjXpiP;rBaS^Xq?Cm)#JL47m`In7 zCMskhOUM>S27A(8n(Q{Dgv=^o2(5?Pa*dH#P{-uA()hRKGf>?LsmB!=iMA!9pK7X_ z1}mlE$%)E=Q`hxTN+RZQObXbQ`^_yVsG0^UC!q>@8PL#DM>eRXo|dsNE1*y7JMnxZ zk-4i4%_w7tsY(9OA$8}9aB9G`u%K3$kH?fzjt&o|A$7urv7AR&DS=W>D>oL+k2Xw5 z?=y#oP{au*c1je%p@?FsA!Z6hkAtMjcT^EM{VnIOGFVy`s!&Hv6I!Q$T@)-3?t~KV zhyv4S2*W}Q^MIl%Lg9@pP#(FPD0(_NQ_d(o82Iw4kMtw--@`CPq9MwtL@bpAj8a^= zN<2QUOp};km7J)bprE8H12yqtqIh{(=#m0zNk)gEw7hI)^s6f`JTzoFD4`+`nM=eK zQV#c9x>w+;>pLBd$nRzdjzhnR{54cxHPn|Z2D_e4Yi+?)TSS?BS!s81#Zp@`KCzX} z@#y?>bryZ9DO#b)C8(yI-#dTTExmpy z0_&rb5D(Y$fRB!s&u<7FPi)oM-Wea{+q;LLN|49T$W2`iu@BV*h7X_3*ef4&yz7Xw zjfX!jf6C7_eS%N!lUryzfJAh1@20kldHiOV_%o0+8k3oC`Hc2UxTFl1M|5x}>NIAb zUoa*Fo=`b~*oO?zdY<=w5FI1#GCkbs;`*-iv=8&Y4i*o=kpMvK#u#3p7T3RD2Q?e) z*(SQk93H`YyLf(oe39cuBtQx(iXE<0D?}6(x|=@OR(2i-HK6n@lt9ou<=4_aa%2CC*j5en+1bzQn`Xw!OTmdtfh>zb zDAJ?o{WLfU+zkvX2umI`PzA0#u^3q)WvGZLpP`OIK2q1w-dEBV~JI?{#lWQJaN z@HDx?WykyuQ>07I0QG6?0k_GX16I6*WniG|3d%KK7I;j~Hzb#H`#Y@!{CP?3-_m>b z>lr@X5QI&It}C%;oLMZrj&mK>qev_9hepy()wHW!Y{qXql1)3%bsfcVr!O4X*)eg4 ztWnmzs36{FG@3%a4gzX~d9g(PSfG-4lKqgyD;j!G=oS z4J96mdsY!hLVPPsdW}=2%qx@>6AkfC$LDnVuuq3dazyxhf)8EnA|dyrkHp&v($ynQ zPZQ_niHe$OL%UQ-y=bM{&JX_sZaUO?b(+FF1reR>*fnc@OJ=XK(SIdeIwHT)L&sDo zlggAV>-{ZgVTxKM<}!VC9@;K_8w|HO;pQ3fn>_b03$zPaK^4g)1oT z=lAHzd-W=uo)|Pn!6-qwB>9_IB2G@oPGSe>TUy3?S{8$t zMw9sZ%y2eg04jbaNkuj>{4<~@;s-%DHvp)CFXL{@kcI=#$wdmHU4n=}4jGli;J*~G zYPC#KvW0)d8)|AS%41cIqOO-R zkPHc{m4ULlW^AhEfXl5Zdtn`6CZ&vL+{7Wh za*I1z7PTHoU=_u|Aw!RJovAEOtslkk1k z)1ELr=284+>&jNn8gcjeQDJNS=lF27$<1Jf8!q3<@H&**&8=3(%EKdqb5~=C4V0e2 z-Osnx`!#B7S0{ceUCy47trYB)2d++TgqhYu!pooA#Wwv!n#*|2x*m;3K={8g%Ixlj zb^A+V6^qgMCGG>7latHjr8s=v>y2t9AUn(87|3l~-A;A=b$T!idNtf$8&5zMZ;<&* z{K7zZH~>7>Cy)pf;%os+41ea`*gS)q?Cx3htukj8T@kgw_T9jTiee!}C}0Wat^^7t zOMu20HLR;~)|R$XJKb{qQDR2e3(wjNTKy>+7hTt(pyM37-PV$noBN5Pi5i{A%1h#G zH&e7+1S&s5?xz`T@nzgnDptaz<&~_y5e?ot^a22tt{--)-$Xz7Yz# zwoxIqP~X@m?4RNUw%4Pni8Jbs8;`sT%}5%}NE`i#8$d!f2a5eB(@l~vv_-*43IZ1; zh7Jd!ph>14gbhHDB2hD=lCq+Zg%hu6iTfsC#XwX&bH3)@r063-<=xteHdue-lg=KR z?!~yNI~~!sQD~7DzqAN&MiCH#XbOZiMIuU-EYv4c)MXC6%@mA0hKtl?4!cX2%Ur%p zAY_*KmkBZ>%Fy69OWmeQ*0r;q=imMG5d7_90}*=wQX+2}NM-eD``2LzHTc+!Uw9;o zpHPjVD@@#FNjC2onL2-Wm|G2w%9IKI<8al>Dr?y#5} zF^6ZLN6iq@^CZ);D{Bxfnn8&ZaWDs~B!a#lEUYD}OvQ6Ux1OXiWuZ&jHD@Mayr~Fh ztY1p(5tC+G2a)YbNrO`paBL;OdNLxv+CXqs(h>$k$$Zu!kus@}Rc@qyCZ9xvE^y9p zg*I>^T`H0uA|wKGJbOLVyx^q5Vt6I()`+uc7kmxCi<6hD8sbkDkUF{zFK`9rxq(2~ zjmh8Zm$gls8s9Jsbzg8BApBK7Wsdud~|L~4q%SY_SH{9?w`A!j@r9rv|%C&#A~?2B3Eg}-K{TGBot z;ag;!ybnyTXK44!l-L#UrY&OqwvExfFuYzSmTj=V91lh<#$xAU$%@%DBpL@}%0-A4 zF`yeI{T9e5OB+YZre|i82?VXY!JV+VaG3hd$76~rdqkA0;?^dx#*_;v!V!u1HN|xk zlZlnFilF1r$VC*e2;}lOBf*S*ywpO5M-o*?gccHWrnkW{)4qf`CIjcy()$D?nZ6H( z!J(y{jEWHAo z*nu_mlzuvsVHdw8_2spQ+t>G2m$1f%))%n$mEXebtz$P{U->CN^tzIzXU@2 zg(C*Gg!$!2ok_1Ft0$xyoAW~n?fNp}sIzl6a|^Hk<}wa<8)fnokBrZoGblz^ZucI6 zd6-S)?ke4O3p--x#GRz1>G-xcn^J#lL?T*oCc`DULbCa2J1k`iZFZnow%(P_@;0La=;UW&~pc4@N+ zM^Iw<%#kGA{MoS>Hkw7y3^;hiBLE@o@p*I4a5uH@#;Z2}hYo1A&t8F`w;vFz7eV+1 z=WATOAr{(-{zu~o53on}Lv#l-h=CBNmI5+tB~$_{pxKP#HysYorlYF|wyn#r{TB6! zj#jX2pQSW2Q<~jXYy_UC1tnA7&cw8N%)0~BJGVV(ZfhG%hPzWzo`(vOX};@;3(QUR zhLsdjgio56uhsVHopMCa-D`QW1T{A%$*WB#_9n)1-xFC0i64GroM)xdB~Rt^8SdBO z;yR(k3kpS;v%PFh%TAqaSk~9>F62)~TRiLzcT@?Iw+9)R;`+9OY`W@tA7))7k%8i& zE??8{-rXzuv+MJ#b-#L&E5Y&$=2wwZWIZ=@QTFau64WK6lo7+09k8p;S zSXxmD#V@g?DW18el6dqSK?_YTh|y8wfogH2b`*mP7^Xcv)9WfV3MoxF$uXFLG9n2G zgHrI_(ja7WjQJwbd{nVqR1tk75q&ffeUv~0j9??=KqK@(BWd{I&&JHMU5;!1&@NY! zgN$y3!6aONYBz|hM08j1yk~GhK$!$=9usfi*gd*RA+4S@#9^P>4RrE8YKJ|d^jMIA zO0g&?C6|H52goETgXHe$|6a&6XN=;*&|>C*@EglTrd3D9nVAi zoJIxv++LP?sa{ro`Kr1O-j;msu9A8w+AVlB>L-)Bp@_IFq#zLru_kHH2nEcTQDpy7EcOz5q&Gl0bQ0krSV|kRH}7jvQ;(S zuN*C^%ky13B0gJ}GQU8Y#fhESA}J^k5A2qgnT`$h`>qr$ZhS!yXZtTUwKjlw2qBS) zOM4{Gj|bu5;!vM3B(6$Z>^p>vV+z9}ttl0u!5F<+zHFaseQJLcDcrAvx&1NVj>PaE z)H#!Jp#HXWPquVSeJH*fW56$%$7Ktws`;7ogt`4BW`#0?(jf_-q_}Jt-b;KucnnTf zO-9fM-b6~%S~J~R6NknUheq(dlzq&CVa%e|{9pV1{V(+uH8Z2a)k%?v3=-Pk#hRJ8 z7IjRze@rXHh9!!E}F0PnuKatf&Y7AkUi8e3JQ^2LR?OlxNG; zd_b$EmR}Klk+AZ6Ct$9OzG$81LlAGpE%gt^-LuZ{ag;l)84+`S*yt!e;ecA*FTVH4oCIo6#p!7U zl!HgJbJl}4LqxN;QyEyafUce%ec7ahAkbN`zbnsPuRed-qeb=c>W=hz9U1EOG(7C~ zJUiIFc718ip!?K(x%bPOJ>KBaNo;TxH4 zncYvk;qu)fhsb%2bR`hfULO#wxZIlln|TT2hQoi0>^16LRQtF?1e2JaD0w=|Zv9}r ze`W)`;C?L}JL12Q+Dutrmp!CYkX$ z8_{|bbXe4=rglJ*_-!_EAZ3wpVYs9`GLZ}&5v{0*YB`o-*SGpMl=iM@CO6JkL+&;( z>LWv_B_;M~lx1RHS6eiX8jN;IYFqu0#@s13Vp+9>X7NB<54NzMC=#2=GN$ixfsBkm zn+TwV7Dd^*o*-6xWW{sJh`eW5A8)ln`uo{;K>jBJfUz*xNb2JhuqPSix})xnB!mwh zYi~e-Zjq-_7^IMdEcHw5N78AvQrzPiFQ7F=AL7s-X$%7NKQ}V?;|L-N;>@WkwvvOJ z-8-Z%e|;Y+{fcCJ?-s6o?-u;|n)A=*MIJoxi+29j=b$m%?AhL&aRNZX}I0Vzqi0#>ZfL(pqyfb%6CY>BtCayyZ$B`qm#hvZUL9VQ6 zPZFt67jwe<3CnF$Q9?IKN`6+5@pWQsr?S-l$JAfI)b%}Yyzqen#T{DQ-JOHGOF8%{ z?(XjH?poa49f~^?*W#|ly}jrA%m2RbO(rWlVQ)gh%4a`&=9x9Ezv9G}l{_z1Iv@Kc ze;w511(L`E8evHP|BFAtyVifZ=4GpQzy0Nd=*Pb+VaU02;=-pN^Rt)%0;N7z$dx|8 zMUAVHUcUI!SMv2Nxls()9W2^!eiSU-`)@b;%3ms=q2V7wi^ycq$Pxnqd_B=@OWWzV?YqgttbxsSDLi zbbr<`XrV{4Q2#Pl!9r#5dd5Ba0hqT|Uof4YuT0#>!7-i~m&i_pP!UU912rwj$EHJ) z7fFr;kO20idyr#OtORALQ8ky#<7yhf_R;i_!IQZoWfZ$)2R~>PM>8})dh^u?=~vkG zYK&{w1~LP(odtzv+`51(`$uAV*^{5_YEe5oxKH-Z@{<{YHJBf>fD0wN5?w(>w(Mr# zsis;ZGHjU)dwW8P{*o)Xq&swXB`kcDd)k1g!qmM8J?VsA`^E(rUrh0Ld`)V{IHr<-`+Hj{^Quje?PTZ z;Qh+|d!Y?MVY}d*|1GBWboS~~=!T2JR-y6jGG@TL90ZSjssOwm#mST0yx)+`?f2f^ zm&f;V;|p;@3B!r-;oimjiLHD9jD9PF{itN|+(7ITGUKciW2^~jrqmphB3_+gDJFPb zd(n~GDl$f52z0Wb5IXip$~5#oifl!KB&{a)IM*uoM!#w1*Z^+JKtY7q<+O1M7gpqF4P-s<`@Lo;yyaekzKdJSfmx?^Dsv2 z3&jU!^y9NCstF~fr1HVlV?laH!=!hGbPYulZ3bg)#&mA`w2wQC4|~|^JG4xr;Jrb$ z9kFC%(X@gxiF{I?ijemMOcQOY^1I>`M9lG+jUa=!DtM!`MBF!l(+1^ayeC3$_g)FT zfhug8FbX-nNKRKA_I|6B0a~>IuJVP#Z%CR&xYc60otTPeaxOs*_XF?>0}fM=ZC71U zprtxkUm9lIgG5HR%d0xzPzpmMxJhT|0s68_!3Et$ikVIdZEi(7lY*X8!Qg--MyLE8 zCgC2Po*h?SU)0kJzPB0OX8;nckmw$e*&L7&7+89qUjhB-CDvbu69__Sht001sgovY z!@rDE|GK|iu+@nuyNDPys8{MR9DUGtPbkSE983T1X+t1h@tbHuWX?^A&+Simuh`$G zeYn5Z^4x!2M+UNE*_E{JG8s77jX51gGzVpssib3=sqdAjk(sHH`}dEV%t-FioZ`|v zf#9RVl%gP5d#1XTmfM29cxCU;FZm_8lXfKLjNCJ8xs2_bjO_wBH!05Zho;NBrt^Ob z-Lw8*FTk16H}kRzwO~c97^7o7xk3)w^+ah|9ia~X5^Smpx-l1u^ya-=#kskE)Z+U* z=>QW1k+lDo9~OX2p%(*Hnm)1EI{<ugw$4`x~NGO`hBlNuP+=|B*osHve=YFa68E zUH?@ZI$>1JS6xW4MY4JE%iOY-m~<1oe^rP`SISkKfnYAX7oX{UtNiJ83I}$AbH3*A zt{;=JFL=aTO##Lv#x)Ahn#r)ZB0&7XGluhkV_9p+#F>u67IegqJ>_1WVXexsP-s*t zIjs<#b%Rg$mh*BCb`Am<%}^U`$>%fX5obsEm8Fp7MSW7|3#)RuZ!dNMnz-=e+_!VN zbUi%h@~zu=ojo90VY8p5IAx)L!3tjBX*kH570ZYJ0LE{&!f%mVj{!rwQG5^+P;fC* z<4%@o54n_uLq0B=LB})zq(3Wr0mi$?qKS^7vsxKGbn&IXOWjirkfhPF}S0=kL zfZG+rFZcusfag-)2P=ZzE+5TmQc|QO{|`UF#~J$I3ME0xbX*W3R#WB+koKg@dQ+5q zPumP4LhPDM9I4WRe3_{}_uxx0a49U|0k`aqUDC5TplHmybaSp<9V>+4Ni|<{bxz$K zI%WsNe*UaLvmp|0CM{tiRa5cg5FZ`#Ir% zbRW)b!H@>P@U6Akt3c`5so>{1LEr4!iVZXcHy`gd$g8Ta3n76D2C_5%0RT?_W>0C_ zU`XR}MEsat1fpEEwjVgob*6-05ds^sU1EJiOy8hE3#37tPLC$5veV5;S=wQ&3+?cv zULj&Q5TLrzq%<=0X8cAdp`?mh&HXkt(=K4tW?t{=O#hvSy2(}*aqfGl&34+zqphXQ z2D!n07^Q~vB_*Rk7>?mwh}2NMnJ#&DYjLAzbij1B>NO5bf=jFYtkGy(&xOL6`O_77 zQj#1-Y1Ft(a#AMb+*nm5(OT4wu`s1mNt!2erdIM9993tr*BIs!u9t&rk^C!3|WEVggj8rTo*s`sd*;4@x5{mslc;}6{Nh7r5Sl#eW z9cPmp_AS|s@~AkDU>l9o6Z<$)_J-i)+`?6}umd?waS%nZ>32T>jfk-ZIDDcougznm z0q|d-B+#SO(ZkdoNCGxZ!tD!r6idE`v=D5hoC%)kSd`UVMdzQC*Leukq@HAJ%&~2fD!IwL=#GKn;EUnWP z^N&s`;KmcTb$V=J_-d8Rw#sN&uRZXW8%U8$PyLCn6dJCy>wfCBMWLlC!zPVggT<)0 zH6t<0XvA6`I8SO=tKEOY%|x^AN@%~}&@4IZ6CG7lV|7HJ9`hP?+IIBIc7oJkg4|$& z%wVQy10x ztSOEdRN zLux{i@E(u%goAZ&fnyIcIADQo7qZSd{His`lblG9oXH2a&sR>;7W}3yS|TmEVGgjs zX+DGOq5$pK?cyQ(l=+G;3k@Ehiq%yd>f9vBax0DA`7nM<;q{n8Ml#UD*;<8N;KN;l zUoXI3)!o;qdU+#-=$FlY;Rvsl3c!Ak7zfJE+GXa-HFlCqS_hS%DH+sUBUS z3KJr+*h-}3e~~`l3s0K+3gSaH`Y%v0`C>6U6+oR#POq1UVLFJY9*Z$4Rd{vF94i(_ zCfT_Qxu`R4z>Z&+2Tpm>RUgc?_v;;twueq_k$1U#N^KRqbJaT@$vMV~>~Y+(yz7ic zy&Wkp%SK8rQ9zsohgRtkvAmp6KhHnLc{z6VIVFyA>K+ zLLVRi5=a8#>t6lfEg%n&=K0YCG!ysU$#_x1J6(Hs-8ESe^oYMHSKB&T6+N5_m*qi` z#urKl^8HJMI*{HUIXHGo0@?Lv!lWC%1&$BPD85!NVAaMm6VBAT*X3E^-P4t z$&lXFklEFc;b9Lw-5BewK60`l!uKRPXUth4rMO~D9yd7~q@WT8@2Di?oxC6uhe~7l z9p18GHWBY1=Nf+=HUHl>lMx}w*H&{38$Y=Ik@T@BR5BLksKStkl&h@>PEVw$MMYZB zN|B6iG`TC6T)!1(kPPR54DtYc%mDmUki!&Y>@AF;7R;^|Xb_i1Oss+BNDif+34S;g ze~J#ipANa73KBYj{7f+JuT|{}`orlBg!&^+6C5N{=`ZwKQ{M#e3Ov{;{+LMZ%|s03 zHo!@*^ATE}I~LoPGFnnhWGqFr)k@;D;W*FR5uS?W47j*BcF}4z1uh;IP%?R^3QlSy zJnvOeGJ2;LYl^LP8Nr5PV4SS<1i4N+ojoz`gIf~(vz;BAG^fbsq`aItG8V@&7Sq`@ zk9Jb3vYNKMm^HYaYieVwxR@9{tbqIF2h~kcux#JpWcmY!F0yayT|Za4Iv5%^v{k?>f&)4ub*C@cJU zrlD4P$CAEsd-s2t1Kf%`IJQYY{PWB=M&ov5gr^d2yV>7Hqlza%@cSV0+hKiWS$!Aw zzm^!$UH$qm@Jc#{hu*ajD{@OH~#{tkZ~`kvz5zhsW{gmBg&U8~=Q=6>^b(}olWL2}a zWRz^sK6TDAb-_^Om!ZmT+o?s<*YXwm8(Fz>P(;N7oh7H01*cW{N>%wnRrwNK`P^9f z%7g`5#c8wk$wL-U&D^|td^(XDZGlP1?0feVXGcbL6NiTFVZh2*{r6eFc!(|SKIY{< z=FKIhlZ&u^60cQeO_SQ#;zr9OU4;+^{iE%ZOqmMgCD3mVnzKZPj({}QtA3a3>Wttv zC98=tAetb5KLbH~AqYZV24=9IG`PgMQ6TY&o2iGJ={GJ)E*z60J+O6v{C*8+!O=Kp zc91_i)t{0aO~pg9u>vU8!>bmhDwU-uP^T%-WhogXEf^#%+=l`r3VbV55lh#W%VUBk zeG{Zd^;9Rkt;npNXWceAQVWl5(p8%IOsI3_=+v_meZ+nr*`R2#N)qxe*2Ku!}B@Yw5s@t$7mM8%<&e^o3#>8^*K`JSPJ zH~(l|2*sX|^UpFAkv*z)yAbIuYYOD9z-(3SUIFd?)E9)AY2w4N&2z#WG$nuJY2S&R zi!$VyO*4Zd?vJLn)9ja&t+kE*4PwZ3W|!jZCXv^XP?7gz)7zD&j~|JjPoV#q^Sf%^ zZeHgddNLteJl+#EbK1`C%EEKm_C^tO0%?#>Cp_6xjp-|XK(k;F@dx(U?1}liAeiLl zX`cPn!jD)PKS024(*qOgU_-;mmmuPK^lFEsM{#A>z#VGHe@F15WppgrwVq~B(Wx}L znUJO;le_T=Oh@a|;9iGUAR_CO6e1W&MLBeg)g>5xQgdqao6%%a3TmSj9v6x-f|S42 z{J)$>`>H~#t*qhibr^EZ5p>+v*!nRo4arNB%P_$wz`@p8RgKtxB{bq>QJ;6c#|t`Y zE_E@l&YUR)93ar@_SOX(2QN|f;_HLD2cfN+SLdI#jfNAeUvj@`gLQS{K><^Lt|$~D-O~e)jOqmrT(MkU9Y!V^Ts4>X9l@H7YC2g8KpLcYc<50PF_3M za2A}xuc6uq3`&|lPaL+9Y_sNxyH_9#vcaB1FsaiS{h>J^qlG&#V_Go8ghX|8=&+Yw zN9pTHxmKV;s~K*z))+OB%i_F?|Dc9iIDL{p%R#+qr}ikQEvrf$MW?3RwEy(5dU!l&c$_LceTAX&MOT-? zerfqe%9TqKBG5tF(=QX?8I47UMa|iivLCyRa`;2I3PGSD1X%3LRe8N27~S4a?rVT) zSLxG}ZkgGgY~)yg(giu6K>#bb#4#Z{$5+jws9_qzc6DdzqQ?==rNFr?<7_RG(E{r`fR z$V$VZT(-Z!43?rs4npJpcqTcitW-iP5bJ!kfq!sHK_$qmC-kB&k#)KFNTw>TLPJoM ziLW%PMFC=jwED)XL1k9logv<9B*h?ySBJ}?TDPOt6&M;28XAz<7n^g%>d^Un zOf5CVP@1^sNC7$w`5hv2AJ(3yCGXd%kUf?zs(!JbEX?n#?X*pt){j|oj9YTiozgDM zTg`*Yl2n+P3&cQjv0%|)CGlWA`5q0$8Y$UWInf$9r5>$OkUn zped%;6bM=hBUg&f)(b(Aj}B#>G=TG*vl+j+nSjgXE0+tt`hS6E`V0})uKiqEw$bqO zrL_6F+A)wLP4m-#*(M0VlWK5%;Bxh7p!_yNx#Z)DMWjm$5_8dBvtVzWD>g5h9qau} z`k#oWDoJ61mI;=VN(PH2OUXqm$z|(Fg^Nm+sX#&@oXi8Q81g-_Ks#)Y=vS-D0%3c< zebR!tD%%05VY}ui|NA&pdJEh5k*1MMzxHJ^BN3rbKV%Tr&ONq`M)vM&tv$ z-h~){-(T9(S>ipPZANA;Ws%xO6uR4#$Fo0yg!rnDAJy>u1y2vxH{p>u76>zaV}qSZ z*aV&sf}Pv&GI|uZr-)w7>=yW)vwvi6xXd!{jb0FSn%iTwU)R5UJP8D?I{I(-jGUE0 zkIf$p*VXrt1-u&+^#^YYx1~uta{5$2iY}4AZgd4112)l!w^RR-VH}+MehGk)5=L=* z#_}4mn{W6>G=;NZlE#^saYPDSkOjvDr^K)~KBlRByC65Oi%e0&^L|WeG|GBN(*kB=oKF(;R zYnN6VTO>*}pwad_J{w!+(C}eGLc-|P?@&sbbW&`YF&Wi_+!7=ExUhEtB1u@dA#w&j zMWCHD!_whzHIH}RX~m4iR0}FQPNOe;kpxAH!Lnxs3VZ$345LNmrJxOw)PhhsUo1OU zrV-GWdBRV_c=S;mDF;ZBCRbbXd##r?aXQm!5!>i(e?8~j1jHX}&BxXt37ZQDyL&IS zla@cip6kojFmADLc3G0qI|%#3QV&M#icMCiCA_)GWw!!2O_}CXXt662%R{PuA(GEQ zqAbi9J;WG0%osDo2sZ@Oy4oX)E=sFp__cO8$FhKTLCm2vd}ji=Keb~|@5dC5M`Ms@ zlg7?8YJW0L5I+O9rWs7_6nu`hwWDdx@Q(%z=QDiHNEI1(2~a&Srn-g9q!xj~eL+gD z)n2;O_)A!d%M{&OMC*mb*VZ^)7HP~r#-Pm_0r?UHZC`pfN}r!N8pT zS_BJo$fuI*XI|31K7|U;8v58^$u&YA`VKYqQG(bSAM~$#xsQH+E9=vvzXyG|T{7ak z!aRyfQ=@-?Yg1P4G<+HIVBlU>w+T(M-5hO)@K@1x}2z;1@oR+ThziMIpJZ6B8_mi^6 zdq&-dSNxmceexE|2L$fMR^77WT17!O)Kpm0^wi*>Se}Zn)@p3)`8y6hIpQtsVUv>g zU5G#}I^$}+L6hLP3MoNVMX%B<7X>b>Oxtf9dUS?E-v=VvLgsEkBMekii*&#xvjd-> z6QOoUNV=vumz<8R3qzUQSPSaxsJuvD>rEDnrwZlMWy_e6`Z^+ryE268q5_>zKJ-uo znW_A;lTf3BxRaAKilVra!*C%9l#&$0$OuG7Ixacb2QU)~AJGFC#g!hXMUJXP4i<$T zuLg_*)f5I59+@b|fc2n6eNLpXyp~zs!meSv_bv2Cun?0tGgYt>Fc=m1S-=W4{XDap zlU2LGc&f-~heE_N|rsjgM z*_E9w?LCMzpxFEa0{TjmW()P^GwkNG!)AhmXGO%$DW`X8gj^{$T`5b4mUL~Ue1*Vm z$}(M=5=9yan9Eiw&BiLs`lJU%A<1+%AcY;BsycogPpV_*^i0rpe@Q^HJQV*I{%M^P zR;OO^Q3#8V*Ew@6Rh&9y`zxe?WmzUUHYpC>dQ&%22xZ`dobzwaTXnwqp-L!7xmLLE z^vp1eIu{zwC7PqwA8=b=*>4^b0^8u4yO)`cox&sJFR64cF&&Ha`}qgKLINfS(R82v zf86~!E+Xy~I6I1WR8{lb^Lk(HKVM|&gGo@ zsfnb){xNxHX!PRJe(NT~4_z?mkE3_PY%dhCaQE$5mxcio)R_O+4^n`q8p|>X5B59Q zdl7Kk-msT`5)Rligc$7Lh5b+ie0&jygxx;>TeXEY&YS1*ivGE)d_vSGxzXD;*9noc zi;WD^N=~JpMAKpqT(B&);ToMLWo8$X7!wk6$f@Z%Qgjhuha}7!O_Kv4#lO{NvdEfj z)yPOCb8{V3NF7f`fss_mkL5eW2?6ekj!<_DsoNAiIP=h`k*Bm8yz&M#TFTS^=QZo# zNG~on0>P4ph#{Pwf*R*j4@@e?H>wH@Foflzr)f=;rbh6)uiPrTp*CA_r`GXZoLHgHr>kTYl=7;Edens_F#@%{og%lJ zLs1M9ZQ`D#-Ku@l7BkAmR$n;R5R{Xf?%EE91jRL`kl?w6#ElM+F0^hq=jytDrltR& zV7|ZsE!R?-zwseraewRdrYJ0KiAY)|Rg4s2)(QoqM?!*{3%Z7su!j`6h!q+=s~Jsaox7e)$%2_G)?{{lSCVT^Z?2YWsR2nW}}ReehlU7 zuuLm+w8=gL!`iJCwj-H!1e)&T)}K^bZo7Wso*-01n3bye=O=BPwl4XMG+YNYrad`R zCVQT?n?U~rcYZjJvXX4Hb?=vA$b(?7cD=c=rCYeI+UuPUGhuhH@E7BMenK`^J5rt~ z5XyQq6^0QUE^X4*9Zg4B*{Lo5@sdPYnXGCDsgFK%nlUf8I#d=0;<*zImLggqaaufL zQ$$Tuv*?BJN(M_U%GB5=)&5k6L-qUl=eZ^i1v1_BeDB71I2nNy&3SuY7CJ#(`rqv; z8-%%#+MpGN@Kq~hpaEQfK;{2Rg?@~XtN(8=qq!8$&tat zObH_o$#*}p+Px%ihI)K;cCZWmI_RUkXgZ(J%}v(rz2d0UlvYgH^-)%nuY zUxgTRwGcxbg3=h_9}D0Kh|MP1@fVpmq0YHL#ytvSa{l9Za*$xGoy=z*2y>LUe)PPW|Z`<7M*jR zKd%9iJYiGaT;<17d12PN?946cP8BsF)_!a}uh`uj#k+&SQbNLeJG0Jue+90OCV^k_ zls7uK?2eYT&_%Wg)Nak{GL%sXUW_KD^2{dMg_`n^7O)6AK9lmC=JkkQ`~Gnh4)AGG zzESpl1^D@d;`K2GFhV-CtM$nOd_K%ZW_3TB7lQ$});XKc-=QM>F<5%*!eJAx&qhVY zJ^`Gbaeqex=GmXA>EGZhJeMd-`DJDhmHa77@MJK{gGwf3Fvc)S$7N+PerE<DfvB z=T3)4OwdWv758d=l9HliGRq&lBfx#xTm+BxeyZ%}+-3D<#+c_k zR85A?h~HZgBV(t@+1T<@4lrS$F)S@H**Q$2p9@MzHKh%I#1;B{DokQearz>qOV!#4 zcX1>Iq2~RB6DNqrDiH$CP>qWbQUvG-^|L|ds(c-FX=Clru^Pfcih`w}FG&hSl48IT zZL5P9IFlFrTUbd-oAr^fUoza`|I#wbk5_vRdEkxx<;~tzO-BEPhiB{y^UcfU&vQq#bC1a zV@&p=6RUmcl49$mFt8fKR_k3&!fM1C{WwY$>p&Q9D=YY0Zm;`8h(jpSiC z^Jr_0jL+J55trvD;cmTEQWQs*sI+R=)9YWFz_;UUy_K^5l76-U)Y}@%=t;9{`J`Nn zuP#O$$}dl+knk<(a>V+#vh*nID_VCS45@I%b?3{C@t^%&)EpK_+QI(+3>RsTxxgnY zaHK`j{$E9i%_<@G-@n}d=XNV4NL5&x%(VN)_PgAyQ+80TC~F*!3+sWN`b;fmg&wa? zon52Is2MzN(UR4GkAl^LAGc_kY4?j`!NQ<*{HIP)+_)92@ge32J*9%$ct)+NL$mB; zCMw65PFtO`7UzahH#E_i=FE&L71krHrfuz^0IEFVLB01^9ljVz7)GPcT*Oxa{8xc~ zgaqa;dU#SP*l90_YNSH3qT)itOU0zaF=9(~dg(z(fXj`8iw%2~1XO6sS!zt4vR9nC zf5m&m2kO|G7S4<$!V##Va8sW%#%K@#cU0Le#>&hJ*MF+TCRWgY+Sfy& zKm~@|%zFdazfqT5TLb3v6X)_(ewC{)RIhA)N^mR6Qc4bEZVD2~B!@?(X3K@cAnL?i zUmAX18isKxxj&J-#~-@SHbG7q$75w62B7z;h*n8OwvnPOY;{9a>TlSDo{Yvj+Kul4 zTzvp@l^X~+A$~ctZ}XNKSoIbs4OX}X;*Tf*Jcl#LwZ&4Dr5f%+Y4R^)74`#U=rOYN zD8sItU{s8KAy{WuIHguC;D()X!Qg~gSEzFh^-K#saHVutEIclh8^!#)dXAkQWP&vw z%~=UyUAj}D=*X!VtT{L($9ln`S9kKojR`3_*M7yJKzvZLFRe<@OOJ%r*?4S#AlP*C zWZ}*$KFrz=FMUHo$BJneT$aJ(4RK+V9}a#(xZb^B@bgG3ZW40c zjYnjs!i?x$OJ6?ZS$GC@HPt#YamC8CRrqgG!*Rz#%mhes}o@W$fho zt`Na-Ob{#xl5!Gq}G)tma9r?lSA81cLf zeyyG>R&h>@TM}ulUGe8D6P?Xw(!|lQ@iD*qQBpfYo?s*_JVh+0@vUQ`cV z81d1Hc4`R(G7tfQ!sN~*s{Z7sde4pboZuXu9O!Wxp;;vo#E!-4T?{im7$(2g%TL}+ zR8{b_f~;+Zi^}`IU5Mlq6!0nrQc6dcj>WVNh49MD-L~>_ht?XYo^VLi`TPh$=_B*p zP%XZEX2Ns)C*$_6dT{CUW3&Cs*yb&}tjcUX#|2fPzF(Rmi@@Z_ah~z{WUeSsnVuWwVE`HCiNnHuQh>An!BrA_}(*C7eMQVS|y%o4KuMZfD#( z5eEDUi?Q?=hYk1;$7;x2z8qm>H2AwL3HiDs0#9+kmqNL;y+4pVR*kccOa2tVCIEEm;a1;$+ z7}nG8q9?u%GOhYEsWLwOdk^O;%)s!$O2Urpnabw-a|M9i`%J&LEi?Jw`Ty)0SR2VO z5D1e@_bos&z8`<%n4!j!=l?H@P%1mDP?VHO&BdW;RZ6g=z*PyH&o^omoi^#oisV}| z!XL4Qn36PV3=5C40qollHLEc$QNkEO(t>D4pq67X*R<2-&@tMd>i1dm6;d-oAs>U} z4DMX%sToRQJml8QSqfKDl+%UM-NZ5coavy#gNW0k^xCqB(~|mQrk!&$HciQEW;D`gOoV?b zPTHbRnHda!lI=Q#rj3KKI9kj~t6~+NISJjyfF|jVW6X#7iWB*gt?;BtZvY9oU@4^{ z4aH<7@hVaAjo%39$!W|@Ng|mL>RxOuO8%D|P-OFS#n4?(@&?SCr)+&n@JkNTOWq?6 zXfDU$b#9t7H!YeTd$odHeu9p8CxG0uGH1RrZ;Mdde@j5Q4M@O^jewKHV8X}v4KZ&J z$)S2Q$1v9R<2%Y`&}y=OuR4}!3gxiHooP*VtgVS@Vv?F^#m5yDAANZorb{rRD#Jg_ zu}N@z_XAjh96GhfGjVauzc1z3E;-a*+F9YQFX`M{cWjyOP5WwWZP_2k_Ot6<&)tIC zqN;Ks0yV0A5j3!biedjq@8K>p`FRk|E`IHKzd2i2iT`CGCYm3M+m4vq@vc5o88y?> zU1T`+ha>=Kv==Q)QKxvhKd|^!y0nf%;Nvq~nf*M!Yxa+d4VY3P-~8H&t_5QKCC`Ip zBmKN*4;aYzz5W60_L zFO+2|FS%pE5Q0+P7^QmD%XYU@;&>b`@s^~n4hgx0YEWi^DYe0i zp{8FYxbI6$Wt z9;c`DT54Kcji4)$@MZ0Jv#Hwmh>pAa58;Mp_tZ>kT~fDDP;xCV5&-ImK*=Qo{vg#DP z=3L}(R5zH}2PM7bbW*|&J#7JVj!sieX?-U@6#9`iJ^7cz`o{~2*2|*5 z@`36<3YFQvX|9uc2Kx+?YpvutM26OpDBs16hRo(yt|i*3<8m3e8xKR5s{NUhxMrp5 zUppK$1W7~>8dIzFdb45~mg}i(1nJ0B4y0{GyV#)b!j3HzeM8;xlb?mna(q?|48chw z!0=##7FV6yMW=Pp3|nrna~k4SrQPv_yj=!d`R5xu`pghr!CD3*wikvi7JdO(SS|*eti+Y3anRU21V^XpL1>x1I99 zU)9u5EE)^p)(v)v$98P}q^vE>#8h@l;Ftb^)wU}9F%0pjqW}&Vo;|bxp4iX-X99kJ z98_D{H}^kc{%_gV?7MG*_$w=n6|Lg9DuC@ya8w*9^rZyN3QPV=COtnQ z`G|~{`l+p42rCvi77Pq(=YIMm2O2Aa&8%<;E0WmNnT%VN`sbu@%D}EVf6^UGR%RZc zKCir9>YTPXm5ffTxnYgsb1JBh<2^)tZN*tIr!SVzQ|{``P*SDK)c`_;C)t%*u`%g# zqcBNPJy-#`5b4w#yPh$sLAAw7MMdNJMQi0nvUMdYMTMdzS^}?3Wx6b7qm{aKGHu*qLP!L3$W|nd8iv(id+tA32nyQM6D)MpkD0*Ya7nLwoJ2a%Zd{ zbwEi5g-cq9K+Pa8V}e2T?aIz|rX$ta<}ieuoDL(FZI0TUH7qpUw(v65P0RY4@5`~y zl)`jHrq@v+LFNwZY8uMpyygS8dg1q1aOa!f!{2S24`J8@ubvY;z_=!50?QZG{1nw< zjc*q)3G6fhY6PZ>877Mvlxlcb<-dT`B62uvYGXwepb=Naz{OKc3s#wO9+~om$cm-N zih0@cMLsA>Bdp5U>~FQ(&xinwB#Kl}aY8SE^g#pVft#zv>=X$AvR75H*7#P42_lW{ zuZ<{^V=3*YH#M)!T2}iU)La^II+ftesyUcQPB9vVLddf0TsX7?NH9VvlT**3S9fMxZ?0z! zne*G|Sh6})$n_7)0goq#a+q+PTD5+LvSX}Rn{L{v-AFd2g?lslY-CRDqY`YpP~X=7 z9{A9}LVL{UXj>S&^nzWn#%%A~_?frP`Q9NunK~mif9$%!5&}0ZNzP>y`P(@?e;xD1})%y5_;?|nN%26 zD?fo& zOk=2#k1^1dpg5!^z22xMVh5+;8BVHx)%{bn&vMg{J%td|?lVlt{)a-g)>$7$UVtJD zjC8$|I^+3D^jf#<$TB=t!yI^T-(_g@G$Im&g;he$3>JS^jWoKK*;Am!O8PZ6uM(-M zf|#s=sQN1cGzSSp)j1&45UIiltwKM&!XP$e@B}r2t_|h{BXV5D+@JG!SU1^%SvxO9+6^X@*4^PvTlUzyP(=u6U*+4cVFr9@>Mh4z zmZ!2M5>~t!iG<@`YVCYjmvcR9ucqAdeu8GlVWx8APByhem~y2(b}$Rm-q73D(faZA zC9HjA;P0e5?daxRw<14LY?G&lIpC{ZSOgi!YcoUR$dG`2*gt zs5xex`H*O44R;TK&t6RA9%(Fos$ZHM1_+Nlri_-`@unPdXI$Fwrv79MH%B^W>;mIG zlZ6d>SD@3pnGE*dwq(9AiU|6{Wd<(r8tV@K+e{zth+73q+n4KkyuU>@{~BS zwFL0PE^RVc@2Qv~Z7*LP*)zR8*EYn?-cAB-C-<=A;f|A>I}$CA(Oyh9>1g+*+{iTN zo!iqg2V--5YLEFQSq`K`F*I)xJ2Jlid=cO`zn$Ps)0W8Q3g-(=jp1cjh9{B|<(91A zuc&iL?(opgV$u1u~K(FrFB23YE}S=dTX%G>h~`3;5qoy$6ihSL?r? zK_&1k&S7$mPBs%l`u$WQqXvgj;elG^9&jR$Uo2L?=a*0@D|**vJ?fz3dg4DGLS}+W zUs$0Yjr(B--Sh z5y%B6EdWaWG?75YK=y|xzRB{G>Q3#?gv|DO~PiTaXC-e(q=G|AuVGaPuI7!tyP1QIFWU7!4qA3=; zGl3qOOQuWU(}jNUVsqt_hV%%h;y(S4T{@tgnI4r}vLY~OB5C8|EABMPq%p;lxtJ1) zlBvMJ*!Qz|AjyC5G>w@H-lc~$jG2Ghf{+UMZvDJg5sGL1Zb4YbesY6u~_crJWN*M~0wY9M{eTJ>Zj$ z#cNI{Z{9unAFFb?k^(v?;I&zE)aAo4jyQr8{fgk9NW??7B_P$z#$kKz?DQF~@KFUsDf*4^JQuFEV;`25K>BA&Y4wp4g)F#PL>v5|5UP&Q@pgtQJ@^0Q z@g;>~!EsEwqN|2I84mpFRrtCdek1;w-EWn21dU)KB#|OhU?kSE7AxbBEfct3#$msQ zoaQlOd|Ld1`VN6pb;Cl&DPJsJ?Lx*Cckt;IM<$;k_X72dVcfBfPzHP6p&pW!ur*y0 z?A;u5j$~sz&1cH!7inwEe=BqBy^Lu$mW7!}r{kMrEW38vL}-=YJ#?CqS)$L|f7l&6 zSwU&CM+4JyMrBp$X=3PdSWEv@PzBF6MtiEQ{dC`Gb?$Q_@TaBUZ|WAaJHmCMXiFgQ z42Arv1G9qMDp)t>LmVK0vM)yYcH)_~D@QPmFe(*jf`}=b_C+PPFMgyGiSzpP6F)ym z{r*q)J|w`)@YT&P{U5MV;{G2r`8U2S;qmF8WS;h<|HIYThWh`HTK~OdA74xAhykAB zL=5WA-3o&@>|CRA>V!<{&dmywqa|R}jU__HZ;dSaA5$6m#hj#S0oFG|bQQZKkY%EZrQ^lF^47`<&MLa)vGGL81m+kTMN(2Op&y)q5iWrd z$PM>E$gI!uq(l~FQe}EleR>E{Tg$B0ax02BW{04>3$a9!EM}LQ1hwT_$kO`?-@t zta2mhV*?P?H<191iVPQgi023aY8FE&m6)_ikqvfR5dtw6KLe~MVLz^D2fL1&!7`ZO+E*x;bC?Hh8z{rQ{;LMQUUXsWXB?L zQD}Frgbf5h4Wm7Y$joFaIHgrCLKcuSM4lmZ4X89EDd)gDZPuPZCmhp=#^Fr#`p4@+ zeiEZRk)pF{w$qeGX?Lx32u@DD;{wm{LmlXJgfy8VKmh2}pl||%&gGuPxw&C_uuF`D z_MJ(Hq)aJJBZWS&?TPt0=M()p*E@Yo3=_OdwvJJO|Img728J3Fk_pB_) zPyqL>va=3)zC1$r2NyxW{6ZZJsS?b~F7dbJ$ArdK>68|s(&mS`+1l!do7wA*&mSd9 zF&^412BPN_a^Fe*R!@LQfPOr`=lAU@y|0cHgNHZZNpXnc{kb-uwE^>2<&_^8OSbXl zcD^!-=bx;=B;Qut;_Yib($Xlt?KwQ6nF{4+mug$t47VGj0U~;6ZGNAlBhBgDCm_uh}uo6H)8~ z5du2#^z$LI2@-{nlgnrkrg2dm8H}~BdxBE$KHcO!2+5Zz8lQ5a`IvWNajwK3BI#&1 z4aGhP+1cC^NVn$^?E2YBJS!SSZ<}y4WzI~jCI9iA4Gy)t@?jl`?I`-4$>Ronw@Kaf z)0jS5u&iknBDe&~>Kz)tME7+6$pi-Pc;0FCxF8Tfzpr%)M3k$ONz|c|nJL0MS_fl< zz*2y}#8~*EBM=11tbUal2ou>G^oam>L?{MAo-)CQy6zj@8?WuY7DBF@3;shmmxnO; zw$Ii~VjPZa6f+5sYHw%V91g_@4rBHD!>SV=H(=aOa2@+2BK=&=%wx)6`FU;X-Xl+Y z-;CY)!lg7ecSda`)1zZ%zifh3F!Nrfz{=)^wfvVI;*|xbs``2?%3#7o4BfK!WHV< zNVe1k*|i+y>3szdx4DhB4#Zn`J`e7#ussr0Cvr!W@5oA>Y{?O*J;rt5;>kOIf!$X7p7O173UqGRF;l|1KVh-}t@bKaOW>yKYRbRd;UQ8$h##gWLY~SAYaxmeZ0t z*MU(z8n5>(Na6Is>*?(&{jn46v}>R2@A-Y{+CZ?f6dH!+ZOw{fwU)$Wb?UgZQ(ha*raqCuUY}GfVYOz{ zDnEb-CxqTte9+eVtr?#>Ktl8>&edAe23)DL6Gj2M*Lpyz5j3Kz%0zp z&H^vb`_%cJ8BbOAn=lf)n+BaDc>vOwg_K!@lqcMGyE;9V()!HW_(ojThLqqh2!zPP=00eFzq-c-5&Q(_x|< zYp5<;m{w{*i5aP4r-oN~gNG6Q3hO;?0OOiG}OdO;78z0Ep#R{2@ZX?is{iB%CWVT z+~F2Rw*5+hoVo~7zd=3Wy?Dp_-Q`A|_{)>hCA#P|puGv#On2jU-1LAt! z>$ZD(xk>hmTb!T=?d&kNT=kq&o06jIIbb+f@X<7ij<~-3{&n;;HK0~BdrY_xl3G#T zVkdMWaek@F=RUj;i%4k^FRi}WoT+`Hn)~}amT}cO;!HudPTIpT_sEW>ksAs`zIEn_GXPXO4Ki_4{7q1LmMywKkL?$t$Lp~)zI;cdETu%y9fIp$ z@68b%u!R3bByRCozS@M#Y&XkWCQT8y@gLjWT4`67aW6(o?2Ujr$fv!RX6H`Aah9TR zmcj#;wH%(c3}byE0VCKA6k&8v8=L{0vA3s#{NG`jSgr2U1d}64;L=)Cta9aTG09*(g-TOMO~$sc~c)V|E*CGW{}%RE0E zYHn~+BNYfctljqBFo$K<|ZJ1X^mU4Un0d_(RBaU%7bLBCRB>Fd%a*rmgF?-|S3 zI|@CnfPBK}Qd}`-yl%dc2Agr_J#~scH6h~CII7WtLS*`=an_yo&ZD`rnu1Ic$6JLgerwHG$ zhV{`hDS+356Q{s9Sz+qByFI=EH;E=jj^3bgTA4B*e4!EIMU+6B_53jL(P;7&_?Nq~ zj%UBGQ4Z z)60$RIcYQd4<-JFkSXeDwvN2qnTHhjT8ljwj<(?AhfwIu%)XWBYp?O~4rAS^{axLh znI<=Wa5SAQ5`{9GMK)*lBs1nPGn>yaTBT~-Y~wMX=lP$kv_J7Ht{28eSbq*zzMxCx z{q3Gv6bD`Xj0Yv;clSPf#CO<%e=iX;DF)8$;iw4X)@VQR2r@iBhjEM))RoUT*>C&37D+@1YNbh9y|UyA!%X+Q0FU;5qjl2 z^`b6#DHDO$R|sDPgT?N;g@7YV9naIdeL*{z9+fH+Ou9xAHQ!yoD9juh(ODl)=2SGf zG>(rZLO4*O-A^X;!54Ijhih;-c3HxTuOBT!`qoWcJW*d5ZFd@=Z!1v6Z%xMm3=uMdb!}>Y*xY6o5WCH>ju1% zePPO5JyZ@oQgue2)ycT8RF)#7NGd!&SBS7&5TrZ>Qm6~D)zLQp4zXSo1`U=L_OV)L zYpKO*D5bLIq4`YSY13$)!dGaaSLmTu=%BLrVMz^EeW!Wbi8b^k_ARLJCrL=)HBpQ) zZG)UbA_1kk9h73F(EF;GHj2P(++zbl$t@~xm>zSL9nCJ5cONk##_nS^x>VGTYfAYi z9ddepgAxZ#$Xr^f)w|XZfP4Ep2)R}d_J6}`!k5CBfs6Qn@5wNNwwuGc=+ZhqnyG@o z6r~H8r>^wx#uNQnsEJ2~^~!&FCl(%yYl3zxB9rC`$vBs?AN;LZy*#a5TE301uyX9P z6692+xYa_(Ga(~92I=E??Iv{l8XwcRvM~KS-p+jdnZ^n7`9KqI zDS%^Z&tZB@eAE70XmH_I-5J;B%Yo>F{%c$L?{A5G;IwqQO5=QlggCzx{&lI;_VCor zLx5CowL#Qp?F85aZI($K&F#BlFG$eITWt(mG*qONQrrq27}M?@ts*z9(jLRN@o_@_ zHZsG@6y^@$)Qge*owa$EEkre<8fZ*)MGRBm3A!}e<1kW}8r9RQCT#TmnxShdqgNee zIaF!T|2;AyM&~tAW}>o#(kDhaSKqC|g;(Yt^n;{0LkGC>$BBa(2}8zOuae$GLx80f z4fz%|Hyb(kEqadU)jSW{JP-Oj4=UuFJX2v@^XGLlg@%=2SQFM15yGPqekloGt2g-= zJb9}D{^KjsMvu$tcVue6VjjFTZ_ExCl<%jqq%NS?X`R3SQgNYi2Xl|r=**4e;I5JCZ#BCCTv18gSY4u5s zOelMd%Iz{oIA0l`_?Lhy+&mLUzu%SFhq6Z;0XEPg%IkyuX@(hVw6fpi_mYy$SLdrG z6cBkgM#HhwB)qdU-Ah9gp8VY(9r{KC`Sw{I`jCN=1qTh%WZ`PT%YwO4)6_^{Y{oQ` zr7MGY{IMa@+9>A^%ol54d#)oV@iga!`Q-5~I!fitxoSJQl8lp>z?GLH8J`p>XS}s( zB1=&#hsZc3kwRC3(8q6O-9J_QH0U`KbaizYm-dlsBz}V}_(b@3n^SLm8@ALszrueV zeRg-VefpCrgJlsd zoWizelbEBavX~PHPqP}cX4B}>v@$$pMZQEn1uYl!f>SciO2}1~$(ocoih-|;LFIyv z(9#H1mhaF~&oue?wuVukl}?tKQNTpb4*CIKYG;R~h2Z!mg$!8yDF-{ti;$=kGc=2S zYmkL?SV$`co!|8o1#_c#YUnLg+`|ek^#`+O85>x~Vl(3BEkqNek!bTe z#Y_{80+kctKvl-qGpIBrB80k(m@RtZH-a_hN3_baMe5SPTdUEKOBLxxm(0_ti7GRq z)NE0aN`**uK%^=lQjs!BA#$H=w?zio^yv(nh#uTPg{uT1fo_PU9EtSuipf{}!OXcJ zvqvhaENypw`pSwn=4GoCAasJ5L*5i5zt86OlY^a>z;JR?m$VE_C#-SAEDz0UBOP`CNg0Vw@lRpfEP|pcURnA> zX}sVg8UgSumDEUO1#4IAs(cMK7M*YZD*BNPlW1DUMp&D3A6oLkZI^dCO<7n!tG9%g zXQ_(txj=d(eKmH?apCHH8-iFKQi9ysd82Em$v`R^?z^+u%b!$)L5@o>w;*)lyVfSJ zb3!taZY$%bCCLctRLVP+zi@~?q`|+X6f}SSsCz}jP~-gVEEbSuQ#Wp9q9!dp+m1iZ zzd3^DZfS!FoH}JbbVphqCttiRU~p+k`z&CWR;P_iWNPt;h_Xtk(xAme;lS>7x3sb0 z!Rhj4!>k|OI-KzZdK@h?f0`xRHY!H!kfbo$zZB}z@Gokz&>$uLJ~qH};CR0>ZqS9$ zZ+P%EZm63aa3xemD~0vKBVQTk&w3#0sl~)0CZaZs%K10nJ`L@=`pWV6B5H}qX(3y< z>ZN?3*D2I#-g0*b7OLh29fG+Gd`gKJ{js!g^eu z)_>-B9DaM4H`R&a25zrx35C|Y%)hz|%x}52!r9p!o4dp}JUHruZ>wM@6N*JTYcdcs z#ah=U!V{hd?_H5#&k@6})5>e_Y~MQD8qWx!BVD(CCF_fAWGm%eX4Ml?P!#Nb#|U&MS*Q!;$^DN5X#`RM8yq?mOpAly7mTyjbhv=W zxxYWxfBUpifAza5a;}5JI5_>Fx>0~Z$(@w=@hvHz1MOK6)3$^!>se75Z{Tko#+bbE zK^{Ku84sd7r}J&Fli+#BjOo@rwzu;$idt5Ea78i^V4m>6nMgR~;s(RkVHnp$2`%1u zPx2G@)HP@?4XPSt7IfhPT0k)D#m+v%vC{+(4{eY)I=0E{C02j}? z8CdSLzfN?EB!#L>ZL0WE3As^pN^)9Txq<1jCssP3Q&amY8dUmj*BzEzd(ly7XL@?D zukD}EJCJh5IQG;`P*LVomrLstsjOcsrpf#0v8|GGHgw*c&7dUcgGTJ(l!Sh-A|(Wc zQTK2LciGx_8y~|Z0Eq-3^!j>y{=bns>iqeC^1p%=GhfFZ+&MKGii}R2T@7_;gw^(q zGYMG5r5!)iFQd||uo^X`o=odBiE67W#)Tmu`ARgB-?tl#D9Qs-6ump#Xt)nv+{&)M zQR${y=q(D|jzaQoCTc<}KW=A|JioErLbe=`cXNT1GNlzVrIkCh01MHF7o16pY737N zTs#y#rsPc|H6CL$j-jH`42#Nr1u1ns0oiJNYZRT3^Q+AaKuWWQ8+0n6n~};jlY?T(ir4(EHHKvuyF?cYt zv^*kKF2b`CHt39+cjp8DFpScysh2veTg=HLTD0*aoY72N(!r*GjO5t#Xbry-`7Ag6 z!{_qVP*6uGA6dCq4%2I?&_^vx1;7xwxID6;%F{1ras${e~0W$zR}`yjqJ?S zpDF0t()jwcDu1(R+Vl$v$n|$`2<6OODRsu(@28_w&{e`!YxwkA8m_}JjhJ+uACD1p zt@-m+UIATBfIeES=!~m>{0cXUez$yyse7skr}RWuxk@GC6}(o~dJ5-3`7Tk{HI2kl zpzqk>zV7>Wk4oq{jOArQ9&l!HnjyhKHWU+jXa=pcR2#iD>;_-*9#p?KEPL_2OcVm& z%$wDf`5ErfK>}5U5IrN zmQ%hwO^?5hz6R&dHNX~7w4a61^HVn571!q3aB2iTv@`rh> zZ!aH+$GJ#iw<4-B^184l!nrMXxeMCwY0$Y3>pY8#8*Xh5;bD&ujDB#PH{^BY1Y&S} z-jVzSA2{|)quw3d^G%*n!ljTR(w|3J<3&iGU3^9r71$|Ig^MC>Z@E8zAK0hl(3se)DBZon5O{*yp!L zs`(~=4*#CfAm36(ss6>qAm>j@lofNKJd9i|XK9bk`Y>X{C8prV6FBM47?V3Bw`8d1 z?w5}Wz~rVx_$8Iw1%)Iw*Gwq;Ei~pY0d;>FGEG1b_y-tWIrm&ybrACMon+?k59?p$ z5>e*EB-7UPu3*vV)myVO-Nmb^R^*qt*~xd=M)zL|v-l!eC>Arprp=d;9HG~?hS0Ie zZ6iIn{N0s~w+8(+{-Wu8O&uwDL#ZcXwYx+v976f_9S=a_^~a4N*6g`CBHbDLaY#?(I(8uw zDTSHNMmY^uKl@AvCl~gXu1JZaNb0p4MMy~!q*PxNG-&miM_JP?D&&*}3sfN_3MY5X zA1vo39f2UbRh}RUDmI`}OyrM)YKet;*yD1(+spv@ph@vhyJz?FIJtt9vZSOmJ_N&e zWSF(YpnV%@sCE3lM8v?TYknJSmCRY_MV8=-AaDF=*%0+X2+h zFzpf}36{kx+swEoT}I9YgL{BCjy&*USw;${Fl@QRWzaqF#u2d!KN0{<0Eo*P=e|y4 zl$$PctpKB|pFSfXx?wHTlZU*7WfKHBoZ2q6I>QeT(tTBWD0`|)4WutugyS9mQHOEe zUSM?Oh+p+{2VbV72mPgEcI-%vAV486!WA%=DogxZ=6nAE>5~av{;BiUR`*YLPm|*A zKdN@C-Gz;R*5d&Y{p9?z>8;uG*Q9~|j|ZE*-^EcbsUtRveb8?{n3}Wu2!S$S1qnX3 zl!^vogCM7f36*7_;?h5_7ag(7ojMiOp8_h4&&}BGGo}j7J}eoc8dQx~m*mLz!KWb( z)zfol$p>Z|o)BwDDPc%YY+sVe;|Xi7gSotskJa~PXbC$)o=PLEVi%5qIeb4?A?xE5=Uy2C3WD-_TrGvh}KN6Xm? zRz!)-?R1csCnq}3e*RHSr<|Y`#~uy!Awr5`N7DrplsAngmK9*?)1s?Nb!!FNOcC|_ zKVM{v=a$SfZHZ3geg);5uxi=cZg8Men}54F2CWgJLkkKs$c|K=BcnSC-a%mVkS zEW9wM12j>6sZ*UX_2+8pS#o5)UH9`YB<#}!cnmtOvF+)KduMOw4b>muk7&G?(MjB7RPj!?5;JWUl~f{F2Sza6SDeNc62yPtz9`fgJ-UyJ2Kx5 zPCe5)5fZqrI_+yHqk5^R-ggy$I=+Pf;nuZsASp^xQ#qs*QabsWu_iKCpzL5RAX@y1 zs?qOn5w%pP{&~Ik_Q53^+~|zx`cc`|$T8fg^QCvyl62^XilZbcm&wUUV0=C%We<07 z7a40{#Xl(yQhG`Z>S_c6tM3DUAI5=h42l%+$?xgE1%lk#Z?ICmkx*nl{Z=NJqav?< z8gMQ5}Ds#Nq_z8 zy#~A@y5(EN_qi1dE(LlsHwx(aj+!U%32wRyfW`zTa1_zKm9ekKriaTrs&yy*bprTlZgnz-vV}XIpRz*-4PEOISFbX+3M&x4#Sf*7ZnmF$D!*>I)nxn+9<4|Lu-ctA!EnO!nbTL zsQ@RK?-*31Y7;8wR4T#LLQ*ooCJw*a@uf6~?7_N~yY3x%e1ymVs(T3t$+jy z4U8#RsS~v0nVZ&$>Dz5Hd!gGDqS(pt?BR?S1lTHm)qu^p=aigAE`SCkRPLZr3A#2c zewgcqhKT5l_Qnf?fa5#J%J+ZW&rlEiU@>uys~H$*RI~cDz}(eG=-0?9GR@D1n6G}s zjXmODZ+F7+nN7Z*Q%VKe!2c_BoO(+QP0xI@JYiyIO#jTy7h;O+uRm@`!ET}a1|u4w z&|s%6vjh<6#(T@ho8$yzkRF$`$Ixy3_C+{4fQN<+H#(Fg5ZVv1zf10IOofM+F}pyA zfg;|y5CryVA$}UH_m7Rh#AWR-a{r`w7!fgti(6r?-5yoXjcTulZrCOma&ZGI>=zi6 zKf)O#QHp5#j8pbm-^%pcj`=*1nby8}!tUo}i=yIL#FB6cY8d?(7$4k!UmhMH z*&b{`z75fv;T0#bkI7Iw%6`!ZrB@5_O(s%J$<&eNT}g7k+R5Buhbb&Ka&@C_xtjn)j6Bf@M+r1dgwz#wc*LI?|I}W6g5-(U+lC9`?!R{ z`86-VHZ2QIHmk3iy#!ooG5P)du6gY4`B8U+D~R447K>dpf={&!4wtaKjv0&RUY_Zy#t0n$akR|9|_S^W=SF-`A5Ou-mr)1%UKBw!m0eLCb=i~C+&K!V5g{XyoduR}+8 zY@cnrlLDYs@!TZ9yG@^Z-KUJ}ylXz)&C*8{c3TqCgTANlD#3jdw2D)3`wt{CtD*xT=|RcHeOi^qqS`|A(JDOGpW4 z{eUS2^hyEl`6uwO3Po!D4e{{}w0g;{Wu-rsQh9AHv;QW|f>U5wSlfP6t|L!2)K{dD z;6y{ao=sQ7zBFnY$`Ou+Nx{+L(zVuq$qN{sadhI}M zCb2yx;CBLzb4B!>lbIwDIJxm!3sR0q*ip5L-6V{45^X&8stk4lV)65ZYRHv26&dXrq6h z9y;%kTrasXxhX^b)P&JoCWcPa>4@jKOyJO_RNZ!-VACp62GCvPvD9g z=?dhS+pT(2Z4wPTMbX86>tCc1M*gT8gnI(wV#=c%cz!u_=xU;8-HmRYzWt`4;~S>rJ`LSk20$hhp9pAds-y zw5UkLAMzdftr!`nIqsfQ!R=BzK3L)?$m!H{sa%mZ(1CYr{VER*X9VJ|2>g2A=CbR# z0nfN8C6L%i9kb@BfL8MWcZsn~7{fl$Wo1rxtAI}L!bq2@Qf5G-)Z`vw>y~@Ye%cSJ zes~)#KklvKQ&B|KpBt1XYK#QlopT3Z)1Vx;x7TG(Pd6>J1xY)uribDpW~R}*D}88-vYBwhaypmlHP1bg;wCxpRc{UO2oDGEH0LbBR5v4L z@puQ3i})8c#m9GV_yeWC0oD3Va+1(@3Fc@PmKmQen8meRi3-hY9AbI#8-{xK)X4;^ z_3KS@V=iJ@3+dbk704oE`SGYNWytbB>19P4>ITcdjgZcZR>_DH6GUpELHI~d46Fbd zL0>H*U?H0lAxkqp-n%z9u#^`%*c4V{Ax3ISQ|Cr_Mw2dDAw=Df=^QT}2-@;E^1P33 zO`unzl~0j@$*?LH5;(}P5fzXIRFiE!GV5_+_FC^@q^Vu^`|Tk<@2SxOqaG*rG~e%T zMOI(uPVV()I$-9>>Wumq$`a#}b|u8B?l-{B+@H(T%=(0d_Tq2eSA-M4tq@urQ``mjSAzy5(M&S!I~%Z(`80l6^lrOyp%@ZBz);!{1PAda4UrYh?iw zpi4eB>{y#*`K1?#+lGGfTrfLLEbrM}zuIBXwWXo;y6wc%DLuudrT9Zrhx~~uXR&my zLg=)Hwg&mBhqcYBTY6kv-HOLA@)0eAzgM8EH9r$`ywa!tBtL97|Mr6X21RV&SKZS6 z{S)=_47ghk^YstEMSbnn={vO}7UjXk|`=7pckd=O)ac%H5%{S7X}gPR%0D1d{Q%#-KLQUUFLV(`JlRtHk3 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

o1A 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

1@a!RJe)mkv#fPFlm3~Gm4K3c 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%0AwLuz`A|#F*q!Vz&87e`R3byN$I|u|+?9 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
  • AMcUVrRNFDi#ZjFc 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 z ztYvewWmMvFvZXN`z25;K!u(($qwT`oQjmE&grQ+{3b7jL$EGrH?n2XnIB$DaIslo`tzEA_`aKKu?{*RJN9kO zk?6p4m(7b{$l4L_@PTo?l2k7w(WndW-41l~P`|y|!JU)#yWGZu6w;X zKZ3$fkl+Y5>}(1ydlZEr`{)@=0tYgt6_Ia0qwpxv*D&k%ooFN0{q5`{91o+;^GEvisSaxL88xp#O z;dfX9g;b1%5{Nrgj1B5=2#JW{;BdkDXeu30!W}@o5}Xa@jNi=#PSkM;5(#6$v6_2Q z*%zXWu0`^0g}Ci(QTli@IRK8-h>w!ataobY%oONM73d0M!G%aNlVyaxw(oJuMo{a9XAao4DrU#J+`j~`ME?_Ua|SLyx}-MQA%1P)Z(>XIioFon*kY$h0X z62w+w*mff56;e305(Et57!;yJ6k-k3#5x(!-fdVGVMrQnNEXI7{b(h9SS5XUB^V&8 zlT?cR3<_Xn=67-?13E5bachQBXY>Ub_z7OV4Jzz+uJxHa=>`O&B#gi$qQJtKGb+A+ z6$mY*Rm)km#cT$mDjhk6?tFvC94)eYXDJNJ)EW(HOjfNDqTy1?xg%mVeCOsW5=(jax`4m0!IsNLRuLYnKnqoO-cm|DExuAlJ>Y(r1aF5;@pRNT?b981$ zA~p>U&+HD@dRV-2?Y!Iu(~8uo38nJ0<-R1ic^aZL3)dkd@jX#HwO91 z=k$Z6tOGy)N>PqWFkcs@eN%}RvM$cVOIg-#_FjSl?eJi2apP>U?`@+{2~PZR0RJhO z>?;@_D19*2`ezJ9fG6t%6h9t^2!uyOp?3p5J}a#S=(M{vwh&u z4(hBcFZc5u8!oAn-vS#pukTA=dUdC}-|Nzt1yB|IkpvH?x70|Gg^`s4{-RFaayjqK zk6nBBD0&Tm`GrDsY+JUTKhtC}o`Yw=sCJlIK- z7Z@x7lv0~CyxR;;e%6f2TRG6IziY3*)U9kP#yC}y?TRVnr8VO6vIH?b!WYPb z=Jqn_A5WK)3rr&A+aW~|syV(B$$5Tja)M3xOAT7it^m%<_3&j9`L7{>=x-V6?nmgx zQ&h4leo~1md6$MXAo1;Is#Z2)6Tt%$Eo$ngeg58dg3MoY@*=gE1UrwBA;Gsj{Fb_Q zc=jDiR^pq0%k}xfvfuaWo0%QE$8?)}!Rw^E6*8>|;K!^$f^V`2BW${6#;(N|mkiuN zkril}U{TeaytdyIck>`~`K3B2@aE^SCpHNZ-V3?GVG}t(Mgj%T{vm52!b11zc&x8x z|0d$&#pkOL7lHGWW#}tpKG5;q2p}*;+N&n$AD6_R=daX+{qy#5bMRN_W>icIG7{C% zU~M(fmoyL+gOsvDj*ACK)-dZ`M#&>NWrvD@tNkR;?IOg(Lw`7&QYbq+*0tBE(hF#3fSL z6%y#=;`sEyu>@v~7-oqCA%F@A+=>Cbq9LrBA)=ZgKoO$ROXIRg64FSKk`H3lV~E6T zo5pPKEP@8m8T)g8{wCD+yO38+&MYRQ6jibeVfsYoU4eigA%_43Qf0zfp-F2LFEvls zA0%ndT2}@3^4Jo?)p(+4+n;?t;WOrOT{7LtSRa**PnK^FsKwoP>!wR*z4gm+S>-)% zaGk&0E0*l{F3Zb?!FNBKC~{LK0W4SRO*Mtp4dS&Gz0sN^4&5&T!|Q|&3e8CD3;cb~ ztL7k)Qs9RAf<$_W7xY?cR;CG&@Hz0z2%5~`a(ibJUu0;7lzp0yR$uVaz_{rUesR)E zMb9$}G7y{O6vh5oEN0ZciG$QuRtoJ4&a4b4d!_3yn_HJ7L>GL7YXU?7R|L1ApKfSC z?DS`N#lTH)8U*}kmeiXA#7glmNq>RiR86rR&16vJ@FFbIYCCm+Wge%eXrd> z4bmZ|&~*BD=`;A^3puO|LtxZ3wMqGkq6w9trD9h22%p@IsBp)^wt;JnF5&~TmT{7A zRT(H8MLb6Op$XDKArZS>Bi7xzn1WOby=5db_x^##G2Keg@#+%@D?;M~+>5|{x(JPC zvfK_LYYd$Xy{ccDod)XfzC&7=%KvrR>>G*{)C9n!;Z;Shf!J{=LqnjG=yh_4_DEubUL`_MG`U28glV zql4iw{8#7k;V*Un{=H{`$Tkhe4pvW>{q*wtTkpLYA@=NPIB9|P+|Hx@fHb@Czc4-F zq@{#gzf;dVu4tIib0{iXL5EJrBcK)HR`RhkxI1@)DHH9mtA+qg&wj1mAJXLh+)`o35l4ntjgVHd8@ks|yU64z-X zyMopg8RgWx3pru~3tN7%_rn#pY>g`--xBZ2ZBA0-()o7`&i6HCUJ=oa)Al?E-PuU*6p3zNHZd z?w33o!$L*kLYOngvpDUJG@lE$w}dW_t+x5{#9w0qRm@3~Eo+|c$X9n_ZHWX0exO*W z2^0%g-gF(fNgzZ=?dQ^0+BFaMY%6}qQ?n?Y|58n_D`OHLb+jVz6*6UbWw3SgP`9%C zPnX@C%woADcMO0%VvT1ojJ@XL7b9FzNM{9??7s7V8}%IXTE9KD%uWK0OM*_U zCa(+LK7?5|c1Oh(Hc_QR5RRYkoXhId1(5rLp+W79)xh;wHw$FlxZ-MbE>VJBr{9R{ zNNt+CT4Ql95rUdnPbVS4HK$Peg7bfSZf4EBAATnJ$b6qo#w(*`H)JJ~3Ck)6gMz}U zph56jjey-)rkCQ^AbHIn6b618#(~L~DhC9Ui9uMF$F?nx#PJedjg>*$cht|oBCPk_ zU9SK8b*sis>Zo~T6BZXcEyW{&|0Eri^l@3F{+^GT^kkf@4@%m9LN7J(U&@9sU$=zG zw@+(ik@yqw6<8d``wtzIaHWm8?LtGb3;iiNh8>m`h~&f!3}tJbeE|PiAfGz;Mha95 zP569_A*pyqfq@XIcUZU_iEx?VP^$T0x)C|s5S@(IPgI6!T!V2O>!G?y!E$F(sRtry z_L5oFMCqP!dS3!AZl%uz*2Smf{lOM9p}hsc6EBP> zPT8fs4q1O5UXYq6+14I{wikdSfKkr>u<|$`vIr^eHf`dSzU#vs#&g#*ml4Fb%RB{k zEQJFX1+z<0+PAOrg29h93Y5Trynpr90PDHA9N&gqZO>Tk&RJ|vJ-b-HEzKD+$$h2? zCocLMVrVLnT`QhkD+vs!C*w3tA!MhIS>lFW^T8CZO4Tn5^=l3Fi|0--03Vn9PL*|$ zVp;VMC!(+0eIAi_pKs-u;UBPmp)(_X#Jj{Q6^vLRWt)2^<4tYi%4}*X5(6ca1aJo3 zz54tBar9L0gE;EX`rgeSiPVJL6nY>@ll|otp>=&W1-)JlGXqLG{cqRKeKD+ArpzuL zge)sB+11|S+g3lmRRj+!piZz0Jy9)n7tpQ|W*Mbj32%G5tr4RMJ6^jfJWjH&e`!5C zWmf(Mj6(}a*x)P0@rC(v@$i>(U1)M0`wJt4ER8Qt0J^B*VBAPA@MZxdbg)Gtn@@y- zUV-*m*zSLJf=1KsA3w0yF9Y%QzX@|b#YBoLdkem%&{8UAl6sH!T|pxD|41f9^yB;& z=0ux+HQ5>eW-e=&JA8|wS|YMk}q|bw_B1u`Tu6DVM-N8$NKuu&zd6s0|FvO7Rq|;ITpM36VxftD#;bOlGCKWPH>9LI zetI?CI;j|#OUn!204dU9)83;ocrS(>yE@mDc4C+fvRNuU$T1o{R-m_f<(N36Yf~pv zaME9^-1jSpyA9``z&YXToWHUJjbM8Q=8UMg@JJ8-)8|e{nA2xos0Ag|>T%-9cH*7(JGX((`HAbJI!L_gMpj>*Wf(UuhldnyUSs`$(;>NYAPtq(?XsPDrx7b}4 z6937o`#d~oM)z1Bf=oQ$g58B9{^jt8CQL$fGGs`MU!wA6B9jlw^M5&8Gb7mZX2TU* zK}Orn!;&JF(728mvJfr}-ikVBm+rOkeGb$zuayuWgqk?&m>vZPA#7o4Y+(x!A(py@ z&9ag4fpcQ6xSqoqszPvzAF=B!vqx!6#ZBPAWupE%h(j6rIi52>tveW)%`oOz&wd}wHNcxZHRXk;xxB7#6;Bxst3Z;G04ie@Do!ya%R zt%0(wVpCxpXMy}LQ#ns#Sr21{hM&>1MKSX~W9G@?7bs%Ck|Ss(5HJARj7&%@oJuZ~ zN$Q87W;~M=E71?^S_+FFAt}rZ5+($y{oGL$9sr6Ztz~~qCEyg$@TrUb^+87`rNz8= z;b1?ViPFoLdX3=1;6Xr3>X7`-q#8@J5k)^3LOv44AQdVo7A&YAK>m{Y zGnC%&2e+mS2#tD(&ID3|lw6#YydO>byCaaYi2^1aq``1X%K{snk@TvOd~>)yk>z27 zCa)%<3WzZ*&_o^>+*2yt)opyVXruA3h>q9p2 z*@!$fY5xDq0tBEgBDz_xsEFttd-~YP9aS-xcq^kDS+?_?wtRZpcALt$EcMQgukD7p z)54n7YEQlxU2jUeI2gK6y->e2+w#Liy}aX`7p4Kpytsoz(&9Q1`lJsT-WVakz1l!F zqt1aDR9tt@0_E_CcadRI?0@hXN@grIV1l?u^t^U*q~Y>+>8Kd%m=xT$)7u0*1-R`GZPv{h~d?lEI6z!HaUii&DXhN+uD>4SnZCOL~9O^YeEfN~C<8 zJUP}@Cbfq@Vdi2gxGS-5c;`pgW*R*Sy*}SOUthFuLKF3R=FHk9la4u?6$@@OwO!RZ^31CT$69X-WSM%@MME#rJ-B(4U&7> zXYW^jzu+hl1@UyWuY0hO$8U|DO(cI9`Cd0Gpnj_JsvjIl?R*3H(jUXxL~^zpaqU#c z_!%27^8`IWSWG$d%)iCf3+fGht*!HHcXRFb3o?$~I>1QT-H>EZtYINfK=c$y&agd& zM2b&l`ooCi#W7vEy9cN5-uiLZ|87lIesVm4|LA(jAO$vj+}!>Z3dqYm=(W1I=_Tob zOE5aE>*)s4dvjX%0X>f3oz)@x9;eam;Zpqo$I<=aXZwJ*q><0K(7+nz>Ri&EyPMfm zg#c}25yxuigt}VXt5;W+Tik|k?lhs9Y9!lFRhU3`!0hmv0`V=U-|xZS!iSZh8KXm# zJsp06sv$Yw@L;{pG|--HaLBVMHZ%1Ka79F<%w}RtSdO$Ml28_modI7H4)%F&};bnV1T7M2D3r61DqHX;=N0=ZY7kS>qlD!*G z##TmPjwm{4&vL7+LJOj}WJTWBfhPCG4+7*et$AK*XB6?P>&+S^x$LGbuqPqX22hq#Gd6vQ0d{UAl4P z%dfF^(|F^tyLMA6U3tx*gf#BHAB!wo9~(B&U!Gk);1ENGIi`-rhbtFsZJAy1sF7{ zwnIwwKX7_`uMWv!AML{al0eM!AXIUNEbWz2Vq`ct`~aw${l{1AE8rn(%2UebYDBGT z*>Y#Ug$`%z)4p)oBxTCE>iDT&>|$f3GPz$<@)T7%u)_zA;A1(_aGaTg$1G-60xsNT+-%ranan_tr-|z4SV^$3J=eN zfq70vy%Meb3mw&_gj4xR z$v3K~Nv80=7%1-{Yb9e9l9?pOgvD}Td`5V@CM@Y&%??WvGw(Zu*GeQPrLy>uQ#=lQ z7A?C(M`2PF^@MCQ;GZQoGvq$gzei^}2QJb8Q>MuDW66k>$n+J<^qbT5VOtl@;h8mM z?707dM{`SoGz&u#2MNVYBPg&lD6m&UEip=5CQ{C?toA*(**5M-0RaT-)yCAGN}-rD*0M5JT;%Xf zeekaF_Sxpu z4&M_We34+L%(mvE<268L8d(3rH+UFc@5kSdr8+F}k(<61e0z-@=h(Qv!X-S-L*{v3 z(DP64zjSbb*b^2vcnoNt@I~@es{1B5#WN^!ibYBMh<}=6QoRe&&+LWY!8xe?;y<)< z!MXe|As7fs`z?>94-@dJdM2Ihh}%!n4O-FtE(J>@+e!neVOmeK1dE@^KA|=xhD{i# z1oem>9hj-$V2<%%xjl*83kk-1WA&$BVT#tmL@gzfYsE7w zB~nWzXs3-e34Wb2ef#UlQNsejkLRNuGRik-6<|6#b^VnyPO_~UocJ)9*o3Z9Iz^APx8An|QDF}O-U`e7!)FPb&nCdt zTbQ}cXBlz$jqNT2PCR~N?aIv3@c7S_*#(>r8^>^HA|FYdAPU#;-v$zt$!q5$c24p5 zOnjfdzgw7=kaZ655^0|&yCJrH5tQog#yQtpf4gt0mA>S;I@NE$l=`OW4kVVyX3Srk z-F$`^%0CAbBk-oO-rMnxyLKK(as)FA#TvR!`t48XpY*>-2#Awbk$KnF--3q$?#9Pg%s#A&=IhDKI_x~=d*>4xj(;S%zI}^)T@1y4x3kRp2;d$62>6!%@pg5g z*NgI2`>3@E7`l2Vrx8pLA_NUjwd~oXfG68dpPqlx`0p@Pp-1>~Z{LP-Gso>}cOU8f zG|Pw=^3;}Q)94mhRNVQTLly+su)~Xsh~K<5G9bPE7KZ-SN=%E7%~{A{p6RLu3PuQjPfE{JHcXFn(`} z8y~{NK0RN4ogpk4{{+?%U*{)MQP8xDu=4P-KG33}4s=yG^T_{cx2MLv)nJ4uc1IVf zMj~;a>YVJmf`Frh%SBpPKC0z{hA6HQ6Su1Pp0*Bzo>HogtGTB2PPaUx!&wpMb4HR} zMp+NtTati~>BQkNFOc=ofea#gq;FHV-?sD~vIEV0HN^xK+rx{j*m4||j~6#C$OF9~ z3k-`Kpb?85bClV`o6L4?@Yy~Ei2=Rkfhu`&S=e#Hh#E{x9@y$i8$~D*m=fr11GJ@R zVwP)y&`e}~V1?lPgLBDs+=;KIyI7M;ZCO7v2nEBVF#;0qp>1~AMBb!KC>$d`Otmhi z+Y!Dq_ZXnw#zp3$nX&?&MHz?M#4LTz)a8iZ=-Lbj=Qq@#dYO^dF?!buK;rG6-&HPW z7MPZ4ff5{)*u&F+kx|8hfR7poFTwzHTr_aa9oQ}#S#Md_=c#on0!6vm*UTSjlaL@+ z8RbJ0W+7?hJL1I|FMaXLLk1w&!U6%Nri`!C)3J8HxrxiZT=9Qh{0j30S@ZhmIi$bh zXB!*qf_ESbH{Rw0%z&}3@jrkDsk~c*3DkLEu~BeP-a%N<7B=r z{qgVP|1k9yKvh0&u<)Ug?k;JN?gr^@=`QK+M!LI8TDrSb>d=jJcX!A4{{G*+Gk0d^ za0DG^#9`lkp51+zs$o1|nLwX_rvZxp0vC#JX#beq>wAwGGHdjuB~Vn8Ls@UQ8o1U1k#xyp>+C-Fyc;*$ty+OeT+^&RB<(d95`RUD zAFch`E_^s;DhSKLk(A^3kZ9T!m@*B>DnCM-JlUXdwUt-3Vmm_DJPSx8*2J!(4NbI4Qs%{xghXRZQU3gkxTX zWx)CIiVT14*I{(k%tSFNMG~21hOi)~3pxI55K$`n8VQvYyJa9?pfz z(h&ePZD?dX4@`|G)j2d(o;cOHI8}`}Rh}8=yL!PX7FByW{q@X`R$+1aC<$xXnfa8+ z`4l-0+w_X1@+q|1 zLKuI7=tfJr$uhek4V_BaHnl`4H5uyIP@$~ox2BY5E4rImz3sAgj_kBEiPZ}F9d8M` zbb60jr&AmfhA!TOYZ*Q^xcy~w5LaDs<=5kKwYkTN~NE6IO=XPsMEYo3y~ z|G9$z&Qd5Ke>8t>SNzS(9s9Hd{4Gc~H}u=_A6jP<=|)p|4`VE!Ixt%uEqi@M0}Jf5 z7&uz-SRW?A6*tQjS4Rd-#7szjM4rJ~7)JqCBNi@uFjCuCf@Zof*>YO08E+3(9zhVN z8NF;>G;Cg?W<@GdI6A3HPqx8@ZhW{*pf|xTbU+;kM@7wG;yst2x5I<^AdYBnIa6-6 zeMbIYwY~R+fLWVcRAP&jO$J;On(6?iX(E5MlO(ZdPA-5E;ih zCp%9B+=9nLSctw~Xv7y<>VG7%p$oV-L&?EOkva?SDWn!8ThaI~wZ_ zc8$Rh77JWhM*fyT?SGy$Hv)`;o`PWZpK&uz49#kof9q{vH2TSnb#dThKqiKN1$`=v z3nZ(2WNj`TuGv%m0%BVr&Ph1(e;sjH5BG->Ud)C{_=k#zxi;yqw&MU#{7y{GJ=kg3 zJ$mKs)4_K){gN^qJ{kN;jdT_@pY7%HlM8A-%f>@SXpj^%ENMN*W5iy8lmLm&?h%;H zFqZM!#3a&z8tT>DI+4@@=W%k0_ua)^@^^f@%)1cx#Kyro1bFhU)DZZfdyEaT8rusW z)bnr4?DNok73kgEUee|_G;qBFrpf``dB7(Fh(vnqX?IV;M0>gnh@cY$AOZ9I?I+UY zAwM95Uvd%1@;3eL;%Cvs=c;yu&){Q(DmWi~fyJF-x7Ns&ZvfFlg8w?uQEs zfw$)mfI|P?u$MFX&6&w?yd9GB0KqNi%iJ4uU{xk)c-E0ib9~8`>Hx?>($6{CRR(46 zK?bfanHRX!rq=jzd86=n*8LmlgHn7(?EvzRWkn0pEB3~3-@aD|O|0>qf1_(xE8l!q zM zV9*aPx0O`HW^pggC{P=?B_1t1apWR~dtKc)*)r(n=Xk4!BqN4nhXL{CDEy=0btM_w zKks44I(}RIbp`YVrq5z?9lLO+tZ~gvaS%DRIIYOfB#iJ zKBJOdQbaAMMVaA%VsBKIEu&jI>^*K4Pt*L!v@_7SwAkMAj~E(_ z#zUCZ=>d}>H=p20$fDq&?K3>tUufxn_1{35z4oT%e}-pQNDNjdcRSbV{SRx6OV1$J z6k=Cx+WN-B>y(l8E(3_9#>wNyN{7~SF z%73tAwFRxnSPmG1Tsl^F)DXKv)L(%CuuH3P;2?9y-FfF>#tQosHV5RXeB${@W=s3YS%+` zn>*+>G<>eW=TNJgp2<`vUlP67qtU1Zg<=-Mb)rd0B~Kn%WDkpI*S>%-a2zbuVuDa9 zIDPTT_jfEAvrSxWqZY26io@c`=X{9@r~q4zUR3gDv!;-75<-C+gyQYVkzAq}E^3%T<(uqR|{9fgH;b49gLeBO=}*X-zEH z!`Zw20c6zgZ>}?cQ@}-Tz=Bh{2qs3Gx0oqT{d1%;d89HK3NA<-qZA$oI)RaG*O*Ox z3xQ(`p$T19e!2pfP7}yAVYoD5$W;;8k*iz=mxPAZnfSvLpqRc8u% zfAP7)xj!C1oh5wgH`@>C8{U%_)@)$swV!bjuiOri7}YLIj5a__f8(k#<8MzqC}`)2 zz8?|osFbr>F%Xe5|D4N@XjwZ_R3Z?rYu>)PY#`rvui8VqGJ@NAe|`DNNqun(+yhD2 zdND<6Q49f@mAtp$8+R+coPG(lH?+N66xMfy+y5k(B1+6pe_iTY|qhW^HLNCmuLz5Ul|p!9ATY?qAGti-k|G~oDxC3cpK z)S|$$$fx+RrsC~@I_qDQu8XVN?thGv9=E>vnCCKQD=3mz6eF+pnX4Vuv;$K=i`Xv< z3V72v7ptEbB$gT~mK*ymHB=%q^6S1B%~eQ(sUK4l1}>x7`kQy30M~q*N&@MTin!7~ApT@4CjH+*T@= zdMoqT^N9|YGe=k3ougaAUR*gnW<5MY3R+|!eEBT!Pcpt&ndVL3x071EdmxZONOnR& z`a(OI7W$kmmq}1};$)s0=v04?EDs-*7xcxl?r_M=e3u%#V`dkw8+-jteiIxG4GYD9 z!c@nDWn^W^sufsL0E+HI>}~rk$B4vS$I{UA8!QmC<+XKH;05^yCwyOd$zVa!e8?*~t{?b`1)_E{fU`I`=i$*&KuJRgD|C?ftf+;7(?K#c)26xbuS z{dFp#50$&|>AWKU05?Z~*JkethGxUy>ZXqw7#7=C!6hus;{UxJl3|{u@slThVD%!8 zU-wfanOpKwwkhi#RMd^lz1M*d)zCD40=REDSWwaU*|ali(E04km%8&awo9Yh*dV1d zBwy>Yhrs+nXJTAutO9JU?+xZTPMWMa}7E(m_9xynR972R?_oO|c zcF#A@0$T*3NpHn^*P=agUl!A&l2JelBH_)Q}9^EJVN5 zti2|@NC>u;{rSQZkT3VsZmNYz;6t_Z@dZ@xu=$}lis|>8%r0f{*nz~D0h96b4SAT7 z1*>yKU}PgzOzs!cO;3n5Dd$6h6q%QIB%KHEP=EA5Ge^JH^hpnI9-vl$Nwd#AJ%UXa zVecNRLeIp#twg<@Qk`!=ov;7Yad>g>TLZt?_&E}1CmYAvID~Z|V#bxOc z&o2?UKhK~3&wiww@33uDpW0V~66et9Vqcbg@*?mV)b6p^|3*Pg;%iZO(3ZN6DcKQ! zBFZhI0XR{UGD8X7aUA$Oy;u4)AK0I2z7q-~otl)M5ebeXuR3&yiJ5XM#Of1*z`w&P zV|4sk8Ia!O9Y}@zIRm@g7Cqs}ddm#p0=v@Q6=*~ZV50*#16O;Sy=j4YHN-h5lH-Xr zcbRba@O@IS)}0qv97S9PM>UCovL8Ppjuj2RnubAEN~xgPFnmTk( zF2!LF0Ds~&LgMljSQ3*;BB~KzNLc>}pLXjaEkAgJ2Yz+v$*eb;-`D)gtLOPzgeOJ| zA?kX9PPwQ9(*Bx&O40o46`dpOka+VoBr3iTP|W4~Mex|9VPBq%qN4!LF5G79r(6zs zA(e68PCEU&btC>I@(WCv(Dn{P|6oQ$92*9B1t1L%Eacbw!*npsHP^SSx7}p%QQ5>kUiEzz8++tgd`NmY;%vfX3Sbg_r z>Z3~8i*mHD<*eVK2ATNj5ak3`DbR|-QvCg=(#=mLrvfFXLb;YAnTDUTEQK-LA#s^D z$<@CwV!)=Mog@{|#@D7W!YNm6fnoMuiI0E+8Nr>ap^isNqKiMQd2XK0~D zJP`pj;8ASDGnQv#_jl(j-sY=HuTzQCwd{?P zmgc?Fe<6xOp}Z+xICW4?kaOG?AOBwLBn=IFg{LAavL67oc^xr&*I7^GeIuz1aL8UH zd@TpFhPsOXCQP2KNAXuXW5e&vo6c$X?Z2@y@{hFDcc;jim*~|B|Gk`FkzXe?dtE0J ztKI>qjCHCdisa3X{ZH@!A@@{00-5lge{Yvzz|HpEYq!J2%}03{|Gqz=Z_A5`rE>yXF_z?J|pI;;X+KooxlmrL;+@=bsN^p=mQEBEd6 zy#x)nBA3hgCY8{VSIluzxBBiW`H(@3Zg%Kbpwq|MNZP{$KvGBjh~HwWKhd$gUY70Z zGLhagQB?)Q*cT6xeqeC%$4&Eysp(IuCSSP^vcKolr~q*36A6JEHWbK71}T^hl-6&u zX*p%vdNQIk5E&r&@?w3*QBL{>UN|L}b%~-KWh^A`4au_O=h12mj~-%n-1+Oqm&JF~ z`EOGC0NPZ4_U}WRpOr#1q+`=$t+r3|*WABY;P?*)s1H>TzOK)S$v7|!P=Luk*Ty;4 zH()mvy6OHz{FrZF03J6TjOuf?gR0Sopze`xWq-UJrmTFi$r)M1D_VgTu z$7lFIdg`-xS1LRR=)CpZ3Yat;uqF$}1xr;s1K+(R4t-yc_Au>y26 zHZOu?-s@Q=gmL~~=~)@3*JBL^oUfn5F9@6;3qEJ}>P_xuGj{ko2!UoS0AuELqwu-wT5Z^sG%t_5 zSrb-w+BMBD9{qBe>7Eq3_)404hq7#Aw^}ndrBwhA0glB0?6UJ5X;$sME7A}CaANtN z?ubW<%SB1s+aR(2uNMF^Vb&l2dxKfdxQZjSCS6MHmR>;|d#JY}?jf(*PeUj&SSBp| zHsv-*U{riy&68fV@0-U3O%}T{wz_V-We^)XA&A5Gpmn%xQ{oaIdM>Cza_$iVDsI-1 z^NEeC@y1+plU#PMuqsz~EK~inM(lll&NkDw2F9h*nK-EA%`V%r&AU$pm|PS@exO$n zl+C}|H22c}ZKtGud3c-{h&I(tYn^SnSBLxD3F$mMTW#b^481cf1MjLIoO=}y|9llj zjo)Q)6$qbZf0EB*HhMPs+?XDf*`tLAo#0zK;b4Aj0uxMwc=W^(UZd1-B#?pM1=I+U z*}eERkzUSv(MH4No84?G1A?}(jZiPht$MjHRF-C_HLHAbx^9iGa4xA|Lk?r*)JmOi zrrfzy?MNCGG9pFap0`r~!QE^3^pI%sziX0yGToSgB?>rq>0u5+t<;_ z_6-4zKnR+RygE{5Ihh&IU+N>dwv$gODfy-4Taq(uDd=QqS^r4t0bjGEP)UR(r??fD zIEDd5wkD+UBU-SQ=r@FkY<28U0r z(MlMolQR?4<5u_M$|j$SF<$?az4?jZr4rp`DGnKkSNzwTp^*bInG!L0G5+hR6!UeV zoKt~}`%lG&0@)0Da@G?^;Y83rQ}BepiY*_@p^EJ*AIcyb34lWsKq!Y^5QknIgDs4R*)J}{qrYZaCe1wC&5I^; z8AYiXg;;nLdjK+uu(V9D7I)@7lbhQxIeB)lcudUOw#_^-Q_UzVhovwIye=7uA}Cu;Cn{O(>iWLco-U=lykZ_u3?O#LN) zDVL~`pVzwHdCX+1s&8a|3`r;I#*%KLteq^GaLK;LoVP9Wq_BNTO06KBu${>s_vP@{ z*ukF(QP>B2(?=uhH=i$ui~5o_ZoG`0^lcs0F{3Ljz!`E%Q|=3Pr+|nnA2Fn6MV3V% z2l?WP_B8}{<@=9nfj_;=n^|-*{}AC_dfPVOyt^{}Z+3@z*#lk2*a)n{5|tZcT;VZ4 zf7uw)q!Hc^UH*RLkX_ts_ao@u33i1hgpV5kJj1Nb?nl9bQ`mVNo1;%ec&wkR{zd6q zG>Uz`-PZNimz*lW@%4sa^?mi^i`6LI^w4kTU-Rw7m>UXkm!_jn@%j~GFpQ7;N-wvR zU!1HO9Bmq}4xNG5`U*DIQT8dhHOraYU*hiSTx~_~A zAz-ZRo=Y13Cw?U*XmXpX@0e6t@_TQlo?#?}4sjOWiX0uGKeQi~DDK&Q6jgN$*7#yf{+S*@?Lm@!S8zR%>We%0Ft zVjpNmyEMA5nUFE=jL?X-i&_s#&22i97^Z^JF?S4X>y2Quiy3P{Ir)1Ac6@JVL(9?! zbavGA%p={6)lCe`3F~zMDarho@_X_u6aWgUl=bv&4Q%*AV`461Ogos zC&$RpKUDj0>6xT@7WQOXAEp*Bq^v6+8B4%)`(6;oo3;r@)B-3jT6@Vj0=Cf)LZ50T zF$gY}+9J<~9O_cBb(IW{TS0@Pq$mG?CWVfvt)tr7li|uYl+B$xNN{8NbK=7Z_JX0p zgOG9Q1)U49$-eOUD~cw91D6i`{oB+3JsRM6@pXW2>S21a;4klX1vbW^AN?)jdST0i z-?@axH*iZIeT;s5802gQ;0!(G4|ssCUAm9bfe&fV9iN4@P&PQsZv0HSggMNv#<5Wi z{m(a_Uz(s-EfSogu0BmpfTuW2fmz)(3z`VId zo9cO4>`w%Wdp5kOwTKYlCvvC*Ael)!<5HkJ6bea+e6E$!hK5hWdEIn)DDQ@kc^a`D5K=Qu!o8r zx{;hOwEeH8*AXXp$OTU@ce1~o6Ljr`E=I$KFO)et7m88Jq`~4^5s|0l0!*q?Bwiqd zt6#bZ*CGCUBoIyN^m*g>XYS}$mhG}~O7w-bfksL!RZTpTHxa{BU~j>Up4bX9kOvUk z1E;PszuZRwEbb-MjZ&GX%MEg+XF0dV0bq;IV{478W@6OU*O3iQ^$Ka}n6q^&r*o>% zaG_f~R#o0lLToQl_uM-jn^8`#Eu%J^JO^|(FEdm`s#41`ug=!KYie>dCzJi@gX2qG zHoq_gnf?&RXAnM5rRjD<=x=2HAVT-Nb@wZ`%6tbO*+*j|LiV#VpsXx+VV|FaTe!Hr zJUcB6<($K{1|lKf+LY+iXBn}Nk3t{(Ua>Au)`su-Ps0PYH{?J8@$Y=LzsDwuz%z9Q> zV{8pa471r0^6YMX2v7a9zW|ebiEEcgV*G}I=F8#Htjh}36coJYwz7axA zeiEAOwk-mQXxwi`Av*13w zQxvFbncldY?OuzFYY#Yfd2cts4eYYJ)dB`aTN`7S%PTYmbir1V{2GKu893*8ul>EV zf7~G^pbxWu*1F~Nw5Y%?58<7nu>d3<6O{IqgiCPuPcz)AphtMNRL%8Mo=eWUTTWjI z+^^vkh0wAbTT>FIZ?GDfghl=6BV;XzXi4^cWG$vCJaypJ#Z)1^Ecw+A27wM+foDK- z1C_g^7NKz6{Xtx7VSM91003_cwtv&Qn56Ksei6|6CPcI>ulH=r#sIU+6AgYyOSqsT zn@pB7mJ|xb=M{Y?8gY(Z)KHdPyI=Edd4Nw>^q)AZ^fFXTi43 z+Ja+85`Ij4VLkD$VQ1zXT?~FQ3d*;=#g+Gnabsk8cX4B8na1>NJ{Pg9Fm-#T_^ow$ zHM~CHR$VxhMZ&~R*mY6Q#>mQFH?}%O9+YUFCYh#1puIh<6*#m5kr%^!>FS&J9TQO? zKkHz$9Hu8H50Ps$eU`l-Pf6is?{-dj$@OqYC_e`~D+8S%e{X5=IWKPF%GEVaiXvKo zK-y3R0|+TXz2?-S8Ow<}E(+#D_8v+$ROhc^qZUOve3EfcW{3%7%4$8;IRK zf5brGHqUEwcbrwy#=BRHN3TA}%haYu)I%r_#=+Njc(<>1Vf7U)>)2;Pego6uIge%I zBjf3Phye*6Q!iR9ngNyh+S4`hyD3CoEaT<;BaxvJ)8*P6!^Y&;&A+83H2+sSL(wgoDYGsd|!1q6DH zc8+)v;}x^Lyw?Y#nY(;FC;+YQfJDZ;00Q6GNC-TU$CpGejpYs-S?__KM-Zwo@&8*L zSFR7f+ZSs#5Ka4Ku|gXXvv0;scQ>i-z`tbV3*QgKp9*AhlUsv6h|udWmztbwd5>!$z-UP6w1 zaGjDfq2kOZMMWmvljjmj&6KvtliLbhCBJdiTRGp`T~JCU^M8kY3ZrYlCKXNA|1(vJ&1bv+HH~JfnJ1R6jV1%TJU;*Xq~=7V%4y z1)<52my|+7h~$vFcTk;PgMZzF%dY^?|GJ`IJWFgGr7|s38v)1{p*7D=h+^fok12O#j+KV6rcA(M{i>4<=xZL4*;J-D;to-JNo<7r^QWomfg})E`6r_>obpXe5A} zswqfe8kTDS?~zt^h?MKg|H$^hln+0hE+t3%IakogEPZ9qSiKNK5?_S{mOWfjmSju|Xt)E^^ zC{AP6NsFmF`(bGQ#Zp!>v8ohNK!}J}PvVuDSH_rLd>VGf6iM1dffn#q?=VV}-$nf8 z0K8NGG3%~^a}xJ(#0OdK;=>H^K@gtInG$_u3JWX?Jbel1gaTkt4aD#&#_$S(^lBqA z&mj7iK{TKC4K!_w{<{y2`YS25WUD!+Uk09B6OvLxoNeMK!z9@6Ram+y@IEQ<9y!p4 zKad={kd(SYV#Mi|%4MS{y=8YLN3bMEcD+Z;bYx4cWvS@ti|H#;_^g{?t=*`PZzYeB zsgIkzkJSlKGRJbRo*xDHqY?3iCOY)>Ca+v-t3v)fTMwelu{M2&6Pzy*SXAj3(T6E| z@tD%>PThw@)qKMtxXxLvyqwiYRXC^-C7DZ^GSL0gy@t(k{%cd#9GlzbVa9u(KABNJ zrZtYG1w}+-dZ+Bl^elO_wljb@u&a9VAsrID0vpW@MfPEK<`M&~o6D79(d0)zC;h@f zamJ3+I>~}%9ek8^&%5QPLxa~QEcvl!Owxih6X1~nry#i6>6%|UtFX%B9V-XN2hxu(oli%(uDf=zeb3jJbies$$yP5Hd%WoOPK);+6H42 zH}hk9zi?+8yE3x&26hs_9L0hUjSu$h;6h_PJl#vdw7w2atKO*)Npg4pJ+po@iIM=*FPio zK$sgkf%TmPZ-+Dp{T&_8>ts^wW8G(#`2qwK>z?Z1OxBoR?E$K@Yk#L!LHqTgn#jNH zXlHn@u?~WmPVDVn<`@LnWQ!%Co)^Hr5*;5ZoQTqzw z&7|5hON+q-3U1B5@Z=R?piwG~EtR1`h}jYevOz zXf9h-y386}?7rIrzi}?hQ~7(TPi<;mH#5|Kvv;Q0K+?{+rg^QyDvznAwf=)pdSLs@ zlL?gjwfvanwVv2N;?cC+7Ogi2>{cW5j^^2nfE7x$kBN}+jzs6de9DU@yQc5y)?cT; zPbvEFi84LzEpxThOTE|PAH4{;@7zr!A|d$? zZ-f2-zqYv)rL*T7PzVm2jbi^)-3@^ObQldv zYsCaHPV@aW0gk0o&`-Cs09ZDX?5hRQ^MxpvCFsUXUOONW6=2N&vEkch7DYi{}1%(6v#I&}EQ;%89AXT2EK3_8^xf{H=h+R@C~u{0`?{E9y)bV4Zj zkiW|l)M%+(x)JnvqHD{jB8bz=QtHU=@yP~1)_*H3RxkXiS7FqtCjsoBVilEg4SpFE z6-btE2Y#JY=}g5$Ask|)j>|^YyX$Q0Zpi1s-QP>b)aIGvc|8d z+_aa0MfP$p5aoYpHNQ6U_@v)l(loC=rK&%1SAo#8sI74GheDvuH+uNRFQz$;b(s&R z3xe$mA+W2Q=3(P5fClJ1vP$D@r5ao=!*|HH=<;Km(^`Qp0yf93itrx%%Vj@mzc2XZ z)Zc3lu6)n5%r$vFr^RfA#qYTf4A0*vdo#lv&)3_ZImgUdy8lG;1;x3^l@#vUy>YfZ zwK~kUp+vE(+`_h;+SZDC%*tYn98t0!yL&Foz`BpNv38Ww!$_m8uDqMa&3`qFL157K zvl^FTE@|{gq=EITj*MB@D3X-$KK((U9j7a% ztPHGPk~pPb`%{n=oFn9$lxEX<)c$W=YZ4k0wG8hh)1uhM{I4n0>LZmMJgKNDss^y* zHol4_IC+Ng;P2oLj5S>518M68lSaz}qaz86=d>R-`6R3>t^Kwe7&m@$(9fYOAi3aZ z24q+*5|m3zvq&0KIbYtpjM`EhFV<#oG@w573^rFXVS2JN511Qoe1(N4A8uS;>n=^l zulxRv)gHe*S@q=S?=#=b`nIx+x4NiRjw@cTolwKu`U>(6L`P~H$d6t7 z0=m}pMu0f?U>GbAzp##ouV>`s7!>+Pq>c(Q_zP_V*cUKG|G5|+d9dE&KBgfRvS5S% z{AHG_lD1(?eA4;Q0KAe3?e*_t4RoDS-cvSqD`?X4fqnxe$AHAt$bp3h^vW(6#KJvV zJLlC>A3So(l3UL25csdED z*VY_d@5TD&8BXpkeFJ>Ln|eTJQ@4DcBfJ0VK>rn4Akhu$vo_9Ir$UqMKPR8;yp@&M z)paHiIF}e_+4>ZTXu@pQl4g5~8Ujg*L4BuQk{WZJQlS`bYN2G1C!Z|0*Qt zaT;O~w0+zAX&N6s(QUtc0{wXSiyN`lM!|Jn_pqXMO2r0=`0GUl`;7kg;%*%=o93{V zH66ZVTh|L07oYIdNgzoykpv8@CWhr9L?&QpL?&=Ed3B988d0($c&#CUIshRZH2S)qpHj)Zl{LEs*FU^d*|J*sHaojd_0%3HHPsa7kb6ypy0Zx)~67 z__XVpADEQ~DP5<`S0&SC5}rhw8c1o`;;a;D&S7JOq&}?Tuu3!u;DERR zDp{c=BS4)=f3YY->3+ap(+7evs%VoIpdz@IBDt1=xR%fbe%J%WOkx-%KsS>l783=h z{0~}rS?>&6;*cu9RWPS;6wxBB-2Y2uz*2e0T1BEV7*r^ZT_b|cB!$T&hWlSBJWvOS z6PGvit8S3Cet^Dys9dxi;~NiV3eS!ifVOSQHj{xi6A1vG+XIgnC6CGGW^kiQ-;^mA zluM`7N~ct)XO)@M)IO`JmCUJDbHb~U!eZXR27}0S7@O&_n`L2q=44R_U31(Qc`n=? zC+v3%NB^#E6M4I*OzWhLc2_UC+K!sO{#L|^J2N*^qI!^hT^(z7q8O4CE6AP5^}3x) zpZ=yh^0v0Oy8dktV9J`anv%0cx@Y^+rAjq1p_ z*KTE(=j<2{hMT9__@g+^DLH!!2PRG;j9iDC7>IQ^H)B_E3;|c88Ln(1ekdb$GA9@S z_v3QOFxg< z!xPVqEyBz2k4R9s2BjZ(DD;yZkbn+%Pkzw#HDBd?nx;?N*j(QpnJ+^)O4j5pBkOEy zQ^#?+l4oH+kAoL+AOk8R%+(J1Bn>G*gSBN)zU+jXolBsAO#RK5b{K%a4#Gp90uV&r z2{PV>{o%*1`?jq&;1)K)s~iED*;~K`8eeYq(bm~UUw*;K*4dk`41~*h@xTLMS{n=F z$wshwb!cMAx!~-`nKosbCYe{q)8&2YXS_L`HLn#9tPO|VX2}Slz}aF6!1@s|@Dhjs z`%-ppvZ@{(BLA_XM01jOrW;q=$nXEL?`Na^=yI=~+`PTcOt1g+Vy(*!@ZI9P{r@vH z)`03XM23`hVfxtU7JXkx0dAD>czI8Z?cCtx={McnaS8`mfwwxtYLE&Q{{}}5D7Ety_e`^y{c4o3g1*jjMYF&nNQCdi z?iSd%l`T)~nIM-n6cddmIFqY=1{jdTxnS|{00!Yfv^>$>=+hj{o>?4-tn#E5D7Vu; zDScDsTFc*`^=OI++R+96nfW_&SJ%xC?5mUSyA4Q)TxVVS#XeL>`^p+bZR!>v!K-^f zPmnr`cSlH~nnX+@jXKmq|JZLrS)s`S zNS6jbPe$@&z#X0$~AIf0qw;(2PL; z+dlALaRFlY`;}>+&v>O8Y;Q?xEYimapT8Yr--q7UNBDUGX~4{WrU2E%b?0{U_AtUNl<<$}c}Abxx^b{?gH3u4qQCWO*${eVveZ3bd;O)etb{;81{sRJSFl?th}SCziD< zN34DYT@@rgvx3=J!J4{%;_pC7%?MO~R!D)3V>LLOZ6K6lCCRl-N7LgiQ_hwBHd9s8{usScfJ@Exg+9jUCv z+A*6wF*!YxIXsiG06b!tdty>PV)UC)%YqdX6Z30+N*9*0=*t*X#JqCwmN+x6sC(1T z!&a#CRix-tq!74Uxy|9np0eVXbL0KuKKwO%vRL`AL8@{;@arggbPy)W7hFFkrkAxG zj|?8WX_sO1!p|!TE_vx`f01-Xo$;zFjgFJokmenB3?lQxhzPkGt5+HCW^~oWmHc>7 zt>xM~JAZ^#IM;mpHr;lC={;d+URRzyykH!rJA`kQYxK)5s^C6d(`dZQ4f@eg^Wa3z zGwBJ~j}w6KZHUcJ-{C1d!tr|8!CEIDlk0x|5`Mp;S3ZjJn)4baE^@ln7^E-Ey)SYL zG|?dtX@3|wu--4m{)mdYT{ni!fYrj3i;9D`! zw^20as>tT#lCf3k=W1xXvoKt#w;qtT!wI*jsVZlBE_uJ}VBzo;d4*_C-O?G1sqIL8 zQb%3EN>jl?W5ZHv&02C?S9}D#vV_f+9Zi?vPn8f(nd41I%j5OqAYmX%mSZQ+g=t&# zRXA=cf8U<5NGuqoI$lQJ8!@QBNwm_K|D|lg>BSjwjdAU^8HIh3YtV6Mn=$@hw)O%kh)loH z`1KOFx*`7x=^x{UI5hGh2tv;~M`Yw&AvI|c2FnKoX8H^F48XoV!a_a5hJK2eawL0Y z?tdGLf6gGisb>)y&HY6BQ06Oe37fW{=*KHKzO!VNH>P;wsu39R9fElhk|ghm#%n)+ z7gz<)LnaHL%6HY*rr!zh{JGiOoxFE*T&jIgx@>k}%L)J9sOHNlIIcN6E0CGD=k&-a zoRfvVV5%_Y>|v4?>O_jTBeXwckx80uZa=1E31Cjiv0uqZ3oLwlebVHKwLU96r2ZkG z=66$D)u&@y;Q^sEncEAoD+mP^f9Mu2Hgp@>MFl04=lOVgr+bhpUHEl%KV03fA$o9k zRoLZa2J!le-9U#yg-D7q#K5%iqi-5`p3V2sq?dU2iXooF*}JeEE# za1Xb>U$OYcT@j~_>+4d7nRFkhp#er*PDEpp<&=+UD;;G*Vk){FPgwbk-5&p#bl+)cXC*iG&av)F$GE^8}MX|x(rPVyp|44 zGu{|hK>)LhB6{($R|W2EP)YpEN03^;Gba1!bJuh$OP4FOQ2SQy~NfL z@lj<9qkcW{Yp8xdY z6^Dz=hL8#8Vydw5^qD;6e|;oJ-*9LqI}kisH3m?VvoD)Ti!Y9?mTUF*j++f?xIDtI zcE*9akaFf#5O)m{12L4pE_W@G)6NK(`S$&v_#3)S+56i1yiNNZ%Esx32gI)a-TU;; zH&FZ9>rHbH#p>e*5}8BRm}Re!=up1$OSAEEP0y+O4Vs-Xbo&|ycyHE@!~Q8new1$) zKaL6{6M9+S9|f=^LOJtpfHEtQj#4#xjS)l~&m)qm{+NJ@8icXx?&N~fT7*P%hW zyXz3r4bt6p=#-XjL^=ih_IvTa_-5AZ7-pD#0khWcSx;c!($W*lD_~vH@M-rY#G*0~ z5lsW%q`=LQ2H5e^tj5z$0SWF=K%$BcQH`kp3xyYbAwiCyi@ID`uc(TP&*=&@B5z z912y4|CCHzLeFQQqEQ?jiUjXcWiCY#6Jw7^wDb}(Qb3MLGxpbmpKGY_7N&G0S_qYVvXwt& zE477fwG3>vh;0{%ZJUKp-8o>2RjW$X%f6NwPZ+1k0AZa%lR3_Mf;K#^^S0Yf zzxqn-MW*0YYw<1THFit88v=W>xjO{XoWV7aQdkz<_vcO82eXYOnY9iFZi}@=C6;2k z{MybIXF87OB9pVL^s;piJU@j8tRGD#-h*~uUmvf~w;uof>UMgu{wJ{c2}mjV2e-ZF z4ti?E+}DMH3gXn5DL1Qd{yO=3_Wk2sBjP zw4b)wG}#~{4`RX3>MFutf)gQ(Q#SId$nHR|8ix}x602!PHDOJ&m99`BlF;xQb{rg2 z4&^9l_#RqWh)v9|b8}KFmLuXCTV*x9u;~_;m(Gu1&`D%ZVqR{RvlFinE`nbsYJBnQ zMd+2u4@t%CZ|3nmPrcvkqG7hzf#4Gaa{T1IqGx1vr!>W`>K=;W$FbRYiGhHOj(`+C zN5e@<3zQ)B27D&Q7JM5?&y|bkz-Tv<1V)!XxhkSJ@7~^AYyv}%e%`ZH*cj?R-Wk{h zKQdG}`7g;QV}_oyxmuwIS+%SFXyTckcTAw5LKgzrUH6```zQ8t1@v7LSb~H= zN}dH#NY>#A@XHn&MX#S9=g;=uCnQ8@ijylNN336{pvY}ps6OgtVxo7>Bp_yyyvHPd zk4=n*MT*S+E!Q&QFpDV1%*Pq#VjDK^EljucL;C6GzIERR41~mo1k?a?O)<}m=U0lO z&!p!6Y&69lwhT8n1q6P1CY-$aDnD%D(WfEcXOiWNN_0s&OFuUHS&2fs$0#vMgZ;SZ zlwE=8VWQ|nKW`E#Ma$%Gm*4r#b(~YO(`y}!{G}6+0sA_a@LxB-+m`YW6u{up$)0>@fhDl~1hXIqu+p)sRlB#x`I67!fOQ8<;=hY2hhU z^#JKX0$qr3)$Hq+vZx&~oskD2qF-m`U&>-gNEUfBs;rIc(Cd1+U5eHe?P@~qeF%Pu zY~22a7Fv}-@^T%8Ti4s0e-72K@f%du`1Kf140Gcx3qX$Too9O)Vs^fvhd&4%Z)JVd z42#DR;*M{#@XMy#S+M7lbEQ?1n@!js6U?sLwl0V+3bTzTuzRYWggz;ri(w&)2rVm`jS}SXS9&fW{SzNOu>6;sMFN~AB9_!}F zGuu8TDOZzsU$a(1LMi6%BW%|U>%Vw%;`n2(bwNg{Ic$Lr1-*S?hq$^EMm!+zP?y9(L}_YtfmZ~`>+VKX0>ZGkm@)&xy{wn+~9%QHTJfZ)6&$I zh*#6f%wr5y)A(`~m552~iR@h?S5DLG#dN3QVcA4b+<&t!)>p~TOkdtS`@yYW-`bDy zYvfv(E9IqS!-|kJvT1e1X;~0exRF%2y~m+CBV|^sL5Wt;K)I#9z9YgVmch;9e)kR; zPQLx4a+s#nPwc=*{R`!?jl6LmLt<@JF845ldmUlH4!Q_Uclez3yonOBcHZ;p!!>dS zfqS90?k%ZNDv@vbNOz>X^WKtjqvCkyzIblGQx@DmP4{8(?J@9rsgbm8B@ZwEqI==g z=}$<}ekXFz?RWl8Y&pBlyE!5KkldiwZQivc1)}TI?p=~WqLe}r00#|_13j_S^mY6a zeTmV#Jo6DCym9QI@7)EXZ0$Yr_*iJ{1blLWOg}dM7tFX;hrX~WD*cxm)b7&~0*6+{ zI8`z79r_{Nl0mFrULz-HNDnY=LNMJ!1tQ1vam>D06sKcQYrXJD4NFiDERfg1KsB%` z>B=8D4Hz~+-VW6J4xsDOe2#v(*gU*?1f9@j6J(Yj_`1e6`eap9)PD~4<;=afX@%#M zm6OBT%vt8HWOd{!_39NzDv{vl=7>%AnubQt(l2R*R^=6=vlg}9pPYDbbLT`#vrC_- z&T9ssP})Q-<%8s1bD~!GY)z?ChvaO4oS5V!(~s$=l1V#KOs+-PRz*pn%SL0@vkKtZ z$i`1)or&~%n8R6EqlSs}Ye@_upGqtW$Dq$+zcBQZ$rQTa)vKcb#m&i_@O%+qqj;te z1Nbe~(22<^88lhiOlj{j3n^6L70cLRG7w@h5G%y|L{6bhV&2tdi8P^0{b3+8U`yx1 zaxmma``I9jE{=yPMt~-Y>p$mUo3Na=fN1%bPf{bccn#KK(S&Rb)@axAcn$J+^L*F3 z$ucNawfpLd=ISWiI?+-8W~7&1w$!Cxd%0-eXtHh-=CSH9LDKC8!NO9({8F)waqrBE zdAm*(gZN~F*mU$fE#lI?#-;7af7({nNXjjw7tp3lrDkBzm(>Z5oLtdr*jr#yPEluH z_{6l_U|d?NSWqf!SFGb?Sv5VRlN(fHAZFMs++yo)zi?8qd^TXS;yBwdQEZj4+6NPp z^ic;V!a+8EEsnI2M95|VJYumMygra7iZ}%?rThMO6RwC2%S=Hdcm7fXtAQe59DX$0 zQy(~;ZMtT=JlEk)HuW>jXtg0LJ-72j*dxB4r6%?lp=F_a>dtx!>Q)}MEyR?u3&F1K zwG{^1>9_aq;Z_1iGMys(&GXp~2CDZL)$DvBw#7F<6Syn4cxM?6U~r^3ke9BBd98^l zx2SM?n1%M28vC%j&-*+hWT59At+agf>#(5c96wu4ZVlpAqJk$D@Kz*f=N6fEgA1p{ zTN4yodq>wHP4_HK7cPzWOw0Fd&KHi$_RK3bf(jSz1_wNJ@QNWMVWq5u%GmZ(x0aQ1zX!qL{ZRObd-dd8;zw{y85rb<(d{X|eUK_HkNGajBgTyDmT4AMb zytR5Y$4kkLp*Ye49ZL}y$pM2)o`xJur z$M0R~ld#~_&G(F>4;V8cO++A6(BnHA}FlYH&5O8-kv@la~nF2XgK8>Rmz7O*M?GIXfS{9!)I20zLMPog7c5}|U5 zVX}*o?VdvjP5}dEtN4n%C*7s5uYZ5(Fa7ddqJSZ|_}BcZ29pRJy#MT;w8yl1){A)g zUT`jS_StX2_VmE}y?S0^up-&5BOF~}L?Fda@<0D8z1&+6p2bh%6Od%%_Vf`4Jz+T6J;Ea{g=xTnyugR`?)NO-9` zbFGebyN<V~Mah%hIKOP_*V#G-n{RO{?_aSr(_pu)66d zu}u}>iTbqNW%Nz+kHw-w4^*mLg5nHg^~+OXc;mBq=Zn&Ne+cWvCsfY~3>5m@FI zY3o=WzavI$ZCM>`m24ms%^ZB3qb`+T83Z?^j_uKTsn!nrRt8t>9mG-@D*$+OV#vv0~_;OpJJ>=6kNZIl+Lwv@e^Rb|?!shGwW!fb~C`E6SH8N0=T z#Rj^J^r&wCMK>zx7ahGv8sVz8{r7^|p?g@G^=nr9vF0CqThmKY43HapdnmVhngt46 zWRhZQo@-e+cV{$qOpa7hs9$#^Y)B-v<}(YZVVbINfDRP-<5^L(pLMX`qJ8c^1-OXpxEzhLW>)f_jI!12NVg^F_Xq@N-9!vr&VEIc6l246Kpyu;y zlYPaON-r3dpwaTfEZ8070~EP)jm-T+<6by`5ml%!RTbWgSzI)5w0FwA)(ee4;B0vL zGdeo4Z3e7E@VI<*WbDFBd8?z<8-;cLq6A8Z!TdKAxCKY?aS7|xs5iJa=S1=;nwmE4 zKq#aX6h=4$Gv$>U6O(o%XT#*pCTT?0%`TJN(2*&fjOi2Br8&bw3yC7 zUWqp)&-_EG>BnRsedkaz2}l;$ktML99zE*`tDwEF86@mt} z_E23acCUt_PZNSnG+r|_jQdv*?`kY#zr1a1UMLctOBF6{wN5f-0kua-4irOL8t|dA zh(pltBJvJ~SEx?9m1kpONu%|nq`HDbKB>}z7TqzLxigwJF&2g4&N1WetdmDG(v4f= zjT7F@*I=yCqp*Uvo>0e?} zlCsJvSrimh8-h1*>7FVST{ZX3M@qkLKfh=G9~U4_zK=Xh(zqe=&XtWsOBhCSpSkiU zKwI_!n9D7vw~OKHr2?OvIA^VS=fCjIep#$vx3uh?8uEukh2Yafu*#wvqLDU}2wDm_ z&zJ7mmu9_po~HJIQD@lFH^dVOa9D+1ZtNDZH!`JzrV?7S3fJPFuWjE}UlUBYT&^VWCH>FV zDm{@Yl^$^4e!Uq0Nj0IAn_G)sof#GU1sNdjVXbxCz19&Td-Cshw<_%C5~ESiG`}mY z%?+<~m~-ry8gVtsC+H1#`lz@~Rp(3kqMmr4KL+ieGnB!=NovmtV$b9>WPt3n`eG(6sBXLcnJ7ZLOcSCY(bOFed z0_$tB=sU!e-Fykpa!>_^tw(Xq$jC>8#bVui9G>^eK-|y1|NLIwiHFkr`c3F)hWYCb zOvUHt-(&vq>OvMZb|{tTvkwUD3(VjC;#KnVa+m9d((eBRT z?l+7Axdj;VsYfr-v!ke)QO(}`Iymt>#8**_scRMMa3`q+Karz@bs>(eDU~qDc4s?s z4~EL+;KqIf{o_~Fz!-wMyVrpsmRD!1>t_1LooT@>j##$4y@7WU)9+t@tZdM3MbJNq z3l7I@({3Sj`Qcn%H*a5*4Xc=iNK~z6Ftgh%itSWTH2OLCjr=LS?6s-Nekw@@kfF;ax;C= zBwj@GuCClXvg<6%y#G90Zd~XO3|_$Qaa_^xj>pV$N`xXjQStU+6!`liy`oX}E>gTc zl1Of9VsKbS;DGk8N?7xZU2pbH=@U2vz1=qZLwL}81TS{4j)VXv*XRO^H*8=I7<|zb z)0yAicB4=KzRU<{_`@4a0{u8b@8Yd^ZYm&G-}s+B36D2xi|XcvwpB&oMC<`^ZhOxM zIdE9|A+wmS0AYL2*kl|rOHK2%E=Za&rglVm?Tl<=^RT#iX{|*g{Gp;yHphW=PwXDNqAGrckappobbWdX z;K-2<0o+fR-xIJ*8R7v-BZRzU9k2v2&a69h{mX zCb3e~A{|#Ys}l?R2tYop8m^W#={I9oQAKt{!l`QidhDMcEO~x#MEuFk+Sst&U9)5p zXw7c>Y*o@YC$o$$aE``qa2DE08v}Cns>vb~QsiHy)6$m#%DzFV!egvrYVJq3q?%b$ zQZAjPN1DOPXInhx`q@wBUwsR*I$&80Z>ksZ1dutPXICj!j9?A?@BkJB{{{zLz#h3!x* z(#)MPxx*elXy8 z0AD?-+%J+9ae@a)Ktu9=T~Wt+G+1*!IK4zgVps3YG(<(b)jUsh?+{2ES`FmuIsByPD{^dSTho(`67Xw;zf5mAJfl za8$V$O;WuNbrGNRuys@vUa2_#oLPM;E>1;-<@`cTq%``FDT8Sej!Sq-EUyTY!eKrr zQt)RK>tLKwYMfM;9=@Uizhcy-5xXmm8W`YVQ>)a|C^S&1Hc_hr%%oxG~lwFxX1$7Leys_2LEPY zbHG>6f+zirk?I)^S)ocRvJg#vZxYZxMViG%Qr{KVYNT{XMOilk&eP=D)#UEg!R z=JIPSu9+TgsxIBV>&Y1=ohbgED5QT3QNTeh?cq3}9ltdR37c zm8Lbmm>RWTjiXSJ%3PkzvRc0Qsc5M|yQoN~$_%0-*KN$P9q~b}=);6+V-TE9N}~SE zhsJm{*5?e6>9Wh3&9+f#&`lNsd)uASIRCuSmjj(F$e*~dTL<<+hi`H4D<33r%-)G_rBHk;+I$Rf z0$n49jQoX5?3E2uQB&CylP(F0ZfX_Q5MnCa69^pkW{l1xm}kU|n2 zG>L9JiGgXBwrcRQU^uaMF!5_2C4aAx3ti*aB#|FXp9QtD+T4ZOnpRg*v-HwbSy4#n zE8s(h0`)CN3b+&PS~Pz@=cRziM79w;ww`+_mF%=1s$N>{nDOQfQdje;xJ2VCj31o% z3!FbJoOp1^8>io+zTQv*fGLc;Zjd~H0|rJ16(mf&VEs!H_Hy&>asqx49gJGMo=s=Y2G1tEH+yO0Was4woOl3}8;6Sek>qJS32*OYZB6L< zW2jkni)P(jd+GEga#&eDx>}}lSXz1uiVc3eK*i|d5xtyrp4mIf8=c9mp!B34#N;NY z6(pwS#2%0!9T31B5Fj-5_!6J>_Q{KwHnhy@Pn^nYr9WC;7m1q}z*F*1JbLKf>}oPyzCRZ;6ThQ5{J~F9|iF6m~+NlvRVHB3EjW?@U0xxbCZs5*o*)x6` zGBlmF77G`b+`K(+#rQ);p=_EXz1mo_C)fDH2|*poBlCjjndrqF<|UU(y-_PV;psGz zc0HRz(~_u|G%5LrN%y9_TzAs+xutNc;j!b7*#+x@);Yz0=p?UkI?p7mQgQ4E9_B7pYt!x6d=Weg zt4?Y=DFBrQ7b>J#d1x9IH9_KFRLKqYsR=K7(um(z5Y#T*mkP^M(w5EUH*9bD*?&G_ z?{kkgAMic3|0AqFD!GBuR*@XSssp5%IE~)Yg1&8n7$jo@UgwyY$Hobtt_H|Eh?|mCvcIh+8IC3=ePml z#(M;Y)>C_0N)pIM5w;HJeR5^F~8#-gF|X$_Lj z<+at%re>Z|ap%K2r!lOHcxx-^PDL$!3JxFW4X<v5s1Qsv4%U`6j6z)n~}6vcvdo*zJgnFru4b_EfvdMqxGDWEOP0hn5~H2!xZne z4FuIQCQe4A*nf}j-H5dtt)@)<>;^2zz|MBPVe5$1Ze(ur?z1xM;y5+FZX0VgyN8bO zHNJRF6rbk7dQ+ENY?@Y+8@*{Wjd|{VJPqkiqf6MfPG5GP0d|#m*^L2(!<1MP|AT8) zdj@33kq@ow=?8crkQ4bD{F&$x4|L5UKApe9K~eQ)cW3o0{V{)~GfVc#0`%0m6;5$M zCIm1{LXi_ctU(a1oyZG|yd%$!I)yqesL!tL)T2KChf2ibC_ci2o}7sSU%<`D7|Yg= zf{LS+f;8$1{DsL5)sb^I0Xkz(32ClxEK==F&!-Nrq=D5&9uH%q8*O$5da+zsOq2j-#uwlqPUnS`HCR~nk86@XZ&LcI$ z?sQRH&=nQffnv5{x78;Ht|%`2uIl*LP0GbgszXsa+`B5p!^8@4T*>5ivZPk}1L!gh za54>GWU=(U2-dl9-u`IDC1r!uynQ4#1-m9%nN#`r#bkgoo@_3|G1XtlK2*yxP{}0C z;zFaqokCnh^|d)C6A#-|S5YBaE1A6PV~(|SvN<))rldx3_zE7ksV-xrNeMLt@SSI@g5o>&eSosvh^Ms za3xHs$<(N}#)*X%X-%LP#$d`sCdtYt$v^?(1{OAMm5FNL@sj+koMHw{B+_6u>aE@U ztXzp%>~tR~%>X{b2oVPrk9x~HO85%b==n6<;_)#B+$6jVMMo*(;R@`fQUyi@yhi@d zlRi;7idn&ED14AKTYyZ^QpsnpT~)4KRq?aDV!>v$R$H@9yMDCXEMH;9KP4TGo-JR` zjkKOf@DHae{Q^{|H7aJ6p52_NJ=0;^H7~15#$%1y^`wfapsqBtC7RS=*>u5Z4#K+h4dqZh!?0u}s`M?5@guDKZ#sLSlRi$Srf$s6L$3tTKb$28m zmNJ0bBi7@|zg~9<^;N*B5Da7>5z()AE4TQj(+g}a?Vl^q8;lZl3XPbby<5mN{yM)m z!q`m!Lxapq}YB|6ZQ94`MH&Cmf%4e;B14om83ntcY!nH|#r%+4?T=ip7y<<`J zt3`8w`#b$=T$f-}n`Bs^yc@6`vhmHrVTz!E3id;^d}hh(oGhezTB_By1ga_?ZARSg zPi?&3E2;Xx6tSYs{@a!Sy&12yUmp_k4*(ij9I6ab-3+lUov%0K%Yu z1>$}L5B4T(BurHQdh?QPU)d*?HTvgGPhbDEf9#0}$aaD??m<(&`D_hL1q)r7HIfG>P!d^Oy0-TnI%&k zmOYA#=3YBkM;}pPm>`Pz9pvw_^hT8VbEx@|=RKBs??Mjiozgk1te#vw!hzeP>EVGJ zRLm){GY{lRPrx80H5nI%6c>(!8gYpMe}xf#iH5Y*deTF=&^_?5vVLQmm)CxIJ2SJ$ z^H2sXr%qNhNE_7L-H?=n)XuD6epa5R#{`ev&08IeHy$CMPB!GdnF2|jm1b}`#Ebg(ii+1D;?y(4o z+KlhmXrh~Z9@_z+iJq?Q-5Ab5QNg3#xsu=ch>0n%f$!qmfw^EHfcO1O!6auO;c?~i zT;nf!lcKo1aLzz2BI`=t*{=SfpKghskRCDbCI?Sfv#Pu$VH|SKfhEznXpTXI{)4 z>x*YKup>3nt2&Tx$qcD=L+_L!oyl9vhk}tW~&!#&kAtE5|F2B_#$* znrXpjKMfom_~z?>eb6leMlBCVhel_In79eZc}`7(Yulo~++oZf zs$ABiH}-~xuex;PYAHuW;1L01?!>SAVBzYJp91;Iwz1|^vKJT=565osklog9s5Zfl zC*Z-<)-3noFASboL^CSc0+;v5_^Tnj-%rEon;q;Pa&~I3&iJvj2tu27<>hAowd^+} z5YbE6ri9OnCw$@q8q!78Qq{%r%7e)^+CR@C(1AYAXiN0Io!z2jpWOtL8*->{-VblNR02@wn4U^M!l*Jx*ANthA0%FRM}H9*I3!F5{>?4$FE9d)q)t3%H^e@)b+l$jAIl!mgq6Ps=$@ z7?uuTrSd3=ebjc{)ftO=lb5=c!!{L9$7$72Fbz##w5G9{lf~AljC_5#OHH|QwQZ=Dn^*gz) z)JbWgKhi`(W3H~rfN2k26;q0}9*d58GJBbzwxW7;X5l`nqULaFOtF1x)oStLrU zGI9SNnHtL&MTIyi)i|SR{oDeB?)i1mjkn$QkUi?`%)yp) zVW;*RrX(%6aHa3iI`rr&t%;)Lk&_vb=dGFM39|wz>RoYNQ1&NaXjQ{mRl{l3<5~5i zL}kL5RYHvIhgcg;wO4*HpRZ`C+7kE$qpjmASB^IJ6_$^?uR*a47FHZ?34U)q;hr$Xe#{A9T3UeU=n5 zsX7|yBDRmRo7z8Rp5B%Dec6PB3X8~kQVC=DxUIDdP~ztIK#Fdsyx*B880-@>%Dog@ zfzDfd7XGjy;!+>|55vDrCOl?QTmgYkd;Wh^AKN8%j`~CMIZ9su0AX^JrY?V!M@r4| z)$ah~a`Iv?Dn(qLmY87$&>ez} z^WeMv@N#x+oWsk4i1I>x_aCmH7ke?Qlo(cU8xII=N65~e+|U89#HV^naM6cg8W`A* zA6`BNUGmBkHu#tXXM7_3;1jkPPdULLdAK!y=J~aEaIru;EY|c)8d4B;D)J)WCXXYUq zCjd*K%9}*++P%41l$g*BBHBq;>l?i3!`%v}2Sx>~o(HOp7rl523D%v_Ezq^y-=hEc zUcRR`;93yHRJ*9d^g&gX_kXv!16Fe5$^CwK7|B2R?$^f}_w%?=06TS_?;lWLD8R}3 zZ!jRAK!=NDL8X-KXe9}~Q$s`VI6H4zT50R)mjM9z zobd~^wzRj`v+?ABD?VahsOK{y6>nsh|Ap+C)OF#-kOc z@S``wIjpHJwaQaRcs{j`ylgP?e?3TY(L97ne!KDMo!I`ES9dBc+EiZlcrOM(10HLD zoZ*XeMo0mfN4Uod5nwI>J+Dz^Pa_comKr#%k!p=Yq!TIN%42tsI=EVLAW0N!G^RMm zux{s?9%s2_#oEDnp`OPRS@Id9`ZK_&?+)8=oIKF^#=qQp=-NylGePp%X!Us4HZBI@ zzS?vFEpiIrDw12;5&JwgxyoEBfrDxOTb>FI(bam(v7kg&NhvOT$w77vFzMf_K2$7; zt%7K6l+XPKaWwX;0+Y>>0nV~*HEf`kfsm1D@m$UKdDemf+R}N}uPLAVEnB0rN!gm8 z5Kd#1c~cE+SQ{J7azn_@NO{v&D_HQ>jC02B3zbh%cmiN4(^P5j(BaO=e3nE^TBZw1 z77L4^KaeO-QnMHI?Z&>3)0NWej=G8gkK|Vt_2^h!HgKPFMM+dye~C2fP`%#2foA+0Dq}x zngjtOY_b1_LD$dEA>yVoTFlLt)IbL3#Ij4?< zt;?U@b#rILO4HaxSweyXcOiqyY6+Mg?He0m<5cy2q4?XpQtJ=E- zXtgxEP1RA$IBC|{AllXIaa?(~!mJf(9v20A?Bprhl1v3vzLaD~I=(?!+weHvq})YR zk`rnXBGb_cX>@?3SX{E2F)rUsqX?!1YTB6^$Eq;Vydcq>3iw(TPin>bq&#yfnqlG| zm|f|-Khpo{2@a*R4yDrm$O4u7$DhTI6%o@r8BV_tO}#oRmJp{KQM56WH&&$)y z^9k=K8KkNUYpE0C+G#;)QWvC&*P;=r&i-J=|QNpvf0a6Kacy=2dlX98S){tl)Kv_*Y#rSe6azb zg4Ie5jjB}5I`z47?FP*{%Y+Y8#zon$^n4Ml2Ju31IaAHx5?;vksmAje^Kk{!&eF4e zZAQB_d%a8d;s-fx_E)~)TPLPcJ2UZflIxQ-qsf}nyNwN_>4Pbfwl;4Xl{nvHVV9t> zs?S~qa+zIX+O4t{df2!_w8FV?Cx`;zI?V15O^EO5mn1P^I67 z6cYc{fOc&jwjCf}Ivik4I%ntl;7nTvH0!mn8itr50gipmBF%f>Uy#*6Copo)arX(TAZygmF6A-*<|WL{K4?QBh>5GcIV!r&k2BYKl7+#jqBI`1#UXta@wVA8K~9 zLu&Ba7oElnzk<;bTh6y1YX^DryQGiObixgQT>`0TgI#LHAD7aO(G04HBQzW`r_uPa zysWLCS`VF4@vRRn$nmWNUpi*~Em=MTQoi7c>phZ7j$aRYti1aSyrL5ukqIJ2J(qC_ z`hVj7wnxQ())-Rup_lKfrH?cXBxjPREkD266@%02B& zGfHd_;W$QZ5FK@fMLBEwiAanI+@y%+=kGtg;LaS0?R5Ex9UZK0pqflgUGg69DSSzn z6PGZVoV@Nk+j~n*=)@7nA9(?Uh)D5B@Zs=CS?4A%;)v;-(wWa#*X&EJqC4TxYtil- zr!4HJa{*a;U<>g374ARW9zhacqO~<-dG~XI%&lJ6#m*UIa7#kY**X4cI6RmYHKL6N zd-u;V>BFd$DB=4nXX+t>6sn#al&ck-?Rtj36aXffLP&p$m$>ou#=pE2-QIx!o&FvD z6F={CYr$1XMFK$qm2oKk&c{BC!)KF||0fG91KNF0@+(Sk*E>vthZ&(Z&yoJuM%A9K z#5-9~``;|iSFV7850`Cr$dZ0?8(!!ggsToEy>qmr&yJi6%iBhpPnYfN!`dGqWj$fSxwr*cy0dh-$R? zeOIbIe$QJ2y@Qr?G8HUnh=qWORu-e3!>r{jYC=ybpA?-kYzu_EBe!-4?T2KsM zsSJqwVYb&n4*y)__YJ6FSZbaBJ()-;gC~N!=|j_48u) z=!mDQdFGln0iPF+XbV4s#OZo$qOwX}qjCXoGgr#G2-xPArsPqOMhAw@tox7Pyg|ET zaV^>PJSj)V2_TcKB%Cz+G?(|MNc-aUwt*RXtLOe)eO=~T5ne1=-OyimzC0Z5wqB!& zZ3Y>)^O+slqNIsCTlSw7Z7m;0<78=cm+Y)7)t%dor+y-^2?!XrHBOD3v++CfX16!= zGs8xv(OAfO>@(uSK%ZHE!h*Pf2*0B>Ru66A744HRz*9?&%MXXRkn;l}dzPuMO7$r! zVXM6R78)65C2L;`nHMN&VWGlhNvEVZY3O1HI_^l4ifA^e*&5|P6wBQeZCDq7)GYSh zyW*^mquR4;G>Ypg*6_sn=nAh-@R3$Gy88KwGk6k!JuXNC_oG0&M(-$F(FNOECMMI! z5ZEtfoh>r555;U9$v-XlNXuOuA&jV6TyN_zZFy?nn3-^G-R)zw^}x*h{D>;hOC;%N z?1Lu(gbqkxT>T46@QjFs`~%HCu9xw?>3~l5?j?#J5D6}B-0ymMgRXRae`$?Y^&b61 zj>W*B1UG*^!+?Qq;L1-N7#q~xgZE4Yt>bHd->=@|C zp6X*2n2j;>{cARw4q(f;$>*d~(y7uXFR>clpt{M3&+hfR^xL@|jn<=K*;B5L<*8=| zq_)~FmOEe>TYdbBuimNYKdf_ClmsLJvl<2i0=yJ!I{rCDzrwIk0hma=Y{4h0)F|m> z8H2T5ZrT9@RvRDw`CEHjjh({?jZ>*4c3Ao7&#dpWXh~!$;baW>E1T>WZC0&mg{*1W z3p_!IO^i51^*U}u-g=8Ag!}MNYzJDI<48aQ$RwrYTAa5pFQ$NHu&Y}UWeDg9*Cb`T z(iRD60DxbbBO~gPidH!g8fjdMRMW2*jZ3dGUl==7^9lP-9f3>9oVMmuN{2xL?|dlr zNHq0YFzY}luTg}kQ4F_K1h-L`xjq7u(!9JOGnIokLNcBPEsKSD=vY#%4t3n8B&=Fm zcMD;K35_IHC8}>S#6&D~Hz4eSKFo?CLcp1(WC**c4=8+^QGAwBauymMRau=JQn_GQ zt3qtur!kak9B!!Engy`E6J2_?`Pqx4-}F`wGcZER z`srF*5Onw|cOn9YpNS*iXpJE17JHEeVQrhSC#+Bm4t2srs@cDpIU!O8T$n@uo;;Ww zz2v`6p>+!cUix3k8g$1tc@cGrg&!?(ZmthL8p5&P>s|+aJkk*O!Kt1 zd0o=xJBaq(CnJogc8nwJuCGL+BB#2jN44Plmzq<-(uDIWwXwfrMRoh)9NG!cuk z57cZQYPwGy9EpitC!O?NI;&hNrBn{$*vHuVMSXQ_QFx61aF_RJuL*a%33r#5V7Cc3 z*#T?w$lyJ+5l`bc)JnyXs+rD$SEt5INd*tGgxBb+i8qSQ?|QnB+ho!+wS5jC=4M`< zzuH9Pi0ml7HaTR@wP48_$Pqe{;rQZ7zM*==x<7B$qHmED?B@0r@jRk$UuECveC`*( z#ndspdxw0hig}C&qMaq7Y(tU=R=!8fB);SkBi#OzXwr4HgX8EI`{ex_{W5NJrj?vx z%g2uzNaWhRyXxlX!|?CD{IV#)zWIE4y%6e)6(|ZJ-OU*LfF&93CC=CMSUb81nkjoW zahPiwJ-ga_g^|Co!^Yen{`J9lgJie0^W%$$XXcTo+~eJ!@=S=yMTfV?%oInX*$emC zVTL}2npL-Gr^xhzK83{0^OMce493ETp8VSzTEhKx$-vPbN(?cWKMBYw{0krb=@H?S z(GfBUGbv{YC}%~2>a6yKkg{T{Z^N)=g&5POynv|2mxVzIYRWvb@H@3>TcSY=0TGST~%WuD~Q1+NA%{XtiDb+V2| z90Wgd4e!+pfsikUMEX7V{Cge{WnKu6BECoD(~G`{QYm}Ba&wJ0R$$e`_~#O5=D%eA zK4={?_J{lq8v7&j?f7W+-|gF<)&Q7&xVvH|AR^_nsQAV1dW?4rXuqEb(X)3N6$V*+pk9dv18ZH+Q4Z~ zDlQ7FjWDfEB-lF*9nNn5OJ`Z@#LEuC92E_;uXpZL7Yu)+2c4{+7doktw+e^|>Q)@Z z06@L#yx?gv65_H_s0fA1nS)VzqjRO=OuYttJ^?^EU_LT036D8rGg|+>eLroqc7M3w zEtv@dtm^u?4Lk^(zbTB%GwF%j4OMZFR&!{QszuGT_gm4#+d5St8rOPc;_JAceC?bYA4s7t)->Eo4;^4VkGVBDkoc12?{Z!AHb~ZK#WN;{Tfp+ZA znR156VzUQw^m(R)%(nKo2G}7X8iJ_RMD`6&(*Ky{P(h77=nT!PmfW=X ziTYgEr|s8be_UyNt5MM1&dzp#*#!yFTUjaZ+p@CzONCGSYk(d&1tp+FRx z{#p_3+HhwVRSGungWBHO2yJ^iU}aLJsO-tyvSeSPfj7sdX}M^~ia)HfD|- z1FIwF8+oNzHp$el=a}IsB3OWq{uR(5{$ND=I!8Ppjfd>z16hLd)W! z07QUQ)6yF%DAp&ZHh@0Nhjvof*m!(>{i*ay9th>mVJvPhFMeX=xeoQEIH`rN`e8H> zblXIlY9mxWRDq#gi361TDP#`Nl~aFqhNBf5p$0`(z6+@a$uxvC5%M7K2q#nD0-ZXH zgv#`)s(GkpKJ<^zP0EuxnzK_W`wY22$u#F$)^*>rxVYoqiWd& zD;J#n`<=@*jlzcy(aEM!;SFwlGEA;0IJEntWl0qIiXWty>Bdf~RdheGEYE&ls#hfPP1-vz`?CoS=%x0%WCrrELqMOK$QM#%OpxC){Hx<-{Xp-jN<;^1QU6$ZMlhVx=v2T}A|mo*SWZEYj!+R?vU>8M!LJZJC%|y=}=m_ zyBmZB>F(~7j`#WA`)BSrxWj#g! zu)d!VZ@=kurb6Y zMAl{A@Dhe^CG6iy%+S4_Da{-(VgUbwWqk97xyg}yn;#4B{I3?5-q0d1K_;p@Oso{{ zn^$8!;g-u z!}o#08_)hPhXgp+evfpUdnJJLYzT2+ZhAM&rM;Xt%hSp1&vX#MCuJ{zAIAp^rR!S0 zLTk@bw-0`x!h^=nmW8qC=U3B^7f+`IqYI>~mp7Kli}>r8H`?xS{GEko$J{l7ouy9J z+;z8`8-q{6VBbfVA)pZpp^5tY@7&*5uTF|r$3LIDoX2@*;9ao`Zd=*%^bGXy^acul z5fbhqHYt-%hkT>}J+i+>+Mv}=O_X-Sh`eo{bXBDpwU^j^R6bzLooMe~Sy4>t0H4La z(}6Oc*_AiXv;EJy_q^{pcGhMd1_(%cbLpskX)+FTjO(1f(z$Gl(~hk5!kwc)`|z;! z7EF=GON9s!XJtL5qn32M_+Jnl_`Q2uU+)Y@vIb`2?i`G^j>hLnZtV2kx3WB5nbzT~ z|A`1hepSA>2z8xE0)}^vNb}rQZa(hIgCWVhtIxkjPp|AP zyWBe7ln*UiFg9=LgP&B++^kgBR$aI2p}*Znfr1^B`7XMtCj z%{M13Db7}cNJMm-cv@Q~Mry^D$U%>F+H^k^awO9wfc`Df8f8Z1+Qq2m+$J|x^pRnq z*?gw0J@_sF+MR?EP0I+5Tci#7yQ`Iz5I8GG-)t@-b1#@&*LTkc`%=0c8q<|+HCs2d!8Qhp56Ef{@1OgZTR@B;+ zj!&zdVS);mZA@bg+JUhaOh*P<(l4~I3d>ltt2{NdGx5vF1xwO%VbL!dR+$(zW>6sM zWG|{*9zdA4XO8h}kO%()4E-+n${(sq5{8MCUcivShz9)1D@BfuMu(e2g8%{x0#a)X z0=&~7fTsav@C(KtGZPYc!9WxdLs3*T5v72@*z2!IwA1!^a0$CW4D=ObFmNs(8N*t~ z_q(S|=9K}2j%G#1H>D)ek&?nHr71z64a}fAp>bH-5I6rG7}n9oa-FhmGJ z0x%?b&!lL}fB2Zlu;euvbnx@AFDZ0!_`WhL1mhmi0KRxMBBmJ7AX%BF#P6nl&>~4V zpph}yB<8A~%>H-%8dA(6g)ZG zU3~o6kN6(cKs9BK+p}jZIdZ{e02ePzd_-A|x=n`-r)+pU2{t?5`X|sLawc6*{r4Mg zWQ!yJ4Vh!LmmXcQ)%w88*t%6iFUBtjs#9c*a`~U2guDxzQ1;6}&BQ0Z%!$HPA0OkAX;E$Tg}nC98CTkxbd7KR16c`zK;=1eItQm251PP6(%D zG^a*9CpegME!4oam%1@@Qyhyy8jry!lmuu^Kpg}3?COHprFdC=QHmDB#dT&XOSPr! zwRS}2M>#x-%&rQ&=EwCl*7l3;8N1pByB7P2SsBtghIl6nn)R(sUt&`%PVKeFaA2C8 zk9N_Pt8xpvi((Vw3_ApO#0*3Qh#*$aFru#ts8AsjTE%yr#NwMpk-SPsl(jZ1{V>#D z3P6SYGC!@z-B)%rZc&N9!b4}^ryKjSjEsK{_A3xY6Mn-Fejx|q7E5d2%OT8>MgMh* zu}+u3F8+zhdWgVWq|2T04;#uKz0nb)PHG?pZl78&?pXQpjV&pA#$^&l$%HYWAilmr zyma>QF>d8XU;bQK`Fjr<(SPRvxp;LwHohT{LIyvym0WpEqMqiWIr`sDvIw&D-}Z2@ zi_feQWbUv3!MqQrZlzHQ@Mq^5Y(5|TtlW|8&n-0SwFA+0552Et1TFZ&v!%nb_4n!G z3V6-G-gVoYx!p0$$%0n}$w)`~)s_T=cDA$XTggB^-t-aA zM*OXQeUDNgyj8oBpyt?h11{h+>u7oFr-L0eH%{n=E<28`f~jTZaU~fjBkQfD zW_@CbkD#O+oL$A`Ry;JG0er%|-XNB?z?jIvPLqWmz*NTKY?mC_bjH=@Ik5rCfJq>Hx@)ms zN>Ws7jNFlgk87j!Ph!}r_lGmWl;hPX-SN)}i#~D4E@uS>KhEK?-E3MdSKl0^52!Ge z?KdAfc+}-K5*u%c4dsD$#&@6QZ0A=MET2`^TE}`1n6z~Cir(zoJ6@z`k&hOf7{3XG z5;AKGK&TdM+J=M^#C~*i}z+u1zK4bv-_HEn`x( zbzs9Mq{r9C=K|tb^v%unO2de-JpXZ`^%JA($JuG1fzi8b`=%7$CH-tg@!VJsosaX{ zbL!gaVq91$I=b_`e`i}_)DLjAvx@S@$qQB~^TyNhArqbmd9$J$PIb*poKkWGHMl&h zSZga4hMU-s+86M7fyt|Wh_Gv2qo-6*GJ7p~^0CuLfAJvS#)vEJ-YNpLJJCz%cs{wG z2}`QDGONE_wf`HCOWl>*@RyZbAPDBN>j-qHjo%yCc~9p|hBPt0fKRUU1qU|g+!_pz zpKwIppcCGyK-0sO44oH6C`j0DYpv7rV@66XDpy)|SQq*o@so4ZRk4{_o8D=Bna{%B zeJ2+=7q*{(G0vuaTKpu17$8PnpItwd#2XY8oATr9a3uk0Q?iz-z*Iz|EA#E&?v$E( zUc$T~@tX`(ImK;794Z;5n6!6H0@pDQiL@efK;`RY>3lf^}RxE%e~|g+;WlX`)Adf z75R-Djo6BkO_L{>dG);}DZ!kIZcxg#EN6Gt=L0aLB>>i{RD)u+Wf~Hw5JJ;4L^6~& z7KK(6ij$(5xgm`GR0=^O@P9_4|Io?*E8v3>c$G1D6(51d`ATkiavpgK zV9|`E5Vp}sHo9jdUKJ{S6>44;N=u5^F-oT2VydBu4;p;vnkTYREJ=hm z;zdSmF$qyKh>^;_G-kxY6`1lO4XP-~6vVITnMTVS3PVd}bxNr@6=Es%Bg`A)1}x;Z z(_|7WKL3oFEru1a~{Nj}>8a<$)V(Z(J=_{1cv?N86M^Ox-?YFQd4|@g;;Zp5u zQ>C`>f>cbDKPRUA8cO`tm-ura;}<2jj-*Luc#=Dl1s>mTb`Bs1iPNqKzswxp7E||l z&KJKyit9L*;}{Vr`#FLoOOEB*v;rhD{{{h~_f4R<$f;J#nPDg_-+c%Zd+WEtbQI_c{Awv@wS@DFlk5NQ#z%IQs7`Hwet2MxWUJ{xmDa} zdDVMaAX@jq?p%|*pwcXFmC4L|W%UD}Kuj~@lvimiff1L>d5?>ymSgdnp+*d zT0S~ZW?v!IzM{J&;oC)F`(+|$4FoHi_D~ip&lD)m)}E$L6f%&Mfcfyk&BwXF?^KaB*`|0e4d6!VbsrXmbXw zhYsCjy;@?LtcD2}0mImmrWSaV;)lyYALmD>`^_W5{+XlRwJo!X075T6ke6R@t>>h_ zgIIxs9YNY!s77fd@A_+jFKZBx zf?rSr748%nZOek9j(X{eVQ4al5!v_&G2^o1pS)T254O_dr5%OiS9b)k7xdw{g@zs{ z4)*+hM3B4?2j2RLzhYi~i@kFDtQ~PPw!6xgZQ`;w7p#5pH4Ahj_?{D(wP?ZK`=1uz z7|29^Rr+M<`~DM95_!HmI`yGIi1>QDbaT%--9JB^^#=cWB@1j99=L%Ke|a+gW<-K` za}t6U7(g04QvX~a5U{y*1clPQdUG`vniPL>Qc1-R#!3 zJU&WKK~o-+UB>0oW(g5|iUlfsm%)3LhHt4I9FJ7Rf~iAavXC`x=8O%{IU@9weSF~r zxsGH|lYfgbqrz9x!oz`(xv{jehTk)-3}a96{pZitq&oRX4~4UU*Q)KXsahFVjwI!1 zUk3|YH#d>Pr0M9$G1Xx>367Q0ZPqHe+#mg?6bG1AU*QDgL5Dw9^+Yz6($VQ&O?_GOKdI8H|r)qa!~PB3?DBvhJ+S1~ud+4_~HQsSX)?CaQ)`7$XP5RMcF2N|H{V)f+U@3TXsnW+31bb6cD zd{&*nl+FQA>vj=ga0z2;t2W1g4tl;Dbd3Uvd(Rk+<$wRFTXoyjrg=o<>m#>ikl7!7 zf7SZ-^i&oEAAB46Fogq|5Le#WU~rcA*A~TL;i<)~DE@}Vv8L8jm|9Wjh>i_u$o@C1~M``0k*D_CE#q?AH+lVb|HIXTn1i~&ma$Vh55(R~O?K|wzi zJUpdBRhl|PE!tKN97!o+Tbn!($u;?RyvJzO!h^i;yLk#@k{QQhKqV%Hkn6~R61Ypy zgW?5*qGPoAldQ{ONqztIY3WSa=-MRWv`CKLFN~}NHeW+x9u%f`*b@hqWh2>=Q5{J= zi^6|d$N?NI2H;nG9B&@_>cz+K&X7{`u4J|+jjs9Pg>NFyrp*aMDsM5ssD;|CN>$O5 zX;&2WJ%xT+(7#T~_$ehP z@2IV-8V6>f4V~PAN@iYxLRo=WSrJfjRRvNuKb0(uJC{d3=0qxfWY4-C`cr!Y*6sX8 zD%F$~%5~DfL5s;TVh$Ocjzl=p;L0=hJJFussHN_KZL-&D2|I4l-5)rT>Y9~x^FZT1 zk!w-W8gFb|(q|sq)%0MlJc+h09Xn8RVD_?gvnd@bD5@g;Kx$>T;8I*1b+h6*^R{Ob zUhT2j#XfEg3q)Sv+Fr5Dl7AhR4|}^0EI+6u>FfRkdMx2yx!s40o#H|h z#OAo8fiQ0XQ{+b^G_T#Xx9Sb!>LoOT!6RU@bN{vRqt0O-?dD`%D`-hRnqmp8p$}9~ z-n`-7t+1r@3Xx@~f#!0z<`%f4Ng1_PxU7XoQ`B}U0}LbI63HW#q|sB9biaq*9wK61 z!8eTJqX{A6PTy*qOVz1kXD>4X3CsGvG_4Wfoc%$=2$q!douZ8h67(!iF&)yv8J9*qa;!eSSxp0=lkP0Zu zEWEgsi`=3=z0iXuG2e3WUIf{1V9{*>aB^zr%MH?LfwyZgQ;%5CcY6sTcppYaO)V_xi#@ycq#>+b75uKya7MpnI4` z+J}!9COZVdG4Qq(5FrOescGz15_;SYj)mm5Imj_Q>Xp)DsKL}4!U+N%tDQ9~lTe180^#18$ z{CH6J9_TRsD%9}BS1g#0?Y!ed~u>t6K5O+(6rNV6#S z=HyntV$Rj4^9w;1BjE3HaHmPYO#tTLK5W&j-WmD`<<*pKv*B1^rL}JdQRtDCJm!H7 z>|!r%azmBfsQe8RgiuK5hI~M!v(EXZtik##*|K9*`fbRmf4my9zbG$Ec{N1kieojL zGyn9d4=Mi3l{vqHvo#EOmN7-7uC+E?xJ@;2N8EMtx)Y5Q+#3@M!noS3nH(&CWCAv$ z%nRkMQ`Wl^TnyaYS=g0*nJ1>PUz6>y2pQC_WowgO!)!fUb}J@TReqHI6jB?NDhZEm z<-MRSykz;p6y~xfwzy01MIY=Ji4gVquc9kt%YfvT_-+QmqU`N`&M?_zBrZVlSE&t96wR2GCv#LApm9yu+k}~{?4Iwg=72olJ6aXf+ zC9S2&`^8FCMyLBjgIZ|2MxaN*-NU`1z1;3qaP#5(-unH9UuM-qyYCP0t2`}H~3#AtRUsA-;pQW$EEL!{zF`Kc0;dcXj~{hGz%AkFf6?p3&1B zkm@)Hj$|zsO$)SA3hrz-9^_oOVW%@8@KU{!_=H+I+b9I87_~u2Z@Hu0wY4-mE|LudPdO;ipQT zh^vv8qcesMB2>oJ*YHgcLMGH$6Pc*=q1|e*>h|pbm%oWumiZV1+u%Nk+Ybn=SJ)ib_Rc=#(J<)k=v2R1qbPg)VbhgTBd=8ANbLHXD`ni$}@j%`PFP ztdcpLj`@H^61D>s)o%sW(8xksb~;u~RWk>f?Nf6~z67cRQhCoj8J9d6uw-s_2&GW; zfDC(W`K?6tELy9+_=74{c`7Ze9y!e^1)T{%V7~~Xr@l*zEuzzv3#HciM%KVHScWBq zvT#O{2U1piPHfSaorX^V@Tequ6$O=o__Ql@DZ}mvIX2`sWQ_)7i$ZLmBnz>93O{DR zl1@8APiwH5m+y^e$tPB)=4&%a5;05TRQ8~j58##zpjQv%{-S13k<`qGx2g-z#zbl@ z)xDl+z?5^xEIFYA|54-OeoQ1&2&_o9E7dqIRXftIp05|RGcM4al!}duwPniU&~*W) z#8rM|?MwyhVr8kr<7>b-oiv;_rt?@g0|;QKgjXkl;Fsc_ zxXo#edba#z#?&9v5Cgk;4EV@Ytdqet;syr@RsCb{MaA80B^tr)S*tJJuH> zM@T2y#Uqpau`%;|o-fGU1>Da^JV6orpR#zmPS~3??DP9H#p0&Fu*ybLYkmQWk8PHO4cu1CmqFNNqRD5XnMDz6=(k4*R zt5BAHF0%epbi`_zUL&KpxN8X^?9Szil(9>|Mpwr}H#SbOvD=f!l~BZ$V3wd_uBDb+ zP{KAT;Zd8Bsfy8Pq1mK<;O4F+co0vtH8D67^afljGPyWahnm z;JS0>ymNNBeTExUbT#2J)b1bS^?2$2c9^r?MmqU_+;ovk9@nmAhK=_!jCn}zynN3>d5DI}D z+^wSlRAm|%pwqq^-=47+L~Indy_*Ymq@O>n1?nx1m&1Xk2cwsifH}X{AP?u>Fy{@J z^V4upe0{EJltoZ$H-N;>mn{$gM3}=9A_`ufM!@wEj=6%D@H3?M!;gEpX(U#FTH81K zqGZU2jdgjjeQ0+F$&ds68Z9Q8+PxI0C(!<@bib|$eA%&uHIe?d14 zGIrDYJYa&qdSk{N-#%(<|GC6XK0+88;{l6%MdoV++BOVEa5|2^+&M!odVkyp4Xn9* z`asfWazp2Dko>{781_yH?KHGLDKrOB}@>mb=c;K%9yqd9lC;_anrei{x&C+caKF^YnF|3J6&pZ8zg&u2hC5D9Q2 zOZ$gh0CFI(Lw8^jT=e4I_-**W4bW#j(-3`vkRgtr+`YL}UnhVV@EeGH{+T=lwS;)) z#!|B)x}j78OX|rym&v16dT`>3Wu#%v)2caH>Onm*tIMke=&3?t5fDJT54wWG41crr zt+o|n!-_xhb93=qujD9C_L4uLqyf!JmOQu+n99B+VNlV>VbQI_lF}?3^J1>RUTabTO#vWFXhlwbo22ELri=F+6WQ9j{hi&zlK`oxnWWVZr7DGK^x?~+W2I6a8ywlwskqh5Pb7YXi8wwx zt*))9ULNS>WBTwi1`QY2%oEtCpJEh)*r7Ep$uzsM`2M1}E zKTO(kl7!ibVURNHj8`Z%fYXdA1bXR}Qq#5Z3al&&HF-jbi%c|PQong$J@`z&fa6=Y zF)9a!vLYkd(SY<8p(!!dsGQvf1yxE<)xm#%NWP>q7#vfIr-rEKGEj~gd?1~^C7e#G z`xeiJ)~PG4Ul=+2pg<{$Je`~)qvn=S)cUy)4E2pKl(cH_A(6aL0ZY@I=_OrYG?IfX z8ejxe3o1>qlM0w9hqYy*xRMDS$f)L}Z1u5iu8`T#b4HQ?6B+YlbTb;VJ_Y@j$d)-N z)4p4Ysz2ym3gF`+xxUm905q5_1x@R`seCjci3X9cLq-}FlR5%mA;mUH)ApNQF==3F z_Q0N;YX59u#7Tl=22hDoxCv6$iPA?Zl6b(&u1*F?6-~q(4IVbG3pEDS77;3wj`fL9TnIp> z+)?}sp;8)_b5(wNau~0FlFe?7B-koLS7~3bwPAiRcG=W%9`lcWiu?^94!7O4b?K*{ zm3awG;pFEPpSCp($iSRb`Z`+US{fSJmDLCPQ#**f;d)Yr{Aab^$7c4T z7lAihop&_FpWp6;XnkLJK|VyjFDn1M&GSd&Sb-+_fqy9d(4Bqi$g*w>!?w*T8*m#- zULzjT`*_qnt#pHf^WZ-w3bcM>2TN8Z3+f?C!AxzeGHd8EYu-$4s%0L|rw>d(g;NrR zOAtK)r_$a?Z6A<;$B(tCe&a%4Tk{@G;mPFB$i}Bp$ZO`w%;hW0G`Q+GGj{RoM!5M$xGj>LY7(7lRIGm&{>he21S|P8C3{Hv&TFMFYTJ~!otFk5PU0S9;`KzZxpx(T~^(n7iR> zM{`MM0x(QPi=V%a-zu~4vw%DEbk32KuZ_*4UFfDI-1*r z+ehT?X$M<7s(5_<#PURoedXd<3{8?bE6c7h5de)I=Ur&|wnK%^nbAD$0DyL-jr zYGnVIhPC>K_KWR{uIOrciG&5E@bT@luIT3H^{?k|=aeHC#3b(}x7eU-E|Kdzh=Ca& z|;4|@z0B$ZSN*0W_!0|yAs|k3nITxhd zA<8PO+!5GCf^)eu4DA&F=sd0@H|~{b1O<>30}-$6eG`mIU<^A~*yq4EqZ6oKLqU`e zfE;7#KW#O@F$^C7o=(CB4Et#(7BB9V=}ycoEnf7=0LxI^-N5Fz%1kIGoQxrs06eSR z`Ql+{aG(H!ALq-Y{zKgUwqSP1voSKob3NYb&QGTWd5~(+K{?R7Q|ummW8>5`q$Xyy zd9Wy`%2 zHcl9#(P)T)j9x3~C~nA+DFFzPF2jPIaXu)3LCAwT{3q(JWX)nAsOL4Z+fyh?oUud7 zHniIu*A=uX|3@ac6!i{(rTCkhEnNbVGZ_B*GS6AJ=of6+cE)89#I7#c7YAfzR1tCc zdRa~be(mc9OaFR%6L@s)uclH;`9nSnKx9lyf)cOh@R3UXeaU9$yovErdM2Z44YxA6 z{#JYl5l4G0$KYFH=7I}r-dAacBi@GaiPxgl^~AB1*o_tJW7U3p9-AEyi?!Cuw!r-pU=zej zRaGniYP7*xSF9hYunaYxZJ72W^M5u!&j58eJ)>=GEMJ@9P^9VkePyYU%Wmq!NR=GS z%GkkgOFv1j6^3kkCXdf)WJXqA30c<{6g|i5r2|q!6OO0N^)L*CDn}@)HGCIC8a=vu% zLsRC9dMxfATwBqE1S0{sPzzS1%IJ9isp$M&gP}&~_W0L59O--EGiDGL-?}jF?Hh^K z%G`Q)3=$*{;>+Nh%}L1<_MA`WdyenpO^2NU_y#l$q{7?*O9I2QygfM-rZm6SfYK}k zqqV|XPZHprybcrLNEUlKxl$&n64(^T$krvM8&h%pQv&3s^RUCodM2sX$;i~9r2z@4 z69dPzf+mT54hg^|6=2+<&wvR?UZ!EUY96JxAOjgA|6IEiYPQ^<72#+ZWN70tU}D=* zGfs?`c_W}ja*-#WN>J*;MswD%$$=68v39wchXgflq*5JVr9!2|7(>gfFM9l7u)7YM~011hOJH}aZy%wj8Y>>vTQ(9w=KlI6r*%COd%0R3^j}c1t^_x zgi^|gh5^Ryg7E=haUac*L}*9BNhS|U_`U%3?KAQ3@2jY;zf=wSLccwn{Kf=iZ;4d! zc9qkn_JvVY!`iZOwF!g{RJ_Y_s^3!vWDp_~HIwqs3I{9_aV;pAR~77AGI(ki=cx1h z5hW`A)cBT0rO5AA=#yJLN~@*@QCiFmvuS=xLF-bN8c@Ycl;0a*#F#gxs``x4tRT8N z3>jQlfeDfzHj_d#6Gd|n!?O^K>vA-=Ke#45sI(6t@$+3N2ejsss1}u+$-l??j`RC7 zZC&3c6pP&L8TTfh$Q|dgU5na6i_1*ov^3oETo4?FCs{o!iIm4s3z#Snn`7Q&0c8`c zk6wlId)OPSNQcwZJ7Vw)t5QsN#2aIA{ z1Mg#lDur(bT=MEy9h1>Z$(S_I{J?e^e7fb=w%R} zoB6iHXKayKhKHvU<68LkfYrMrjN=J{7HHq9R3O*PKD4a?_0ZmFx>G$G(Y+E;ePD32 zb8)qE@fYI|3H8vg{c9)0SHbFwJx=xNPnQv$9lF4ioEzs9j%{kks*a{d-N_iu7xt31 zcdeIh>&xK?B8n8XHwV`sg;#>~IVfHrkk}8(pPzU$a&i*mM?A@kP~h$JU}?Myns5iX zf6F7);eOgCZubXiaY3ZGOM6p^p7>D{G~thh&?gE1X#pNRRCyfV{K{xbb}d{(%%l@dxy&b`BLC_=)*4=<3u4}g!|#hz7n+K*S_KxFR+s>7|L(5w;+Gk}KKTiRXx z+AahcDDdO_p!tY6SDERQ2_$hUE*$Yz^551Y40P@01~=)LdgJCcDiBQA%;GWLH=d>m zA)>^;0U`yYh8Yj!S)-p^GadxedP;o$ArRj0{fB`x{eJaFD|>}*dh>vu+c$Rq|3Zs> zoDm4#`zQQzX=){kWD}9u6)rk^K3BkgBd3po)-#olp^8Mp8u)79OHw=u@>Dc6HJv?q zb>2WUj+XV0eN>z2Pt|_rI)u53uMWy9tp4REz%_mQqW={o3 z8CF3*f!i~>J7V zOKI#-5oD;nzP&|?nq(2A5~gOtYulu$>}aa$f2j$|sd+oT#O9W6YT@k|1TVxYbuF15 zJaF;TWZGvhJMP86k{)>JwY1Dk3=(-xaA#Pr<>R2_mGiD?4=gc3H(aDnd1*^tHlz%5 z%lY^he2?HZP-q~4ivqDN&X0rV&v}CNUyMGIl8^`pF$U{D8NrjjyJ27$ydR*?)4ry7 zsEGw35xm8LrpGD~1cO?$4%&rfhz|U$NJkVvN87q~+zusBy>kBrTg_Zy6B~*kdS5@MM(OlfGM;_lf~bY(=rNDKLe-#df~9$2*%#hXd`lq5jze@5SknJsnoVpOQIKnj-DRw2 zflewkRm%U`Dht0~1Phy#UPZ+#u6#@mRT_<0_=zonI#uY*L#j9tkec)Q+&z4kcKo8) zf{^4u%`i;A{VnH33@0fcow5#n%R>c@EfOYUfW7gJenr%Z1O~7&!e(Yk5HOnTgZ`+B5mQKw8x{|qNn+6&ebI5<4^*Y3HaVw3-w)zL z61J3=&7`8TNd11>%Eq?;TlNP4p1VE%x7x3Ka^Pc@`=VWDW;hpN#hu=?xa(*w;6e< zblBwTE!1~uwKGeMb$T&_0noxxkyxrtp{7csR;QU~-YEx`ip`YDNoDe7(nI3QjNyY2 zit+W#j6JQ(T(n`Yo3S)co9l7RN)+V6cqYW|a@XNi-`780`%--nAI!`{hYV_La zEh=ZT&`mH}A9uvJReaOadDLe9h}M;}JZURQF{T^kfzcWR?u-8V~4N_tCSOq-53r!~}dSu505j_LN`Pbe}CpREozw z7h;hqr;y91s5aCj^nHh9WnYXfDf2wCMsr@t6XHj3HqxKnGL)Od}!nGSZ}e3#=Ki^|U! z#MYQ%Pz<*xE`);kHZmnPXVUn+6kWUl&o0(kM`FiEu zAI{OmdkG6oGx;mlo|Bphk`4Ka#oQ|?1xP@@;1ceve~x+XH(LdC4$d6(O8y^wb`h>e zNOqq^5=cTsb3cU4c)mSv@H}4G4UE-~G^A*4<&}=cKY-)k9t?tUY7Gq)pc0PmL55O% zR+Ro72&Oqf`Fa>?vYPk5f6J4sLD<#H!}mU%0tp0K16zlWsyP%dj*hDOF_mU zg-6~=N8ZAn)Q|_L^mU>EB_^nncg`xdR;>`C(2leH!*H1AEe`I5sQJok70pPwV;Z+h zkF}PzpgBKgJ%;Ux1R9Xa&_7bZb#L6trU^eacGw*6H9E$z0_Sqi1zwUJ+{1XCym1$) z&Z`2mtfDOxat-Wa75shPPTwPiOd8j6-dN9(Bz#yfccwn44^sfva33E`IC|oRy3^xn z0`q=AiU#Js=%9Rj;H6da36la~-d@@t*zWMK(9tTBT*>eUCa!TO;P5>9?~MTU`Yqmx z&yK`=JA`>z{Hwt2M(6wOm@w!%F|!L20GoR+t|oNx%4yCA{0y~P5W6jQw$SsDfE%`H zgua+j8tU`1_=7x3?<>{A9VUC-%HSq4PUnjLs%^tC#I8ha>O~ocf3xaXEj`h2`QPjc z&Z&-}z6?Hwl9P&TREXWrMRDROd~p@CH;Rpk`+W5vQoU7n(C$7m3{6?Xsmp#1IAIh! z09&!xUdXG1K;*6kVeul-wMJ}+o8fzQ8Rws--rhk)$7TF%eOt!;?PBza*(Dwo2XC6- z2JS`c@&z}`lq595t(t{e9@wI^G+0g#jnk2;JW8X&wfvV0U8xKGFBh58hTU5A zA494E_;&J?_6B(-PB}TRf0gd48f!}?`qmqrAVmH{E~LuG-v;v5=X zT(e@;6g4MKYn&ZRBAW~>na{nkL>jtLNV&6PjM!j7(@kk#Y(TC@r%24XomcR|u&~pC zO*HF8D4{6t+@Qke6icxoqgIbAuhX6CpT}>;m(G=y&rVZ+QG!W=h(xH-%zd452Of4_ zTSt-dx{*mq%Hj|@-SrQ5G_z`uPl_J`y62Y%Q|b-$`4`0fuFcyd{e_36cCP%y1FL&s(3VUvlr(QZfeNb8e0$Cc(;KF#%5A$R~-;${>Q`aSp4!3?zAKDC{! z40mFZLoC!tHYHU(y7{9lU$3E}*g~H2)T?;yWNa#b<^GDKj%#_sjqDoCMC8rpb@%`GePv0w|n;+RAF=Gc} zdkoyR!p9z0VY`?CZf9>U#P$QpO?nyW5G-X&6oX}CGN`CLl+cdc%nQNHBORWYm3 za`4FwGHULaMTY~8T24@?CXf=D6=Incg|s?f7$qb16%r}MbG1XsMWe`7qUdG6a_M|E z%m%SqjMOkCMS{pHdg(_sH%C=AN3kI&wa65LF==(^R8$NoH>Gn_$8^KO8{x73!egDN z({ugew4b(KteB|-|0)?ZH;!29@k|b+uLrE21^FF5dPak;!vGXeA4lX%^&@N6-$b=m z?~~aN$-ygE0;Uw=i7IC|&#-8>6r~9*9Jjo-ba~D}eI0|};3q2mY9q1dW7mml`VyZ# zbR~7>{f8&1DiWRn;}gyot*1*v0?Wf=*bpu0;xEJB7Rw(lxqfeDO*9$Z}Qw{N*jRZEA>Z%s*JBi0N7GwYFV8ms& z+y(2{87sqi)SkzJ>r@ikUefZE4S}l^&#VhsF_j*fw9KZI9qSi67A<=UP$PAFBW{?q zH*>$>8?6g{-PtIl!tkP}ziL?YR&kkX5xCggwlw#o)>VGKBD!rRp_=tbh67(&?9O8IvwtQ7+^c0qWN< z$)`mo$_^6JSq#!uf^Xe|uV!28q={V#+UeHs7dS@{B9IU~J5#o_nYj@CzlGA`6U0id2q6zSL{@ zv625O5D(}u&$cApZJ&04*lMo2?0u6M6fd|pSK_l{_gf&85TWyD@l`w|7FI$_ zdlor+Qa&Uxa&}R3SGGcaYO#MB_*-erN{-5 zc1@s6wQB~x@}l~%C;9&pKUPz$+C)DOT&14%$#On$AkSenT~itI{qT|w>`eH1hC=da zQKU@;h~cg}xdo7f|K0lUMFxGR3H+oCY=tn>Kaz<4@IDaFet`7@Txj+)9_rtK|CS9? zae;WG8&msW9J5#Qz}qfJQlhI|X~!#p>E4?W00L+|DR;j>k&={dKqb^tKnAV~neO$n z(!?ua-#n7?!tM1w|6MvU)Bmo+d;r=Bbh!rJ(VBjtZ)Vxi~ld=+$=Q z;ObUBH8J>CbE1-UTHkI{z4A+PIb!xNR@eObfzp3)z#+S|c}CxA@4=Q~V-}aUVY+95 z0g14b&AH)sPbnugvwe+=M|4(Ijv8pXbp@O;M}60NvuHVP3NQ)|#rB>{H`@Tg1N($S z9_+sb_y>uUvN!-7!pJ{#z@6qC2w1O!sQ{3WSF}Dcnz;b6J8rvX2XgiOhYzBG@nGP{ zmiIujyro7{@tF@xi`%-Dj9lgbo55h^R38Ik_W_Lw7!>O?&-Jid&O!Syu0RjMdaVR?IGC zcY87b)vZrFe&omDUTSSv>f5X2ssilv-LzQO+SdU7ATOvo;(U#{%7N7_Fee{moanjJOImB%`I_F!;ymqs>iFCtcnA^d zD>JLuETZz&f9yfy^iXjTHJ3W>;%5`{9dv}O)WyY?f!}Rx6mwkA|Ik5-j?+g}G~u!w zc+FPK*|sQcn=z|W=A5E7_hUiyCXM68=K0~md;!xldQzqn>6llC(px9#=Bb&%x` zVngM?R#T3@^F%LF1>mn_$?9akmU~HNS)KZ434)#*c-fwN&0mv#zI(k-ZFz7sv^{wR z`FPhnOurhQo3FRAg^~TRH{CT090*Z)$X4_WHQF z1qGAw@&8J>(8&0&ad4>0VhgP3GH6E8Xa+M# z`7`K73+P7kNd5FR!TiZZFnB|uNC2sb0Q1%1@YRD`>TwgH2q3le{9i)aJ-go2W5}8s z^79(_);iR4YQ^(4JiZSG0|JHdE)3K}{q3Yt0?cbD0>d$#~c}wf)UYmyx4JAGwcAF5Sd~;#-C&~}9e+pf{ z!aTdcZ0A;d7$oz*Q+`r5-tF~w;BPPy%wQ}l<-t{F;oW7K-X7NcuST_14N7__7u1Vt zz5tb1vy-S>s}NL*9?>6KIUFfv+8h3_TQZG3*Inij+Y$oBb3SoQB?q!d~;d$2;{7Zf77G}cyHH~YFKA|4@YSkb2j zy_Y^o4J5jKm5VgeRXJpvB_46s8)%{ z<~g7Ac8o}Oghk@qa6TdYD>Z!;GxdSV>+ITMp5+wKBo?Qkm4310jCXz)c~S4aba)t>k|WV8-)`Jzlr7cqf_ED(awu_` zbBS-(*YS}E>*R1>hm>{5v%k%Qe{o=}R@tcE{*uB~K}QC^bzn?(h-*0$K6aD9=kzf5 z?eA-`@jsZ@nEAc~Q<88%ZdhXkLBSk2PgV5 zVMGRF64{&@fSszi{b-sP|LP)tcd2#cr1ZlSnAHc~MJcn)>+`oSQV5efK z=5@DV$vC2!v>Z#s2YWaWpChhU_C^n#i-FBy!HhAlg~7zSMcX%o*k`~-$ga+SF?}I} z&D|X}GsMG1L8~fmr#zc0gf}z6s@A(sbHq3S$~6g<8)g#KTCq>n>P?y(c|J7ZO;Yqjz~M8LAG?& zv05=Ha0v;!R$9D=jTNm=l3DsJ)b@90Q&Vs+B@%wBy3g$|=oRp3+MX43?&GEC*+Xgz z6C#+i3~Y{Z(CyuvTg|aV+gfj$`(m_<+5XwRf&Rmp=zfYY!&?qWdwnV{H`7j+K5x-J z)gW1P-qj!?mL)x}7T>Cr6Z|KBmj~F!F+%p?h`4<{Kmv$Mv8G}jQ}k_0T4zFDq3{NS z3FRiH6XJ^~nfvJ0LAoVoVtL_@i1K(;<#Mt!gO_{tRH!-B)~N|pyMthQy#uCsc3w@| zfRK28Ih%tbtF(-~C^H~lmKosx*+nLP2YjbQBzS*Ne3F_{X71Y-T_EL&XF(u0!4sGM zje>biQm-gZ!)ZUsj})&CQo%Vo*%+5)OUb#0_4Wdll=bgd>S{=R$umWgdPwbfBd2E& zV__~VsR?>9pj}DBtDBvGGS{i6?iJA)XTp!LVit?b(~sVhO|gn)8wYT7Q+553Pcn{f z6a9^Df>rSS;HjL+l31i54Gjs93ySqe6zcnFMe(SQQY0f;bdoqQvmVsXO3x(1bwZxL>ZWehBas>_b#1bGdUll%Q596iOrIFRba$Zs<=h;mP9KdloHx z=hDHx{e}I8>ZMN1+kyi(QI6ZWI)I7I56K{ zy~vo^Ssj)c7p$Cli~Cuna(+v>O^Pony)~0DLm4f%B>fSOsP*Z&6Iawe601!(;2a|I zxtMjX>FwiC)88G@4GY4t^4&R-J7WH1MfycMf@lNkzp$v(Sj^OF%-Iy5NzyQz=lv>0 zW9YRbg!Q9X^rOhN1KEv3$WZSlbwFB+m8Z@;D!~wyNQjJ zkazvI>59%hVyH*iH}d9!YIP`PN4N|97U|>e`F3u1!iPl zc>KFhZoR8F#f~%4NI6CB$btN!m}+Fu?nz5j_a2Xb^qOQFO{nWu^wx6=C*R}-un%%0 zFb)A-hC=8LX=ozn;Z^7oSdqgvs?wv1$uIrD&(%A3!KTtjxvP{j^I%8{!yBCAV6tnL z3Y_>UycK!q7VptO$Dwe;5yO?*H0?kdH^JYunIT`2r}NDpPy3{xN7>IpXFI;mi0D&^ zS9`4kLY*xEIg_k=GihpniQOR2f`ZN6jn3yS2_I-9Jk|loFjpvq1q1D2kMSejYWXPg zhr)GuVtL1uCOVnZw;*#lcR;eMjI5?Rb7xB7cuQAYMIG^z{(6H01Q@fF8hcM``3KmB z);y=?Q0&r~;EZa&%7Zu8)-!P2s1AZOjP}PR0rz=}!;iOGRd%jUw#6Y;|AB_?)W58w zR;BgzOG#5aW<2_+t#+LIbz?@qQwkvfh=7!c_bly8dGFJMjh)E7*5B-;wKJpp zmC9{y9v_$6Q@3Xr0%XcRF6$58R^m-o&pG;LMKea>+1t5HH`b?S1Fz+py7E>wq|ME% zrL8h`@%@J(t+WS78UU%d?dZAt*YqsF3c+!e3KMq5_U23SAKGo#Pb*w&eF_5ysc8sD zT`E`?YI8MIB!a_!4&W`OWRx(@s9Mu|qKYQ}xz;gZDOhF6A0#gZu0SnPTe{SO$i{96 znC2{Nat#J22`QhK`1xu!d%8S<eCX>V~J5j*O|>o`Q4 zTU#ByO*X1(yqVsd?I}z~V+mJ+k;PBZZ{Kq;wmE(x`Zc6+DVNkeUH+pu28JwU>bC!R zS?BUTFlNM47(?jB@zwi$E05?0+^KtKObqt9{-M{rOYJ?}yv!jNC`~d}4%F(=l|%H+ zCsV{JtMcS-n~O<0*)o@GOw>0yF2IiS9lzF9T_xB&9sWUfAwDtB1b`DkRE-Z!>HIk( zkKdaTRSsm+IE^twVnz(ww~qQ8DTO0cXJn!=E0_I-JrL zJQ550A^4sB6+jv6^9{>lN9PpNSjnj@CL~$Vh>T$x|KLtzs-^ zW`8|u1;ZFal=fH9SQxV9j@Wf@?h3605&}bWV>h&6MUt7|r-Iqq{z8U_m zc$+laELOuCkBfUq3xG~R3&!awJdzU&RFLFev|;4l7|8aw0DI#P2I|*2aSjWG;cQw; zH~-9+cMvLM99cZN*zk`O3STHxG{{vn$P{8J6*QD9`{m=+`HaQyXjh<jZeQf~J*M1vFj=Gmm*VApK3 zqHlW8p0uA?qBn|q4$! z2OBagh6}$1mLO%3_Q@qoiFn6O2lTruS>;hB~v0)RIPZfX{uneOw?ru;#Y$6{C72gSr2YZgI!D*!-)*A#%YBHrqEuXimSg0wL9vQTGm!TzRRhDwSfQC)m&9F0C`u>Gi zuT{i5!r0WvH_XF>@DsFn7$gFmvI$QP53NW=q@LWdj`!sXGD!PAzhHdCA=(Z3%_aih z0m%7L_Yz+dhlE*Uq-ETXZZD^SJu9I(?R~=b=t#}tG*3S3BnXa{Y{OYSWX(VxJIdo; z6#COg(wm8g<^I?l!9M?`HbJaNH_PRzER!w93GbKroE=NM-%~no^q*lig46-pAgtK|2O9u#&Po?SXvXY>_{> zUVT)~pR>CGi2@5VRk}{I}9e;cRM6MXd9hW!cT?UoL(fKRqe$|c?)kb+Ex^j`; zS{)yfzHpO4xRD&7fcNbEue>NZk#427@;~Nwv5Whd!FvHUgm4#)efo)Znv*BrO)1-3 z5p?N>a55yGwI|s&NN^s-u}OrzxQZ%05Eg?F(_zweAN;t9zw4EgL;B+DixeG>h)t@} zCm|Gta>>Op%sM0H8-}9Xe!}k2ZV6d6yE@cuxhAh@_iSv2kzKNN6E%|df`4$AA$|5Z z>h^j&PWb_XQr=!Pgm?i^!F}}_$uH6AJ}9GoD2wxQPmx|ElX>sb8dy~KL%a9P!61^< zh2!og5!p=jDB=%Yv9CYgZL*GjT-FtLQ)h4HX>VEAA^s3sfAXoJ%FWRpfC@wg4d0l2 zDg6*0OrXGU&41E?s%=5z=J>w!A;9k!Esh&$3o8{Fq$|F&<2}4?&A;FV@$1m+h?WMu zk|26TATOV=Y>#o!Z&l7ix_SnpK1H-PdJ!x&Ydf0j6QmGEwARcFw0aU*YGv^0R_^H( zrkf=(C~GnD*Gmr#+*$yB#LV)!8H4;^tpMgGq^@kVSzRn?{Zb4NuiAe!*Oz}C9!OKB zEM@RFuVQ?NrNqUG*1&tTS>i97?Fcq3+RmwZpwkdhy30HZ7YOrjT z>l5)AjVw2RL9(l|$IFqxP|y%COhRYh!)X&TuiHUp>)Qcl_tlH>Xia^xas#))fw{1C zvuBA>>9lluR>R&jLr1+etP)qciHT>nVZ67Bfi`EUWkvT4yoSV>fd_1=_u}-caI)1k ziJt_;LX^-VTw0lUacg=FWRn_088W6BiZeA?=rx-JsSoqEjzcrSERvZbl}H)T>%rhio+4j=KI>icf9tNgvd z--DzdVvi9h=7GDrxli7;w`}HjNyAs;P}W)1Sn~q5A#t(jq;)&wQhJ+sHI0G-8(F!9 zL0aJhS~}g>5{pf5>iWac2XJ)a$~Eq|!Xk%=xeXE+0t*)K9amVmUJ?IPkCh0VGq`Xt zfA?KTgXD(UViT$#H;c5JupMHQPW{WF2&?UA--%6`f>}>|hQx z6evp_a8{*>$zp^=#2vQKkGfLoLi5rtOo|c$6b1hi62$S+ z-@V9kDOPsNW7+#Deu#xW3YbV~d2>h(1@JQ*yy%Y>za>o-zp*+Xi5!&6W)++681RqO z7yPFmJSK>%{WE+Z^edQR0M8K9uUvzn%(3ch##UHjMR2mJ0hxJxekF0#jCAseaU!%i zQg5B1Qg2z&V0)4>DuPuF>Om9$4=_}u*_`s*5VsPBUpFQ~Z7-pSO0dJbu&855jTNzf zbm$k<=x1uwDAr+gH46%~ioj9gBYH`HxIrrx^Fy>EuKbawu7G=x7w}y)t52nvyP|31 z)Gt{dAeU$RD06;@U?ygEc7%AaGcTAoXr(|bf&l|zRzn3-k@@}!2$H+n_gJQ;S1!-r zSr@6!i0_=|%AJzY#OZj)&~ry3T@4&SIXn){2>ldA9EJD79&I;)w>MHyZuuikaW`L2 zblHT4e)5;x@4LgAW@B1kCm4FuHG`P-e{!nGIpzN3Nb`pTBgTyT)qe?;$m=mG83Zbk zvM-iiqPqm)+fTdqepYoju)bgwm{4++R{?LFKee(bI^mH(a)F&ZGfxs;`)Gind0(Zo zsy)4#xg7QF*wSo^4eHur+H%um|G@%m!0Bem-kJ~fcjMJz!#8r@Y^%eRS`*(eRKSgu zvdpHEA1D-ccg@A~o7F7vg@b2!PDez=tP{wPyHE!Q(dJ@i2X$O(DgbPIc98eW$D2#D z=_zy=z}znJvW*(jzC-xT|S><%=6Oxl9-2~9{!F;t z9Fl-~c?vw2^-nv;XPDWWcb9YhbRvTUI)6cqsvjILheB7m;@VdU}6CO1mzCDHHo;i!Zk;j2AYP&78y8Wsww6o5@D{1;zHz zVPuECy<{~bx^B|UQ!D!RdpbC`|1gm4IKFnI8Z~o>JeSFT*^ap|BctfGVC&kHPrdo* z!3by>o{IkrRE(XuAMjp2Ztp*=X?=Z#BYO+`H^&N4tTKQ8hMC%vIz!IEh+EA}2gd{Q zz5?9=GL{T2UU@<7LmTUY2fIBZ@dTi&l9j$dY?8m9utCr}OxnGW(@38)(^Fgg+Q5N+ zv}Ay$^+%GvO9n2W?%m0*@sB#YUioep+AODROQO$@alrU)LSKWT0$6 zZMEaxubt44O=$JYaz%XpjD*Ilb?Fiu9=H$bVn}fMrP%Y2gTPCk>eO}L=~qQ)LOGMc zrrP90mO@LbGvZSEsP&dXZ*UX~U<_=iY@SiG+|`KsX~u|4tWSR^nG`?QsAqz@C{4s{ z`<)9oLR4uvHfbrH5TYLbnQu^niyf(|=5_SxjEiu2KdEKQU#r-|yRR0Vj0}Plhyxiz z7P^>247iy_m4}L1JFhSWrI`v*B$MA9ojofP4g_e6ZL)}s%?}?K7>BfV`892K#%&la z7j>)v;lFCLx78C^B%@@o`nAX>AxU2lko(KYZj`ud%^DxjHGz4F$P@iDgB9?>ss$sk zb@ylmuo>c;qnuWL{p#@Uzqb9*5peg7WU`{(8C;m=6X9}N!dBb4F00<^Uj%{EAG@_< zS*rUM=D)%C&0BR3d?-((pF(I|0fdzonPkZ*NTm4#5&{nkPi>WkN|eM1hXgr^l*J1| z8(?zp<1q6j7Gq$>($XuO=L1(j_O#0 z;}wv6afDdqr?D;(@zrQeY%U<(RVF*t81>Xn0CbH-Ms&TBC#EP9(DbwRA=R zxcl6DDEvF&A2aE%djo=7U(nURlhUe&yHJ;IwWXZ%b&c*H{q4_g?XJo?Q`a-LUT^jd zw~i8${=7?lQP&%9hfnoxJpUZF)*rlJWrx7K>^H|7Rwp~XrM9Qv1bSz8^)#>qga0$) zIWvLH)8ypUu2xT`3 zPDx-*!!gGUHRm7bJEX?h_xgg9oEM*%OGg()n`01|q#a4o>`v&{5^E9eCR}$ai?1_oq~V8#*oqZ3$RVB*%&<50EIjTkeCssqJE;Wf;bJ|qe5>rBUj9d% z@e!$}Ul`xQiPhVXY=06yQ*hrgaZlQD|22RSk-ut8+_$BhP~RI-Rf}g{2VnxsUv&5f(>b^*u=SJFCW0r@5=SR&eR7Xp->2<2LW`AkUlmKji>DQ2rVYK$REPxHL6L8gW zv1_(kv0kWKt1_z|>lcejV%@Mnow$?rV zWnP%ztZBbmwqa0m>u8b`(v%L-D<89}V%l>ze@APhSP zR0*cbx6AhJO`TJ zfjmgg4m=vJlK>l@r-DJ8bHrg>#tTp91*%a{b;QQD)B_D`?~=!35e4rqW-CvAN}O#+ zq|u(#jR31D@9s&pk)c2CP|TWmHC(748Rzz%FE1-?&)x#b?bVeND=X=JXFLMg?lUXN zZTRiwF5rD2y}5qr0ZpBwU#xWkiO#(J^@2twgy8itm0C<+6!dEetJHHKN9xMU zYii1{I;DLRN{ z!cJN>4-OM3idT~zJbB|(N8=zz<3vY?psyei0b4>mZ1*3p-lHL0gcJ=)S zfMs)rJ)a2E#sCM*=3-Mw9dk54b#uKu zO#}j8EqmlRo_cp^3wg72i7fU-)c!3sHRSXpIfHr>Bpk-EWXrT|E&o4F#c;4Qf#h%2 z&4texmTyH0j#M{Q8zqNPeKc;QIQi=6F<=JRfUV*{?A*#R3F>tcmvbYi-l4tAJ`l7y}RefuM z_(ViyZxsHAq^#bse%`T~J8qc@h*WPw=5YK@@nNW<$qGGrytwSHN|p_Z%!fFz+qGA% z^z4gj4HV2;lcUTDfp|hJ(b1?1=Eb^M2D31h9ISyn0#Kb~4lkT2jj{Gx1TaBSQn#;e zK9V=v5E>O>?%lOI4&(H0QTyb~d*kcg1 z^PJG-KY8SPLfo8wW9CXx{R5Tf#1)G!*dN zr^BOk^+EM|MQ(HnL-IHJXTVB^chDU1$V}9Yw7K0=y?!V}0DEj6`WC{`K>T1>1e}h^G(hWOPCM4#@ zu}V}M_!~76XPFWRtYC4?BF)D`G=j~CuY(aWbfX1@-%+f;T>Khl7R%m~&fY7aTN6`l zg7b*R_NW4pT@h=)kUdca$o2zxX!!cGth2(fTysL}wEQLo?^Q2#NklT`2s1V1fcUHs zGoteX)wpWHO+u=5);^(E&!dgS>6=IK}-m4RM< zh?>O+FkNA`Ln{UND#PYTcj1SNgPGE)$(@sfGWpf6L=wV4dE)86q|<+e!i9eCf*lbe z2+onCPt}**JcYfo!2iOf65uU{IVwr;2h86VOyS3b1?ne<4P}&}tmwvqDWKB#|6GaT zr3dp@3TqSsWn%tP-|=PON}QVUpNQA_>&ATUFT*$EYhTWLnww}Z)pNsSaO=H&;PG-I zj{FgIkVU%E5YMOeg>vLiis)3&&pX6pJhAJFqe>PudbX@1vvExI7`9GLIfro!rQ`AH zij=r{|MLPQFc%upWRfcnWa-S%9@~n<~@6^-|Wc5W;@ajV&r!p-JvQM}6 zs=hdo($=7eF$KOYjnS1s4&{Xur-r6T?6E&BSGQV1GHVyc9SRTfq{6CxC@vlZr&k=y z)R|;CG{jY&SY|6>{i4kuwlvSXqg3SLMuuLy5zfz(Vbh4w-x^Vro`)%GxIQ)F| zipz7iQ1Fox_>Yr0fus3}lR5HkAM?WAC>~h0N>ZjuGDN+sk7efTgqoSW_E*IO6WOFZ zh2&pK$$6MFMZ?pD3~UAEZ02R`mey>Rh*y2NT)STg9IX|hf5uyG@zy;V?K^{o0@Gmg zqfH~?U=tGMQ<4vmKAjMa+v!-C?Lh=H($DOS;`(@*gBwT<#Et5Iq^*T^= zr^^OO(!hsWs`!Zk<6O^{BdQiBkD;CsR)RQavZ_$IxtDx^Mx*?XwIKQOB^G4M}1U+yd(fjDMdgO$u>)BULYdh;TFJm znXN++jFa_Ix0@(SE8$i>@Pw2E`#20J75k(c=^)gEe+ZZV5c=R$e}3rQog679_!Lg_ zkswlua+5TpE|>xV!vsh8D(s%0AD(sIYaqDiKBEubK3aLNn^Ck#KGqr*8pu%jyAm^? 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�ULTTYSfl|OZZjUG1>;Wy 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

    2S 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 z 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�dS@q-7`( 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%0AvET$gohM+JNl#s)fl!#YpK`Wdrp84>x0zu+ic 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 {M+EeGh@ZD&u{3uPr5FjD&SegKvfm^?2NPi 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%0DlG68=CyPFR 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 B4%`3$ diff --git a/invidious/screenshots/04_description.png b/invidious/screenshots/04_description.png deleted file mode 100755 index 949925f68662f3732f534d9093b55e0a71a70a0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614264 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
    3Uw?~1T%_scx82Oh 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
    KM8#f$?Ck9SO`ZDJ;ln8C=j$6C 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 "$HOME/.pgpass" - - sudo -u postgres -- psql -c "CREATE USER kemal WITH PASSWORD '$POSTGRES_PASS';" - sudo -u postgres -- psql -c "CREATE DATABASE invidious WITH OWNER kemal;" - sudo -u postgres -- psql -c "GRANT ALL ON DATABASE invidious TO kemal;" -fi - - -# -# Instructions for modification of pg_hba.conf -# - -if [ "$interactive" = "true" ]; then - echo - echo "-------------" - echo " NOTICE " - echo "-------------" - echo - echo "Make sure that your postgreSQL's pg_hba.conf file contains the follwong" - echo "lines before previous 'host' configurations:" - echo - echo "host invidious kemal 127.0.0.1/32 md5" - echo "host invidious kemal ::1/128 md5" - echo -fi diff --git a/invidious/scripts/fetch-player-dependencies.cr b/invidious/scripts/fetch-player-dependencies.cr deleted file mode 100755 index 813e4ce..0000000 --- a/invidious/scripts/fetch-player-dependencies.cr +++ /dev/null @@ -1,164 +0,0 @@ -require "http" -require "yaml" -require "digest/sha1" -require "option_parser" -require "colorize" - -# Taken from https://crystal-lang.org/api/1.1.1/OptionParser.html -minified = false -OptionParser.parse do |parser| - parser.banner = "Usage: Fetch VideoJS dependencies [arguments]" - parser.on("-m", "--minified", "Use minified versions of VideoJS dependencies (performance and bandwidth benefit)") { minified = true } - - parser.on("-h", "--help", "Show this help") do - puts parser - exit - end - - parser.invalid_option do |flag| - STDERR.puts "ERROR: #{flag} is not a valid option." - STDERR.puts parser - exit(1) - end -end - -required_dependencies = File.open("videojs-dependencies.yml") do |file| - YAML.parse(file).as_h -end - -def update_versions_yaml(required_dependencies, minified, dep_name) - File.open("assets/videojs/#{dep_name}/versions.yml", "w") do |io| - YAML.build(io) do |builder| - builder.mapping do - # Versions - builder.scalar "version" - builder.scalar "#{required_dependencies[dep_name]["version"]}" - - builder.scalar "minified" - builder.scalar minified - end - end - end -end - -# The first step is to check which dependencies we'll need to install. -# If the version we have requested in `videojs-dependencies.yml` is the -# same as what we've installed, we shouldn't do anything. Likewise, if it's -# different or the requested dependency just isn't present, then it needs to be -# installed. - -# Since we can't know when videojs-youtube-annotations is updated, we'll just always fetch -# a new copy each time. -dependencies_to_install = [] of String - -required_dependencies.keys.each do |dep| - dep = dep.to_s - path = "assets/videojs/#{dep}" - # Check for missing dependencies - if !Dir.exists?(path) - Dir.mkdir(path) - dependencies_to_install << dep - else - config = File.open("#{path}/versions.yml") do |file| - YAML.parse(file).as_h - end - - if config["version"].as_s != required_dependencies[dep]["version"].as_s || config["minified"].as_bool != minified - `rm -rf #{path}/*.js #{path}/*.css` - dependencies_to_install << dep - end - end -end - -# Now we begin the fun part of installing the dependencies. -# But first we'll setup a temp directory to store the plugins -tmp_dir_path = "#{Dir.tempdir}/invidious-videojs-dep-install" -Dir.mkdir(tmp_dir_path) if !Dir.exists? tmp_dir_path - -channel = Channel(String | Exception).new - -dependencies_to_install.each do |dep| - spawn do - dep_name = dep - download_path = "#{tmp_dir_path}/#{dep}" - dest_path = "assets/videojs/#{dep}" - - HTTP::Client.get("https://registry.npmjs.org/#{dep}/-/#{dep}-#{required_dependencies[dep]["version"]}.tgz") do |response| - Dir.mkdir(download_path) - data = response.body_io.gets_to_end - File.write("#{download_path}/package.tgz", data) - - # https://github.com/iv-org/invidious/pull/2397#issuecomment-922375908 - if `sha1sum #{download_path}/package.tgz`.split(" ")[0] != required_dependencies[dep]["shasum"] - raise Exception.new("Checksum for '#{dep}' failed") - end - end - - # Unless we install an external dependency, crystal provides no way of extracting a tarball. - # Thus we'll go ahead and call a system command. - `tar -vzxf '#{download_path}/package.tgz' -C '#{download_path}'` - raise "Extraction for #{dep} failed" if !$?.success? - - # Would use File.rename in the following steps but for some reason it just doesn't work here. - # Video.js itself is structured slightly differently - dep = "video" if dep == "video.js" - - # This dep nests everything under an additional JS or CSS folder - if dep == "silvermine-videojs-quality-selector" - js_path = "js/" - - # It also stores their quality selector as `quality-selector.css` - `mv #{download_path}/package/dist/css/quality-selector.css #{dest_path}/quality-selector.css` - else - js_path = "" - end - - # Would use File.rename but for some reason it just doesn't work here. - if minified && File.exists?("#{download_path}/package/dist/#{js_path}#{dep}.min.js") - `mv #{download_path}/package/dist/#{js_path}#{dep}.min.js #{dest_path}/#{dep}.js` - else - `mv #{download_path}/package/dist/#{js_path}#{dep}.js #{dest_path}/#{dep}.js` - end - - # Fetch CSS which isn't guaranteed to exist - # - # Also, video JS changes structure here once again... - dep = "video-js" if dep == "video" - - # VideoJS marker uses a dot on the CSS files. - dep = "videojs.markers" if dep == "videojs-markers" - - if File.exists?("#{download_path}/package/dist/#{dep}.css") - if minified && File.exists?("#{download_path}/package/dist/#{dep}.min.css") - `mv #{download_path}/package/dist/#{dep}.min.css #{dest_path}/#{dep}.css` - else - `mv #{download_path}/package/dist/#{dep}.css #{dest_path}/#{dep}.css` - end - end - - # Update/create versions file for the dependency - update_versions_yaml(required_dependencies, minified, dep_name) - - channel.send(dep_name) - rescue ex - channel.send(ex) - end -end - -if dependencies_to_install.empty? - puts "#{"Player".colorize(:blue)} #{"dependencies".colorize(:green)} are satisfied" -else - puts "#{"Resolving".colorize(:green)} #{"player".colorize(:blue)} dependencies" - dependencies_to_install.size.times do - result = channel.receive - - if result.is_a? Exception - raise result - end - - puts "#{"Fetched".colorize(:green)} #{result.colorize(:blue)}" - end -end - -# Cleanup -`rm -rf #{tmp_dir_path}` diff --git a/invidious/scripts/git/pre-commit b/invidious/scripts/git/pre-commit deleted file mode 100755 index 4460b67..0000000 --- a/invidious/scripts/git/pre-commit +++ /dev/null @@ -1,17 +0,0 @@ -# Useful precomit hooks -# Please see https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks for instructions on installation. - -# Crystal linter -# This is a modified version of the pre-commit hook from the crystal repo. https://github.com/crystal-lang/crystal/blob/master/scripts/git/pre-commit -# Please refer to that if you'd like an version that doesn't automatically format staged files. -changed_cr_files=$(git diff --cached --name-only --diff-filter=ACM | grep '\.cr$') -if [ ! -z "$changed_cr_files" ]; then - if [ -x bin/crystal ]; then - # use bin/crystal wrapper when available to run local compiler build - bin/crystal tool format $changed_cr_files >&2 - else - crystal tool format $changed_cr_files >&2 - fi - - git add $changed_cr_files -fi diff --git a/invidious/scripts/install-dependencies.sh b/invidious/scripts/install-dependencies.sh deleted file mode 100755 index 1e67bda..0000000 --- a/invidious/scripts/install-dependencies.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/sh -# -# Script that installs the various dependencies of invidious -# -# Dependencies: -# - crystal => Language in which Invidious is developed -# - postgres => Database server -# - git => required to clone Invidious -# - librsvg2-bin => For login captcha (provides 'rsvg-convert') -# -# - libssl-dev => Used by Crystal's SSL module (standard library) -# - libxml2-dev => Used by Crystal's XML module (standard library) -# - libyaml-dev => Used by Crystal's YAML module (standard library) -# - libgmp-dev => Used by Crystal's BigNumbers module (standard library) -# - libevent-dev => Used by crystal's internal scheduler (?) -# - libpcre3-dev => Used by Crystal's regex engine (?) -# -# - libsqlite3-dev => Used to open .db files from NewPipe exports -# - zlib1g-dev => TBD -# - libreadline-dev => TBD -# -# -# Tested on: -# - OpenSUSE Leap 15.3 - -# -# Load system details -# - -if [ -e /etc/os-release ]; then - . /etc/os-release -elif [ -e /usr/lib/os-release ]; then - . /usr/lib/os-release -else - echo "Unsupported Linux system" - exit 2 -fi - -# -# Some variables -# - -repo_base_url="https://download.opensuse.org/repositories/devel:/languages:/crystal/" -repo_end_url="devel:languages:crystal.repo" - -apt_gpg_key="/usr/share/keyrings/crystal.gpg" -apt_list_file="/etc/apt/sources.list.d/crystal.list" - -yum_repo_file="/etc/yum.repos.d/crystal.repo" - -# -# Major install functions -# - -make_repo_url() { - echo "${repo_base_url}/${1}/${repo_end_url}" -} - - -install_apt() { - repo="$1" - - echo "Adding Crystal repository" - - curl -fsSL "${repo_base_url}/${repo}/Release.key" \ - | gpg --dearmor \ - | sudo tee "${apt_gpg_key}" > /dev/null - - echo "deb [signed-by=${apt_gpg_key}] ${repo_base_url}/${repo}/ /" \ - | sudo tee "$apt_list_file" - - sudo apt-get update - - sudo apt-get install --yes --no-install-recommends \ - libssl-dev libxml2-dev libyaml-dev libgmp-dev libevent-dev \ - libpcre3-dev libreadline-dev libsqlite3-dev zlib1g-dev \ - crystal postgresql-13 git librsvg2-bin make -} - -install_yum() { - repo=$(make_repo_url "$1") - - echo "Adding Crystal repository" - - cat << END | sudo tee "${yum_repo_file}" > /dev/null -[crystal] -name=Crystal -type=rpm-md -baseurl=${repo}/ -gpgcheck=1 -gpgkey=${repo}/repodata/repomd.xml.key -enabled=1 -END - - sudo yum -y install \ - openssl-devel libxml2-devel libyaml-devel gmp-devel \ - readline-devel sqlite-devel \ - crystal postgresql postgresql-server git librsvg2-tools make -} - -install_pacman() { - # TODO: find an alternative to --no-confirm? - sudo pacman -S --no-confirm \ - base-devel librsvg postgresql crystal -} - -install_zypper() -{ - repo=$(make_repo_url "$1") - - echo "Adding Crystal repository" - sudo zypper --non-interactive addrepo -f "$repo" - - sudo zypper --non-interactive --gpg-auto-import-keys install --no-recommends \ - libopenssl-devel libxml2-devel libyaml-devel gmp-devel libevent-devel \ - pcre-devel readline-devel sqlite3-devel zlib-devel \ - crystal postgresql postgresql-server git rsvg-convert make -} - - -# -# System-specific logic -# - -case "$ID" in - archlinux) install_pacman;; - - centos) install_dnf "CentOS_${VERSION_ID}";; - - debian) - case "$VERSION_CODENAME" in - sid) install_apt "Debian_Unstable";; - bookworm) install_apt "Debian_Testing";; - *) install_apt "Debian_${VERSION_ID}";; - esac - ;; - - fedora) - if [ "$VERSION" == *"Prerelease"* ]; then - install_dnf "Fedora_Rawhide" - else - install_dnf "Fedora_${VERSION}" - fi - ;; - - opensuse-leap) install_zypper "openSUSE_Leap_${VERSION}";; - - opensuse-tumbleweed) install_zypper "openSUSE_Tumbleweed";; - - rhel) install_dnf "RHEL_${VERSION_ID}";; - - ubuntu) - # Small workaround for recently released 22.04 - case "$VERSION_ID" in - 22.04) install_apt "xUbuntu_21.04";; - *) install_apt "xUbuntu_${VERSION_ID}";; - esac - ;; - - *) - # Try to match on ID_LIKE instead - # Not guaranteed to 100% work - case "$ID_LIKE" in - archlinux) install_pacman;; - centos) install_dnf "CentOS_${VERSION_ID}";; - debian) install_apt "Debian_${VERSION_ID}";; - *) - echo "Error: distribution ${CODENAME} is not supported" - echo "Please install dependencies manually" - exit 2 - ;; - esac - ;; -esac diff --git a/invidious/shard.lock b/invidious/shard.lock deleted file mode 100755 index efb60a5..0000000 --- a/invidious/shard.lock +++ /dev/null @@ -1,50 +0,0 @@ -version: 2.0 -shards: - ameba: - git: https://github.com/crystal-ameba/ameba.git - version: 1.5.0 - - athena-negotiation: - git: https://github.com/athena-framework/negotiation.git - version: 0.1.1 - - backtracer: - git: https://github.com/sija/backtracer.cr.git - version: 1.2.1 - - db: - git: https://github.com/crystal-lang/crystal-db.git - version: 0.10.1 - - exception_page: - git: https://github.com/crystal-loot/exception_page.git - version: 0.2.2 - - kemal: - git: https://github.com/kemalcr/kemal.git - version: 1.1.2 - - kilt: - git: https://github.com/jeromegn/kilt.git - version: 0.6.1 - - pg: - git: https://github.com/will/crystal-pg.git - version: 0.24.0 - - protodec: - git: https://github.com/iv-org/protodec.git - version: 0.1.5 - - radix: - git: https://github.com/luislavena/radix.git - version: 0.4.1 - - spectator: - git: https://github.com/icy-arctic-fox/spectator.git - version: 0.10.4 - - sqlite3: - git: https://github.com/crystal-lang/crystal-sqlite3.git - version: 0.18.0 - diff --git a/invidious/shard.yml b/invidious/shard.yml deleted file mode 100755 index be06a7d..0000000 --- a/invidious/shard.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: invidious -version: 0.20.1 - -authors: - - Omar Roth - - Invidious team - -targets: - invidious: - main: src/invidious.cr - -dependencies: - pg: - github: will/crystal-pg - version: ~> 0.24.0 - sqlite3: - github: crystal-lang/crystal-sqlite3 - version: ~> 0.18.0 - kemal: - github: kemalcr/kemal - version: ~> 1.1.2 - kilt: - github: jeromegn/kilt - version: ~> 0.6.1 - protodec: - github: iv-org/protodec - version: ~> 0.1.5 - athena-negotiation: - github: athena-framework/negotiation - version: ~> 0.1.1 - -development_dependencies: - spectator: - github: icy-arctic-fox/spectator - version: ~> 0.10.4 - ameba: - github: crystal-ameba/ameba - version: ~> 1.5.0 - -crystal: ">= 1.0.0, < 2.0.0" - -license: AGPLv3 diff --git a/invidious/spec/helpers/vtt/builder_spec.cr b/invidious/spec/helpers/vtt/builder_spec.cr deleted file mode 100755 index dc1f461..0000000 --- a/invidious/spec/helpers/vtt/builder_spec.cr +++ /dev/null @@ -1,87 +0,0 @@ -require "../../spec_helper.cr" - -MockLines = ["Line 1", "Line 2"] -MockLinesWithEscapableCharacter = ["", "&Line 2>", '\u200E' + "Line\u200F 3", "\u00A0Line 4"] - -Spectator.describe "WebVTT::Builder" do - it "correctly builds a vtt file" do - result = WebVTT.build do |vtt| - 2.times do |i| - vtt.cue( - Time::Span.new(seconds: i), - Time::Span.new(seconds: i + 1), - MockLines[i] - ) - end - end - - expect(result).to eq([ - "WEBVTT", - "", - "00:00:00.000 --> 00:00:01.000", - "Line 1", - "", - "00:00:01.000 --> 00:00:02.000", - "Line 2", - "", - "", - ].join('\n')) - end - - it "correctly builds a vtt file with setting fields" do - setting_fields = { - "Kind" => "captions", - "Language" => "en", - } - - result = WebVTT.build(setting_fields) do |vtt| - 2.times do |i| - vtt.cue( - Time::Span.new(seconds: i), - Time::Span.new(seconds: i + 1), - MockLines[i] - ) - end - end - - expect(result).to eq([ - "WEBVTT", - "Kind: captions", - "Language: en", - "", - "00:00:00.000 --> 00:00:01.000", - "Line 1", - "", - "00:00:01.000 --> 00:00:02.000", - "Line 2", - "", - "", - ].join('\n')) - end - - it "properly escapes characters" do - result = WebVTT.build do |vtt| - 4.times do |i| - vtt.cue(Time::Span.new(seconds: i), Time::Span.new(seconds: i + 1), MockLinesWithEscapableCharacter[i]) - end - end - - expect(result).to eq([ - "WEBVTT", - "", - "00:00:00.000 --> 00:00:01.000", - "<Line 1>", - "", - "00:00:01.000 --> 00:00:02.000", - "&Line 2>", - "", - "00:00:02.000 --> 00:00:03.000", - "‎Line‏ 3", - "", - "00:00:03.000 --> 00:00:04.000", - " Line 4", - "", - "", - ].join('\n')) - end -end diff --git a/invidious/spec/i18next_plurals_spec.cr b/invidious/spec/i18next_plurals_spec.cr deleted file mode 100755 index dcd0f5e..0000000 --- a/invidious/spec/i18next_plurals_spec.cr +++ /dev/null @@ -1,231 +0,0 @@ -require "spectator" -require "../src/invidious/helpers/i18next.cr" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end - -def resolver - I18next::Plurals::RESOLVER -end - -FORM_TESTS = { - "ach" => I18next::Plurals::PluralForms::Single_gt_one, - "ar" => I18next::Plurals::PluralForms::Special_Arabic, - "be" => I18next::Plurals::PluralForms::Dual_Slavic, - "cy" => I18next::Plurals::PluralForms::Special_Welsh, - "fr" => I18next::Plurals::PluralForms::Special_French_Portuguese, - "en" => I18next::Plurals::PluralForms::Single_not_one, - "es" => I18next::Plurals::PluralForms::Special_Spanish_Italian, - "ga" => I18next::Plurals::PluralForms::Special_Irish, - "gd" => I18next::Plurals::PluralForms::Special_Scottish_Gaelic, - "he" => I18next::Plurals::PluralForms::Special_Hebrew, - "hr" => I18next::Plurals::PluralForms::Special_Hungarian_Serbian, - "is" => I18next::Plurals::PluralForms::Special_Icelandic, - "it" => I18next::Plurals::PluralForms::Special_Spanish_Italian, - "jv" => I18next::Plurals::PluralForms::Special_Javanese, - "kw" => I18next::Plurals::PluralForms::Special_Cornish, - "lt" => I18next::Plurals::PluralForms::Special_Lithuanian, - "lv" => I18next::Plurals::PluralForms::Special_Latvian, - "mk" => I18next::Plurals::PluralForms::Special_Macedonian, - "mnk" => I18next::Plurals::PluralForms::Special_Mandinka, - "mt" => I18next::Plurals::PluralForms::Special_Maltese, - "or" => I18next::Plurals::PluralForms::Special_Odia, - "pl" => I18next::Plurals::PluralForms::Special_Polish_Kashubian, - "pt" => I18next::Plurals::PluralForms::Special_French_Portuguese, - "pt-PT" => I18next::Plurals::PluralForms::Single_gt_one, - "pt-BR" => I18next::Plurals::PluralForms::Special_French_Portuguese, - "ro" => I18next::Plurals::PluralForms::Special_Romanian, - "sk" => I18next::Plurals::PluralForms::Special_Czech_Slovak, - "sl" => I18next::Plurals::PluralForms::Special_Slovenian, - "su" => I18next::Plurals::PluralForms::None, - "sr" => I18next::Plurals::PluralForms::Special_Hungarian_Serbian, -} - -SUFFIX_TESTS = { - "ach" => [ - {num: 0, suffix: ""}, - {num: 1, suffix: ""}, - {num: 10, suffix: "_plural"}, - ], - "ar" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_1"}, - {num: 2, suffix: "_2"}, - {num: 3, suffix: "_3"}, - {num: 4, suffix: "_3"}, - {num: 104, suffix: "_3"}, - {num: 11, suffix: "_4"}, - {num: 99, suffix: "_4"}, - {num: 199, suffix: "_4"}, - {num: 100, suffix: "_5"}, - ], - "be" => [ - {num: 0, suffix: "_2"}, - {num: 1, suffix: "_0"}, - {num: 5, suffix: "_2"}, - ], - "cy" => [ - {num: 0, suffix: "_2"}, - {num: 1, suffix: "_0"}, - {num: 3, suffix: "_2"}, - {num: 8, suffix: "_3"}, - ], - "en" => [ - {num: 0, suffix: "_plural"}, - {num: 1, suffix: ""}, - {num: 10, suffix: "_plural"}, - ], - "es" => [ - {num: 0, suffix: "_2"}, - {num: 1, suffix: "_0"}, - {num: 10, suffix: "_2"}, - {num: 6_000_000, suffix: "_1"}, - ], - "fr" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_0"}, - {num: 10, suffix: "_2"}, - {num: 4_000_000, suffix: "_1"}, - {num: 6_260_000, suffix: "_2"}, - ], - "ga" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 3, suffix: "_2"}, - {num: 7, suffix: "_3"}, - {num: 11, suffix: "_4"}, - ], - "gd" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 3, suffix: "_2"}, - {num: 20, suffix: "_3"}, - ], - "he" => [ - {num: 0, suffix: "_3"}, - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 3, suffix: "_3"}, - {num: 20, suffix: "_2"}, - {num: 21, suffix: "_3"}, - {num: 30, suffix: "_2"}, - {num: 100, suffix: "_2"}, - {num: 101, suffix: "_3"}, - ], - "is" => [ - {num: 1, suffix: ""}, - {num: 2, suffix: "_plural"}, - ], - "jv" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_1"}, - ], - "kw" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 3, suffix: "_2"}, - {num: 4, suffix: "_3"}, - ], - "lt" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 10, suffix: "_2"}, - ], - "lv" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 0, suffix: "_2"}, - ], - "mk" => [ - {num: 1, suffix: ""}, - {num: 2, suffix: "_plural"}, - {num: 0, suffix: "_plural"}, - {num: 11, suffix: "_plural"}, - {num: 21, suffix: ""}, - {num: 31, suffix: ""}, - {num: 311, suffix: "_plural"}, - ], - "mnk" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_1"}, - {num: 2, suffix: "_2"}, - ], - "mt" => [ - {num: 1, suffix: "_0"}, - {num: 2, suffix: "_1"}, - {num: 11, suffix: "_2"}, - {num: 20, suffix: "_3"}, - ], - "or" => [ - {num: 2, suffix: "_1"}, - {num: 1, suffix: "_0"}, - ], - "pl" => [ - {num: 0, suffix: "_2"}, - {num: 1, suffix: "_0"}, - {num: 5, suffix: "_2"}, - ], - "pt-BR" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_0"}, - {num: 10, suffix: "_2"}, - {num: 42, suffix: "_2"}, - {num: 9_000_000, suffix: "_1"}, - ], - "pt-PT" => [ - {num: 0, suffix: ""}, - {num: 1, suffix: ""}, - {num: 10, suffix: "_plural"}, - {num: 9_000_000, suffix: "_plural"}, - ], - "ro" => [ - {num: 0, suffix: "_1"}, - {num: 1, suffix: "_0"}, - {num: 20, suffix: "_2"}, - ], - "sk" => [ - {num: 0, suffix: "_2"}, - {num: 1, suffix: "_0"}, - {num: 5, suffix: "_2"}, - ], - "sl" => [ - {num: 5, suffix: "_0"}, - {num: 1, suffix: "_1"}, - {num: 2, suffix: "_2"}, - {num: 3, suffix: "_3"}, - ], - "su" => [ - {num: 0, suffix: "_0"}, - {num: 1, suffix: "_0"}, - {num: 10, suffix: "_0"}, - ], - "sr" => [ - {num: 1, suffix: "_0"}, - {num: 51, suffix: "_0"}, - {num: 32, suffix: "_1"}, - {num: 100, suffix: "_2"}, - {num: 100_000, suffix: "_2"}, - ], -} - -Spectator.describe "i18next_Plural_Resolver" do - describe "get_plural_form" do - sample FORM_TESTS do |locale, form| - it "returns the right plural form for locale '#{locale}'" do - expect(resolver.get_plural_form(locale)).to eq(form) - end - end - end - - describe "get_suffix" do - sample SUFFIX_TESTS do |locale, tests| - it "returns the right suffix for locale '#{locale}'" do - tests.each do |d| - expect(resolver.get_suffix(locale, d[:num])).to eq(d[:suffix]) - end - end - end - end -end diff --git a/invidious/spec/invidious/hashtag_spec.cr b/invidious/spec/invidious/hashtag_spec.cr deleted file mode 100755 index 266ec57..0000000 --- a/invidious/spec/invidious/hashtag_spec.cr +++ /dev/null @@ -1,109 +0,0 @@ -require "../parsers_helper.cr" - -Spectator.describe Invidious::Hashtag do - it "parses richItemRenderer containers (test 1)" do - # Enable mock - test_content = load_mock("hashtag/martingarrix_page1") - videos, _ = extract_items(test_content) - - expect(typeof(videos)).to eq(Array(SearchItem)) - expect(videos.size).to eq(60) - - # - # Random video check 1 - # - expect(typeof(videos[11])).to eq(SearchItem) - - video_11 = videos[11].as(SearchVideo) - - expect(video_11.id).to eq("06eSsOWcKYA") - expect(video_11.title).to eq("Martin Garrix - Live @ Tomorrowland 2018") - - expect(video_11.ucid).to eq("UC5H_KXkPbEsGs0tFt8R35mA") - expect(video_11.author).to eq("Martin Garrix") - expect(video_11.author_verified).to be_true - - expect(video_11.published).to be_close(Time.utc - 3.years, 1.second) - expect(video_11.length_seconds).to eq((56.minutes + 41.seconds).total_seconds.to_i32) - expect(video_11.views).to eq(40_504_893) - - expect(video_11.live_now).to be_false - expect(video_11.premium).to be_false - expect(video_11.premiere_timestamp).to be_nil - - # - # Random video check 2 - # - expect(typeof(videos[35])).to eq(SearchItem) - - video_35 = videos[35].as(SearchVideo) - - expect(video_35.id).to eq("b9HpOAYjY9I") - expect(video_35.title).to eq("Martin Garrix feat. Mike Yung - Dreamer (Official Video)") - - expect(video_35.ucid).to eq("UC5H_KXkPbEsGs0tFt8R35mA") - expect(video_35.author).to eq("Martin Garrix") - expect(video_35.author_verified).to be_true - - expect(video_35.published).to be_close(Time.utc - 3.years, 1.second) - expect(video_35.length_seconds).to eq((3.minutes + 14.seconds).total_seconds.to_i32) - expect(video_35.views).to eq(30_790_049) - - expect(video_35.live_now).to be_false - expect(video_35.premium).to be_false - expect(video_35.premiere_timestamp).to be_nil - end - - it "parses richItemRenderer containers (test 2)" do - # Enable mock - test_content = load_mock("hashtag/martingarrix_page2") - videos, _ = extract_items(test_content) - - expect(typeof(videos)).to eq(Array(SearchItem)) - expect(videos.size).to eq(60) - - # - # Random video check 1 - # - expect(typeof(videos[41])).to eq(SearchItem) - - video_41 = videos[41].as(SearchVideo) - - expect(video_41.id).to eq("qhstH17zAjs") - expect(video_41.title).to eq("Martin Garrix Radio - Episode 391") - - expect(video_41.ucid).to eq("UC5H_KXkPbEsGs0tFt8R35mA") - expect(video_41.author).to eq("Martin Garrix") - expect(video_41.author_verified).to be_true - - expect(video_41.published).to be_close(Time.utc - 2.months, 1.second) - expect(video_41.length_seconds).to eq((1.hour).total_seconds.to_i32) - expect(video_41.views).to eq(63_240) - - expect(video_41.live_now).to be_false - expect(video_41.premium).to be_false - expect(video_41.premiere_timestamp).to be_nil - - # - # Random video check 2 - # - expect(typeof(videos[48])).to eq(SearchItem) - - video_48 = videos[48].as(SearchVideo) - - expect(video_48.id).to eq("lqGvW0NIfdc") - expect(video_48.title).to eq("Martin Garrix SENTIO Full Album Mix by Sakul") - - expect(video_48.ucid).to eq("UC3833PXeLTS6yRpwGMQpp4Q") - expect(video_48.author).to eq("SAKUL") - expect(video_48.author_verified).to be_false - - expect(video_48.published).to be_close(Time.utc - 3.weeks, 1.second) - expect(video_48.length_seconds).to eq((35.minutes + 46.seconds).total_seconds.to_i32) - expect(video_48.views).to eq(68_704) - - expect(video_48.live_now).to be_false - expect(video_48.premium).to be_false - expect(video_48.premiere_timestamp).to be_nil - end -end diff --git a/invidious/spec/invidious/helpers_spec.cr b/invidious/spec/invidious/helpers_spec.cr deleted file mode 100755 index 9fbb6d6..0000000 --- a/invidious/spec/invidious/helpers_spec.cr +++ /dev/null @@ -1,56 +0,0 @@ -require "../spec_helper" - -CONFIG = Config.from_yaml(File.open("config/config.example.yml")) - -Spectator.describe "Helper" do - describe "#produce_channel_search_continuation" do - it "correctly produces token for searching a specific channel" do - expect(produce_channel_search_continuation("UCXuqSBlHAE6Xw-yeJA0Tunw", "", 100)).to eq("4qmFsgJqEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaIEVnWnpaV0Z5WTJnd0FUZ0JZQUY2QkVkS2IxaTRBUUE9WgCaAilicm93c2UtZmVlZFVDWHVxU0JsSEFFNlh3LXllSkEwVHVud3NlYXJjaA%3D%3D") - - expect(produce_channel_search_continuation("UCXuqSBlHAE6Xw-yeJA0Tunw", "По ожиशुपतिरपि子而時ஸ்றீனி", 0)).to eq("4qmFsgKoARIYVUNYdXFTQmxIQUU2WHcteWVKQTBUdW53GiBFZ1p6WldGeVkyZ3dBVGdCWUFGNkJFZEJRVDI0QVFBPVo-0J_QviDQvtC20LjgpLbgpYHgpKrgpKTgpL_gpLDgpKrgpL_lrZDogIzmmYLgrrjgr43grrHgr4Dgrqngrr-aAilicm93c2UtZmVlZFVDWHVxU0JsSEFFNlh3LXllSkEwVHVud3NlYXJjaA%3D%3D") - end - end - - describe "#produce_channel_community_continuation" do - it "correctly produces a continuation token for a channel community" do - expect(produce_channel_community_continuation("UCCj956IF62FbT7Gouszaj9w", "Egljb21tdW5pdHm4")).to eq("4qmFsgIsEhhVQ0NqOTU2SUY2MkZiVDdHb3VzemFqOXcaEEVnbGpiMjF0ZFc1cGRIbTQ%3D") - expect(produce_channel_community_continuation("UCCj956IF62FbT7Gouszaj9w", "Egljb21tdW5pdHm4AQCqAyQaIBIaVWd3cE9NQmVwWEdjclhsUHg2WjRBYUFCQ1FIZGgDKAA%3D")).to eq("4qmFsgJmEhhVQ0NqOTU2SUY2MkZiVDdHb3VzemFqOXcaSkVnbGpiMjF0ZFc1cGRIbTRBUUNxQXlRYUlCSWFWV2QzY0U5TlFtVndXRWRqY2xoc1VIZzJXalJCWVVGQ1ExRklaR2dES0FBJTNE") - - expect(produce_channel_community_continuation("UC-lHJZR3Gqxm24_Vd_AJ5Yw", "Egljb21tdW5pdHm4AQCqAyQaIBIaVWd5RTI2NW1rUkk2cE9uS21nbDRBYUFCQ1FIZGgDKAA%3D")).to eq("4qmFsgJmEhhVQy1sSEpaUjNHcXhtMjRfVmRfQUo1WXcaSkVnbGpiMjF0ZFc1cGRIbTRBUUNxQXlRYUlCSWFWV2Q1UlRJMk5XMXJVa2syY0U5dVMyMW5iRFJCWVVGQ1ExRklaR2dES0FBJTNE") - expect(produce_channel_community_continuation("UC-lHJZR3Gqxm24_Vd_AJ5Yw", "Egljb21tdW5pdHm4AQCqA-cOCsAOUVVSVFNsOXBNWEYxYlVablFXaGFiWFJNTW5WM1ZHSXdPVU5EWTNoeFJWWlVjRWRGVTBOa1prTktjVUoyWjBZemNEZHRPV2cwV1hWbVJtaFVPWFJwVjJaUU4xTXlNRWRaYlZwSVFUa3dlak5pTUV0dll6QkRVMlpsWHpoVFdUbHFSR0o1YkRkM1kydEhMVTVwWDFCdFdXOUhjR0Z6ZEMxbldVcEhUMjkzUm1saGRXSkViVmR6ZFhwd1QxTnpOME54TW5KUloxQlBkME5QU1VWVWMybHlNbFZvUVV0NlVIZFVhMVV5UzNWUmJHRldkRmszU1dKd1pVUllVMkZFVG1aV1ZsRnVUMGhsZFd0T01sVndTbGd3TkhweVdDMVBTRUphV25GNk5Yb3dYMWRCVTFnMlltODBPRmhIV205WlQwNW1YMjV1UlVKTWNucHNNSGR5Y1hKaFltUkVkblJYZG1Kc1FVaHFUV3BwTkc5R1pUQkVlbGw2ZHpSM2FISlBTSFJoYjJGbVMwNTBiV1pxV2pCSVNWWnZTalpRT0RoclVGVmhia1p5VFhsaWFTMVBjREZZV1dSTFdERkZjSHB0ZUhseWFtRXdNR1JmTkhOWmFEVlZTbVZ1ZUVkRU1XRlFhbU4xVERabk4wdDVSSGxHU2xsT1VEQlJXR1ZLTUhGM1UwWkJTSE5oWkRWQ2NXZHNaMFpqYW1ST1YxZFlhMDVOVUZSSFZWVktRekZSYVhodlUxTm1SV1EwTUdsdWNEWXlPV1YwUjNkcGFVcEVTM040YUZadmRXbHJhblkyZFdFelNHWXpUV3hMYURCa2JIRTFSblJ4Wms4NU1XbGtOM0pHYjBGeU4xZFJNMU5qYkZCd05rZE9jV1JqT1hGRGIyNU5Xak5TUlhkemFsUXRObGt4UWxkUE16ZGFaRTlxVGtaZlIweEhRbXRNWXpCWE9GUjNOMHBsYVhwS2RtSlZkMmxGTVhCbVNIWkdkVTFJY0MxbFdYSkVZM0V0ZFROWWRtVlFlV3hhYlVKMmVreGZUMGxOU2xaSlRFTlBZMVpEUjFwd1RHZFhZMmhIYVVKakxUSmFabXd0U1RNeFJEWkhlSGhYTkhOMU1GZGhOMjFCVlVnNGNFTlJXSGx2WW5ScWNUaHZXWGxKT1d0TVRXc3lRMWc0Um5wU2JEVjBlRGxpTW5vMVRYaEtkelExY201S1JHSmZkamhmTlhOWmRGYzRjak5FVVdkMlpXVnNRWEJyZW5OdFpHcEljVGhWYzFsZkxWa3dRVTkyTVZVMmIyMTNVeTFLVEUxeFIwUldRbmc0VEdsTlpGVktjVmxzTkZGa1UwazFabE0wZUhsRk5WZ3lWR0ZaYzJadlYyaHRPRFpzTjNCT1dHRnBiMHhUVDBkMmRuZFVOMlptVm05dWIwRTFZVkZuYldKNmIwMUNaMng2VGkxSk56bHhXV3BJVGt4RFYwVllUM05pTVcwemRHc3lUVWN6TVVKcVRHdElNVWg1YmtKQmVrbFNVMnczZEVKUlJGOUlNVWRyZERsbFJraHVYekJXZUhGbE1rTTBlVE40YVU1T1pFcGpVMkpFZFMxWVdITjNTMnhWVjJwYVgzVXRXbGcwZG5OSE1qUXpYMlJHTVhSV1kxWkZRMlZwU25OdVlXTkdVek5wVUd4b2FUbDVSRVp4YVhsbFRqbG1aRWxYVFZCMVFWbG9OMEl3TW5KV1JUVjRkREJLZG5obmJGZHhSVlY1ZWpjMFIyeGlZemRIVmkxeFpESmlaMnhFZGxkcVRuSjZNVEZWUkRWamVIQlFkRk5DVmtSU2RITlRaSGhWZG05WE9VUkNhWEYwTm1kSFRtb3RNV1pNYlhSeVJWTnJhRWhIVDB0SU0yVkxUbFZ2V1VGNlJTMDJialJZYkRKdFFUVnJhRVJ4WmpjeFptcERNR001UmpkM2QwNW1VRXd5YUZCZlEwWjFSbEUzY0doRk5ISkZZMWxTTWs5d2RXRnhiRzFrYjBVMmIxWkJaRzkyU2xneFZWOXNiMDVWWkUxRFJ6QjBjWGhpVjBVMldYY3pTUzF4UVcxa1RuZEJRVGRvWVZFNGNsSTBaVUl0UmxacVdETnJXazVLY21aRk9HVndRbWxqUjB0blRFZEZVR3N6YzJOclkwSTNlVlZZVEdkcE1YQkdiMHAyZVU1aGRVZFdVblJQYVhaQlZtdHZSa0UzTFU1Sk1XaFJRMUpMV2kxSWJ6WkxjWEkxZGtSTWJsOVdUa0ZFVmpKZmMwUlFWV3gwUTJ0TFRsbDJaM2gxZFVOSVkzbEVORUpRZVUxMVREQnpOMVowWDI1MWRrVmlUMU54TkRkUk5rVjViMEpRTUZGNmR6RlJSR2RxY1U1eVgwNTBjMDkxWm14R2NUVjBlRkJGT1dGVmFXeFJTMEZYYldwQlVVbHNOVmgwZERZdGFFRlViMWxmUjFWc1EycG1WVkJQV0hkcFVRPT0aIBIaVWd5RTI2NW1rUkk2cE9uS21nbDRBYUFCQ1FIZGgDKGM%3D")).to eq("4qmFsgKXFBIYVUMtbEhKWlIzR3F4bTI0X1ZkX0FKNVl3GvoTRWdsamIyMXRkVzVwZEhtNEFRQ3FBLWNPQ3NBT1VWVlNWRk5zT1hCTldFWXhZbFZhYmxGWGFHRmlXRkpOVFc1V00xWkhTWGRQVlU1RVdUTm9lRkpXV2xWalJXUkdWVEJPYTFwclRrdGpWVW95V2pCWmVtTkVaSFJQVjJjd1YxaFdiVkp0YUZWUFdGSndWakphVVU0eFRYbE5SV1JhWWxad1NWRlVhM2RsYWs1cFRVVjBkbGw2UWtSVk1scHNXSHBvVkZkVWJIRlNSMG8xWWtSa00xa3lkRWhNVlRWd1dERkNkRmRYT1VoalIwWjZaRU14YmxkVmNFaFVNamt6VW0xc2FHUlhTa1ZpVm1SNlpGaHdkMVF4VG5wT01FNTRUVzVLVWxveFFsQmtNRTVRVTFWV1ZXTXliSGxOYkZadlVWVjBObFZJWkZWaE1WVjVVek5XVW1KSFJsZGtSbXN6VTFkS2QxcFZVbGxWTWtaRlZHMWFWMVpzUm5WVU1HaHNaRmQwVDAxc1ZuZFRiR2QzVGtod2VWZERNVkJUUlVwaFYyNUdOazVZYjNkWU1XUkNWVEZuTWxsdE9EQlBSbWhJVjIwNVdsUXdOVzFZTWpWMVVsVktUV051Y0hOTlNHUjVZMWhLYUZsdFVrVmtibEpZWkcxS2MxRlZhSEZVVjNCd1RrYzVSMXBVUWtWbGJHdzJaSHBTTTJGSVNsQlRTRkpvWWpKR2JWTXdOVEJpVjFweFYycENTVk5XV25aVGFscFJUMFJvY2xWR1ZtaGlhMXA1VkZoc2FXRlRNVkJqUkVaWlYxZFNURmRFUmtaalNIQjBaVWhzZVdGdFJYZE5SMUptVGtoT1dtRkVWbFpUYlZaMVpVVmtSVTFYUmxGaGJVNHhWRVJhYms0d2REVlNTR3hIVTJ4c1QxVkVRbEpYUjFaTFRVaEdNMVV3V2tKVFNFNW9Xa1JXUTJOWFpITmFNRnBxWVcxU1QxWXhaRmxoTURWT1ZVWlNTRlpXVmt0UmVrWlNZVmhvZGxVeFRtMVNWMUV3VFVkc2RXTkVXWGxQVjFZd1VqTmtjR0ZWY0VWVE0wNDBZVVphZG1SWGJISmhibGt5WkZkRmVsTkhXWHBVVjNoTVlVUkNhMkpJUlRGU2JsSjRXbXM0TlUxWGJHdE9NMHBIWWpCR2VVNHhaRkpOTVU1cVlrWkNkMDVyWkU5alYxSnFUMWhHUkdJeU5VNVhhazVUVWxoa2VtRnNVWFJPYkd0NFVXeGtVRTE2WkdGYVJUbHhWR3RhWmxJd2VFaFJiWFJOV1hwQ1dFOUdVak5PTUhCc1lWaHdTMlJ0U2xaa01teEdUVmhDYlZOSVdrZGtWVEZKWTBNeGJGZFlTa1ZaTTBWMFpGUk9XV1J0VmxGbFYzaGhZbFZLTW1WcmVHWlVNR3hPVTJ4YVNsUkZUbEJaTVZwRVVqRndkMVJIWkZoWk1taElZVlZLYWt4VVNtRmFiWGQwVTFSTmVGSkVXa2hsU0doWVRraE9NVTFHWkdoT01qRkNWbFZuTkdORlRsSlhTR3gyV1c1U2NXTlVhSFpYV0d4S1QxZDBUVlJYYzNsUk1XYzBVbTV3VTJKRVZqQmxSR3hwVFc1dk1WUllhRXRrZWxFeFkyMDFTMUpIU21aa2FtaG1UbGhPV21SR1l6UmphazVGVlZka01scFhWbk5SV0VKeVpXNU9kRnBIY0VsalZHaFdZekZzWmt4V2EzZFJWVGt5VFZaVk1tSXlNVE5WZVRGTFZFVXhlRkl3VWxkUmJtYzBWRWRzVGxwR1ZrdGpWbXh6VGtaR2ExVXdhekZhYkUwd1pVaHNSazVXWjNsV1IwWmFZekphZGxZeWFIUlBSRnB6VGpOQ1QxZEhSbkJpTUhoVVZEQmtNbVJ1WkZWT01scHRWbTA1ZFdJd1JURlpWa1p1WWxkS05tSXdNVU5hTW5nMlZHa3hTazU2YkhoWFYzQkpWR3Q0UkZZd1ZsbFVNMDVwVFZjd2VtUkhjM2xVVldONlRWVktjVlJIZEVsTlZXZzFZbXRLUW1WcmJGTlZNbmN6WkVWS1VsSkdPVWxOVldSeVpFUnNiRkpyYUhWWWVrSlhaVWhHYkUxclRUQmxWRTQwWVZVMVQxcEZjR3BWTWtwRlpGTXhXVmRJVGpOVE1uaFdWakp3WVZnelZYUlhiR2N3Wkc1T1NFMXFVWHBZTWxKSFRWaFNWMWt4V2taUk1sWndVMjVPZFZsWFRrZFZlazV3VlVkNGIyRlViRFZTUlZwNFlWaHNiRlJxYkcxYVJXeFlWRlpDTVZGV2JHOU9NRWwzVFc1S1YxSlVWalJrUkVKTFpHNW9ibUpHWkhoU1ZsWTFaV3BqTUZJeWVHbFplbVJJVm1reGVGcEVTbWxhTW5oRlpHeGtjVlJ1U2paTlZFWldVa1JXYW1WSVFsRmtSazVEVm10U1UyUklUbFJhU0doV1pHMDVXRTlWVWtOaFdFWXdUbTFrU0ZSdGIzUk5WMXBOWWxoU2VWSldUbkpoUldoSVZEQjBTVTB5Vmt4VWJGWjJWMVZHTmxKVE1ESmlhbEpaWWtSS2RGRlVWbkpoUlZKNFdtcGplRnB0Y0VSTlIwMDFVbXBrTTJRd05XMVZSWGQ1WVVaQ1psRXdXakZTYkVVelkwZG9SazVJU2taWk1XeFRUV3M1ZDJSWFJuaGlSekZyWWpCVk1tSXhXa0phUnpreVUyeG5lRlpXT1hOaU1EVldXa1V4UkZKNlFqQmpXR2hwVmpCVk1sZFlZM3BUVXpGNFVWY3hhMVJ1WkVKUlZHUnZXVlpGTkdOc1NUQmFWVWwwVW14YWNWZEVUbkpYYXpWTFkyMWFSazlIVm5kUmJXeHFVakIwYmxSRlpFWlZSM042WXpKT2Nsa3dTVE5sVmxaWlZFZGtjRTFZUWtkaU1IQXlaVlUxYUdSVlpGZFZibEpRWVZoYVFsWnRkSFpTYTBVelRGVTFTazFYYUZKUk1VcE1WMmt4U1dKNldreGpXRWt4Wkd0U1RXSnNPVmRVYTBaRlZtcEtabU13VWxGV1YzZ3dVVEowVEZSc2JESmFNMmd4WkZWT1NWa3piRVZPUlVwUlpWVXhNVlJFUW5wT01Wb3dXREkxTVdSclZtbFVNVTU0VGtSa1VrNXJWalZpTUVwUlRVWkdObVI2UmxKU1IyUnhZMVUxZVZnd05UQmpNRGt4V20xNFIyTlVWakJsUmtKR1QxZEdWbUZYZUZKVE1FWllZbGR3UWxWVmJITk9WbWd3WkVSWmRHRkZSbFZpTVd4bVVqRldjMUV5Y0cxV1ZrSlFWMGhrY0ZWUlBUMGFJQklhVldkNVJUSTJOVzFyVWtrMmNFOXVTMjFuYkRSQllVRkNRMUZJWkdnREtHTSUzRA%3D%3D") - end - end - - describe "#extract_channel_community_cursor" do - it "correctly extracts a community cursor from a given continuation" do - expect(extract_channel_community_cursor("4qmFsgIsEhhVQ0NqOTU2SUY2MkZiVDdHb3VzemFqOXcaEEVnbGpiMjF0ZFc1cGRIbTQ%3D")).to eq("Egljb21tdW5pdHk=") - expect(extract_channel_community_cursor("4qmFsgJoEhhVQ0NqOTU2SUY2MkZiVDdHb3VzemFqOXcaTEVnbGpiMjF0ZFc1cGRIbTRBUUNxQXlRYUlCSWFWV2QzY0U5TlFtVndXRWRqY2xoc1VIZzJXalJCWVVGQ1ExRklaR2dES0FBJTI1M0Q%3D")).to eq("Egljb21tdW5pdHm4AQCqAyQaIEhkaAMSGlVnd3BPTUJlcFhHY3JYbFB4Nlo0QWFBQkNRKAA=") - - expect(extract_channel_community_cursor("4qmFsgJoEhhVQy1sSEpaUjNHcXhtMjRfVmRfQUo1WXcaTEVnbGpiMjF0ZFc1cGRIbTRBUUNxQXlRYUlCSWFWV2Q1UlRJMk5XMXJVa2syY0U5dVMyMW5iRFJCWVVGQ1ExRklaR2dES0FBJTI1M0Q%3D")).to eq("Egljb21tdW5pdHm4AQCqAyQaIEhkaAMSGlVneUUyNjVta1JJNnBPbkttZ2w0QWFBQkNRKAA=") - expect(extract_channel_community_cursor("4qmFsgKZFBIYVUMtbEhKWlIzR3F4bTI0X1ZkX0FKNVl3GvwTRWdsamIyMXRkVzVwZEhtNEFRQ3FBLWNPQ3NBT1VWVlNWRk5zT1hCTldFWXhZbFZhYmxGWGFHRmlXRkpOVFc1V00xWkhTWGRQVlU1RVdUTm9lRkpXV2xWalJXUkdWVEJPYTFwclRrdGpWVW95V2pCWmVtTkVaSFJQVjJjd1YxaFdiVkp0YUZWUFdGSndWakphVVU0eFRYbE5SV1JhWWxad1NWRlVhM2RsYWs1cFRVVjBkbGw2UWtSVk1scHNXSHBvVkZkVWJIRlNSMG8xWWtSa00xa3lkRWhNVlRWd1dERkNkRmRYT1VoalIwWjZaRU14YmxkVmNFaFVNamt6VW0xc2FHUlhTa1ZpVm1SNlpGaHdkMVF4VG5wT01FNTRUVzVLVWxveFFsQmtNRTVRVTFWV1ZXTXliSGxOYkZadlVWVjBObFZJWkZWaE1WVjVVek5XVW1KSFJsZGtSbXN6VTFkS2QxcFZVbGxWTWtaRlZHMWFWMVpzUm5WVU1HaHNaRmQwVDAxc1ZuZFRiR2QzVGtod2VWZERNVkJUUlVwaFYyNUdOazVZYjNkWU1XUkNWVEZuTWxsdE9EQlBSbWhJVjIwNVdsUXdOVzFZTWpWMVVsVktUV051Y0hOTlNHUjVZMWhLYUZsdFVrVmtibEpZWkcxS2MxRlZhSEZVVjNCd1RrYzVSMXBVUWtWbGJHdzJaSHBTTTJGSVNsQlRTRkpvWWpKR2JWTXdOVEJpVjFweFYycENTVk5XV25aVGFscFJUMFJvY2xWR1ZtaGlhMXA1VkZoc2FXRlRNVkJqUkVaWlYxZFNURmRFUmtaalNIQjBaVWhzZVdGdFJYZE5SMUptVGtoT1dtRkVWbFpUYlZaMVpVVmtSVTFYUmxGaGJVNHhWRVJhYms0d2REVlNTR3hIVTJ4c1QxVkVRbEpYUjFaTFRVaEdNMVV3V2tKVFNFNW9Xa1JXUTJOWFpITmFNRnBxWVcxU1QxWXhaRmxoTURWT1ZVWlNTRlpXVmt0UmVrWlNZVmhvZGxVeFRtMVNWMUV3VFVkc2RXTkVXWGxQVjFZd1VqTmtjR0ZWY0VWVE0wNDBZVVphZG1SWGJISmhibGt5WkZkRmVsTkhXWHBVVjNoTVlVUkNhMkpJUlRGU2JsSjRXbXM0TlUxWGJHdE9NMHBIWWpCR2VVNHhaRkpOTVU1cVlrWkNkMDVyWkU5alYxSnFUMWhHUkdJeU5VNVhhazVUVWxoa2VtRnNVWFJPYkd0NFVXeGtVRTE2WkdGYVJUbHhWR3RhWmxJd2VFaFJiWFJOV1hwQ1dFOUdVak5PTUhCc1lWaHdTMlJ0U2xaa01teEdUVmhDYlZOSVdrZGtWVEZKWTBNeGJGZFlTa1ZaTTBWMFpGUk9XV1J0VmxGbFYzaGhZbFZLTW1WcmVHWlVNR3hPVTJ4YVNsUkZUbEJaTVZwRVVqRndkMVJIWkZoWk1taElZVlZLYWt4VVNtRmFiWGQwVTFSTmVGSkVXa2hsU0doWVRraE9NVTFHWkdoT01qRkNWbFZuTkdORlRsSlhTR3gyV1c1U2NXTlVhSFpYV0d4S1QxZDBUVlJYYzNsUk1XYzBVbTV3VTJKRVZqQmxSR3hwVFc1dk1WUllhRXRrZWxFeFkyMDFTMUpIU21aa2FtaG1UbGhPV21SR1l6UmphazVGVlZka01scFhWbk5SV0VKeVpXNU9kRnBIY0VsalZHaFdZekZzWmt4V2EzZFJWVGt5VFZaVk1tSXlNVE5WZVRGTFZFVXhlRkl3VWxkUmJtYzBWRWRzVGxwR1ZrdGpWbXh6VGtaR2ExVXdhekZhYkUwd1pVaHNSazVXWjNsV1IwWmFZekphZGxZeWFIUlBSRnB6VGpOQ1QxZEhSbkJpTUhoVVZEQmtNbVJ1WkZWT01scHRWbTA1ZFdJd1JURlpWa1p1WWxkS05tSXdNVU5hTW5nMlZHa3hTazU2YkhoWFYzQkpWR3Q0UkZZd1ZsbFVNMDVwVFZjd2VtUkhjM2xVVldONlRWVktjVlJIZEVsTlZXZzFZbXRLUW1WcmJGTlZNbmN6WkVWS1VsSkdPVWxOVldSeVpFUnNiRkpyYUhWWWVrSlhaVWhHYkUxclRUQmxWRTQwWVZVMVQxcEZjR3BWTWtwRlpGTXhXVmRJVGpOVE1uaFdWakp3WVZnelZYUlhiR2N3Wkc1T1NFMXFVWHBZTWxKSFRWaFNWMWt4V2taUk1sWndVMjVPZFZsWFRrZFZlazV3VlVkNGIyRlViRFZTUlZwNFlWaHNiRlJxYkcxYVJXeFlWRlpDTVZGV2JHOU9NRWwzVFc1S1YxSlVWalJrUkVKTFpHNW9ibUpHWkhoU1ZsWTFaV3BqTUZJeWVHbFplbVJJVm1reGVGcEVTbWxhTW5oRlpHeGtjVlJ1U2paTlZFWldVa1JXYW1WSVFsRmtSazVEVm10U1UyUklUbFJhU0doV1pHMDVXRTlWVWtOaFdFWXdUbTFrU0ZSdGIzUk5WMXBOWWxoU2VWSldUbkpoUldoSVZEQjBTVTB5Vmt4VWJGWjJWMVZHTmxKVE1ESmlhbEpaWWtSS2RGRlVWbkpoUlZKNFdtcGplRnB0Y0VSTlIwMDFVbXBrTTJRd05XMVZSWGQ1WVVaQ1psRXdXakZTYkVVelkwZG9SazVJU2taWk1XeFRUV3M1ZDJSWFJuaGlSekZyWWpCVk1tSXhXa0phUnpreVUyeG5lRlpXT1hOaU1EVldXa1V4UkZKNlFqQmpXR2hwVmpCVk1sZFlZM3BUVXpGNFVWY3hhMVJ1WkVKUlZHUnZXVlpGTkdOc1NUQmFWVWwwVW14YWNWZEVUbkpYYXpWTFkyMWFSazlIVm5kUmJXeHFVakIwYmxSRlpFWlZSM042WXpKT2Nsa3dTVE5sVmxaWlZFZGtjRTFZUWtkaU1IQXlaVlUxYUdSVlpGZFZibEpRWVZoYVFsWnRkSFpTYTBVelRGVTFTazFYYUZKUk1VcE1WMmt4U1dKNldreGpXRWt4Wkd0U1RXSnNPVmRVYTBaRlZtcEtabU13VWxGV1YzZ3dVVEowVEZSc2JESmFNMmd4WkZWT1NWa3piRVZPUlVwUlpWVXhNVlJFUW5wT01Wb3dXREkxTVdSclZtbFVNVTU0VGtSa1VrNXJWalZpTUVwUlRVWkdObVI2UmxKU1IyUnhZMVUxZVZnd05UQmpNRGt4V20xNFIyTlVWakJsUmtKR1QxZEdWbUZYZUZKVE1FWllZbGR3UWxWVmJITk9WbWd3WkVSWmRHRkZSbFZpTVd4bVVqRldjMUV5Y0cxV1ZrSlFWMGhrY0ZWUlBUMGFJQklhVldkNVJUSTJOVzFyVWtrMmNFOXVTMjFuYkRSQllVRkNRMUZJWkdnREtHTSUyNTNE")).to eq("Egljb21tdW5pdHm4AQCqA-kOCsAOUVVSVFNsOXBNWEYxYlVablFXaGFiWFJNTW5WM1ZHSXdPVU5EWTNoeFJWWlVjRWRGVTBOa1prTktjVUoyWjBZemNEZHRPV2cwV1hWbVJtaFVPWFJwVjJaUU4xTXlNRWRaYlZwSVFUa3dlak5pTUV0dll6QkRVMlpsWHpoVFdUbHFSR0o1YkRkM1kydEhMVTVwWDFCdFdXOUhjR0Z6ZEMxbldVcEhUMjkzUm1saGRXSkViVmR6ZFhwd1QxTnpOME54TW5KUloxQlBkME5QU1VWVWMybHlNbFZvUVV0NlVIZFVhMVV5UzNWUmJHRldkRmszU1dKd1pVUllVMkZFVG1aV1ZsRnVUMGhsZFd0T01sVndTbGd3TkhweVdDMVBTRUphV25GNk5Yb3dYMWRCVTFnMlltODBPRmhIV205WlQwNW1YMjV1UlVKTWNucHNNSGR5Y1hKaFltUkVkblJYZG1Kc1FVaHFUV3BwTkc5R1pUQkVlbGw2ZHpSM2FISlBTSFJoYjJGbVMwNTBiV1pxV2pCSVNWWnZTalpRT0RoclVGVmhia1p5VFhsaWFTMVBjREZZV1dSTFdERkZjSHB0ZUhseWFtRXdNR1JmTkhOWmFEVlZTbVZ1ZUVkRU1XRlFhbU4xVERabk4wdDVSSGxHU2xsT1VEQlJXR1ZLTUhGM1UwWkJTSE5oWkRWQ2NXZHNaMFpqYW1ST1YxZFlhMDVOVUZSSFZWVktRekZSYVhodlUxTm1SV1EwTUdsdWNEWXlPV1YwUjNkcGFVcEVTM040YUZadmRXbHJhblkyZFdFelNHWXpUV3hMYURCa2JIRTFSblJ4Wms4NU1XbGtOM0pHYjBGeU4xZFJNMU5qYkZCd05rZE9jV1JqT1hGRGIyNU5Xak5TUlhkemFsUXRObGt4UWxkUE16ZGFaRTlxVGtaZlIweEhRbXRNWXpCWE9GUjNOMHBsYVhwS2RtSlZkMmxGTVhCbVNIWkdkVTFJY0MxbFdYSkVZM0V0ZFROWWRtVlFlV3hhYlVKMmVreGZUMGxOU2xaSlRFTlBZMVpEUjFwd1RHZFhZMmhIYVVKakxUSmFabXd0U1RNeFJEWkhlSGhYTkhOMU1GZGhOMjFCVlVnNGNFTlJXSGx2WW5ScWNUaHZXWGxKT1d0TVRXc3lRMWc0Um5wU2JEVjBlRGxpTW5vMVRYaEtkelExY201S1JHSmZkamhmTlhOWmRGYzRjak5FVVdkMlpXVnNRWEJyZW5OdFpHcEljVGhWYzFsZkxWa3dRVTkyTVZVMmIyMTNVeTFLVEUxeFIwUldRbmc0VEdsTlpGVktjVmxzTkZGa1UwazFabE0wZUhsRk5WZ3lWR0ZaYzJadlYyaHRPRFpzTjNCT1dHRnBiMHhUVDBkMmRuZFVOMlptVm05dWIwRTFZVkZuYldKNmIwMUNaMng2VGkxSk56bHhXV3BJVGt4RFYwVllUM05pTVcwemRHc3lUVWN6TVVKcVRHdElNVWg1YmtKQmVrbFNVMnczZEVKUlJGOUlNVWRyZERsbFJraHVYekJXZUhGbE1rTTBlVE40YVU1T1pFcGpVMkpFZFMxWVdITjNTMnhWVjJwYVgzVXRXbGcwZG5OSE1qUXpYMlJHTVhSV1kxWkZRMlZwU25OdVlXTkdVek5wVUd4b2FUbDVSRVp4YVhsbFRqbG1aRWxYVFZCMVFWbG9OMEl3TW5KV1JUVjRkREJLZG5obmJGZHhSVlY1ZWpjMFIyeGlZemRIVmkxeFpESmlaMnhFZGxkcVRuSjZNVEZWUkRWamVIQlFkRk5DVmtSU2RITlRaSGhWZG05WE9VUkNhWEYwTm1kSFRtb3RNV1pNYlhSeVJWTnJhRWhIVDB0SU0yVkxUbFZ2V1VGNlJTMDJialJZYkRKdFFUVnJhRVJ4WmpjeFptcERNR001UmpkM2QwNW1VRXd5YUZCZlEwWjFSbEUzY0doRk5ISkZZMWxTTWs5d2RXRnhiRzFrYjBVMmIxWkJaRzkyU2xneFZWOXNiMDVWWkUxRFJ6QjBjWGhpVjBVMldYY3pTUzF4UVcxa1RuZEJRVGRvWVZFNGNsSTBaVUl0UmxacVdETnJXazVLY21aRk9HVndRbWxqUjB0blRFZEZVR3N6YzJOclkwSTNlVlZZVEdkcE1YQkdiMHAyZVU1aGRVZFdVblJQYVhaQlZtdHZSa0UzTFU1Sk1XaFJRMUpMV2kxSWJ6WkxjWEkxZGtSTWJsOVdUa0ZFVmpKZmMwUlFWV3gwUTJ0TFRsbDJaM2gxZFVOSVkzbEVORUpRZVUxMVREQnpOMVowWDI1MWRrVmlUMU54TkRkUk5rVjViMEpRTUZGNmR6RlJSR2RxY1U1eVgwNTBjMDkxWm14R2NUVjBlRkJGT1dGVmFXeFJTMEZYYldwQlVVbHNOVmgwZERZdGFFRlViMWxmUjFWc1EycG1WVkJQV0hkcFVRPT0aIhIcVWd5RTI2NW1rUkk2cE9uS21nbDRBYUFCQ1E9PUhkaAMoYw==") - end - end - - describe "#sign_token" do - it "correctly signs a given hash" do - token = { - "session" => "v1:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "expires" => 1554680038, - "scopes" => [ - ":notifications", - ":subscriptions/*", - "GET:tokens*", - ], - "signature" => "f__2hS20th8pALF305PJFK-D2aVtvefNnQheILHD2vU=", - } - expect(sign_token("SECRET_KEY", token)).to eq(token["signature"]) - - token = { - "session" => "v1:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", - "scopes" => [":notifications", "POST:subscriptions/*"], - "signature" => "fNvXoT0MRAL9eE6lTE33CEg8HitYJDOL9a22rSN2Ihg=", - } - expect(sign_token("SECRET_KEY", token)).to eq(token["signature"]) - end - end -end diff --git a/invidious/spec/invidious/search/iv_filters_spec.cr b/invidious/spec/invidious/search/iv_filters_spec.cr deleted file mode 100755 index b0897a6..0000000 --- a/invidious/spec/invidious/search/iv_filters_spec.cr +++ /dev/null @@ -1,371 +0,0 @@ -require "../../../src/invidious/search/filters" - -require "http/params" -require "spectator" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end - -FEATURES_TEXT = { - Invidious::Search::Filters::Features::Live => "live", - Invidious::Search::Filters::Features::FourK => "4k", - Invidious::Search::Filters::Features::HD => "hd", - Invidious::Search::Filters::Features::Subtitles => "subtitles", - Invidious::Search::Filters::Features::CCommons => "commons", - Invidious::Search::Filters::Features::ThreeSixty => "360", - Invidious::Search::Filters::Features::VR180 => "vr180", - Invidious::Search::Filters::Features::ThreeD => "3d", - Invidious::Search::Filters::Features::HDR => "hdr", - Invidious::Search::Filters::Features::Location => "location", - Invidious::Search::Filters::Features::Purchased => "purchased", -} - -Spectator.describe Invidious::Search::Filters do - # ------------------- - # Decode (legacy) - # ------------------- - - describe "#from_legacy_filters" do - it "Decodes channel: filter" do - query = "test channel:UC123456 request" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new) - expect(chan).to eq("UC123456") - expect(qury).to eq("test request") - expect(subs).to be_false - end - - it "Decodes user: filter" do - query = "user:LinusTechTips broke something (again)" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new) - expect(chan).to eq("LinusTechTips") - expect(qury).to eq("broke something (again)") - expect(subs).to be_false - end - - it "Decodes type: filter" do - Invidious::Search::Filters::Type.each do |value| - query = "Eiffel 65 - Blue [1 Hour] type:#{value}" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(type: value)) - expect(chan).to eq("") - expect(qury).to eq("Eiffel 65 - Blue [1 Hour]") - expect(subs).to be_false - end - end - - it "Decodes content_type: filter" do - Invidious::Search::Filters::Type.each do |value| - query = "I like to watch content_type:#{value}" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(type: value)) - expect(chan).to eq("") - expect(qury).to eq("I like to watch") - expect(subs).to be_false - end - end - - it "Decodes date: filter" do - Invidious::Search::Filters::Date.each do |value| - query = "This date:#{value} is old!" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(date: value)) - expect(chan).to eq("") - expect(qury).to eq("This is old!") - expect(subs).to be_false - end - end - - it "Decodes duration: filter" do - Invidious::Search::Filters::Duration.each do |value| - query = "This duration:#{value} is old!" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(duration: value)) - expect(chan).to eq("") - expect(qury).to eq("This is old!") - expect(subs).to be_false - end - end - - it "Decodes feature: filter" do - Invidious::Search::Filters::Features.each do |value| - string = FEATURES_TEXT[value] - query = "I like my precious feature:#{string} ^^" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(features: value)) - expect(chan).to eq("") - expect(qury).to eq("I like my precious ^^") - expect(subs).to be_false - end - end - - it "Decodes features: filter" do - query = "This search has many features:vr180,cc,hdr :o" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - features = Invidious::Search::Filters::Features.flags(HDR, VR180, CCommons) - - expect(fltr).to eq(described_class.new(features: features)) - expect(chan).to eq("") - expect(qury).to eq("This search has many :o") - expect(subs).to be_false - end - - it "Decodes sort: filter" do - Invidious::Search::Filters::Sort.each do |value| - query = "Computer? sort:#{value} my files!" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new(sort: value)) - expect(chan).to eq("") - expect(qury).to eq("Computer? my files!") - expect(subs).to be_false - end - end - - it "Decodes subscriptions: filter" do - query = "enable subscriptions:true" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new) - expect(chan).to eq("") - expect(qury).to eq("enable") - expect(subs).to be_true - end - - it "Ignores junk data" do - query = "duration:I sort:like type:cleaning features:stuff date:up!" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new) - expect(chan).to eq("") - expect(qury).to eq("") - expect(subs).to be_false - end - - it "Keeps unknown keys" do - query = "to:be or:not to:be" - - fltr, chan, qury, subs = described_class.from_legacy_filters(query) - - expect(fltr).to eq(described_class.new) - expect(chan).to eq("") - expect(qury).to eq("to:be or:not to:be") - expect(subs).to be_false - end - end - - # ------------------- - # Decode (URL) - # ------------------- - - describe "#from_iv_params" do - it "Decodes type= filter" do - Invidious::Search::Filters::Type.each do |value| - params = HTTP::Params.parse("type=#{value}") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(type: value)) - end - end - - it "Decodes date= filter" do - Invidious::Search::Filters::Date.each do |value| - params = HTTP::Params.parse("date=#{value}") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(date: value)) - end - end - - it "Decodes duration= filter" do - Invidious::Search::Filters::Duration.each do |value| - params = HTTP::Params.parse("duration=#{value}") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(duration: value)) - end - end - - it "Decodes features= filter (single)" do - Invidious::Search::Filters::Features.each do |value| - string = described_class.format_features(value) - params = HTTP::Params.parse("features=#{string}") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(features: value)) - end - end - - it "Decodes features= filter (multiple - comma separated)" do - features = Invidious::Search::Filters::Features.flags(HDR, VR180, CCommons) - params = HTTP::Params.parse("features=vr180%2Ccc%2Chdr") # %2C is a comma - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(features: features)) - end - - it "Decodes features= filter (multiple - URL parameters)" do - features = Invidious::Search::Filters::Features.flags(ThreeSixty, HD, FourK) - params = HTTP::Params.parse("features=4k&features=360&features=hd") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(features: features)) - end - - it "Decodes sort= filter" do - Invidious::Search::Filters::Sort.each do |value| - params = HTTP::Params.parse("sort=#{value}") - - expect(described_class.from_iv_params(params)) - .to eq(described_class.new(sort: value)) - end - end - - it "Ignores junk data" do - params = HTTP::Params.parse("foo=bar&sort=views&answer=42&type=channel") - - expect(described_class.from_iv_params(params)).to eq( - described_class.new( - sort: Invidious::Search::Filters::Sort::Views, - type: Invidious::Search::Filters::Type::Channel - ) - ) - end - end - - # ------------------- - # Encode (URL) - # ------------------- - - describe "#to_iv_params" do - it "Encodes date filter" do - Invidious::Search::Filters::Date.each do |value| - filters = described_class.new(date: value) - params = filters.to_iv_params - - if value.none? - expect("#{params}").to eq("") - else - expect("#{params}").to eq("date=#{value.to_s.underscore}") - end - end - end - - it "Encodes type filter" do - Invidious::Search::Filters::Type.each do |value| - filters = described_class.new(type: value) - params = filters.to_iv_params - - if value.all? - expect("#{params}").to eq("") - else - expect("#{params}").to eq("type=#{value.to_s.underscore}") - end - end - end - - it "Encodes duration filter" do - Invidious::Search::Filters::Duration.each do |value| - filters = described_class.new(duration: value) - params = filters.to_iv_params - - if value.none? - expect("#{params}").to eq("") - else - expect("#{params}").to eq("duration=#{value.to_s.underscore}") - end - end - end - - it "Encodes features filter (single)" do - Invidious::Search::Filters::Features.each do |value| - string = described_class.format_features(value) - filters = described_class.new(features: value) - - expect("#{filters.to_iv_params}") - .to eq("features=" + FEATURES_TEXT[value]) - end - end - - it "Encodes features filter (multiple)" do - features = Invidious::Search::Filters::Features.flags(Subtitles, Live, ThreeSixty) - filters = described_class.new(features: features) - - expect("#{filters.to_iv_params}") - .to eq("features=live%2Csubtitles%2C360") # %2C is a comma - end - - it "Encodes sort filter" do - Invidious::Search::Filters::Sort.each do |value| - filters = described_class.new(sort: value) - params = filters.to_iv_params - - if value.relevance? - expect("#{params}").to eq("") - else - expect("#{params}").to eq("sort=#{value.to_s.underscore}") - end - end - end - - it "Encodes multiple filters" do - filters = described_class.new( - date: Invidious::Search::Filters::Date::Today, - duration: Invidious::Search::Filters::Duration::Medium, - features: Invidious::Search::Filters::Features.flags(Location, Purchased), - sort: Invidious::Search::Filters::Sort::Relevance - ) - - params = filters.to_iv_params - - # Check the `date` param - expect(params).to have_key("date") - expect(params.fetch_all("date")).to contain_exactly("today") - - # Check the `type` param - expect(params).to_not have_key("type") - expect(params["type"]?).to be_nil - - # Check the `duration` param - expect(params).to have_key("duration") - expect(params.fetch_all("duration")).to contain_exactly("medium") - - # Check the `features` param - expect(params).to have_key("features") - expect(params.fetch_all("features")).to contain_exactly("location,purchased") - - # Check the `sort` param - expect(params).to_not have_key("sort") - expect(params["sort"]?).to be_nil - - # Check if there aren't other parameters - params.delete("date") - params.delete("duration") - params.delete("features") - - expect(params).to be_empty - end - end -end diff --git a/invidious/spec/invidious/search/query_spec.cr b/invidious/spec/invidious/search/query_spec.cr deleted file mode 100755 index 063b69f..0000000 --- a/invidious/spec/invidious/search/query_spec.cr +++ /dev/null @@ -1,242 +0,0 @@ -require "../../../src/invidious/search/filters" -require "../../../src/invidious/search/query" - -require "http/params" -require "spectator" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end - -Spectator.describe Invidious::Search::Query do - describe Type::Regular do - # ------------------- - # Query parsing - # ------------------- - - it "parses query with URL prameters (q)" do - query = described_class.new( - HTTP::Params.parse("q=What+is+Love+10+hour&type=video&duration=long"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Regular) - expect(query.channel).to be_empty - expect(query.text).to eq("What is Love 10 hour") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - type: Invidious::Search::Filters::Type::Video, - duration: Invidious::Search::Filters::Duration::Long - ) - ) - end - - it "parses query with URL prameters (search_query)" do - query = described_class.new( - HTTP::Params.parse("search_query=What+is+Love+10+hour&type=video&duration=long"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Regular) - expect(query.channel).to be_empty - expect(query.text).to eq("What is Love 10 hour") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - type: Invidious::Search::Filters::Type::Video, - duration: Invidious::Search::Filters::Duration::Long - ) - ) - end - - it "parses query with legacy filters (q)" do - query = described_class.new( - HTTP::Params.parse("q=Nyan+cat+duration:long"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Regular) - expect(query.channel).to be_empty - expect(query.text).to eq("Nyan cat") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - duration: Invidious::Search::Filters::Duration::Long - ) - ) - end - - it "parses query with legacy filters (search_query)" do - query = described_class.new( - HTTP::Params.parse("search_query=Nyan+cat+duration:long"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Regular) - expect(query.channel).to be_empty - expect(query.text).to eq("Nyan cat") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - duration: Invidious::Search::Filters::Duration::Long - ) - ) - end - - it "parses query with both URL params and legacy filters" do - query = described_class.new( - HTTP::Params.parse("q=Vamos+a+la+playa+duration:long&type=Video&date=year"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Regular) - expect(query.channel).to be_empty - expect(query.text).to eq("Vamos a la playa duration:long") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - type: Invidious::Search::Filters::Type::Video, - date: Invidious::Search::Filters::Date::Year - ) - ) - end - - # ------------------- - # Type switching - # ------------------- - - it "switches to channel search (URL param)" do - query = described_class.new( - HTTP::Params.parse("q=thunderbolt+4&channel=UC0vBXGSyV14uvJ4hECDOl0Q"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Channel) - expect(query.channel).to eq("UC0vBXGSyV14uvJ4hECDOl0Q") - expect(query.text).to eq("thunderbolt 4") - expect(query.filters.default?).to be_true - end - - it "switches to channel search (legacy)" do - query = described_class.new( - HTTP::Params.parse("q=channel%3AUCRPdsCVuH53rcbTcEkuY4uQ+rdna3"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Channel) - expect(query.channel).to eq("UCRPdsCVuH53rcbTcEkuY4uQ") - expect(query.text).to eq("rdna3") - expect(query.filters.default?).to be_true - end - - it "switches to subscriptions search" do - query = described_class.new( - HTTP::Params.parse("q=subscriptions:true+tunak+tunak+tun"), - Invidious::Search::Query::Type::Regular, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Subscriptions) - expect(query.channel).to be_empty - expect(query.text).to eq("tunak tunak tun") - expect(query.filters.default?).to be_true - end - end - - describe Type::Channel do - it "ignores extra parameters" do - query = described_class.new( - HTTP::Params.parse("q=Take+on+me+channel%3AUC12345679&type=video&date=year"), - Invidious::Search::Query::Type::Channel, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Channel) - expect(query.channel).to be_empty - expect(query.text).to eq("Take on me") - expect(query.filters.default?).to be_true - end - end - - describe Type::Subscriptions do - it "works" do - query = described_class.new( - HTTP::Params.parse("q=Harlem+shake&type=video&date=year"), - Invidious::Search::Query::Type::Subscriptions, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Subscriptions) - expect(query.channel).to be_empty - expect(query.text).to eq("Harlem shake") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - type: Invidious::Search::Filters::Type::Video, - date: Invidious::Search::Filters::Date::Year - ) - ) - end - end - - describe Type::Playlist do - it "ignores extra parameters" do - query = described_class.new( - HTTP::Params.parse("q=Harlem+shake+type:video+date:year&channel=UC12345679"), - Invidious::Search::Query::Type::Playlist, nil - ) - - expect(query.type).to eq(Invidious::Search::Query::Type::Playlist) - expect(query.channel).to be_empty - expect(query.text).to eq("Harlem shake") - - expect(query.filters).to eq( - Invidious::Search::Filters.new( - type: Invidious::Search::Filters::Type::Video, - date: Invidious::Search::Filters::Date::Year - ) - ) - end - end - - describe "#to_http_params" do - it "formats regular search" do - query = described_class.new( - HTTP::Params.parse("q=The+Simpsons+hiding+in+bush&duration=short"), - Invidious::Search::Query::Type::Regular, nil - ) - - params = query.to_http_params - - expect(params).to have_key("duration") - expect(params["duration"]?).to eq("short") - - expect(params).to have_key("q") - expect(params["q"]?).to eq("The Simpsons hiding in bush") - - # Check if there aren't other parameters - params.delete("duration") - params.delete("q") - expect(params).to be_empty - end - - it "formats channel search" do - query = described_class.new( - HTTP::Params.parse("q=channel:UC2DjFE7Xf11URZqWBigcVOQ%20multimeter"), - Invidious::Search::Query::Type::Regular, nil - ) - - params = query.to_http_params - - expect(params).to have_key("channel") - expect(params["channel"]?).to eq("UC2DjFE7Xf11URZqWBigcVOQ") - - expect(params).to have_key("q") - expect(params["q"]?).to eq("multimeter") - - # Check if there aren't other parameters - params.delete("channel") - params.delete("q") - expect(params).to be_empty - end - end -end diff --git a/invidious/spec/invidious/search/yt_filters_spec.cr b/invidious/spec/invidious/search/yt_filters_spec.cr deleted file mode 100755 index 8abed5c..0000000 --- a/invidious/spec/invidious/search/yt_filters_spec.cr +++ /dev/null @@ -1,143 +0,0 @@ -require "../../../src/invidious/search/filters" - -require "http/params" -require "spectator" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end - -# Encoded filter values are extracted from the search -# page of Youtube with any browser devtools HTML inspector. - -DATE_FILTERS = { - Invidious::Search::Filters::Date::Hour => "EgIIAfABAQ%3D%3D", - Invidious::Search::Filters::Date::Today => "EgIIAvABAQ%3D%3D", - Invidious::Search::Filters::Date::Week => "EgIIA_ABAQ%3D%3D", - Invidious::Search::Filters::Date::Month => "EgIIBPABAQ%3D%3D", - Invidious::Search::Filters::Date::Year => "EgIIBfABAQ%3D%3D", -} - -TYPE_FILTERS = { - Invidious::Search::Filters::Type::Video => "EgIQAfABAQ%3D%3D", - Invidious::Search::Filters::Type::Channel => "EgIQAvABAQ%3D%3D", - Invidious::Search::Filters::Type::Playlist => "EgIQA_ABAQ%3D%3D", - Invidious::Search::Filters::Type::Movie => "EgIQBPABAQ%3D%3D", -} - -DURATION_FILTERS = { - Invidious::Search::Filters::Duration::Short => "EgIYAfABAQ%3D%3D", - Invidious::Search::Filters::Duration::Medium => "EgIYA_ABAQ%3D%3D", - Invidious::Search::Filters::Duration::Long => "EgIYAvABAQ%3D%3D", -} - -FEATURE_FILTERS = { - Invidious::Search::Filters::Features::Live => "EgJAAfABAQ%3D%3D", - Invidious::Search::Filters::Features::FourK => "EgJwAfABAQ%3D%3D", - Invidious::Search::Filters::Features::HD => "EgIgAfABAQ%3D%3D", - Invidious::Search::Filters::Features::Subtitles => "EgIoAfABAQ%3D%3D", - Invidious::Search::Filters::Features::CCommons => "EgIwAfABAQ%3D%3D", - Invidious::Search::Filters::Features::ThreeSixty => "EgJ4AfABAQ%3D%3D", - Invidious::Search::Filters::Features::VR180 => "EgPQAQHwAQE%3D", - Invidious::Search::Filters::Features::ThreeD => "EgI4AfABAQ%3D%3D", - Invidious::Search::Filters::Features::HDR => "EgPIAQHwAQE%3D", - Invidious::Search::Filters::Features::Location => "EgO4AQHwAQE%3D", - Invidious::Search::Filters::Features::Purchased => "EgJIAfABAQ%3D%3D", -} - -SORT_FILTERS = { - Invidious::Search::Filters::Sort::Relevance => "8AEB", - Invidious::Search::Filters::Sort::Date => "CALwAQE%3D", - Invidious::Search::Filters::Sort::Views => "CAPwAQE%3D", - Invidious::Search::Filters::Sort::Rating => "CAHwAQE%3D", -} - -Spectator.describe Invidious::Search::Filters do - # ------------------- - # Encode YT params - # ------------------- - - describe "#to_yt_params" do - sample DATE_FILTERS do |value, result| - it "Encodes upload date filter '#{value}'" do - expect(described_class.new(date: value).to_yt_params).to eq(result) - end - end - - sample TYPE_FILTERS do |value, result| - it "Encodes content type filter '#{value}'" do - expect(described_class.new(type: value).to_yt_params).to eq(result) - end - end - - sample DURATION_FILTERS do |value, result| - it "Encodes duration filter '#{value}'" do - expect(described_class.new(duration: value).to_yt_params).to eq(result) - end - end - - sample FEATURE_FILTERS do |value, result| - it "Encodes feature filter '#{value}'" do - expect(described_class.new(features: value).to_yt_params).to eq(result) - end - end - - sample SORT_FILTERS do |value, result| - it "Encodes sort filter '#{value}'" do - expect(described_class.new(sort: value).to_yt_params).to eq(result) - end - end - end - - # ------------------- - # Decode YT params - # ------------------- - - describe "#from_yt_params" do - sample DATE_FILTERS do |value, encoded| - it "Decodes upload date filter '#{value}'" do - params = HTTP::Params.parse("sp=#{encoded}") - - expect(described_class.from_yt_params(params)) - .to eq(described_class.new(date: value)) - end - end - - sample TYPE_FILTERS do |value, encoded| - it "Decodes content type filter '#{value}'" do - params = HTTP::Params.parse("sp=#{encoded}") - - expect(described_class.from_yt_params(params)) - .to eq(described_class.new(type: value)) - end - end - - sample DURATION_FILTERS do |value, encoded| - it "Decodes duration filter '#{value}'" do - params = HTTP::Params.parse("sp=#{encoded}") - - expect(described_class.from_yt_params(params)) - .to eq(described_class.new(duration: value)) - end - end - - sample FEATURE_FILTERS do |value, encoded| - it "Decodes feature filter '#{value}'" do - params = HTTP::Params.parse("sp=#{encoded}") - - expect(described_class.from_yt_params(params)) - .to eq(described_class.new(features: value)) - end - end - - sample SORT_FILTERS do |value, encoded| - it "Decodes sort filter '#{value}'" do - params = HTTP::Params.parse("sp=#{encoded}") - - expect(described_class.from_yt_params(params)) - .to eq(described_class.new(sort: value)) - end - end - end -end diff --git a/invidious/spec/invidious/user/imports_spec.cr b/invidious/spec/invidious/user/imports_spec.cr deleted file mode 100755 index 762ce0d..0000000 --- a/invidious/spec/invidious/user/imports_spec.cr +++ /dev/null @@ -1,51 +0,0 @@ -require "spectator" -require "../../../src/invidious/user/imports" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end - -def csv_sample - return <<-CSV - Kanal-ID,Kanal-URL,Kanaltitel - UC0hHW5Y08ggq-9kbrGgWj0A,http://www.youtube.com/channel/UC0hHW5Y08ggq-9kbrGgWj0A,Matias Marolla - UC0vBXGSyV14uvJ4hECDOl0Q,http://www.youtube.com/channel/UC0vBXGSyV14uvJ4hECDOl0Q,Techquickie - UC1sELGmy5jp5fQUugmuYlXQ,http://www.youtube.com/channel/UC1sELGmy5jp5fQUugmuYlXQ,Minecraft - UC9kFnwdCRrX7oTjqKd6-tiQ,http://www.youtube.com/channel/UC9kFnwdCRrX7oTjqKd6-tiQ,LUMOX - Topic - UCBa659QWEk1AI4Tg--mrJ2A,http://www.youtube.com/channel/UCBa659QWEk1AI4Tg--mrJ2A,Tom Scott - UCGu6_XQ64rXPR6nuitMQE_A,http://www.youtube.com/channel/UCGu6_XQ64rXPR6nuitMQE_A,Callcenter Fun - UCGwu0nbY2wSkW8N-cghnLpA,http://www.youtube.com/channel/UCGwu0nbY2wSkW8N-cghnLpA,Jaiden Animations - UCQ0OvZ54pCFZwsKxbltg_tg,http://www.youtube.com/channel/UCQ0OvZ54pCFZwsKxbltg_tg,Methos - UCRE6itj4Jte4manQEu3Y7OA,http://www.youtube.com/channel/UCRE6itj4Jte4manQEu3Y7OA,Chipflake - UCRLc6zsv_d0OEBO8OOkz-DA,http://www.youtube.com/channel/UCRLc6zsv_d0OEBO8OOkz-DA,Kegy - UCSl5Uxu2LyaoAoMMGp6oTJA,http://www.youtube.com/channel/UCSl5Uxu2LyaoAoMMGp6oTJA,Atomic Shrimp - UCXuqSBlHAE6Xw-yeJA0Tunw,http://www.youtube.com/channel/UCXuqSBlHAE6Xw-yeJA0Tunw,Linus Tech Tips - UCZ5XnGb-3t7jCkXdawN2tkA,http://www.youtube.com/channel/UCZ5XnGb-3t7jCkXdawN2tkA,Discord - CSV -end - -Spectator.describe Invidious::User::Import do - it "imports CSV" do - subscriptions = Invidious::User::Import.parse_subscription_export_csv(csv_sample) - - expect(subscriptions).to be_an(Array(String)) - expect(subscriptions.size).to eq(13) - - expect(subscriptions).to contain_exactly( - "UC0hHW5Y08ggq-9kbrGgWj0A", - "UC0vBXGSyV14uvJ4hECDOl0Q", - "UC1sELGmy5jp5fQUugmuYlXQ", - "UC9kFnwdCRrX7oTjqKd6-tiQ", - "UCBa659QWEk1AI4Tg--mrJ2A", - "UCGu6_XQ64rXPR6nuitMQE_A", - "UCGwu0nbY2wSkW8N-cghnLpA", - "UCQ0OvZ54pCFZwsKxbltg_tg", - "UCRE6itj4Jte4manQEu3Y7OA", - "UCRLc6zsv_d0OEBO8OOkz-DA", - "UCSl5Uxu2LyaoAoMMGp6oTJA", - "UCXuqSBlHAE6Xw-yeJA0Tunw", - "UCZ5XnGb-3t7jCkXdawN2tkA", - ).in_order - end -end diff --git a/invidious/spec/invidious/utils_spec.cr b/invidious/spec/invidious/utils_spec.cr deleted file mode 100755 index 7c2c271..0000000 --- a/invidious/spec/invidious/utils_spec.cr +++ /dev/null @@ -1,46 +0,0 @@ -require "../spec_helper" - -Spectator.describe "Utils" do - describe "decode_date" do - it "parses short dates (en-US)" do - expect(decode_date("1s ago")).to be_close(Time.utc - 1.second, 500.milliseconds) - expect(decode_date("2min ago")).to be_close(Time.utc - 2.minutes, 500.milliseconds) - expect(decode_date("3h ago")).to be_close(Time.utc - 3.hours, 500.milliseconds) - expect(decode_date("4d ago")).to be_close(Time.utc - 4.days, 500.milliseconds) - expect(decode_date("5w ago")).to be_close(Time.utc - 5.weeks, 500.milliseconds) - expect(decode_date("6mo ago")).to be_close(Time.utc - 6.months, 500.milliseconds) - expect(decode_date("7y ago")).to be_close(Time.utc - 7.years, 500.milliseconds) - end - - it "parses short dates (en-GB)" do - expect(decode_date("55s ago")).to be_close(Time.utc - 55.seconds, 500.milliseconds) - expect(decode_date("44min ago")).to be_close(Time.utc - 44.minutes, 500.milliseconds) - expect(decode_date("22hr ago")).to be_close(Time.utc - 22.hours, 500.milliseconds) - expect(decode_date("1day ago")).to be_close(Time.utc - 1.day, 500.milliseconds) - expect(decode_date("2days ago")).to be_close(Time.utc - 2.days, 500.milliseconds) - expect(decode_date("3wk ago")).to be_close(Time.utc - 3.weeks, 500.milliseconds) - expect(decode_date("11mo ago")).to be_close(Time.utc - 11.months, 500.milliseconds) - expect(decode_date("11yr ago")).to be_close(Time.utc - 11.years, 500.milliseconds) - end - - it "parses long forms (singular)" do - expect(decode_date("1 second ago")).to be_close(Time.utc - 1.second, 500.milliseconds) - expect(decode_date("1 minute ago")).to be_close(Time.utc - 1.minute, 500.milliseconds) - expect(decode_date("1 hour ago")).to be_close(Time.utc - 1.hour, 500.milliseconds) - expect(decode_date("1 day ago")).to be_close(Time.utc - 1.day, 500.milliseconds) - expect(decode_date("1 week ago")).to be_close(Time.utc - 1.week, 500.milliseconds) - expect(decode_date("1 month ago")).to be_close(Time.utc - 1.month, 500.milliseconds) - expect(decode_date("1 year ago")).to be_close(Time.utc - 1.year, 500.milliseconds) - end - - it "parses long forms (plural)" do - expect(decode_date("5 seconds ago")).to be_close(Time.utc - 5.seconds, 500.milliseconds) - expect(decode_date("17 minutes ago")).to be_close(Time.utc - 17.minutes, 500.milliseconds) - expect(decode_date("23 hours ago")).to be_close(Time.utc - 23.hours, 500.milliseconds) - expect(decode_date("3 days ago")).to be_close(Time.utc - 3.days, 500.milliseconds) - expect(decode_date("2 weeks ago")).to be_close(Time.utc - 2.weeks, 500.milliseconds) - expect(decode_date("9 months ago")).to be_close(Time.utc - 9.months, 500.milliseconds) - expect(decode_date("8 years ago")).to be_close(Time.utc - 8.years, 500.milliseconds) - end - end -end diff --git a/invidious/spec/invidious/videos/regular_videos_extract_spec.cr b/invidious/spec/invidious/videos/regular_videos_extract_spec.cr deleted file mode 100755 index a6a3e60..0000000 --- a/invidious/spec/invidious/videos/regular_videos_extract_spec.cr +++ /dev/null @@ -1,166 +0,0 @@ -require "../../parsers_helper.cr" - -Spectator.describe "parse_video_info" do - it "parses a regular video" do - # Enable mock - _player = load_mock("video/regular_mrbeast.player") - _next = load_mock("video/regular_mrbeast.next") - - raw_data = _player.merge!(_next) - info = parse_video_info("2isYuQZMbdU", raw_data) - - # Some basic verifications - expect(typeof(info)).to eq(Hash(String, JSON::Any)) - - expect(info["videoType"].as_s).to eq("Video") - - # Basic video infos - - expect(info["title"].as_s).to eq("I Gave My 100,000,000th Subscriber An Island") - expect(info["views"].as_i).to eq(126_573_823) - expect(info["likes"].as_i).to eq(5_157_654) - - # For some reason the video length from VideoDetails and the - # one from microformat differs by 1s... - expect(info["lengthSeconds"].as_i).to be_between(930_i64, 931_i64) - - expect(info["published"].as_s).to eq("2022-08-04T00:00:00Z") - - # Extra video infos - - expect(info["allowedRegions"].as_a).to_not be_empty - expect(info["allowedRegions"].as_a.size).to eq(249) - - expect(info["allowedRegions"].as_a).to contain( - "AD", "BA", "BB", "BW", "BY", "EG", "GG", "HN", "NP", "NR", "TR", - "TT", "TV", "TW", "TZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", - "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW" - ) - - expect(info["keywords"].as_a).to be_empty - - expect(info["allowRatings"].as_bool).to be_true - expect(info["isFamilyFriendly"].as_bool).to be_true - expect(info["isListed"].as_bool).to be_true - expect(info["isUpcoming"].as_bool).to be_false - - # Related videos - - expect(info["relatedVideos"].as_a.size).to eq(20) - - expect(info["relatedVideos"][0]["id"]).to eq("Hwybp38GnZw") - expect(info["relatedVideos"][0]["title"]).to eq("I Built Willy Wonka's Chocolate Factory!") - expect(info["relatedVideos"][0]["author"]).to eq("MrBeast") - expect(info["relatedVideos"][0]["ucid"]).to eq("UCX6OQ3DkcsbYNE6H8uQQuVA") - expect(info["relatedVideos"][0]["view_count"]).to eq("179877630") - expect(info["relatedVideos"][0]["short_view_count"]).to eq("179M") - expect(info["relatedVideos"][0]["author_verified"]).to eq("true") - - # Description - - description = "🚀Launch a store on Shopify, I’ll buy from 100 random stores that do ▸ " - - expect(info["description"].as_s).to start_with(description) - expect(info["shortDescription"].as_s).to start_with(description) - expect(info["descriptionHtml"].as_s).to start_with(description) - - # Video metadata - - expect(info["genre"].as_s).to eq("Entertainment") - expect(info["genreUcid"].as_s).to be_empty - expect(info["license"].as_s).to be_empty - - # Author infos - - expect(info["author"].as_s).to eq("MrBeast") - expect(info["ucid"].as_s).to eq("UCX6OQ3DkcsbYNE6H8uQQuVA") - - expect(info["authorThumbnail"].as_s).to eq( - "https://yt3.ggpht.com/ytc/AL5GRJVuqw82ERvHzsmBxL7avr1dpBtsVIXcEzBPZaloFg=s48-c-k-c0x00ffffff-no-rj" - ) - - expect(info["authorVerified"].as_bool).to be_true - expect(info["subCountText"].as_s).to eq("143M") - end - - it "parses a regular video with no descrition/comments" do - # Enable mock - _player = load_mock("video/regular_no-description.player") - _next = load_mock("video/regular_no-description.next") - - raw_data = _player.merge!(_next) - info = parse_video_info("iuevw6218F0", raw_data) - - # Some basic verifications - expect(typeof(info)).to eq(Hash(String, JSON::Any)) - - expect(info["videoType"].as_s).to eq("Video") - - # Basic video infos - - expect(info["title"].as_s).to eq("Chris Rea - Auberge") - expect(info["views"].as_i).to eq(10_943_126) - expect(info["likes"].as_i).to eq(0) - expect(info["lengthSeconds"].as_i).to eq(283_i64) - expect(info["published"].as_s).to eq("2012-05-21T00:00:00Z") - - # Extra video infos - - expect(info["allowedRegions"].as_a).to_not be_empty - expect(info["allowedRegions"].as_a.size).to eq(249) - - expect(info["allowedRegions"].as_a).to contain( - "AD", "BA", "BB", "BW", "BY", "EG", "GG", "HN", "NP", "NR", "TR", - "TT", "TV", "TW", "TZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", - "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW" - ) - - expect(info["keywords"].as_a).to_not be_empty - expect(info["keywords"].as_a.size).to eq(4) - - expect(info["keywords"].as_a).to contain_exactly( - "Chris", - "Rea", - "Auberge", - "1991" - ).in_any_order - - expect(info["allowRatings"].as_bool).to be_true - expect(info["isFamilyFriendly"].as_bool).to be_true - expect(info["isListed"].as_bool).to be_true - expect(info["isUpcoming"].as_bool).to be_false - - # Related videos - - expect(info["relatedVideos"].as_a.size).to eq(19) - - expect(info["relatedVideos"][0]["id"]).to eq("Ww3KeZ2_Yv4") - expect(info["relatedVideos"][0]["title"]).to eq("Chris Rea") - expect(info["relatedVideos"][0]["author"]).to eq("PanMusic") - expect(info["relatedVideos"][0]["ucid"]).to eq("UCsKAPSuh1iNbLWUga_igPyA") - expect(info["relatedVideos"][0]["view_count"]).to eq("31581") - expect(info["relatedVideos"][0]["short_view_count"]).to eq("31K") - expect(info["relatedVideos"][0]["author_verified"]).to eq("false") - - # Description - - expect(info["description"].as_s).to eq(" ") - expect(info["shortDescription"].as_s).to be_empty - expect(info["descriptionHtml"].as_s).to eq("") - - # Video metadata - - expect(info["genre"].as_s).to eq("Music") - expect(info["genreUcid"].as_s).to be_empty - expect(info["license"].as_s).to be_empty - - # Author infos - - expect(info["author"].as_s).to eq("ChrisReaOfficial") - expect(info["ucid"].as_s).to eq("UC_5q6nWPbD30-y6oiWF_oNA") - - expect(info["authorThumbnail"].as_s).to be_empty - expect(info["authorVerified"].as_bool).to be_false - expect(info["subCountText"].as_s).to eq("-") - end -end diff --git a/invidious/spec/invidious/videos/scheduled_live_extract_spec.cr b/invidious/spec/invidious/videos/scheduled_live_extract_spec.cr deleted file mode 100755 index 25e08c5..0000000 --- a/invidious/spec/invidious/videos/scheduled_live_extract_spec.cr +++ /dev/null @@ -1,111 +0,0 @@ -require "../../parsers_helper.cr" - -Spectator.describe "parse_video_info" do - it "parses scheduled livestreams data" do - # Enable mock - _player = load_mock("video/scheduled_live_PBD-Podcast.player") - _next = load_mock("video/scheduled_live_PBD-Podcast.next") - - raw_data = _player.merge!(_next) - info = parse_video_info("N-yVic7BbY0", raw_data) - - # Some basic verifications - expect(typeof(info)).to eq(Hash(String, JSON::Any)) - - expect(info["videoType"].as_s).to eq("Scheduled") - - # Basic video infos - - expect(info["title"].as_s).to eq("Home Team | PBD Podcast | Ep. 241") - expect(info["views"].as_i).to eq(6) - expect(info["likes"].as_i).to eq(7) - expect(info["lengthSeconds"].as_i).to eq(0_i64) - expect(info["published"].as_s).to eq("2023-02-28T14:00:00Z") # Unix 1677592800 - - # Extra video infos - - expect(info["allowedRegions"].as_a).to_not be_empty - expect(info["allowedRegions"].as_a.size).to eq(249) - - expect(info["allowedRegions"].as_a).to contain( - "AD", "AR", "BA", "BT", "CZ", "FO", "GL", "IO", "KE", "KH", "LS", - "LT", "MP", "NO", "PR", "RO", "SE", "SK", "SS", "SX", "SZ", "ZW" - ) - - expect(info["keywords"].as_a).to_not be_empty - expect(info["keywords"].as_a.size).to eq(25) - - expect(info["keywords"].as_a).to contain_exactly( - "Patrick Bet-David", - "Valeutainment", - "The BetDavid Podcast", - "The BetDavid Show", - "Betdavid", - "PBD", - "BetDavid show", - "Betdavid podcast", - "podcast betdavid", - "podcast patrick", - "patrick bet david podcast", - "Valuetainment podcast", - "Entrepreneurs", - "Entrepreneurship", - "Entrepreneur Motivation", - "Entrepreneur Advice", - "Startup Entrepreneurs", - "valuetainment", - "patrick bet david", - "PBD podcast", - "Betdavid show", - "Betdavid Podcast", - "Podcast Betdavid", - "Show Betdavid", - "PBDPodcast" - ).in_any_order - - expect(info["allowRatings"].as_bool).to be_true - expect(info["isFamilyFriendly"].as_bool).to be_true - expect(info["isListed"].as_bool).to be_true - expect(info["isUpcoming"].as_bool).to be_true - - # Related videos - - expect(info["relatedVideos"].as_a.size).to eq(20) - - expect(info["relatedVideos"][0]["id"]).to eq("j7jPzzjbVuk") - expect(info["relatedVideos"][0]["author"]).to eq("Democracy Now!") - expect(info["relatedVideos"][0]["ucid"]).to eq("UCzuqE7-t13O4NIDYJfakrhw") - expect(info["relatedVideos"][0]["view_count"]).to eq("7576") - expect(info["relatedVideos"][0]["short_view_count"]).to eq("7.5K") - expect(info["relatedVideos"][0]["author_verified"]).to eq("true") - - # Description - - description_start_text = "PBD Podcast Episode 241. The home team is ready and at it again with the latest news, interesting topics and trending conversations on topics that matter. Try our sponsor Aura for 14 days free - https://aura.com/pbd" - - expect(info["description"].as_s).to start_with(description_start_text) - expect(info["shortDescription"].as_s).to start_with(description_start_text) - - # TODO: Update mocks right before the start of PDB podcast, either on friday or saturday (time unknown) - # expect(info["descriptionHtml"].as_s).to start_with( - # "PBD Podcast Episode 241. The home team is ready and at it again with the latest news, interesting topics and trending conversations on topics that matter. Try our sponsor Aura for 14 days free - aura.com/pbd" - # ) - - # Video metadata - - expect(info["genre"].as_s).to eq("Entertainment") - expect(info["genreUcid"].as_s).to be_empty - expect(info["license"].as_s).to be_empty - - # Author infos - - expect(info["author"].as_s).to eq("PBD Podcast") - expect(info["ucid"].as_s).to eq("UCGX7nGXpz-CmO_Arg-cgJ7A") - - expect(info["authorThumbnail"].as_s).to eq( - "https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj" - ) - expect(info["authorVerified"].as_bool).to be_false - expect(info["subCountText"].as_s).to eq("594K") - end -end diff --git a/invidious/spec/parsers_helper.cr b/invidious/spec/parsers_helper.cr deleted file mode 100755 index 6589aca..0000000 --- a/invidious/spec/parsers_helper.cr +++ /dev/null @@ -1,35 +0,0 @@ -require "db" -require "json" -require "kemal" - -require "protodec/utils" - -require "spectator" - -require "../src/invidious/exceptions" -require "../src/invidious/helpers/macros" -require "../src/invidious/helpers/logger" -require "../src/invidious/helpers/utils" - -require "../src/invidious/videos" -require "../src/invidious/videos/*" -require "../src/invidious/comments/content" - -require "../src/invidious/helpers/serialized_yt_data" -require "../src/invidious/yt_backend/extractors" -require "../src/invidious/yt_backend/extractors_utils" - -OUTPUT = File.open(File::NULL, "w") -LOGGER = Invidious::LogHandler.new(OUTPUT, LogLevel::Off) - -def load_mock(file) : Hash(String, JSON::Any) - file = File.join(__DIR__, "..", "mocks", file + ".json") - content = File.read(file) - - return JSON.parse(content).as_h -end - -Spectator.configure do |config| - config.fail_blank - config.randomize -end diff --git a/invidious/spec/spec_helper.cr b/invidious/spec/spec_helper.cr deleted file mode 100755 index b3060ac..0000000 --- a/invidious/spec/spec_helper.cr +++ /dev/null @@ -1,18 +0,0 @@ -require "kemal" -require "openssl/hmac" -require "pg" -require "protodec/utils" -require "yaml" -require "../src/invidious/helpers/*" -require "../src/invidious/channels/*" -require "../src/invidious/videos/caption" -require "../src/invidious/videos" -require "../src/invidious/playlists" -require "../src/invidious/search/ctoken" -require "../src/invidious/trending" -require "spectator" - -Spectator.configure do |config| - config.fail_blank - config.randomize -end diff --git a/invidious/src/ext/kemal_content_for.cr b/invidious/src/ext/kemal_content_for.cr deleted file mode 100755 index a4f3fd9..0000000 --- a/invidious/src/ext/kemal_content_for.cr +++ /dev/null @@ -1,16 +0,0 @@ -# Overrides for Kemal's `content_for` macro in order to keep using -# kilt as it was before Kemal v1.1.1 (Kemal PR #618). - -require "kemal" -require "kilt" - -macro content_for(key, file = __FILE__) - %proc = ->() { - __kilt_io__ = IO::Memory.new - {{ yield }} - __kilt_io__.to_s - } - - CONTENT_FOR_BLOCKS[{{key}}] = Tuple.new {{file}}, %proc - nil -end diff --git a/invidious/src/ext/kemal_static_file_handler.cr b/invidious/src/ext/kemal_static_file_handler.cr deleted file mode 100755 index eb068ae..0000000 --- a/invidious/src/ext/kemal_static_file_handler.cr +++ /dev/null @@ -1,195 +0,0 @@ -# Since systems have a limit on number of open files (`ulimit -a`), -# we serve them from memory to avoid 'Too many open files' without needing -# to modify ulimit. -# -# Very heavily re-used: -# https://github.com/kemalcr/kemal/blob/master/src/kemal/helpers/helpers.cr -# https://github.com/kemalcr/kemal/blob/master/src/kemal/static_file_handler.cr -# -# Changes: -# - A `send_file` overload is added which supports sending a Slice, file_path, filestat -# - `StaticFileHandler` is patched to cache to and serve from @cached_files - -private def multipart(file, env : HTTP::Server::Context) - # See http://httpwg.org/specs/rfc7233.html - fileb = file.size - startb = endb = 0 - - if match = env.request.headers["Range"].match /bytes=(\d{1,})-(\d{0,})/ - startb = match[1].to_i { 0 } if match.size >= 2 - endb = match[2].to_i { 0 } if match.size >= 3 - end - - endb = fileb - 1 if endb == 0 - - if startb < endb < fileb - content_length = 1 + endb - startb - env.response.status_code = 206 - env.response.content_length = content_length - env.response.headers["Accept-Ranges"] = "bytes" - env.response.headers["Content-Range"] = "bytes #{startb}-#{endb}/#{fileb}" # MUST - - if startb > 1024 - skipped = 0 - # file.skip only accepts values less or equal to 1024 (buffer size, undocumented) - until (increase_skipped = skipped + 1024) > startb - file.skip(1024) - skipped = increase_skipped - end - if (skipped_minus_startb = skipped - startb) > 0 - file.skip skipped_minus_startb - end - else - file.skip(startb) - end - - IO.copy(file, env.response, content_length) - else - env.response.content_length = fileb - env.response.status_code = 200 # Range not satisfable, see 4.4 Note - IO.copy(file, env.response) - end -end - -# Set the Content-Disposition to "attachment" with the specified filename, -# instructing the user agents to prompt to save. -private def attachment(env : HTTP::Server::Context, filename : String? = nil, disposition : String? = nil) - disposition = "attachment" if disposition.nil? && filename - if disposition && filename - env.response.headers["Content-Disposition"] = "#{disposition}; filename=\"#{File.basename(filename)}\"" - end -end - -def send_file(env : HTTP::Server::Context, file_path : String, data : Slice(UInt8), filestat : File::Info, filename : String? = nil, disposition : String? = nil) - config = Kemal.config.serve_static - mime_type = MIME.from_filename(file_path, "application/octet-stream") - env.response.content_type = mime_type - env.response.headers["Accept-Ranges"] = "bytes" - env.response.headers["X-Content-Type-Options"] = "nosniff" - minsize = 860 # http://webmasters.stackexchange.com/questions/31750/what-is-recommended-minimum-object-size-for-gzip-performance-benefits ?? - request_headers = env.request.headers - filesize = data.bytesize - attachment(env, filename, disposition) - - Kemal.config.static_headers.try(&.call(env.response, file_path, filestat)) - - file = IO::Memory.new(data) - if env.request.method == "GET" && env.request.headers.has_key?("Range") - return multipart(file, env) - end - - condition = config.is_a?(Hash) && config["gzip"]? == true && filesize > minsize && Kemal::Utils.zip_types(file_path) - if condition && request_headers.includes_word?("Accept-Encoding", "gzip") - env.response.headers["Content-Encoding"] = "gzip" - Compress::Gzip::Writer.open(env.response) do |deflate| - IO.copy(file, deflate) - end - elsif condition && request_headers.includes_word?("Accept-Encoding", "deflate") - env.response.headers["Content-Encoding"] = "deflate" - Compress::Deflate::Writer.open(env.response) do |deflate| - IO.copy(file, deflate) - end - else - env.response.content_length = filesize - IO.copy(file, env.response) - end - - return -end - -module Kemal - class StaticFileHandler < HTTP::StaticFileHandler - CACHE_LIMIT = 5_000_000 # 5MB - @cached_files = {} of String => {data: Bytes, filestat: File::Info} - - def call(context : HTTP::Server::Context) - return call_next(context) if context.request.path.not_nil! == "/" - - case context.request.method - when "GET", "HEAD" - else - if @fallthrough - call_next(context) - else - context.response.status = HTTP::Status::METHOD_NOT_ALLOWED - context.response.headers.add("Allow", "GET, HEAD") - end - return - end - - config = Kemal.config.serve_static - original_path = context.request.path.not_nil! - request_path = URI.decode_www_form(original_path) - - # File path cannot contains '\0' (NUL) because all filesystem I know - # don't accept '\0' character as file name. - if request_path.includes? '\0' - context.response.status = HTTP::Status::BAD_REQUEST - return - end - - expanded_path = File.expand_path(request_path, "/") - is_dir_path = if original_path.ends_with?('/') && !expanded_path.ends_with? '/' - expanded_path = expanded_path + '/' - true - else - expanded_path.ends_with? '/' - end - - file_path = File.join(@public_dir, expanded_path) - - if file = @cached_files[file_path]? - last_modified = file[:filestat].modification_time - add_cache_headers(context.response.headers, last_modified) - - if cache_request?(context, last_modified) - context.response.status = HTTP::Status::NOT_MODIFIED - return - end - - send_file(context, file_path, file[:data], file[:filestat]) - else - file_info = File.info?(file_path) - is_dir = file_info.try &.directory? || false - is_file = file_info.try &.file? || false - - if request_path != expanded_path - redirect_to context, expanded_path - elsif is_dir && !is_dir_path - redirect_to context, expanded_path + '/' - end - - return call_next(context) if file_info.nil? - - if is_dir - if config.is_a?(Hash) && config["dir_listing"] == true - context.response.content_type = "text/html" - directory_listing(context.response, request_path, file_path) - else - call_next(context) - end - elsif is_file - last_modified = file_info.modification_time - add_cache_headers(context.response.headers, last_modified) - - if cache_request?(context, last_modified) - context.response.status = HTTP::Status::NOT_MODIFIED - return - end - - if @cached_files.sum(&.[1][:data].bytesize) + (size = File.size(file_path)) < CACHE_LIMIT - data = Bytes.new(size) - File.open(file_path, &.read(data)) - - @cached_files[file_path] = {data: data, filestat: file_info} - send_file(context, file_path, data, file_info) - else - send_file(context, file_path) - end - else # Not a normal file (FIFO/device/socket) - call_next(context) - end - end - end - end -end diff --git a/invidious/src/invidious.cr b/invidious/src/invidious.cr deleted file mode 100755 index e0bd010..0000000 --- a/invidious/src/invidious.cr +++ /dev/null @@ -1,238 +0,0 @@ -# "Invidious" (which is an alternative front-end to YouTube) -# Copyright (C) 2019 Omar Roth -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -require "digest/md5" -require "file_utils" - -# Require kemal, kilt, then our own overrides -require "kemal" -require "kilt" -require "./ext/kemal_content_for.cr" -require "./ext/kemal_static_file_handler.cr" - -require "athena-negotiation" -require "openssl/hmac" -require "option_parser" -require "sqlite3" -require "xml" -require "yaml" -require "compress/zip" -require "protodec/utils" - -require "./invidious/database/*" -require "./invidious/database/migrations/*" -require "./invidious/http_server/*" -require "./invidious/helpers/*" -require "./invidious/yt_backend/*" -require "./invidious/frontend/*" -require "./invidious/videos/*" - -require "./invidious/jsonify/**" - -require "./invidious/*" -require "./invidious/comments/*" -require "./invidious/channels/*" -require "./invidious/user/*" -require "./invidious/search/*" -require "./invidious/routes/**" -require "./invidious/jobs/**" - -# Declare the base namespace for invidious -module Invidious -end - -# Simple alias to make code easier to read -alias IV = Invidious - -CONFIG = Config.load -HMAC_KEY = CONFIG.hmac_key - -PG_DB = DB.open CONFIG.database_url -ARCHIVE_URL = URI.parse("https://archive.org") -PUBSUB_URL = URI.parse("https://pubsubhubbub.appspot.com") -REDDIT_URL = URI.parse("https://www.reddit.com") -YT_URL = URI.parse("https://www.youtube.com") -HOST_URL = make_host_url(Kemal.config) - -CHARS_SAFE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" -TEST_IDS = {"AgbeGFYluEA", "BaW_jenozKc", "a9LDPn-MO4I", "ddFvjfvPnqk", "iqKdEhx-dD4"} -MAX_ITEMS_PER_PAGE = 1500 - -REQUEST_HEADERS_WHITELIST = {"accept", "accept-encoding", "cache-control", "content-length", "if-none-match", "range"} -RESPONSE_HEADERS_BLACKLIST = {"access-control-allow-origin", "alt-svc", "server"} -HTTP_CHUNK_SIZE = 10485760 # ~10MB - -CURRENT_BRANCH = {{ "#{`git branch | sed -n '/* /s///p'`.strip}" }} -CURRENT_COMMIT = {{ "#{`git rev-list HEAD --max-count=1 --abbrev-commit`.strip}" }} -CURRENT_VERSION = {{ "#{`git log -1 --format=%ci | awk '{print $1}' | sed s/-/./g`.strip}" }} - -# This is used to determine the `?v=` on the end of file URLs (for cache busting). We -# only need to expire modified assets, so we can use this to find the last commit that changes -# any assets -ASSET_COMMIT = {{ "#{`git rev-list HEAD --max-count=1 --abbrev-commit -- assets`.strip}" }} - -SOFTWARE = { - "name" => "invidious", - "version" => "#{CURRENT_VERSION}-#{CURRENT_COMMIT}", - "branch" => "#{CURRENT_BRANCH}", -} - -YT_POOL = YoutubeConnectionPool.new(YT_URL, capacity: CONFIG.pool_size) - -# CLI -Kemal.config.extra_options do |parser| - parser.banner = "Usage: invidious [arguments]" - parser.on("-c THREADS", "--channel-threads=THREADS", "Number of threads for refreshing channels (default: #{CONFIG.channel_threads})") do |number| - begin - CONFIG.channel_threads = number.to_i - rescue ex - puts "THREADS must be integer" - exit - end - end - parser.on("-f THREADS", "--feed-threads=THREADS", "Number of threads for refreshing feeds (default: #{CONFIG.feed_threads})") do |number| - begin - CONFIG.feed_threads = number.to_i - rescue ex - puts "THREADS must be integer" - exit - end - end - parser.on("-o OUTPUT", "--output=OUTPUT", "Redirect output (default: #{CONFIG.output})") do |output| - CONFIG.output = output - end - parser.on("-l LEVEL", "--log-level=LEVEL", "Log level, one of #{LogLevel.values} (default: #{CONFIG.log_level})") do |log_level| - CONFIG.log_level = LogLevel.parse(log_level) - end - parser.on("-v", "--version", "Print version") do - puts SOFTWARE.to_pretty_json - exit - end - parser.on("--migrate", "Run any migrations (beta, use at your own risk!!") do - Invidious::Database::Migrator.new(PG_DB).migrate - exit - end -end - -Kemal::CLI.new ARGV - -if CONFIG.output.upcase != "STDOUT" - FileUtils.mkdir_p(File.dirname(CONFIG.output)) -end -OUTPUT = CONFIG.output.upcase == "STDOUT" ? STDOUT : File.open(CONFIG.output, mode: "a") -LOGGER = Invidious::LogHandler.new(OUTPUT, CONFIG.log_level) - -# Check table integrity -Invidious::Database.check_integrity(CONFIG) - -{% if !flag?(:skip_videojs_download) %} - # Resolve player dependencies. This is done at compile time. - # - # Running the script by itself would show some colorful feedback while this doesn't. - # Perhaps we should just move the script to runtime in order to get that feedback? - - {% puts "\nChecking player dependencies, this may take more than 20 minutes... If it is stuck, check your internet connection.\n" %} - {% if flag?(:minified_player_dependencies) %} - {% puts run("../scripts/fetch-player-dependencies.cr", "--minified").stringify %} - {% else %} - {% puts run("../scripts/fetch-player-dependencies.cr").stringify %} - {% end %} - {% puts "\nDone checking player dependencies, now compiling Invidious...\n" %} -{% end %} - -# Start jobs - -if CONFIG.channel_threads > 0 - Invidious::Jobs.register Invidious::Jobs::RefreshChannelsJob.new(PG_DB) -end - -if CONFIG.feed_threads > 0 - Invidious::Jobs.register Invidious::Jobs::RefreshFeedsJob.new(PG_DB) -end - -DECRYPT_FUNCTION = DecryptFunction.new(CONFIG.decrypt_polling) -if CONFIG.decrypt_polling - Invidious::Jobs.register Invidious::Jobs::UpdateDecryptFunctionJob.new -end - -if CONFIG.statistics_enabled - Invidious::Jobs.register Invidious::Jobs::StatisticsRefreshJob.new(PG_DB, SOFTWARE) -end - -if (CONFIG.use_pubsub_feeds.is_a?(Bool) && CONFIG.use_pubsub_feeds.as(Bool)) || (CONFIG.use_pubsub_feeds.is_a?(Int32) && CONFIG.use_pubsub_feeds.as(Int32) > 0) - Invidious::Jobs.register Invidious::Jobs::SubscribeToFeedsJob.new(PG_DB, HMAC_KEY) -end - -if CONFIG.popular_enabled - Invidious::Jobs.register Invidious::Jobs::PullPopularVideosJob.new(PG_DB) -end - -CONNECTION_CHANNEL = ::Channel({Bool, ::Channel(PQ::Notification)}).new(32) -Invidious::Jobs.register Invidious::Jobs::NotificationJob.new(CONNECTION_CHANNEL, CONFIG.database_url) - -Invidious::Jobs.register Invidious::Jobs::ClearExpiredItemsJob.new - -Invidious::Jobs.start_all - -def popular_videos - Invidious::Jobs::PullPopularVideosJob::POPULAR_VIDEOS.get -end - -# Routing - -before_all do |env| - Invidious::Routes::BeforeAll.handle(env) -end - -Invidious::Routing.register_all - -error 404 do |env| - Invidious::Routes::ErrorRoutes.error_404(env) -end - -error 500 do |env, ex| - error_template(500, ex) -end - -static_headers do |response| - response.headers.add("Cache-Control", "max-age=2629800") -end - -# Init Kemal - -public_folder "assets" - -Kemal.config.powered_by_header = false -add_handler FilteredCompressHandler.new -add_handler APIHandler.new -add_handler AuthHandler.new -add_handler DenyFrame.new -add_context_storage_type(Array(String)) -add_context_storage_type(Preferences) -add_context_storage_type(Invidious::User) - -Kemal.config.logger = LOGGER -Kemal.config.host_binding = Kemal.config.host_binding != "0.0.0.0" ? Kemal.config.host_binding : CONFIG.host_binding -Kemal.config.port = Kemal.config.port != 3000 ? Kemal.config.port : CONFIG.port -Kemal.config.app_name = "Invidious" - -# Use in kemal's production mode. -# Users can also set the KEMAL_ENV environmental variable for this to be set automatically. -{% if flag?(:release) || flag?(:production) %} - Kemal.config.env = "production" if !ENV.has_key?("KEMAL_ENV") -{% end %} - -Kemal.run diff --git a/invidious/src/invidious/channels/about.cr b/invidious/src/invidious/channels/about.cr deleted file mode 100755 index 8b60a72..0000000 --- a/invidious/src/invidious/channels/about.cr +++ /dev/null @@ -1,173 +0,0 @@ -# TODO: Refactor into either SearchChannel or InvidiousChannel -record AboutChannel, - ucid : String, - author : String, - auto_generated : Bool, - author_url : String, - author_thumbnail : String, - banner : String?, - description : String, - description_html : String, - total_views : Int64, - sub_count : Int32, - joined : Time, - is_family_friendly : Bool, - allowed_regions : Array(String), - tabs : Array(String), - verified : Bool - -def get_about_info(ucid, locale) : AboutChannel - begin - # Fetch channel information from channel home page - initdata = YoutubeAPI.browse(browse_id: ucid, params: "") - rescue - raise InfoException.new("Could not get channel info.") - end - - if initdata.dig?("alerts", 0, "alertRenderer", "type") == "ERROR" - error_message = initdata["alerts"][0]["alertRenderer"]["text"]["simpleText"].as_s - if error_message == "This channel does not exist." - raise NotFoundException.new(error_message) - else - raise InfoException.new(error_message) - end - end - - if browse_endpoint = initdata["onResponseReceivedActions"]?.try &.[0]?.try &.["navigateAction"]?.try &.["endpoint"]?.try &.["browseEndpoint"]? - raise ChannelRedirect.new(channel_id: browse_endpoint["browseId"].to_s) - end - - auto_generated = false - # Check for special auto generated gaming channels - if !initdata.has_key?("metadata") - auto_generated = true - end - - if auto_generated - author = initdata["header"]["interactiveTabbedHeaderRenderer"]["title"]["simpleText"].as_s - author_url = initdata["microformat"]["microformatDataRenderer"]["urlCanonical"].as_s - author_thumbnail = initdata["header"]["interactiveTabbedHeaderRenderer"]["boxArt"]["thumbnails"][0]["url"].as_s - - # Raises a KeyError on failure. - banners = initdata["header"]["interactiveTabbedHeaderRenderer"]?.try &.["banner"]?.try &.["thumbnails"]? - banner = banners.try &.[-1]?.try &.["url"].as_s? - - description_node = initdata["header"]["interactiveTabbedHeaderRenderer"]["description"] - else - author = initdata["metadata"]["channelMetadataRenderer"]["title"].as_s - author_url = initdata["metadata"]["channelMetadataRenderer"]["channelUrl"].as_s - author_thumbnail = initdata["metadata"]["channelMetadataRenderer"]["avatar"]["thumbnails"][0]["url"].as_s - author_verified = has_verified_badge?(initdata.dig?("header", "c4TabbedHeaderRenderer", "badges")) - - ucid = initdata["metadata"]["channelMetadataRenderer"]["externalId"].as_s - - # Raises a KeyError on failure. - banners = initdata["header"]["c4TabbedHeaderRenderer"]?.try &.["banner"]?.try &.["thumbnails"]? - banner = banners.try &.[-1]?.try &.["url"].as_s? - - # if banner.includes? "channels/c4/default_banner" - # banner = nil - # end - - description_node = initdata["metadata"]["channelMetadataRenderer"]?.try &.["description"]? - end - - is_family_friendly = initdata["microformat"]["microformatDataRenderer"]["familySafe"].as_bool - - allowed_regions = initdata - .dig?("microformat", "microformatDataRenderer", "availableCountries") - .try &.as_a.map(&.as_s) || [] of String - - description = !description_node.nil? ? description_node.as_s : "" - description_html = HTML.escape(description) - - if !description_node.nil? - if description_node.as_h?.nil? - description_node = text_to_parsed_content(description_node.as_s) - end - description_html = parse_content(description_node) - if description_html == "" && description != "" - description_html = HTML.escape(description) - end - end - - total_views = 0_i64 - joined = Time.unix(0) - - tab_names = [] of String - - if tabs_json = initdata["contents"]["twoColumnBrowseResultsRenderer"]["tabs"]? - # Get the name of the tabs available on this channel - tab_names = tabs_json.as_a.compact_map do |entry| - name = entry.dig?("tabRenderer", "title").try &.as_s.downcase - - # This is a small fix to not add extra code on the HTML side - # I.e, the URL for the "live" tab is .../streams, so use "streams" - # everywhere for the sake of simplicity - (name == "live") ? "streams" : name - end - - # Get the currently active tab ("About") - about_tab = extract_selected_tab(tabs_json) - - # Try to find the about metadata section - channel_about_meta = about_tab.dig?( - "content", - "sectionListRenderer", "contents", 0, - "itemSectionRenderer", "contents", 0, - "channelAboutFullMetadataRenderer" - ) - - if !channel_about_meta.nil? - total_views = channel_about_meta.dig?("viewCountText", "simpleText").try &.as_s.gsub(/\D/, "").to_i64? || 0_i64 - - # The joined text is split to several sub strings. The reduce joins those strings before parsing the date. - joined = extract_text(channel_about_meta["joinedDateText"]?) - .try { |text| Time.parse(text, "Joined %b %-d, %Y", Time::Location.local) } || Time.unix(0) - - # Normal Auto-generated channels - # https://support.google.com/youtube/answer/2579942 - # For auto-generated channels, channel_about_meta only has - # ["description"]["simpleText"] and ["primaryLinks"][0]["title"]["simpleText"] - auto_generated = ( - (channel_about_meta["primaryLinks"]?.try &.size) == 1 && \ - extract_text(channel_about_meta.dig?("primaryLinks", 0, "title")) == "Auto-generated by YouTube" - ) - end - end - - sub_count = initdata - .dig?("header", "c4TabbedHeaderRenderer", "subscriberCountText", "simpleText").try &.as_s? - .try { |text| short_text_to_number(text.split(" ")[0]).to_i32 } || 0 - - AboutChannel.new( - ucid: ucid, - author: author, - auto_generated: auto_generated, - author_url: author_url, - author_thumbnail: author_thumbnail, - banner: banner, - description: description, - description_html: description_html, - total_views: total_views, - sub_count: sub_count, - joined: joined, - is_family_friendly: is_family_friendly, - allowed_regions: allowed_regions, - tabs: tab_names, - verified: author_verified || false, - ) -end - -def fetch_related_channels(about_channel : AboutChannel, continuation : String? = nil) : {Array(SearchChannel), String?} - if continuation.nil? - # params is {"2:string":"channels"} encoded - initial_data = YoutubeAPI.browse(browse_id: about_channel.ucid, params: "EghjaGFubmVscw%3D%3D") - else - initial_data = YoutubeAPI.browse(continuation) - end - - items, continuation = extract_items(initial_data) - - return items.select(SearchChannel), continuation -end diff --git a/invidious/src/invidious/channels/channels.cr b/invidious/src/invidious/channels/channels.cr deleted file mode 100755 index be73967..0000000 --- a/invidious/src/invidious/channels/channels.cr +++ /dev/null @@ -1,304 +0,0 @@ -struct InvidiousChannel - include DB::Serializable - - property id : String - property author : String - property updated : Time - property deleted : Bool - property subscribed : Time? -end - -struct ChannelVideo - include DB::Serializable - - property id : String - property title : String - property published : Time - property updated : Time - property ucid : String - property author : String - property length_seconds : Int32 = 0 - property live_now : Bool = false - property premiere_timestamp : Time? = nil - property views : Int64? = nil - - def to_json(locale, json : JSON::Builder) - json.object do - json.field "type", "shortVideo" - - json.field "title", self.title - json.field "videoId", self.id - json.field "videoThumbnails" do - Invidious::JSONify::APIv1.thumbnails(json, self.id) - end - - json.field "lengthSeconds", self.length_seconds - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - json.field "published", self.published.to_unix - json.field "publishedText", translate(locale, "`x` ago", recode_date(self.published, locale)) - - json.field "viewCount", self.views - end - end - - def to_json(locale, _json : Nil = nil) - JSON.build do |json| - to_json(locale, json) - end - end - - def to_xml(locale, query_params, xml : XML::Builder) - query_params["v"] = self.id - - xml.element("entry") do - xml.element("id") { xml.text "yt:video:#{self.id}" } - xml.element("yt:videoId") { xml.text self.id } - xml.element("yt:channelId") { xml.text self.ucid } - xml.element("title") { xml.text self.title } - xml.element("link", rel: "alternate", href: "#{HOST_URL}/watch?#{query_params}") - - xml.element("author") do - xml.element("name") { xml.text self.author } - xml.element("uri") { xml.text "#{HOST_URL}/channel/#{self.ucid}" } - end - - xml.element("content", type: "xhtml") do - xml.element("div", xmlns: "http://www.w3.org/1999/xhtml") do - xml.element("a", href: "#{HOST_URL}/watch?#{query_params}") do - xml.element("img", src: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg") - end - end - end - - xml.element("published") { xml.text self.published.to_s("%Y-%m-%dT%H:%M:%S%:z") } - xml.element("updated") { xml.text self.updated.to_s("%Y-%m-%dT%H:%M:%S%:z") } - - xml.element("media:group") do - xml.element("media:title") { xml.text self.title } - xml.element("media:thumbnail", url: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg", - width: "320", height: "180") - end - end - end - - def to_xml(locale, _xml : Nil = nil) - XML.build do |xml| - to_xml(locale, xml) - end - end - - def to_tuple - {% begin %} - { - {{@type.instance_vars.map(&.name).splat}} - } - {% end %} - end -end - -class ChannelRedirect < Exception - property channel_id : String - - def initialize(@channel_id) - end -end - -def get_batch_channels(channels) - finished_channel = Channel(String | Nil).new - max_threads = 10 - - spawn do - active_threads = 0 - active_channel = Channel(Nil).new - - channels.each do |ucid| - if active_threads >= max_threads - active_channel.receive - active_threads -= 1 - end - - active_threads += 1 - spawn do - begin - get_channel(ucid) - finished_channel.send(ucid) - rescue ex - finished_channel.send(nil) - ensure - active_channel.send(nil) - end - end - end - end - - final = [] of String - channels.size.times do - if ucid = finished_channel.receive - final << ucid - end - end - - return final -end - -def get_channel(id) : InvidiousChannel - channel = Invidious::Database::Channels.select(id) - - if channel.nil? || (Time.utc - channel.updated) > 2.days - channel = fetch_channel(id, pull_all_videos: false) - Invidious::Database::Channels.insert(channel, update_on_conflict: true) - end - - return channel -end - -def fetch_channel(ucid, pull_all_videos : Bool) - LOGGER.debug("fetch_channel: #{ucid}") - LOGGER.trace("fetch_channel: #{ucid} : pull_all_videos = #{pull_all_videos}") - - namespaces = { - "yt" => "http://www.youtube.com/xml/schemas/2015", - "media" => "http://search.yahoo.com/mrss/", - "default" => "http://www.w3.org/2005/Atom", - } - - LOGGER.trace("fetch_channel: #{ucid} : Downloading RSS feed") - rss = YT_POOL.client &.get("/feeds/videos.xml?channel_id=#{ucid}").body - LOGGER.trace("fetch_channel: #{ucid} : Parsing RSS feed") - rss = XML.parse(rss) - - author = rss.xpath_node("//default:feed/default:title", namespaces) - if !author - raise InfoException.new("Deleted or invalid channel") - end - - author = author.content - - # Auto-generated channels - # https://support.google.com/youtube/answer/2579942 - if author.ends_with?(" - Topic") || - {"Popular on YouTube", "Music", "Sports", "Gaming"}.includes? author - auto_generated = true - end - - LOGGER.trace("fetch_channel: #{ucid} : author = #{author}, auto_generated = #{auto_generated}") - - channel = InvidiousChannel.new({ - id: ucid, - author: author, - updated: Time.utc, - deleted: false, - subscribed: nil, - }) - - LOGGER.trace("fetch_channel: #{ucid} : Downloading channel videos page") - videos, continuation = IV::Channel::Tabs.get_videos(channel) - - LOGGER.trace("fetch_channel: #{ucid} : Extracting videos from channel RSS feed") - rss.xpath_nodes("//default:feed/default:entry", namespaces).each do |entry| - video_id = entry.xpath_node("yt:videoId", namespaces).not_nil!.content - title = entry.xpath_node("default:title", namespaces).not_nil!.content - - published = Time.parse_rfc3339( - entry.xpath_node("default:published", namespaces).not_nil!.content - ) - updated = Time.parse_rfc3339( - entry.xpath_node("default:updated", namespaces).not_nil!.content - ) - - author = entry.xpath_node("default:author/default:name", namespaces).not_nil!.content - ucid = entry.xpath_node("yt:channelId", namespaces).not_nil!.content - - views = entry - .xpath_node("media:group/media:community/media:statistics", namespaces) - .try &.["views"]?.try &.to_i64? || 0_i64 - - channel_video = videos - .select(SearchVideo) - .select(&.id.== video_id)[0]? - - length_seconds = channel_video.try &.length_seconds - length_seconds ||= 0 - - live_now = channel_video.try &.live_now - live_now ||= false - - premiere_timestamp = channel_video.try &.premiere_timestamp - - video = ChannelVideo.new({ - id: video_id, - title: title, - published: published, - updated: Time.utc, - ucid: ucid, - author: author, - length_seconds: length_seconds, - live_now: live_now, - premiere_timestamp: premiere_timestamp, - views: views, - }) - - LOGGER.trace("fetch_channel: #{ucid} : video #{video_id} : Updating or inserting video") - - # We don't include the 'premiere_timestamp' here because channel pages don't include them, - # meaning the above timestamp is always null - was_insert = Invidious::Database::ChannelVideos.insert(video) - - if was_insert - LOGGER.trace("fetch_channel: #{ucid} : video #{video_id} : Inserted, updating subscriptions") - if CONFIG.enable_user_notifications - Invidious::Database::Users.add_notification(video) - else - Invidious::Database::Users.feed_needs_update(video) - end - else - LOGGER.trace("fetch_channel: #{ucid} : video #{video_id} : Updated") - end - end - - if pull_all_videos - loop do - # Keep fetching videos using the continuation token retrieved earlier - videos, continuation = IV::Channel::Tabs.get_videos(channel, continuation: continuation) - - count = 0 - videos.select(SearchVideo).each do |video| - count += 1 - video = ChannelVideo.new({ - id: video.id, - title: video.title, - published: video.published, - updated: Time.utc, - ucid: video.ucid, - author: video.author, - length_seconds: video.length_seconds, - live_now: video.live_now, - premiere_timestamp: video.premiere_timestamp, - views: video.views, - }) - - # We are notified of Red videos elsewhere (PubSub), which includes a correct published date, - # so since they don't provide a published date here we can safely ignore them. - if Time.utc - video.published > 1.minute - was_insert = Invidious::Database::ChannelVideos.insert(video) - if was_insert - if CONFIG.enable_user_notifications - Invidious::Database::Users.add_notification(video) - else - Invidious::Database::Users.feed_needs_update(video) - end - end - end - end - - break if count < 25 - sleep 500.milliseconds - end - end - - channel.updated = Time.utc - return channel -end diff --git a/invidious/src/invidious/channels/community.cr b/invidious/src/invidious/channels/community.cr deleted file mode 100755 index 49ffd99..0000000 --- a/invidious/src/invidious/channels/community.cr +++ /dev/null @@ -1,332 +0,0 @@ -private IMAGE_QUALITIES = {320, 560, 640, 1280, 2000} - -# TODO: Add "sort_by" -def fetch_channel_community(ucid, cursor, locale, format, thin_mode) - if cursor.nil? - # Egljb21tdW5pdHk%3D is the protobuf object to load "community" - initial_data = YoutubeAPI.browse(ucid, params: "Egljb21tdW5pdHk%3D") - - items = [] of JSON::Any - extract_items(initial_data) do |item| - items << item - end - else - continuation = produce_channel_community_continuation(ucid, cursor) - initial_data = YoutubeAPI.browse(continuation: continuation) - - container = initial_data.dig?("continuationContents", "itemSectionContinuation", "contents") - - raise InfoException.new("Can't extract community data") if container.nil? - - items = container.as_a - end - - return extract_channel_community(items, ucid: ucid, locale: locale, format: format, thin_mode: thin_mode) -end - -def fetch_channel_community_post(ucid, post_id, locale, format, thin_mode) - object = { - "2:string" => "community", - "25:embedded" => { - "22:string" => post_id.to_s, - }, - "45:embedded" => { - "2:varint" => 1_i64, - "3:varint" => 1_i64, - }, - } - params = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - initial_data = YoutubeAPI.browse(ucid, params: params) - - items = [] of JSON::Any - extract_items(initial_data) do |item| - items << item - end - - return extract_channel_community(items, ucid: ucid, locale: locale, format: format, thin_mode: thin_mode, is_single_post: true) -end - -def extract_channel_community(items, *, ucid, locale, format, thin_mode, is_single_post : Bool = false) - if message = items[0]["messageRenderer"]? - error_message = (message["text"]["simpleText"]? || - message["text"]["runs"]?.try &.[0]?.try &.["text"]?) - .try &.as_s || "" - if error_message == "This channel does not exist." - raise NotFoundException.new(error_message) - else - raise InfoException.new(error_message) - end - end - - response = JSON.build do |json| - json.object do - json.field "authorId", ucid - if is_single_post - json.field "singlePost", true - end - json.field "comments" do - json.array do - items.each do |post| - comments = post["backstagePostThreadRenderer"]?.try &.["comments"]? || - post["backstageCommentsContinuation"]? - - post = post["backstagePostThreadRenderer"]?.try &.["post"]["backstagePostRenderer"]? || - post["commentThreadRenderer"]?.try &.["comment"]["commentRenderer"]? - - next if !post - - content_html = post["contentText"]?.try { |t| parse_content(t) } || "" - author = post["authorText"]["runs"]?.try &.[0]?.try &.["text"]? || "" - - json.object do - json.field "author", author - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - author_thumbnail = post["authorThumbnail"]["thumbnails"].as_a[0]["url"].as_s - - qualities.each do |quality| - json.object do - json.field "url", author_thumbnail.gsub(/s\d+-/, "s#{quality}-") - json.field "width", quality - json.field "height", quality - end - end - end - end - - if post["authorEndpoint"]? - json.field "authorId", post["authorEndpoint"]["browseEndpoint"]["browseId"] - json.field "authorUrl", post["authorEndpoint"]["commandMetadata"]["webCommandMetadata"]["url"].as_s - else - json.field "authorId", "" - json.field "authorUrl", "" - end - - published_text = post["publishedTimeText"]["runs"][0]["text"].as_s - published = decode_date(published_text.rchop(" (edited)")) - - if published_text.includes?(" (edited)") - json.field "isEdited", true - else - json.field "isEdited", false - end - - like_count = post["actionButtons"]["commentActionButtonsRenderer"]["likeButton"]["toggleButtonRenderer"]["accessibilityData"]["accessibilityData"]["label"] - .try &.as_s.gsub(/\D/, "").to_i? || 0 - - reply_count = short_text_to_number(post.dig?("actionButtons", "commentActionButtonsRenderer", "replyButton", "buttonRenderer", "text", "simpleText").try &.as_s || "0") - - json.field "content", html_to_content(content_html) - json.field "contentHtml", content_html - - json.field "published", published.to_unix - json.field "publishedText", translate(locale, "`x` ago", recode_date(published, locale)) - - json.field "likeCount", like_count - json.field "replyCount", reply_count - json.field "commentId", post["postId"]? || post["commentId"]? || "" - json.field "authorIsChannelOwner", post["authorEndpoint"]["browseEndpoint"]["browseId"] == ucid - - if attachment = post["backstageAttachment"]? - json.field "attachment" do - case attachment.as_h - when .has_key?("videoRenderer") - parse_item(attachment) - .as(SearchVideo) - .to_json(locale, json) - when .has_key?("backstageImageRenderer") - json.object do - attachment = attachment["backstageImageRenderer"] - json.field "type", "image" - - json.field "imageThumbnails" do - json.array do - thumbnail = attachment["image"]["thumbnails"][0].as_h - width = thumbnail["width"].as_i - height = thumbnail["height"].as_i - aspect_ratio = (width.to_f / height.to_f) - url = thumbnail["url"].as_s.gsub(/=w\d+-h\d+(-p)?(-nd)?(-df)?(-rwa)?/, "=s640") - - IMAGE_QUALITIES.each do |quality| - json.object do - json.field "url", url.gsub(/=s\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", (quality / aspect_ratio).ceil.to_i - end - end - end - end - end - when .has_key?("pollRenderer") - json.object do - attachment = attachment["pollRenderer"] - json.field "type", "poll" - json.field "totalVotes", short_text_to_number(attachment["totalVotes"]["simpleText"].as_s.split(" ")[0]) - json.field "choices" do - json.array do - attachment["choices"].as_a.each do |choice| - json.object do - json.field "text", choice.dig("text", "runs", 0, "text").as_s - # A choice can have an image associated with it. - # Ex post: https://www.youtube.com/post/UgkxD4XavXUD4NQiddJXXdohbwOwcVqrH9Re - if choice["image"]? - thumbnail = choice["image"]["thumbnails"][0].as_h - width = thumbnail["width"].as_i - height = thumbnail["height"].as_i - aspect_ratio = (width.to_f / height.to_f) - url = thumbnail["url"].as_s.gsub(/=w\d+-h\d+(-p)?(-nd)?(-df)?(-rwa)?/, "=s640") - json.field "image" do - json.array do - IMAGE_QUALITIES.each do |quality| - json.object do - json.field "url", url.gsub(/=s\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", (quality / aspect_ratio).ceil.to_i - end - end - end - end - end - end - end - end - end - end - when .has_key?("postMultiImageRenderer") - json.object do - attachment = attachment["postMultiImageRenderer"] - json.field "type", "multiImage" - json.field "images" do - json.array do - attachment["images"].as_a.each do |image| - json.array do - thumbnail = image["backstageImageRenderer"]["image"]["thumbnails"][0].as_h - width = thumbnail["width"].as_i - height = thumbnail["height"].as_i - aspect_ratio = (width.to_f / height.to_f) - url = thumbnail["url"].as_s.gsub(/=w\d+-h\d+(-p)?(-nd)?(-df)?(-rwa)?/, "=s640") - - IMAGE_QUALITIES.each do |quality| - json.object do - json.field "url", url.gsub(/=s\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", (quality / aspect_ratio).ceil.to_i - end - end - end - end - end - end - end - when .has_key?("playlistRenderer") - parse_item(attachment) - .as(SearchPlaylist) - .to_json(locale, json) - when .has_key?("quizRenderer") - json.object do - attachment = attachment["quizRenderer"] - json.field "type", "quiz" - json.field "totalVotes", short_text_to_number(attachment["totalVotes"]["simpleText"].as_s.split(" ")[0]) - json.field "choices" do - json.array do - attachment["choices"].as_a.each do |choice| - json.object do - json.field "text", choice.dig("text", "runs", 0, "text").as_s - json.field "isCorrect", choice["isCorrect"].as_bool - end - end - end - end - end - else - json.object do - json.field "type", "unknown" - json.field "error", "Unrecognized attachment type." - end - end - end - end - - if comments && (reply_count = (comments["backstageCommentsRenderer"]["moreText"]["simpleText"]? || - comments["backstageCommentsRenderer"]["moreText"]["runs"]?.try &.[0]?.try &.["text"]?) - .try &.as_s.gsub(/\D/, "").to_i?) - continuation = comments["backstageCommentsRenderer"]["continuations"]?.try &.as_a[0]["nextContinuationData"]["continuation"].as_s - continuation ||= "" - - json.field "replies" do - json.object do - json.field "replyCount", reply_count - json.field "continuation", extract_channel_community_cursor(continuation) - end - end - end - end - end - end - end - if !is_single_post - if cont = items.dig?(-1, "continuationItemRenderer", "continuationEndpoint", "continuationCommand", "token") - json.field "continuation", extract_channel_community_cursor(cont.as_s) - end - end - end - end - - if format == "html" - response = JSON.parse(response) - content_html = IV::Frontend::Comments.template_youtube(response, locale, thin_mode) - - response = JSON.build do |json| - json.object do - json.field "contentHtml", content_html - end - end - end - - return response -end - -def produce_channel_community_continuation(ucid, cursor) - object = { - "80226972:embedded" => { - "2:string" => ucid, - "3:string" => cursor || "", - }, - } - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation -end - -def extract_channel_community_cursor(continuation) - object = URI.decode_www_form(continuation) - .try { |i| Base64.decode(i) } - .try { |i| IO::Memory.new(i) } - .try { |i| Protodec::Any.parse(i) } - .try(&.["80226972:0:embedded"]["3:1:base64"].as_h) - - if object["53:2:embedded"]?.try &.["3:0:embedded"]? - object["53:2:embedded"]["3:0:embedded"]["2:0:string"] = object["53:2:embedded"]["3:0:embedded"] - .try(&.["2:0:base64"].as_h) - .try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i, padding: false) } - - object["53:2:embedded"]["3:0:embedded"].as_h.delete("2:0:base64") - end - - cursor = Protodec::Any.cast_json(object) - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - - cursor -end diff --git a/invidious/src/invidious/channels/playlists.cr b/invidious/src/invidious/channels/playlists.cr deleted file mode 100755 index 91029fe..0000000 --- a/invidious/src/invidious/channels/playlists.cr +++ /dev/null @@ -1,46 +0,0 @@ -def fetch_channel_playlists(ucid, author, continuation, sort_by) - if continuation - initial_data = YoutubeAPI.browse(continuation) - else - params = - case sort_by - when "last", "last_added" - # Equivalent to "&sort=lad" - # {"2:string": "playlists", "3:varint": 4, "4:varint": 1, "6:varint": 1} - "EglwbGF5bGlzdHMYBCABMAE%3D" - when "oldest", "oldest_created" - # formerly "&sort=da" - # Not available anymore :c or maybe ?? - # {"2:string": "playlists", "3:varint": 2, "4:varint": 1, "6:varint": 1} - "EglwbGF5bGlzdHMYAiABMAE%3D" - # {"2:string": "playlists", "3:varint": 1, "4:varint": 1, "6:varint": 1} - # "EglwbGF5bGlzdHMYASABMAE%3D" - when "newest", "newest_created" - # Formerly "&sort=dd" - # {"2:string": "playlists", "3:varint": 3, "4:varint": 1, "6:varint": 1} - "EglwbGF5bGlzdHMYAyABMAE%3D" - end - - initial_data = YoutubeAPI.browse(ucid, params: params || "") - end - - return extract_items(initial_data, author, ucid) -end - -def fetch_channel_podcasts(ucid, author, continuation) - if continuation - initial_data = YoutubeAPI.browse(continuation) - else - initial_data = YoutubeAPI.browse(ucid, params: "Eghwb2RjYXN0c_IGBQoDugEA") - end - return extract_items(initial_data, author, ucid) -end - -def fetch_channel_releases(ucid, author, continuation) - if continuation - initial_data = YoutubeAPI.browse(continuation) - else - initial_data = YoutubeAPI.browse(ucid, params: "EghyZWxlYXNlc_IGBQoDsgEA") - end - return extract_items(initial_data, author, ucid) -end diff --git a/invidious/src/invidious/channels/videos.cr b/invidious/src/invidious/channels/videos.cr deleted file mode 100755 index 351790d..0000000 --- a/invidious/src/invidious/channels/videos.cr +++ /dev/null @@ -1,170 +0,0 @@ -def produce_channel_videos_continuation(ucid, page = 1, auto_generated = nil, sort_by = "newest", v2 = false) - object_inner_2 = { - "2:0:embedded" => { - "1:0:varint" => 0_i64, - }, - "5:varint" => 50_i64, - "6:varint" => 1_i64, - "7:varint" => (page * 30).to_i64, - "9:varint" => 1_i64, - "10:varint" => 0_i64, - } - - object_inner_2_encoded = object_inner_2 - .try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - sort_by_numerical = - case sort_by - when "newest" then 1_i64 - when "popular" then 2_i64 - when "oldest" then 4_i64 - else 1_i64 # Fallback to "newest" - end - - object_inner_1 = { - "110:embedded" => { - "3:embedded" => { - "15:embedded" => { - "1:embedded" => { - "1:string" => object_inner_2_encoded, - }, - "2:embedded" => { - "1:string" => "00000000-0000-0000-0000-000000000000", - }, - "3:varint" => sort_by_numerical, - }, - }, - }, - } - - object_inner_1_encoded = object_inner_1 - .try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - object = { - "80226972:embedded" => { - "2:string" => ucid, - "3:string" => object_inner_1_encoded, - "35:string" => "browse-feed#{ucid}videos102", - }, - } - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation -end - -module Invidious::Channel::Tabs - extend self - - # ------------------- - # Regular videos - # ------------------- - - def make_initial_video_ctoken(ucid, sort_by) : String - return produce_channel_videos_continuation(ucid, sort_by: sort_by) - end - - # Wrapper for AboutChannel, as we still need to call get_videos with - # an author name and ucid directly (e.g in RSS feeds). - # TODO: figure out how to get rid of that - def get_videos(channel : AboutChannel, *, continuation : String? = nil, sort_by = "newest") - return get_videos( - channel.author, channel.ucid, - continuation: continuation, sort_by: sort_by - ) - end - - # Wrapper for InvidiousChannel, as we still need to call get_videos with - # an author name and ucid directly (e.g in RSS feeds). - # TODO: figure out how to get rid of that - def get_videos(channel : InvidiousChannel, *, continuation : String? = nil, sort_by = "newest") - return get_videos( - channel.author, channel.id, - continuation: continuation, sort_by: sort_by - ) - end - - def get_videos(author : String, ucid : String, *, continuation : String? = nil, sort_by = "newest") - continuation ||= make_initial_video_ctoken(ucid, sort_by) - initial_data = YoutubeAPI.browse(continuation: continuation) - - return extract_items(initial_data, author, ucid) - end - - def get_60_videos(channel : AboutChannel, *, continuation : String? = nil, sort_by = "newest") - if continuation.nil? - # Fetch the first "page" of video - items, next_continuation = get_videos(channel, sort_by: sort_by) - else - # Fetch a "page" of videos using the given continuation token - items, next_continuation = get_videos(channel, continuation: continuation) - end - - # If there is more to load, then load a second "page" - # and replace the previous continuation token - if !next_continuation.nil? - items_2, next_continuation = get_videos(channel, continuation: next_continuation) - items.concat items_2 - end - - return items, next_continuation - end - - # ------------------- - # Shorts - # ------------------- - - def get_shorts(channel : AboutChannel, continuation : String? = nil) - if continuation.nil? - # EgZzaG9ydHPyBgUKA5oBAA%3D%3D is the protobuf object to load "shorts" - # TODO: try to extract the continuation tokens that allows other sorting options - initial_data = YoutubeAPI.browse(channel.ucid, params: "EgZzaG9ydHPyBgUKA5oBAA%3D%3D") - else - initial_data = YoutubeAPI.browse(continuation: continuation) - end - return extract_items(initial_data, channel.author, channel.ucid) - end - - # ------------------- - # Livestreams - # ------------------- - - def get_livestreams(channel : AboutChannel, continuation : String? = nil) - if continuation.nil? - # EgdzdHJlYW1z8gYECgJ6AA%3D%3D is the protobuf object to load "streams" - initial_data = YoutubeAPI.browse(channel.ucid, params: "EgdzdHJlYW1z8gYECgJ6AA%3D%3D") - else - initial_data = YoutubeAPI.browse(continuation: continuation) - end - - return extract_items(initial_data, channel.author, channel.ucid) - end - - def get_60_livestreams(channel : AboutChannel, continuation : String? = nil) - if continuation.nil? - # Fetch the first "page" of streams - items, next_continuation = get_livestreams(channel) - else - # Fetch a "page" of streams using the given continuation token - items, next_continuation = get_livestreams(channel, continuation: continuation) - end - - # If there is more to load, then load a second "page" - # and replace the previous continuation token - if !next_continuation.nil? - items_2, next_continuation = get_livestreams(channel, continuation: next_continuation) - items.concat items_2 - end - - return items, next_continuation - end -end diff --git a/invidious/src/invidious/comments/content.cr b/invidious/src/invidious/comments/content.cr deleted file mode 100755 index c8cdc2d..0000000 --- a/invidious/src/invidious/comments/content.cr +++ /dev/null @@ -1,89 +0,0 @@ -def text_to_parsed_content(text : String) : JSON::Any - nodes = [] of JSON::Any - # For each line convert line to array of nodes - text.split('\n').each do |line| - # In first case line is just a simple node before - # check patterns inside line - # { 'text': line } - currentNodes = [] of JSON::Any - initialNode = {"text" => line} - currentNodes << (JSON.parse(initialNode.to_json)) - - # For each match with url pattern, get last node and preserve - # last node before create new node with url information - # { 'text': match, 'navigationEndpoint': { 'urlEndpoint' : 'url': match } } - line.scan(/https?:\/\/[^ ]*/).each do |urlMatch| - # Retrieve last node and update node without match - lastNode = currentNodes[currentNodes.size - 1].as_h - splittedLastNode = lastNode["text"].as_s.split(urlMatch[0]) - lastNode["text"] = JSON.parse(splittedLastNode[0].to_json) - currentNodes[currentNodes.size - 1] = JSON.parse(lastNode.to_json) - # Create new node with match and navigation infos - currentNode = {"text" => urlMatch[0], "navigationEndpoint" => {"urlEndpoint" => {"url" => urlMatch[0]}}} - currentNodes << (JSON.parse(currentNode.to_json)) - # If text remain after match create new simple node with text after match - afterNode = {"text" => splittedLastNode.size > 1 ? splittedLastNode[1] : ""} - currentNodes << (JSON.parse(afterNode.to_json)) - end - - # After processing of matches inside line - # Add \n at end of last node for preserve carriage return - lastNode = currentNodes[currentNodes.size - 1].as_h - lastNode["text"] = JSON.parse("#{currentNodes[currentNodes.size - 1]["text"]}\n".to_json) - currentNodes[currentNodes.size - 1] = JSON.parse(lastNode.to_json) - - # Finally add final nodes to nodes returned - currentNodes.each do |node| - nodes << (node) - end - end - return JSON.parse({"runs" => nodes}.to_json) -end - -def parse_content(content : JSON::Any, video_id : String? = "") : String - content["simpleText"]?.try &.as_s.rchop('\ufeff').try { |b| HTML.escape(b) }.to_s || - content["runs"]?.try &.as_a.try { |r| content_to_comment_html(r, video_id).try &.to_s.gsub("\n", "
    ") } || "" -end - -def content_to_comment_html(content, video_id : String? = "") - html_array = content.map do |run| - # Sometimes, there is an empty element. - # See: https://github.com/iv-org/invidious/issues/3096 - next if run.as_h.empty? - - text = HTML.escape(run["text"].as_s) - - if navigationEndpoint = run.dig?("navigationEndpoint") - text = parse_link_endpoint(navigationEndpoint, text, video_id) - end - - text = "#{text}" if run["bold"]? - text = "#{text}" if run["strikethrough"]? - text = "#{text}" if run["italics"]? - - # check for custom emojis - if run["emoji"]? - if run["emoji"]["isCustomEmoji"]?.try &.as_bool - if emojiImage = run.dig?("emoji", "image") - emojiAlt = emojiImage.dig?("accessibility", "accessibilityData", "label").try &.as_s || text - emojiThumb = emojiImage["thumbnails"][0] - text = String.build do |str| - str << %() << emojiAlt << ) - end - else - # Hide deleted channel emoji - text = "" - end - end - end - - text - end - - return html_array.join("").delete('\ufeff') -end diff --git a/invidious/src/invidious/comments/links_util.cr b/invidious/src/invidious/comments/links_util.cr deleted file mode 100755 index f89b86d..0000000 --- a/invidious/src/invidious/comments/links_util.cr +++ /dev/null @@ -1,76 +0,0 @@ -module Invidious::Comments - extend self - - def replace_links(html) - # Check if the document is empty - # Prevents edge-case bug with Reddit comments, see issue #3115 - if html.nil? || html.empty? - return html - end - - html = XML.parse_html(html) - - html.xpath_nodes(%q(//a)).each do |anchor| - url = URI.parse(anchor["href"]) - - if url.host.nil? || url.host.not_nil!.ends_with?("youtube.com") || url.host.not_nil!.ends_with?("youtu.be") - if url.host.try &.ends_with? "youtu.be" - url = "/watch?v=#{url.path.lstrip('/')}#{url.query_params}" - else - if url.path == "/redirect" - params = HTTP::Params.parse(url.query.not_nil!) - anchor["href"] = params["q"]? - else - anchor["href"] = url.request_target - end - end - elsif url.to_s == "#" - begin - length_seconds = decode_length_seconds(anchor.content) - rescue ex - length_seconds = decode_time(anchor.content) - end - - if length_seconds > 0 - anchor["href"] = "javascript:void(0)" - anchor["onclick"] = "player.currentTime(#{length_seconds})" - else - anchor["href"] = url.request_target - end - end - end - - html = html.xpath_node(%q(//body)).not_nil! - if node = html.xpath_node(%q(./p)) - html = node - end - - return html.to_xml(options: XML::SaveOptions::NO_DECL) - end - - def fill_links(html, scheme, host) - # Check if the document is empty - # Prevents edge-case bug with Reddit comments, see issue #3115 - if html.nil? || html.empty? - return html - end - - html = XML.parse_html(html) - - html.xpath_nodes("//a").each do |match| - url = URI.parse(match["href"]) - # Reddit links don't have host - if !url.host && !match["href"].starts_with?("javascript") && !url.to_s.ends_with? "#" - url.scheme = scheme - url.host = host - match["href"] = url - end - end - - if host == "www.youtube.com" - html = html.xpath_node(%q(//body/p)).not_nil! - end - - return html.to_xml(options: XML::SaveOptions::NO_DECL) - end -end diff --git a/invidious/src/invidious/comments/reddit.cr b/invidious/src/invidious/comments/reddit.cr deleted file mode 100755 index ba9c19f..0000000 --- a/invidious/src/invidious/comments/reddit.cr +++ /dev/null @@ -1,41 +0,0 @@ -module Invidious::Comments - extend self - - def fetch_reddit(id, sort_by = "confidence") - client = make_client(REDDIT_URL) - headers = HTTP::Headers{"User-Agent" => "web:invidious:v#{CURRENT_VERSION} (by github.com/iv-org/invidious)"} - - # TODO: Use something like #479 for a static list of instances to use here - query = URI::Params.encode({q: "(url:3D#{id} OR url:#{id}) AND (site:invidio.us OR site:youtube.com OR site:youtu.be)"}) - search_results = client.get("/search.json?#{query}", headers) - - if search_results.status_code == 200 - search_results = RedditThing.from_json(search_results.body) - - # For videos that have more than one thread, choose the one with the highest score - threads = search_results.data.as(RedditListing).children - thread = threads.max_by?(&.data.as(RedditLink).score).try(&.data.as(RedditLink)) - result = thread.try do |t| - body = client.get("/r/#{t.subreddit}/comments/#{t.id}.json?limit=100&sort=#{sort_by}", headers).body - Array(RedditThing).from_json(body) - end - result ||= [] of RedditThing - elsif search_results.status_code == 302 - # Previously, if there was only one result then the API would redirect to that result. - # Now, it appears it will still return a listing so this section is likely unnecessary. - - result = client.get(search_results.headers["Location"], headers).body - result = Array(RedditThing).from_json(result) - - thread = result[0].data.as(RedditListing).children[0].data.as(RedditLink) - else - raise NotFoundException.new("Comments not found.") - end - - client.close - - comments = result[1]?.try(&.data.as(RedditListing).children) - comments ||= [] of RedditThing - return comments, thread - end -end diff --git a/invidious/src/invidious/comments/reddit_types.cr b/invidious/src/invidious/comments/reddit_types.cr deleted file mode 100755 index 796a118..0000000 --- a/invidious/src/invidious/comments/reddit_types.cr +++ /dev/null @@ -1,57 +0,0 @@ -class RedditThing - include JSON::Serializable - - property kind : String - property data : RedditComment | RedditLink | RedditMore | RedditListing -end - -class RedditComment - include JSON::Serializable - - property author : String - property body_html : String - property replies : RedditThing | String - property score : Int32 - property depth : Int32 - property permalink : String - - @[JSON::Field(converter: RedditComment::TimeConverter)] - property created_utc : Time - - module TimeConverter - def self.from_json(value : JSON::PullParser) : Time - Time.unix(value.read_float.to_i) - end - - def self.to_json(value : Time, json : JSON::Builder) - json.number(value.to_unix) - end - end -end - -struct RedditLink - include JSON::Serializable - - property author : String - property score : Int32 - property subreddit : String - property num_comments : Int32 - property id : String - property permalink : String - property title : String -end - -struct RedditMore - include JSON::Serializable - - property children : Array(String) - property count : Int32 - property depth : Int32 -end - -class RedditListing - include JSON::Serializable - - property children : Array(RedditThing) - property modhash : String -end diff --git a/invidious/src/invidious/comments/youtube.cr b/invidious/src/invidious/comments/youtube.cr deleted file mode 100755 index 185d8e4..0000000 --- a/invidious/src/invidious/comments/youtube.cr +++ /dev/null @@ -1,299 +0,0 @@ -module Invidious::Comments - extend self - - def fetch_youtube(id, cursor, format, locale, thin_mode, region, sort_by = "top") - case cursor - when nil, "" - ctoken = Comments.produce_continuation(id, cursor: "", sort_by: sort_by) - when .starts_with? "ADSJ" - ctoken = Comments.produce_continuation(id, cursor: cursor, sort_by: sort_by) - else - ctoken = cursor - end - - client_config = YoutubeAPI::ClientConfig.new(region: region) - response = YoutubeAPI.next(continuation: ctoken, client_config: client_config) - return parse_youtube(id, response, format, locale, thin_mode, sort_by) - end - - def fetch_community_post_comments(ucid, post_id) - object = { - "2:string" => "community", - "25:embedded" => { - "22:string" => post_id, - }, - "45:embedded" => { - "2:varint" => 1_i64, - "3:varint" => 1_i64, - }, - "53:embedded" => { - "4:embedded" => { - "6:varint" => 0_i64, - "27:varint" => 1_i64, - "29:string" => post_id, - "30:string" => ucid, - }, - "8:string" => "comments-section", - }, - } - - object_parsed = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - - object2 = { - "80226972:embedded" => { - "2:string" => ucid, - "3:string" => object_parsed, - }, - } - - continuation = object2.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - initial_data = YoutubeAPI.browse(continuation: continuation) - return initial_data - end - - def parse_youtube(id, response, format, locale, thin_mode, sort_by = "top", isPost = false) - contents = nil - - if on_response_received_endpoints = response["onResponseReceivedEndpoints"]? - header = nil - on_response_received_endpoints.as_a.each do |item| - if item["reloadContinuationItemsCommand"]? - case item["reloadContinuationItemsCommand"]["slot"] - when "RELOAD_CONTINUATION_SLOT_HEADER" - header = item["reloadContinuationItemsCommand"]["continuationItems"][0] - when "RELOAD_CONTINUATION_SLOT_BODY" - # continuationItems is nil when video has no comments - contents = item["reloadContinuationItemsCommand"]["continuationItems"]? - end - elsif item["appendContinuationItemsAction"]? - contents = item["appendContinuationItemsAction"]["continuationItems"] - end - end - elsif response["continuationContents"]? - response = response["continuationContents"] - if response["commentRepliesContinuation"]? - body = response["commentRepliesContinuation"] - else - body = response["itemSectionContinuation"] - end - contents = body["contents"]? - header = body["header"]? - else - raise NotFoundException.new("Comments not found.") - end - - if !contents - if format == "json" - return {"comments" => [] of String}.to_json - else - return {"contentHtml" => "", "commentCount" => 0}.to_json - end - end - - continuation_item_renderer = nil - contents.as_a.reject! do |item| - if item["continuationItemRenderer"]? - continuation_item_renderer = item["continuationItemRenderer"] - true - end - end - - response = JSON.build do |json| - json.object do - if header - count_text = header["commentsHeaderRenderer"]["countText"] - comment_count = (count_text["simpleText"]? || count_text["runs"]?.try &.[0]?.try &.["text"]?) - .try &.as_s.gsub(/\D/, "").to_i? || 0 - json.field "commentCount", comment_count - end - - if isPost - json.field "postId", id - else - json.field "videoId", id - end - - json.field "comments" do - json.array do - contents.as_a.each do |node| - json.object do - if node["commentThreadRenderer"]? - node = node["commentThreadRenderer"] - end - - if node["replies"]? - node_replies = node["replies"]["commentRepliesRenderer"] - end - - if node["comment"]? - node_comment = node["comment"]["commentRenderer"] - else - node_comment = node["commentRenderer"] - end - - content_html = node_comment["contentText"]?.try { |t| parse_content(t, id) } || "" - author = node_comment["authorText"]?.try &.["simpleText"]? || "" - - json.field "verified", (node_comment["authorCommentBadge"]? != nil) - - json.field "author", author - json.field "authorThumbnails" do - json.array do - node_comment["authorThumbnail"]["thumbnails"].as_a.each do |thumbnail| - json.object do - json.field "url", thumbnail["url"] - json.field "width", thumbnail["width"] - json.field "height", thumbnail["height"] - end - end - end - end - - if node_comment["authorEndpoint"]? - json.field "authorId", node_comment["authorEndpoint"]["browseEndpoint"]["browseId"] - json.field "authorUrl", node_comment["authorEndpoint"]["browseEndpoint"]["canonicalBaseUrl"] - else - json.field "authorId", "" - json.field "authorUrl", "" - end - - published_text = node_comment["publishedTimeText"]["runs"][0]["text"].as_s - published = decode_date(published_text.rchop(" (edited)")) - - if published_text.includes?(" (edited)") - json.field "isEdited", true - else - json.field "isEdited", false - end - - json.field "content", html_to_content(content_html) - json.field "contentHtml", content_html - - json.field "isPinned", (node_comment["pinnedCommentBadge"]? != nil) - json.field "isSponsor", (node_comment["sponsorCommentBadge"]? != nil) - if node_comment["sponsorCommentBadge"]? - # Sponsor icon thumbnails always have one object and there's only ever the url property in it - json.field "sponsorIconUrl", node_comment.dig("sponsorCommentBadge", "sponsorCommentBadgeRenderer", "customBadge", "thumbnails", 0, "url").to_s - end - json.field "published", published.to_unix - json.field "publishedText", translate(locale, "`x` ago", recode_date(published, locale)) - - comment_action_buttons_renderer = node_comment["actionButtons"]["commentActionButtonsRenderer"] - - json.field "likeCount", comment_action_buttons_renderer["likeButton"]["toggleButtonRenderer"]["accessibilityData"]["accessibilityData"]["label"].as_s.scan(/\d/).map(&.[0]).join.to_i - json.field "commentId", node_comment["commentId"] - json.field "authorIsChannelOwner", node_comment["authorIsChannelOwner"] - - if comment_action_buttons_renderer["creatorHeart"]? - hearth_data = comment_action_buttons_renderer["creatorHeart"]["creatorHeartRenderer"]["creatorThumbnail"] - json.field "creatorHeart" do - json.object do - json.field "creatorThumbnail", hearth_data["thumbnails"][-1]["url"] - json.field "creatorName", hearth_data["accessibility"]["accessibilityData"]["label"] - end - end - end - - if node_replies && !response["commentRepliesContinuation"]? - if node_replies["continuations"]? - continuation = node_replies["continuations"]?.try &.as_a[0]["nextContinuationData"]["continuation"].as_s - elsif node_replies["contents"]? - continuation = node_replies["contents"]?.try &.as_a[0]["continuationItemRenderer"]["continuationEndpoint"]["continuationCommand"]["token"].as_s - end - continuation ||= "" - - json.field "replies" do - json.object do - json.field "replyCount", node_comment["replyCount"]? || 1 - json.field "continuation", continuation - end - end - end - end - end - end - end - - if continuation_item_renderer - if continuation_item_renderer["continuationEndpoint"]? - continuation_endpoint = continuation_item_renderer["continuationEndpoint"] - elsif continuation_item_renderer["button"]? - continuation_endpoint = continuation_item_renderer["button"]["buttonRenderer"]["command"] - end - if continuation_endpoint - json.field "continuation", continuation_endpoint["continuationCommand"]["token"].as_s - end - end - end - end - - if format == "html" - response = JSON.parse(response) - content_html = Frontend::Comments.template_youtube(response, locale, thin_mode) - - response = JSON.build do |json| - json.object do - json.field "contentHtml", content_html - - if response["commentCount"]? - json.field "commentCount", response["commentCount"] - else - json.field "commentCount", 0 - end - end - end - end - - return response - end - - def produce_continuation(video_id, cursor = "", sort_by = "top") - object = { - "2:embedded" => { - "2:string" => video_id, - "25:varint" => 0_i64, - "28:varint" => 1_i64, - "36:embedded" => { - "5:varint" => -1_i64, - "8:varint" => 0_i64, - }, - "40:embedded" => { - "1:varint" => 4_i64, - "3:string" => "https://www.youtube.com", - "4:string" => "", - }, - }, - "3:varint" => 6_i64, - "6:embedded" => { - "1:string" => cursor, - "4:embedded" => { - "4:string" => video_id, - "6:varint" => 0_i64, - }, - "5:varint" => 20_i64, - }, - } - - case sort_by - when "top" - object["6:embedded"].as(Hash)["4:embedded"].as(Hash)["6:varint"] = 0_i64 - when "new", "newest" - object["6:embedded"].as(Hash)["4:embedded"].as(Hash)["6:varint"] = 1_i64 - else # top - object["6:embedded"].as(Hash)["4:embedded"].as(Hash)["6:varint"] = 0_i64 - end - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation - end -end diff --git a/invidious/src/invidious/config.cr b/invidious/src/invidious/config.cr deleted file mode 100755 index 09c2168..0000000 --- a/invidious/src/invidious/config.cr +++ /dev/null @@ -1,233 +0,0 @@ -struct DBConfig - include YAML::Serializable - - property user : String - property password : String - property host : String - property port : Int32 - property dbname : String -end - -struct ConfigPreferences - include YAML::Serializable - - property annotations : Bool = false - property annotations_subscribed : Bool = false - property autoplay : Bool = false - property captions : Array(String) = ["", "", ""] - property comments : Array(String) = ["youtube", ""] - property continue : Bool = false - property continue_autoplay : Bool = true - property dark_mode : String = "" - property latest_only : Bool = false - property listen : Bool = false - property local : Bool = false - property locale : String = "en-US" - property watch_history : Bool = true - property max_results : Int32 = 40 - property notifications_only : Bool = false - property player_style : String = "invidious" - property quality : String = "hd720" - property quality_dash : String = "auto" - property default_home : String? = "Popular" - property feed_menu : Array(String) = ["Popular", "Trending", "Subscriptions", "Playlists"] - property automatic_instance_redirect : Bool = false - property region : String = "US" - property related_videos : Bool = true - property sort : String = "published" - property speed : Float32 = 1.0_f32 - property thin_mode : Bool = false - property unseen_only : Bool = false - property video_loop : Bool = false - property extend_desc : Bool = false - property volume : Int32 = 100 - property vr_mode : Bool = true - property show_nick : Bool = true - property save_player_pos : Bool = false - - def to_tuple - {% begin %} - { - {{(@type.instance_vars.map { |var| "#{var.name}: #{var.name}".id }).splat}} - } - {% end %} - end -end - -class Config - include YAML::Serializable - - # Number of threads to use for crawling videos from channels (for updating subscriptions) - property channel_threads : Int32 = 1 - # Time interval between two executions of the job that crawls channel videos (subscriptions update). - @[YAML::Field(converter: Preferences::TimeSpanConverter)] - property channel_refresh_interval : Time::Span = 30.minutes - # Number of threads to use for updating feeds - property feed_threads : Int32 = 1 - # Log file path or STDOUT - property output : String = "STDOUT" - # Default log level, valid YAML values are ints and strings, see src/invidious/helpers/logger.cr - property log_level : LogLevel = LogLevel::Info - # Database configuration with separate parameters (username, hostname, etc) - property db : DBConfig? = nil - - # Database configuration using 12-Factor "Database URL" syntax - @[YAML::Field(converter: Preferences::URIConverter)] - property database_url : URI = URI.parse("") - # Use polling to keep decryption function up to date - property decrypt_polling : Bool = false - # Used for crawling channels: threads should check all videos uploaded by a channel - property full_refresh : Bool = false - - # Jobs config structure. See jobs.cr and jobs/base_job.cr - property jobs = Invidious::Jobs::JobsConfig.new - - # Used to tell Invidious it is behind a proxy, so links to resources should be https:// - property https_only : Bool? - # HMAC signing key for CSRF tokens and verifying pubsub subscriptions - property hmac_key : String = "" - # Domain to be used for links to resources on the site where an absolute URL is required - property domain : String? - # Subscribe to channels using PubSubHubbub (requires domain, hmac_key) - property use_pubsub_feeds : Bool | Int32 = false - property popular_enabled : Bool = true - property captcha_enabled : Bool = true - property login_enabled : Bool = true - property registration_enabled : Bool = true - property statistics_enabled : Bool = false - property admins : Array(String) = [] of String - property external_port : Int32? = nil - property default_user_preferences : ConfigPreferences = ConfigPreferences.from_yaml("") - # For compliance with DMCA, disables download widget using list of video IDs - property dmca_content : Array(String) = [] of String - # Check table integrity, automatically try to add any missing columns, create tables, etc. - property check_tables : Bool = false - # Cache annotations requested from IA, will not cache empty annotations or annotations that only contain cards - property cache_annotations : Bool = false - # Optional banner to be displayed along top of page for announcements, etc. - property banner : String? = nil - # Enables 'Strict-Transport-Security'. Ensure that `domain` and all subdomains are served securely - property hsts : Bool? = true - # Disable proxying server-wide: options: 'dash', 'livestreams', 'downloads', 'local' - property disable_proxy : Bool? | Array(String)? = false - # Enable the user notifications for all users - property enable_user_notifications : Bool = true - - # URL to the modified source code to be easily AGPL compliant - # Will display in the footer, next to the main source code link - property modified_source_code_url : String? = nil - - # Connect to YouTube over 'ipv6', 'ipv4'. Will sometimes resolve fix issues with rate-limiting (see https://github.com/ytdl-org/youtube-dl/issues/21729) - @[YAML::Field(converter: Preferences::FamilyConverter)] - property force_resolve : Socket::Family = Socket::Family::UNSPEC - # Port to listen for connections (overridden by command line argument) - property port : Int32 = 3000 - # Host to bind (overridden by command line argument) - property host_binding : String = "0.0.0.0" - # Pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool of `pool_size`) - property pool_size : Int32 = 100 - - # Use Innertube's transcripts API instead of timedtext for closed captions - property use_innertube_for_captions : Bool = false - - # Saved cookies in "name1=value1; name2=value2..." format - @[YAML::Field(converter: Preferences::StringToCookies)] - property cookies : HTTP::Cookies = HTTP::Cookies.new - - # Playlist length limit - property playlist_length_limit : Int32 = 500 - - def disabled?(option) - case disabled = CONFIG.disable_proxy - when Bool - return disabled - when Array - if disabled.includes? option - return true - else - return false - end - else - return false - end - end - - def self.load - # Load config from file or YAML string env var - env_config_file = "INVIDIOUS_CONFIG_FILE" - env_config_yaml = "INVIDIOUS_CONFIG" - - config_file = ENV.has_key?(env_config_file) ? ENV.fetch(env_config_file) : "config/config.yml" - config_yaml = ENV.has_key?(env_config_yaml) ? ENV.fetch(env_config_yaml) : File.read(config_file) - - config = Config.from_yaml(config_yaml) - - # Update config from env vars (upcased and prefixed with "INVIDIOUS_") - {% for ivar in Config.instance_vars %} - {% env_id = "INVIDIOUS_#{ivar.id.upcase}" %} - - if ENV.has_key?({{env_id}}) - env_value = ENV.fetch({{env_id}}) - success = false - - # Use YAML converter if specified - {% ann = ivar.annotation(::YAML::Field) %} - {% if ann && ann[:converter] %} - config.{{ivar.id}} = {{ann[:converter]}}.from_yaml(YAML::ParseContext.new, YAML::Nodes.parse(ENV.fetch({{env_id}})).nodes[0]) - success = true - - # Use regular YAML parser otherwise - {% else %} - {% ivar_types = ivar.type.union? ? ivar.type.union_types : [ivar.type] %} - # Sort types to avoid parsing nulls and numbers as strings - {% ivar_types = ivar_types.sort_by { |ivar_type| ivar_type == Nil ? 0 : ivar_type == Int32 ? 1 : 2 } %} - {{ivar_types}}.each do |ivar_type| - if !success - begin - config.{{ivar.id}} = ivar_type.from_yaml(env_value) - success = true - rescue - # nop - end - end - end - {% end %} - - # Exit on fail - if !success - puts %(Config.{{ivar.id}} failed to parse #{env_value} as {{ivar.type}}) - exit(1) - end - end - {% end %} - - # HMAC_key is mandatory - # See: https://github.com/iv-org/invidious/issues/3854 - if config.hmac_key.empty? - puts "Config: 'hmac_key' is required/can't be empty" - exit(1) - elsif config.hmac_key == "CHANGE_ME!!" - puts "Config: The value of 'hmac_key' needs to be changed!!" - exit(1) - end - - # Build database_url from db.* if it's not set directly - if config.database_url.to_s.empty? - if db = config.db - config.database_url = URI.new( - scheme: "postgres", - user: db.user, - password: db.password, - host: db.host, - port: db.port, - path: db.dbname, - ) - else - puts "Config: Either database_url or db.* is required" - exit(1) - end - end - - return config - end -end diff --git a/invidious/src/invidious/database/annotations.cr b/invidious/src/invidious/database/annotations.cr deleted file mode 100755 index 0374947..0000000 --- a/invidious/src/invidious/database/annotations.cr +++ /dev/null @@ -1,24 +0,0 @@ -require "./base.cr" - -module Invidious::Database::Annotations - extend self - - def insert(id : String, annotations : String) - request = <<-SQL - INSERT INTO annotations - VALUES ($1, $2) - ON CONFLICT DO NOTHING - SQL - - PG_DB.exec(request, id, annotations) - end - - def select(id : String) : Annotation? - request = <<-SQL - SELECT * FROM annotations - WHERE id = $1 - SQL - - return PG_DB.query_one?(request, id, as: Annotation) - end -end diff --git a/invidious/src/invidious/database/base.cr b/invidious/src/invidious/database/base.cr deleted file mode 100755 index 0fb1b6a..0000000 --- a/invidious/src/invidious/database/base.cr +++ /dev/null @@ -1,136 +0,0 @@ -require "pg" - -module Invidious::Database - extend self - - # Checks table integrity - # - # Note: config is passed as a parameter to avoid complex - # dependencies between different parts of the software. - def check_integrity(cfg) - return if !cfg.check_tables - Invidious::Database.check_enum("privacy", PlaylistPrivacy) - - Invidious::Database.check_table("channels", InvidiousChannel) - Invidious::Database.check_table("channel_videos", ChannelVideo) - Invidious::Database.check_table("playlists", InvidiousPlaylist) - Invidious::Database.check_table("playlist_videos", PlaylistVideo) - Invidious::Database.check_table("nonces", Nonce) - Invidious::Database.check_table("session_ids", SessionId) - Invidious::Database.check_table("users", User) - Invidious::Database.check_table("videos", Video) - - if cfg.cache_annotations - Invidious::Database.check_table("annotations", Annotation) - end - end - - # - # Table/enum integrity checks - # - - def check_enum(enum_name, struct_type = nil) - return # TODO - - if !PG_DB.query_one?("SELECT true FROM pg_type WHERE typname = $1", enum_name, as: Bool) - LOGGER.info("check_enum: CREATE TYPE #{enum_name}") - - PG_DB.using_connection do |conn| - conn.as(PG::Connection).exec_all(File.read("config/sql/#{enum_name}.sql")) - end - end - end - - def check_table(table_name, struct_type = nil) - # Create table if it doesn't exist - begin - PG_DB.exec("SELECT * FROM #{table_name} LIMIT 0") - rescue ex - LOGGER.info("check_table: check_table: CREATE TABLE #{table_name}") - - PG_DB.using_connection do |conn| - conn.as(PG::Connection).exec_all(File.read("config/sql/#{table_name}.sql")) - end - end - - return if !struct_type - - struct_array = struct_type.type_array - column_array = get_column_array(PG_DB, table_name) - column_types = File.read("config/sql/#{table_name}.sql").match(/CREATE TABLE public\.#{table_name}\n\((?[\d\D]*?)\);/) - .try &.["types"].split(",").map(&.strip).reject &.starts_with?("CONSTRAINT") - - return if !column_types - - struct_array.each_with_index do |name, i| - if name != column_array[i]? - if !column_array[i]? - new_column = column_types.select(&.starts_with?(name))[0] - LOGGER.info("check_table: ALTER TABLE #{table_name} ADD COLUMN #{new_column}") - PG_DB.exec("ALTER TABLE #{table_name} ADD COLUMN #{new_column}") - next - end - - # Column doesn't exist - if !column_array.includes? name - new_column = column_types.select(&.starts_with?(name))[0] - PG_DB.exec("ALTER TABLE #{table_name} ADD COLUMN #{new_column}") - end - - # Column exists but in the wrong position, rotate - if struct_array.includes? column_array[i] - until name == column_array[i] - new_column = column_types.select(&.starts_with?(column_array[i]))[0]?.try &.gsub("#{column_array[i]}", "#{column_array[i]}_new") - - # There's a column we didn't expect - if !new_column - LOGGER.info("check_table: ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]}") - PG_DB.exec("ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]} CASCADE") - - column_array = get_column_array(PG_DB, table_name) - next - end - - LOGGER.info("check_table: ALTER TABLE #{table_name} ADD COLUMN #{new_column}") - PG_DB.exec("ALTER TABLE #{table_name} ADD COLUMN #{new_column}") - - LOGGER.info("check_table: UPDATE #{table_name} SET #{column_array[i]}_new=#{column_array[i]}") - PG_DB.exec("UPDATE #{table_name} SET #{column_array[i]}_new=#{column_array[i]}") - - LOGGER.info("check_table: ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]} CASCADE") - PG_DB.exec("ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]} CASCADE") - - LOGGER.info("check_table: ALTER TABLE #{table_name} RENAME COLUMN #{column_array[i]}_new TO #{column_array[i]}") - PG_DB.exec("ALTER TABLE #{table_name} RENAME COLUMN #{column_array[i]}_new TO #{column_array[i]}") - - column_array = get_column_array(PG_DB, table_name) - end - else - LOGGER.info("check_table: ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]} CASCADE") - PG_DB.exec("ALTER TABLE #{table_name} DROP COLUMN #{column_array[i]} CASCADE") - end - end - end - - return if column_array.size <= struct_array.size - - column_array.each do |column| - if !struct_array.includes? column - LOGGER.info("check_table: ALTER TABLE #{table_name} DROP COLUMN #{column} CASCADE") - PG_DB.exec("ALTER TABLE #{table_name} DROP COLUMN #{column} CASCADE") - end - end - end - - def get_column_array(db, table_name) - column_array = [] of String - PG_DB.query("SELECT * FROM #{table_name} LIMIT 0") do |rs| - rs.column_count.times do |i| - column = rs.as(PG::ResultSet).field(i) - column_array << column.name - end - end - - return column_array - end -end diff --git a/invidious/src/invidious/database/channels.cr b/invidious/src/invidious/database/channels.cr deleted file mode 100755 index df44e48..0000000 --- a/invidious/src/invidious/database/channels.cr +++ /dev/null @@ -1,158 +0,0 @@ -require "./base.cr" - -# -# This module contains functions related to the "channels" table. -# -module Invidious::Database::Channels - extend self - - # ------------------- - # Insert / delete - # ------------------- - - def insert(channel : InvidiousChannel, update_on_conflict : Bool = false) - channel_array = channel.to_a - - request = <<-SQL - INSERT INTO channels - VALUES (#{arg_array(channel_array)}) - SQL - - if update_on_conflict - request += <<-SQL - ON CONFLICT (id) DO UPDATE - SET author = $2, updated = $3 - SQL - end - - PG_DB.exec(request, args: channel_array) - end - - # ------------------- - # Update - # ------------------- - - def update_author(id : String, author : String) - request = <<-SQL - UPDATE channels - SET updated = now(), author = $1, deleted = false - WHERE id = $2 - SQL - - PG_DB.exec(request, author, id) - end - - def update_subscription_time(id : String) - request = <<-SQL - UPDATE channels - SET subscribed = now() - WHERE id = $1 - SQL - - PG_DB.exec(request, id) - end - - def update_mark_deleted(id : String) - request = <<-SQL - UPDATE channels - SET updated = now(), deleted = true - WHERE id = $1 - SQL - - PG_DB.exec(request, id) - end - - # ------------------- - # Select - # ------------------- - - def select(id : String) : InvidiousChannel? - request = <<-SQL - SELECT * FROM channels - WHERE id = $1 - SQL - - return PG_DB.query_one?(request, id, as: InvidiousChannel) - end - - def select(ids : Array(String)) : Array(InvidiousChannel)? - return [] of InvidiousChannel if ids.empty? - - request = <<-SQL - SELECT * FROM channels - WHERE id = ANY($1) - SQL - - return PG_DB.query_all(request, ids, as: InvidiousChannel) - end -end - -# -# This module contains functions related to the "channel_videos" table. -# -module Invidious::Database::ChannelVideos - extend self - - # ------------------- - # Insert - # ------------------- - - # This function returns the status of the query (i.e: success?) - def insert(video : ChannelVideo, with_premiere_timestamp : Bool = false) : Bool - if with_premiere_timestamp - last_items = "premiere_timestamp = $9, views = $10" - else - last_items = "views = $10" - end - - request = <<-SQL - INSERT INTO channel_videos - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) - ON CONFLICT (id) DO UPDATE - SET title = $2, published = $3, updated = $4, ucid = $5, - author = $6, length_seconds = $7, live_now = $8, #{last_items} - RETURNING (xmax=0) AS was_insert - SQL - - return PG_DB.query_one(request, *video.to_tuple, as: Bool) - end - - # ------------------- - # Select - # ------------------- - - def select(ids : Array(String)) : Array(ChannelVideo) - return [] of ChannelVideo if ids.empty? - - request = <<-SQL - SELECT * FROM channel_videos - WHERE id = ANY($1) - ORDER BY published DESC - SQL - - return PG_DB.query_all(request, ids, as: ChannelVideo) - end - - def select_notfications(ucid : String, since : Time) : Array(ChannelVideo) - request = <<-SQL - SELECT * FROM channel_videos - WHERE ucid = $1 AND published > $2 - ORDER BY published DESC - LIMIT 15 - SQL - - return PG_DB.query_all(request, ucid, since, as: ChannelVideo) - end - - def select_popular_videos : Array(ChannelVideo) - request = <<-SQL - SELECT DISTINCT ON (ucid) * - FROM channel_videos - WHERE ucid IN (SELECT channel FROM (SELECT UNNEST(subscriptions) AS channel FROM users) AS d - GROUP BY channel ORDER BY COUNT(channel) DESC LIMIT 40) - ORDER BY ucid, published DESC - SQL - - PG_DB.query_all(request, as: ChannelVideo) - end -end diff --git a/invidious/src/invidious/database/migration.cr b/invidious/src/invidious/database/migration.cr deleted file mode 100755 index 921d8f3..0000000 --- a/invidious/src/invidious/database/migration.cr +++ /dev/null @@ -1,38 +0,0 @@ -abstract class Invidious::Database::Migration - macro inherited - Migrator.migrations << self - end - - @@version : Int64? - - def self.version(version : Int32 | Int64) - @@version = version.to_i64 - end - - getter? completed = false - - def initialize(@db : DB::Database) - end - - abstract def up(conn : DB::Connection) - - def migrate - # migrator already ignores completed migrations - # but this is an extra check to make sure a migration doesn't run twice - return if completed? - - @db.transaction do |txn| - up(txn.connection) - track(txn.connection) - @completed = true - end - end - - def version : Int64 - @@version.not_nil! - end - - private def track(conn : DB::Connection) - conn.exec("INSERT INTO #{Migrator::MIGRATIONS_TABLE} (version) VALUES ($1)", version) - end -end diff --git a/invidious/src/invidious/database/migrations/0001_create_channels_table.cr b/invidious/src/invidious/database/migrations/0001_create_channels_table.cr deleted file mode 100755 index a1362bc..0000000 --- a/invidious/src/invidious/database/migrations/0001_create_channels_table.cr +++ /dev/null @@ -1,30 +0,0 @@ -module Invidious::Database::Migrations - class CreateChannelsTable < Migration - version 1 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.channels - ( - id text NOT NULL, - author text, - updated timestamp with time zone, - deleted boolean, - subscribed timestamp with time zone, - CONSTRAINT channels_id_key UNIQUE (id) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.channels TO current_user; - SQL - - conn.exec <<-SQL - CREATE INDEX IF NOT EXISTS channels_id_idx - ON public.channels - USING btree - (id COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0002_create_videos_table.cr b/invidious/src/invidious/database/migrations/0002_create_videos_table.cr deleted file mode 100755 index c2ac84f..0000000 --- a/invidious/src/invidious/database/migrations/0002_create_videos_table.cr +++ /dev/null @@ -1,28 +0,0 @@ -module Invidious::Database::Migrations - class CreateVideosTable < Migration - version 2 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE UNLOGGED TABLE IF NOT EXISTS public.videos - ( - id text NOT NULL, - info text, - updated timestamp with time zone, - CONSTRAINT videos_pkey PRIMARY KEY (id) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.videos TO current_user; - SQL - - conn.exec <<-SQL - CREATE UNIQUE INDEX IF NOT EXISTS id_idx - ON public.videos - USING btree - (id COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0003_create_channel_videos_table.cr b/invidious/src/invidious/database/migrations/0003_create_channel_videos_table.cr deleted file mode 100755 index c9b62e4..0000000 --- a/invidious/src/invidious/database/migrations/0003_create_channel_videos_table.cr +++ /dev/null @@ -1,35 +0,0 @@ -module Invidious::Database::Migrations - class CreateChannelVideosTable < Migration - version 3 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.channel_videos - ( - id text NOT NULL, - title text, - published timestamp with time zone, - updated timestamp with time zone, - ucid text, - author text, - length_seconds integer, - live_now boolean, - premiere_timestamp timestamp with time zone, - views bigint, - CONSTRAINT channel_videos_id_key UNIQUE (id) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.channel_videos TO current_user; - SQL - - conn.exec <<-SQL - CREATE INDEX IF NOT EXISTS channel_videos_ucid_idx - ON public.channel_videos - USING btree - (ucid COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0004_create_users_table.cr b/invidious/src/invidious/database/migrations/0004_create_users_table.cr deleted file mode 100755 index a13ba15..0000000 --- a/invidious/src/invidious/database/migrations/0004_create_users_table.cr +++ /dev/null @@ -1,34 +0,0 @@ -module Invidious::Database::Migrations - class CreateUsersTable < Migration - version 4 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.users - ( - updated timestamp with time zone, - notifications text[], - subscriptions text[], - email text NOT NULL, - preferences text, - password text, - token text, - watched text[], - feed_needs_update boolean, - CONSTRAINT users_email_key UNIQUE (email) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.users TO current_user; - SQL - - conn.exec <<-SQL - CREATE UNIQUE INDEX IF NOT EXISTS email_unique_idx - ON public.users - USING btree - (lower(email) COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0005_create_session_ids_table.cr b/invidious/src/invidious/database/migrations/0005_create_session_ids_table.cr deleted file mode 100755 index 13c2228..0000000 --- a/invidious/src/invidious/database/migrations/0005_create_session_ids_table.cr +++ /dev/null @@ -1,28 +0,0 @@ -module Invidious::Database::Migrations - class CreateSessionIdsTable < Migration - version 5 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.session_ids - ( - id text NOT NULL, - email text, - issued timestamp with time zone, - CONSTRAINT session_ids_pkey PRIMARY KEY (id) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.session_ids TO current_user; - SQL - - conn.exec <<-SQL - CREATE INDEX IF NOT EXISTS session_ids_id_idx - ON public.session_ids - USING btree - (id COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0006_create_nonces_table.cr b/invidious/src/invidious/database/migrations/0006_create_nonces_table.cr deleted file mode 100755 index cf1229e..0000000 --- a/invidious/src/invidious/database/migrations/0006_create_nonces_table.cr +++ /dev/null @@ -1,27 +0,0 @@ -module Invidious::Database::Migrations - class CreateNoncesTable < Migration - version 6 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.nonces - ( - nonce text, - expire timestamp with time zone, - CONSTRAINT nonces_id_key UNIQUE (nonce) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.nonces TO current_user; - SQL - - conn.exec <<-SQL - CREATE INDEX IF NOT EXISTS nonces_nonce_idx - ON public.nonces - USING btree - (nonce COLLATE pg_catalog."default"); - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0007_create_annotations_table.cr b/invidious/src/invidious/database/migrations/0007_create_annotations_table.cr deleted file mode 100755 index dcecbc3..0000000 --- a/invidious/src/invidious/database/migrations/0007_create_annotations_table.cr +++ /dev/null @@ -1,20 +0,0 @@ -module Invidious::Database::Migrations - class CreateAnnotationsTable < Migration - version 7 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.annotations - ( - id text NOT NULL, - annotations xml, - CONSTRAINT annotations_id_key UNIQUE (id) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.annotations TO current_user; - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0008_create_playlists_table.cr b/invidious/src/invidious/database/migrations/0008_create_playlists_table.cr deleted file mode 100755 index 6aa16e1..0000000 --- a/invidious/src/invidious/database/migrations/0008_create_playlists_table.cr +++ /dev/null @@ -1,50 +0,0 @@ -module Invidious::Database::Migrations - class CreatePlaylistsTable < Migration - version 8 - - def up(conn : DB::Connection) - if !privacy_type_exists?(conn) - conn.exec <<-SQL - CREATE TYPE public.privacy AS ENUM - ( - 'Public', - 'Unlisted', - 'Private' - ); - SQL - end - - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.playlists - ( - title text, - id text primary key, - author text, - description text, - video_count integer, - created timestamptz, - updated timestamptz, - privacy privacy, - index int8[] - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON public.playlists TO current_user; - SQL - end - - private def privacy_type_exists?(conn : DB::Connection) : Bool - request = <<-SQL - SELECT 1 AS one - FROM pg_type - INNER JOIN pg_namespace ON pg_namespace.oid = pg_type.typnamespace - WHERE pg_namespace.nspname = 'public' - AND pg_type.typname = 'privacy' - LIMIT 1; - SQL - - !conn.query_one?(request, as: Int32).nil? - end - end -end diff --git a/invidious/src/invidious/database/migrations/0009_create_playlist_videos_table.cr b/invidious/src/invidious/database/migrations/0009_create_playlist_videos_table.cr deleted file mode 100755 index 84938b9..0000000 --- a/invidious/src/invidious/database/migrations/0009_create_playlist_videos_table.cr +++ /dev/null @@ -1,27 +0,0 @@ -module Invidious::Database::Migrations - class CreatePlaylistVideosTable < Migration - version 9 - - def up(conn : DB::Connection) - conn.exec <<-SQL - CREATE TABLE IF NOT EXISTS public.playlist_videos - ( - title text, - id text, - author text, - ucid text, - length_seconds integer, - published timestamptz, - plid text references playlists(id), - index int8, - live_now boolean, - PRIMARY KEY (index,plid) - ); - SQL - - conn.exec <<-SQL - GRANT ALL ON TABLE public.playlist_videos TO current_user; - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrations/0010_make_videos_unlogged.cr b/invidious/src/invidious/database/migrations/0010_make_videos_unlogged.cr deleted file mode 100755 index f5d1968..0000000 --- a/invidious/src/invidious/database/migrations/0010_make_videos_unlogged.cr +++ /dev/null @@ -1,11 +0,0 @@ -module Invidious::Database::Migrations - class MakeVideosUnlogged < Migration - version 10 - - def up(conn : DB::Connection) - conn.exec <<-SQL - ALTER TABLE public.videos SET UNLOGGED; - SQL - end - end -end diff --git a/invidious/src/invidious/database/migrator.cr b/invidious/src/invidious/database/migrator.cr deleted file mode 100755 index 660c320..0000000 --- a/invidious/src/invidious/database/migrator.cr +++ /dev/null @@ -1,49 +0,0 @@ -class Invidious::Database::Migrator - MIGRATIONS_TABLE = "public.invidious_migrations" - - class_getter migrations = [] of Invidious::Database::Migration.class - - def initialize(@db : DB::Database) - end - - def migrate - versions = load_versions - - ran_migration = false - load_migrations.sort_by(&.version) - .each do |migration| - next if versions.includes?(migration.version) - - puts "Running migration: #{migration.class.name}" - migration.migrate - ran_migration = true - end - - puts "No migrations to run." unless ran_migration - end - - def pending_migrations? : Bool - versions = load_versions - - load_migrations.sort_by(&.version) - .any? { |migration| !versions.includes?(migration.version) } - end - - private def load_migrations : Array(Invidious::Database::Migration) - self.class.migrations.map(&.new(@db)) - end - - private def load_versions : Array(Int64) - create_migrations_table - @db.query_all("SELECT version FROM #{MIGRATIONS_TABLE}", as: Int64) - end - - private def create_migrations_table - @db.exec <<-SQL - CREATE TABLE IF NOT EXISTS #{MIGRATIONS_TABLE} ( - id bigserial PRIMARY KEY, - version bigint NOT NULL - ) - SQL - end -end diff --git a/invidious/src/invidious/database/nonces.cr b/invidious/src/invidious/database/nonces.cr deleted file mode 100755 index b87c81e..0000000 --- a/invidious/src/invidious/database/nonces.cr +++ /dev/null @@ -1,55 +0,0 @@ -require "./base.cr" - -module Invidious::Database::Nonces - extend self - - # ------------------- - # Insert / Delete - # ------------------- - - def insert(nonce : String, expire : Time) - request = <<-SQL - INSERT INTO nonces - VALUES ($1, $2) - ON CONFLICT DO NOTHING - SQL - - PG_DB.exec(request, nonce, expire) - end - - def delete_expired - request = <<-SQL - DELETE FROM nonces * - WHERE expire < now() - SQL - - PG_DB.exec(request) - end - - # ------------------- - # Update - # ------------------- - - def update_set_expired(nonce : String) - request = <<-SQL - UPDATE nonces - SET expire = $1 - WHERE nonce = $2 - SQL - - PG_DB.exec(request, Time.utc(1990, 1, 1), nonce) - end - - # ------------------- - # Select - # ------------------- - - def select(nonce : String) : Tuple(String, Time)? - request = <<-SQL - SELECT * FROM nonces - WHERE nonce = $1 - SQL - - return PG_DB.query_one?(request, nonce, as: {String, Time}) - end -end diff --git a/invidious/src/invidious/database/playlists.cr b/invidious/src/invidious/database/playlists.cr deleted file mode 100755 index c6754a1..0000000 --- a/invidious/src/invidious/database/playlists.cr +++ /dev/null @@ -1,261 +0,0 @@ -require "./base.cr" - -# -# This module contains functions related to the "playlists" table. -# -module Invidious::Database::Playlists - extend self - - # ------------------- - # Insert / delete - # ------------------- - - def insert(playlist : InvidiousPlaylist) - playlist_array = playlist.to_a - - request = <<-SQL - INSERT INTO playlists - VALUES (#{arg_array(playlist_array)}) - SQL - - PG_DB.exec(request, args: playlist_array) - end - - # deletes the given playlist and connected playlist videos - def delete(id : String) - PlaylistVideos.delete_by_playlist(id) - request = <<-SQL - DELETE FROM playlists * - WHERE id = $1 - SQL - - PG_DB.exec(request, id) - end - - # ------------------- - # Update - # ------------------- - - def update(id : String, title : String, privacy, description, updated) - request = <<-SQL - UPDATE playlists - SET title = $1, privacy = $2, description = $3, updated = $4 - WHERE id = $5 - SQL - - PG_DB.exec(request, title, privacy, description, updated, id) - end - - def update_description(id : String, description) - request = <<-SQL - UPDATE playlists - SET description = $1 - WHERE id = $2 - SQL - - PG_DB.exec(request, description, id) - end - - def update_subscription_time(id : String) - request = <<-SQL - UPDATE playlists - SET subscribed = now() - WHERE id = $1 - SQL - - PG_DB.exec(request, id) - end - - def update_video_added(id : String, index : String | Int64) - request = <<-SQL - UPDATE playlists - SET index = array_append(index, $1), - video_count = cardinality(index) + 1, - updated = now() - WHERE id = $2 - SQL - - PG_DB.exec(request, index, id) - end - - def update_video_removed(id : String, index : String | Int64) - request = <<-SQL - UPDATE playlists - SET index = array_remove(index, $1), - video_count = cardinality(index) - 1, - updated = now() - WHERE id = $2 - SQL - - PG_DB.exec(request, index, id) - end - - # ------------------- - # Salect - # ------------------- - - def select(*, id : String) : InvidiousPlaylist? - request = <<-SQL - SELECT * FROM playlists - WHERE id = $1 - SQL - - return PG_DB.query_one?(request, id, as: InvidiousPlaylist) - end - - def select_all(*, author : String) : Array(InvidiousPlaylist) - request = <<-SQL - SELECT * FROM playlists - WHERE author = $1 - SQL - - return PG_DB.query_all(request, author, as: InvidiousPlaylist) - end - - # ------------------- - # Salect (filtered) - # ------------------- - - def select_like_iv(email : String) : Array(InvidiousPlaylist) - request = <<-SQL - SELECT * FROM playlists - WHERE author = $1 AND id LIKE 'IV%' - ORDER BY created - SQL - - PG_DB.query_all(request, email, as: InvidiousPlaylist) - end - - def select_not_like_iv(email : String) : Array(InvidiousPlaylist) - request = <<-SQL - SELECT * FROM playlists - WHERE author = $1 AND id NOT LIKE 'IV%' - ORDER BY created - SQL - - PG_DB.query_all(request, email, as: InvidiousPlaylist) - end - - def select_user_created_playlists(email : String) : Array({String, String}) - request = <<-SQL - SELECT id,title FROM playlists - WHERE author = $1 AND id LIKE 'IV%' - SQL - - PG_DB.query_all(request, email, as: {String, String}) - end - - # ------------------- - # Misc checks - # ------------------- - - # Check if given playlist ID exists - def exists?(id : String) : Bool - request = <<-SQL - SELECT id FROM playlists - WHERE id = $1 - SQL - - return PG_DB.query_one?(request, id, as: String).nil? - end - - # Count how many playlist a user has created. - def count_owned_by(author : String) : Int64 - request = <<-SQL - SELECT count(*) FROM playlists - WHERE author = $1 - SQL - - return PG_DB.query_one?(request, author, as: Int64) || 0_i64 - end -end - -# -# This module contains functions related to the "playlist_videos" table. -# -module Invidious::Database::PlaylistVideos - extend self - - private alias VideoIndex = Int64 | Array(Int64) - - # ------------------- - # Insert / Delete - # ------------------- - - def insert(video : PlaylistVideo) - video_array = video.to_a - - request = <<-SQL - INSERT INTO playlist_videos - VALUES (#{arg_array(video_array)}) - SQL - - PG_DB.exec(request, args: video_array) - end - - def delete(index) - request = <<-SQL - DELETE FROM playlist_videos * - WHERE index = $1 - SQL - - PG_DB.exec(request, index) - end - - def delete_by_playlist(plid : String) - request = <<-SQL - DELETE FROM playlist_videos * - WHERE plid = $1 - SQL - - PG_DB.exec(request, plid) - end - - # ------------------- - # Salect - # ------------------- - - def select(plid : String, index : VideoIndex, offset, limit = 100) : Array(PlaylistVideo) - request = <<-SQL - SELECT * FROM playlist_videos - WHERE plid = $1 - ORDER BY array_position($2, index) - LIMIT $3 - OFFSET $4 - SQL - - return PG_DB.query_all(request, plid, index, limit, offset, as: PlaylistVideo) - end - - def select_index(plid : String, vid : String) : Int64? - request = <<-SQL - SELECT index FROM playlist_videos - WHERE plid = $1 AND id = $2 - LIMIT 1 - SQL - - return PG_DB.query_one?(request, plid, vid, as: Int64) - end - - def select_one_id(plid : String, index : VideoIndex) : String? - request = <<-SQL - SELECT id FROM playlist_videos - WHERE plid = $1 - ORDER BY array_position($2, index) - LIMIT 1 - SQL - - return PG_DB.query_one?(request, plid, index, as: String) - end - - def select_ids(plid : String, index : VideoIndex, limit = 500) : Array(String) - request = <<-SQL - SELECT id FROM playlist_videos - WHERE plid = $1 - ORDER BY array_position($2, index) - LIMIT $3 - SQL - - return PG_DB.query_all(request, plid, index, limit, as: String) - end -end diff --git a/invidious/src/invidious/database/sessions.cr b/invidious/src/invidious/database/sessions.cr deleted file mode 100755 index 9658708..0000000 --- a/invidious/src/invidious/database/sessions.cr +++ /dev/null @@ -1,74 +0,0 @@ -require "./base.cr" - -module Invidious::Database::SessionIDs - extend self - - # ------------------- - # Insert - # ------------------- - - def insert(sid : String, email : String, handle_conflicts : Bool = false) - request = <<-SQL - INSERT INTO session_ids - VALUES ($1, $2, now()) - SQL - - request += " ON CONFLICT (id) DO NOTHING" if handle_conflicts - - PG_DB.exec(request, sid, email) - end - - # ------------------- - # Delete - # ------------------- - - def delete(*, sid : String) - request = <<-SQL - DELETE FROM session_ids * - WHERE id = $1 - SQL - - PG_DB.exec(request, sid) - end - - def delete(*, email : String) - request = <<-SQL - DELETE FROM session_ids * - WHERE email = $1 - SQL - - PG_DB.exec(request, email) - end - - def delete(*, sid : String, email : String) - request = <<-SQL - DELETE FROM session_ids * - WHERE id = $1 AND email = $2 - SQL - - PG_DB.exec(request, sid, email) - end - - # ------------------- - # Select - # ------------------- - - def select_email(sid : String) : String? - request = <<-SQL - SELECT email FROM session_ids - WHERE id = $1 - SQL - - PG_DB.query_one?(request, sid, as: String) - end - - def select_all(email : String) : Array({session: String, issued: Time}) - request = <<-SQL - SELECT id, issued FROM session_ids - WHERE email = $1 - ORDER BY issued DESC - SQL - - PG_DB.query_all(request, email, as: {session: String, issued: Time}) - end -end diff --git a/invidious/src/invidious/database/statistics.cr b/invidious/src/invidious/database/statistics.cr deleted file mode 100755 index 9e4963f..0000000 --- a/invidious/src/invidious/database/statistics.cr +++ /dev/null @@ -1,49 +0,0 @@ -require "./base.cr" - -module Invidious::Database::Statistics - extend self - - # ------------------- - # User stats - # ------------------- - - def count_users_total : Int64 - request = <<-SQL - SELECT count(*) FROM users - SQL - - PG_DB.query_one(request, as: Int64) - end - - def count_users_active_6m : Int64 - request = <<-SQL - SELECT count(*) FROM users - WHERE CURRENT_TIMESTAMP - updated < '6 months' - SQL - - PG_DB.query_one(request, as: Int64) - end - - def count_users_active_1m : Int64 - request = <<-SQL - SELECT count(*) FROM users - WHERE CURRENT_TIMESTAMP - updated < '1 month' - SQL - - PG_DB.query_one(request, as: Int64) - end - - # ------------------- - # Channel stats - # ------------------- - - def channel_last_update : Time? - request = <<-SQL - SELECT updated FROM channels - ORDER BY updated DESC - LIMIT 1 - SQL - - PG_DB.query_one?(request, as: Time) - end -end diff --git a/invidious/src/invidious/database/users.cr b/invidious/src/invidious/database/users.cr deleted file mode 100755 index d54e6a7..0000000 --- a/invidious/src/invidious/database/users.cr +++ /dev/null @@ -1,228 +0,0 @@ -require "./base.cr" - -module Invidious::Database::Users - extend self - - # ------------------- - # Insert / delete - # ------------------- - - def insert(user : User, update_on_conflict : Bool = false) - user_array = user.to_a - user_array[4] = user_array[4].to_json # User preferences - - request = <<-SQL - INSERT INTO users - VALUES (#{arg_array(user_array)}) - SQL - - if update_on_conflict - request += <<-SQL - ON CONFLICT (email) DO UPDATE - SET updated = $1, subscriptions = $3 - SQL - end - - PG_DB.exec(request, args: user_array) - end - - def delete(user : User) - request = <<-SQL - DELETE FROM users * - WHERE email = $1 - SQL - - PG_DB.exec(request, user.email) - end - - # ------------------- - # Update (history) - # ------------------- - - def update_watch_history(user : User) - request = <<-SQL - UPDATE users - SET watched = $1 - WHERE email = $2 - SQL - - PG_DB.exec(request, user.watched, user.email) - end - - def mark_watched(user : User, vid : String) - request = <<-SQL - UPDATE users - SET watched = array_append(array_remove(watched, $1), $1) - WHERE email = $2 - SQL - - PG_DB.exec(request, vid, user.email) - end - - def mark_unwatched(user : User, vid : String) - request = <<-SQL - UPDATE users - SET watched = array_remove(watched, $1) - WHERE email = $2 - SQL - - PG_DB.exec(request, vid, user.email) - end - - def clear_watch_history(user : User) - request = <<-SQL - UPDATE users - SET watched = '{}' - WHERE email = $1 - SQL - - PG_DB.exec(request, user.email) - end - - # ------------------- - # Update (channels) - # ------------------- - - def update_subscriptions(user : User) - request = <<-SQL - UPDATE users - SET feed_needs_update = true, subscriptions = $1 - WHERE email = $2 - SQL - - PG_DB.exec(request, user.subscriptions, user.email) - end - - def subscribe_channel(user : User, ucid : String) - request = <<-SQL - UPDATE users - SET feed_needs_update = true, - subscriptions = array_append(subscriptions,$1) - WHERE email = $2 - SQL - - PG_DB.exec(request, ucid, user.email) - end - - def unsubscribe_channel(user : User, ucid : String) - request = <<-SQL - UPDATE users - SET feed_needs_update = true, - subscriptions = array_remove(subscriptions, $1) - WHERE email = $2 - SQL - - PG_DB.exec(request, ucid, user.email) - end - - # ------------------- - # Update (notifs) - # ------------------- - - def add_notification(video : ChannelVideo) - request = <<-SQL - UPDATE users - SET notifications = array_append(notifications, $1), - feed_needs_update = true - WHERE $2 = ANY(subscriptions) - SQL - - PG_DB.exec(request, video.id, video.ucid) - end - - def remove_notification(user : User, vid : String) - request = <<-SQL - UPDATE users - SET notifications = array_remove(notifications, $1) - WHERE email = $2 - SQL - - PG_DB.exec(request, vid, user.email) - end - - def clear_notifications(user : User) - request = <<-SQL - UPDATE users - SET notifications = '{}', updated = now() - WHERE email = $1 - SQL - - PG_DB.exec(request, user.email) - end - - # ------------------- - # Update (misc) - # ------------------- - - def feed_needs_update(video : ChannelVideo) - request = <<-SQL - UPDATE users - SET feed_needs_update = true - WHERE $1 = ANY(subscriptions) - SQL - - PG_DB.exec(request, video.ucid) - end - - def update_preferences(user : User) - request = <<-SQL - UPDATE users - SET preferences = $1 - WHERE email = $2 - SQL - - PG_DB.exec(request, user.preferences.to_json, user.email) - end - - def update_password(user : User, pass : String) - request = <<-SQL - UPDATE users - SET password = $1 - WHERE email = $2 - SQL - - PG_DB.exec(request, pass, user.email) - end - - # ------------------- - # Select - # ------------------- - - def select(*, email : String) : User? - request = <<-SQL - SELECT * FROM users - WHERE email = $1 - SQL - - return PG_DB.query_one?(request, email, as: User) - end - - # Same as select, but can raise an exception - def select!(*, email : String) : User - request = <<-SQL - SELECT * FROM users - WHERE email = $1 - SQL - - return PG_DB.query_one(request, email, as: User) - end - - def select(*, token : String) : User? - request = <<-SQL - SELECT * FROM users - WHERE token = $1 - SQL - - return PG_DB.query_one?(request, token, as: User) - end - - def select_notifications(user : User) : Array(String) - request = <<-SQL - SELECT notifications - FROM users - WHERE email = $1 - SQL - - return PG_DB.query_one(request, user.email, as: Array(String)) - end -end diff --git a/invidious/src/invidious/database/videos.cr b/invidious/src/invidious/database/videos.cr deleted file mode 100755 index 695f5b3..0000000 --- a/invidious/src/invidious/database/videos.cr +++ /dev/null @@ -1,52 +0,0 @@ -require "./base.cr" - -module Invidious::Database::Videos - extend self - - def insert(video : Video) - request = <<-SQL - INSERT INTO videos - VALUES ($1, $2, $3) - ON CONFLICT (id) DO NOTHING - SQL - - PG_DB.exec(request, video.id, video.info.to_json, video.updated) - end - - def delete(id) - request = <<-SQL - DELETE FROM videos * - WHERE id = $1 - SQL - - PG_DB.exec(request, id) - end - - def delete_expired - request = <<-SQL - DELETE FROM videos * - WHERE updated < (now() - interval '6 hours') - SQL - - PG_DB.exec(request) - end - - def update(video : Video) - request = <<-SQL - UPDATE videos - SET (id, info, updated) = ($1, $2, $3) - WHERE id = $1 - SQL - - PG_DB.exec(request, video.id, video.info.to_json, video.updated) - end - - def select(id : String) : Video? - request = <<-SQL - SELECT * FROM videos - WHERE id = $1 - SQL - - return PG_DB.query_one?(request, id, as: Video) - end -end diff --git a/invidious/src/invidious/exceptions.cr b/invidious/src/invidious/exceptions.cr deleted file mode 100755 index 690db90..0000000 --- a/invidious/src/invidious/exceptions.cr +++ /dev/null @@ -1,40 +0,0 @@ -# InfoExceptions are for displaying information to the user. -# -# An InfoException might or might not indicate that something went wrong. -# Historically Invidious didn't differentiate between these two options, so to -# maintain previous functionality InfoExceptions do not print backtraces. -class InfoException < Exception -end - -# Exception used to hold the bogus UCID during a channel search. -class ChannelSearchException < InfoException - getter channel : String - - def initialize(@channel) - end -end - -# Exception used to hold the name of the missing item -# Should be used in all parsing functions -class BrokenTubeException < Exception - getter element : String - - def initialize(@element) - end - - def message - return "Missing JSON element \"#{@element}\"" - end -end - -# Exception threw when an element is not found. -class NotFoundException < InfoException -end - -class VideoNotAvailableException < Exception -end - -# Exception used to indicate that the JSON response from YT is missing -# some important informations, and that the query should be sent again. -class RetryOnceException < Exception -end diff --git a/invidious/src/invidious/frontend/channel_page.cr b/invidious/src/invidious/frontend/channel_page.cr deleted file mode 100755 index fe7d6d6..0000000 --- a/invidious/src/invidious/frontend/channel_page.cr +++ /dev/null @@ -1,46 +0,0 @@ -module Invidious::Frontend::ChannelPage - extend self - - enum TabsAvailable - Videos - Shorts - Streams - Podcasts - Releases - Playlists - Community - Channels - end - - def generate_tabs_links(locale : String, channel : AboutChannel, selected_tab : TabsAvailable) - return String.build(1500) do |str| - base_url = "/channel/#{channel.ucid}" - - TabsAvailable.each do |tab| - # Ignore playlists, as it is not supported for auto-generated channels yet - next if (tab.playlists? && channel.auto_generated) - - tab_name = tab.to_s.downcase - - if channel.tabs.includes? tab_name - str << %(
    \n) - - if tab == selected_tab - str << "\t" - str << translate(locale, "channel_tab_#{tab_name}_label") - str << "\n" - else - # Video tab doesn't have the last path component - url = tab.videos? ? base_url : "#{base_url}/#{tab_name}" - - str << %(\t) - str << translate(locale, "channel_tab_#{tab_name}_label") - str << "\n" - end - - str << "
    " - end - end - end - end -end diff --git a/invidious/src/invidious/frontend/comments_reddit.cr b/invidious/src/invidious/frontend/comments_reddit.cr deleted file mode 100755 index 4dda683..0000000 --- a/invidious/src/invidious/frontend/comments_reddit.cr +++ /dev/null @@ -1,50 +0,0 @@ -module Invidious::Frontend::Comments - extend self - - def template_reddit(root, locale) - String.build do |html| - root.each do |child| - if child.data.is_a?(RedditComment) - child = child.data.as(RedditComment) - body_html = HTML.unescape(child.body_html) - - replies_html = "" - if child.replies.is_a?(RedditThing) - replies = child.replies.as(RedditThing) - replies_html = self.template_reddit(replies.data.as(RedditListing).children, locale) - end - - if child.depth > 0 - html << <<-END_HTML -
    -
    -
    -
    - END_HTML - else - html << <<-END_HTML -
    -
    - END_HTML - end - - html << <<-END_HTML -

    - [ − ] - #{child.author} - #{translate_count(locale, "comments_points_count", child.score, NumberFormatting::Separator)} - #{translate(locale, "`x` ago", recode_date(child.created_utc, locale))} - #{translate(locale, "permalink")} -

    -
    - #{body_html} - #{replies_html} -
    -
    -
    - END_HTML - end - end - end - end -end diff --git a/invidious/src/invidious/frontend/comments_youtube.cr b/invidious/src/invidious/frontend/comments_youtube.cr deleted file mode 100755 index aecac87..0000000 --- a/invidious/src/invidious/frontend/comments_youtube.cr +++ /dev/null @@ -1,208 +0,0 @@ -module Invidious::Frontend::Comments - extend self - - def template_youtube(comments, locale, thin_mode, is_replies = false) - String.build do |html| - root = comments["comments"].as_a - root.each do |child| - if child["replies"]? - replies_count_text = translate_count(locale, - "comments_view_x_replies", - child["replies"]["replyCount"].as_i64 || 0, - NumberFormatting::Separator - ) - - replies_html = <<-END_HTML -
    -
    - -
    - END_HTML - elsif comments["authorId"]? && !comments["singlePost"]? - # for posts we should display a link to the post - replies_count_text = translate_count(locale, - "comments_view_x_replies", - child["replyCount"].as_i64 || 0, - NumberFormatting::Separator - ) - - replies_html = <<-END_HTML -
    -
    - -
    - END_HTML - end - - if !thin_mode - author_thumbnail = "/ggpht#{URI.parse(child["authorThumbnails"][-1]["url"].as_s).request_target}" - else - author_thumbnail = "" - end - - author_name = HTML.escape(child["author"].as_s) - sponsor_icon = "" - if child["verified"]?.try &.as_bool && child["authorIsChannelOwner"]?.try &.as_bool - author_name += " " - elsif child["verified"]?.try &.as_bool - author_name += " " - end - - if child["isSponsor"]?.try &.as_bool - sponsor_icon = String.build do |str| - str << %() - end - end - html << <<-END_HTML -
    -
    - -
    -
    -

    - - #{author_name} - - #{sponsor_icon} -

    #{child["contentHtml"]}

    - END_HTML - - if child["attachment"]? - attachment = child["attachment"] - - case attachment["type"] - when "image" - attachment = attachment["imageThumbnails"][1] - - html << <<-END_HTML -
    -
    - -
    -
    - END_HTML - when "video" - if attachment["error"]? - html << <<-END_HTML -
    -

    #{attachment["error"]}

    -
    - END_HTML - else - html << <<-END_HTML -
    - -
    - END_HTML - end - when "multiImage" - html << <<-END_HTML - - END_HTML - else nil # Ignore - end - end - - html << <<-END_HTML -

    - #{translate(locale, "`x` ago", recode_date(Time.unix(child["published"].as_i64), locale))} #{child["isEdited"] == true ? translate(locale, "(edited)") : ""} - | - END_HTML - - if comments["videoId"]? - html << <<-END_HTML - [YT] - | - END_HTML - elsif comments["authorId"]? - html << <<-END_HTML - [YT] - | - END_HTML - end - - html << <<-END_HTML - #{number_with_separator(child["likeCount"])} - END_HTML - - if child["creatorHeart"]? - if !thin_mode - creator_thumbnail = "/ggpht#{URI.parse(child["creatorHeart"]["creatorThumbnail"].as_s).request_target}" - else - creator_thumbnail = "" - end - - html << <<-END_HTML -   - - - - - - - - - END_HTML - end - - html << <<-END_HTML -

    - #{replies_html} -
    -
    - END_HTML - end - - if comments["continuation"]? - html << <<-END_HTML - - END_HTML - end - end - end -end diff --git a/invidious/src/invidious/frontend/misc.cr b/invidious/src/invidious/frontend/misc.cr deleted file mode 100755 index 43ba9f5..0000000 --- a/invidious/src/invidious/frontend/misc.cr +++ /dev/null @@ -1,14 +0,0 @@ -module Invidious::Frontend::Misc - extend self - - def redirect_url(env : HTTP::Server::Context) - prefs = env.get("preferences").as(Preferences) - - if prefs.automatic_instance_redirect - current_page = env.get?("current_page").as(String) - redirect_url = "/redirect?referer=#{current_page}" - else - redirect_url = "https://redirect.invidious.io#{env.request.resource}" - end - end -end diff --git a/invidious/src/invidious/frontend/pagination.cr b/invidious/src/invidious/frontend/pagination.cr deleted file mode 100755 index 3f931f4..0000000 --- a/invidious/src/invidious/frontend/pagination.cr +++ /dev/null @@ -1,97 +0,0 @@ -require "uri" - -module Invidious::Frontend::Pagination - extend self - - private def previous_page(str : String::Builder, locale : String?, url : String) - # Link - str << %() - - if locale_is_rtl?(locale) - # Inverted arrow ("previous" points to the right) - str << translate(locale, "Previous page") - str << "  " - str << %() - else - # Regular arrow ("previous" points to the left) - str << %() - str << "  " - str << translate(locale, "Previous page") - end - - str << "" - end - - private def next_page(str : String::Builder, locale : String?, url : String) - # Link - str << %() - - if locale_is_rtl?(locale) - # Inverted arrow ("next" points to the left) - str << %() - str << "  " - str << translate(locale, "Next page") - else - # Regular arrow ("next" points to the right) - str << translate(locale, "Next page") - str << "  " - str << %() - end - - str << "" - end - - def nav_numeric(locale : String?, *, base_url : String | URI, current_page : Int, show_next : Bool = true) - return String.build do |str| - str << %(
    \n) - str << %(\n) - str << %(
    \n\n) - end - end - - def nav_ctoken(locale : String?, *, base_url : String | URI, ctoken : String?) - return String.build do |str| - str << %(
    \n) - str << %(\n) - str << %(
    \n\n) - end - end -end diff --git a/invidious/src/invidious/frontend/search_filters.cr b/invidious/src/invidious/frontend/search_filters.cr deleted file mode 100755 index 8ac0af2..0000000 --- a/invidious/src/invidious/frontend/search_filters.cr +++ /dev/null @@ -1,135 +0,0 @@ -module Invidious::Frontend::SearchFilters - extend self - - # Generate the search filters collapsable widget. - def generate(filters : Search::Filters, query : String, page : Int, locale : String) : String - return String.build(8000) do |str| - str << "
    \n" - str << "\t
    " - str << "\t\t" << translate(locale, "search_filters_title") << "\n" - - str << "\t\t
    \n" - - str << "\t\t\t\n" - str << "\t\t\t\n" - - str << "\t\t\t
    " - - filter_wrapper(date) - filter_wrapper(type) - filter_wrapper(duration) - filter_wrapper(features) - filter_wrapper(sort) - - str << "\t\t\t
    \n" - - str << "\t\t\t
    " - str << "
    \n" - - str << "\t\t
    \n" - - str << "\t
    \n" - str << "
    \n" - end - end - - # Generate wrapper HTML (`
    `, filter name, etc...) around the - # `` elements of a search filter - macro filter_wrapper(name) - str << "\t\t\t\t
    \n" - - str << "\t\t\t\t\t
    " - str << translate(locale, "search_filters_{{name}}_label") - str << "
    \n" - - str << "\t\t\t\t\t
    \n" - make_{{name}}_filter_options(str, filters.{{name}}, locale) - str << "\t\t\t\t\t
    " - - str << "\t\t\t\t
    \n" - end - - # Generates the HTML for the list of radio buttons of the "date" search filter - def make_date_filter_options(str : String::Builder, value : Search::Filters::Date, locale : String) - {% for value in Invidious::Search::Filters::Date.constants %} - {% date = value.underscore %} - - str << "\t\t\t\t\t\t
    " - str << "' - - str << "
    \n" - {% end %} - end - - # Generates the HTML for the list of radio buttons of the "type" search filter - def make_type_filter_options(str : String::Builder, value : Search::Filters::Type, locale : String) - {% for value in Invidious::Search::Filters::Type.constants %} - {% type = value.underscore %} - - str << "\t\t\t\t\t\t
    " - str << "' - - str << "
    \n" - {% end %} - end - - # Generates the HTML for the list of radio buttons of the "duration" search filter - def make_duration_filter_options(str : String::Builder, value : Search::Filters::Duration, locale : String) - {% for value in Invidious::Search::Filters::Duration.constants %} - {% duration = value.underscore %} - - str << "\t\t\t\t\t\t
    " - str << "' - - str << "
    \n" - {% end %} - end - - # Generates the HTML for the list of checkboxes of the "features" search filter - def make_features_filter_options(str : String::Builder, value : Search::Filters::Features, locale : String) - {% for value in Invidious::Search::Filters::Features.constants %} - {% if value.stringify != "All" && value.stringify != "None" %} - {% feature = value.underscore %} - - str << "\t\t\t\t\t\t
    " - str << "' - - str << "
    \n" - {% end %} - {% end %} - end - - # Generates the HTML for the list of radio buttons of the "sort" search filter - def make_sort_filter_options(str : String::Builder, value : Search::Filters::Sort, locale : String) - {% for value in Invidious::Search::Filters::Sort.constants %} - {% sort = value.underscore %} - - str << "\t\t\t\t\t\t
    " - str << "' - - str << "
    \n" - {% end %} - end -end diff --git a/invidious/src/invidious/frontend/watch_page.cr b/invidious/src/invidious/frontend/watch_page.cr deleted file mode 100755 index c8cb711..0000000 --- a/invidious/src/invidious/frontend/watch_page.cr +++ /dev/null @@ -1,107 +0,0 @@ -module Invidious::Frontend::WatchPage - extend self - - # A handy structure to pass many elements at - # once to the download widget function - struct VideoAssets - getter full_videos : Array(Hash(String, JSON::Any)) - getter video_streams : Array(Hash(String, JSON::Any)) - getter audio_streams : Array(Hash(String, JSON::Any)) - getter captions : Array(Invidious::Videos::Captions::Metadata) - - def initialize( - @full_videos, - @video_streams, - @audio_streams, - @captions - ) - end - end - - def download_widget(locale : String, video : Video, video_assets : VideoAssets) : String - if CONFIG.disabled?("downloads") - return "

    #{translate(locale, "Download is disabled")}

    " - end - - return String.build(4000) do |str| - str << "" - str << '\n' - - # Hidden inputs for video id and title - str << "\n" - str << "\n" - - str << "\t
    \n" - - str << "\t\t\n" - - str << "\t\t\n" - str << "\t
    \n" - - str << "\t\n" - - str << "\n" - end - end -end diff --git a/invidious/src/invidious/hashtag.cr b/invidious/src/invidious/hashtag.cr deleted file mode 100755 index d9d584c..0000000 --- a/invidious/src/invidious/hashtag.cr +++ /dev/null @@ -1,42 +0,0 @@ -module Invidious::Hashtag - extend self - - def fetch(hashtag : String, page : Int, region : String? = nil) : Array(SearchItem) - cursor = (page - 1) * 60 - ctoken = generate_continuation(hashtag, cursor) - - client_config = YoutubeAPI::ClientConfig.new(region: region) - response = YoutubeAPI.browse(continuation: ctoken, client_config: client_config) - - items, _ = extract_items(response) - return items - end - - def generate_continuation(hashtag : String, cursor : Int) - object = { - "80226972:embedded" => { - "2:string" => "FEhashtag", - "3:base64" => { - "1:varint" => 60_i64, # result count - "15:base64" => { - "1:varint" => cursor.to_i64, - "2:varint" => 0_i64, - }, - "93:2:embedded" => { - "1:string" => hashtag, - "2:varint" => 0_i64, - "3:varint" => 1_i64, - }, - }, - "35:string" => "browse-feedFEhashtag", - }, - } - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation - end -end diff --git a/invidious/src/invidious/helpers/crystal_class_overrides.cr b/invidious/src/invidious/helpers/crystal_class_overrides.cr deleted file mode 100755 index bf56d82..0000000 --- a/invidious/src/invidious/helpers/crystal_class_overrides.cr +++ /dev/null @@ -1,70 +0,0 @@ -# Override of the TCPSocket and HTTP::Client classes in order to allow an -# IP family to be selected for domains that resolve to both IPv4 and -# IPv6 addresses. -# -class TCPSocket - def initialize(host : String, port, dns_timeout = nil, connect_timeout = nil, family = Socket::Family::UNSPEC) - Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo| - super(addrinfo.family, addrinfo.type, addrinfo.protocol) - connect(addrinfo, timeout: connect_timeout) do |error| - close - error - end - end - end -end - -# :ditto: -class HTTP::Client - property family : Socket::Family = Socket::Family::UNSPEC - - private def io - io = @io - return io if io - unless @reconnect - raise "This HTTP::Client cannot be reconnected" - end - - hostname = @host.starts_with?('[') && @host.ends_with?(']') ? @host[1..-2] : @host - io = TCPSocket.new hostname, @port, @dns_timeout, @connect_timeout, @family - io.read_timeout = @read_timeout if @read_timeout - io.write_timeout = @write_timeout if @write_timeout - io.sync = false - - {% if !flag?(:without_openssl) %} - if tls = @tls - tcp_socket = io - begin - io = OpenSSL::SSL::Socket::Client.new(tcp_socket, context: tls, sync_close: true, hostname: @host) - rescue exc - # don't leak the TCP socket when the SSL connection failed - tcp_socket.close - raise exc - end - end - {% end %} - - @io = io - end -end - -# Mute the ClientError exception raised when a connection is flushed. -# This happends when the connection is unexpectedly closed by the client. -# -class HTTP::Server::Response - class Output - private def unbuffered_flush - @io.flush - rescue ex : IO::Error - unbuffered_close - end - end -end - -# TODO: Document this override -# -class PG::ResultSet - def field(index = @column_index) - @fields.not_nil![index] - end -end diff --git a/invidious/src/invidious/helpers/errors.cr b/invidious/src/invidious/helpers/errors.cr deleted file mode 100755 index 21b789b..0000000 --- a/invidious/src/invidious/helpers/errors.cr +++ /dev/null @@ -1,200 +0,0 @@ -# ------------------- -# Issue template -# ------------------- - -macro error_template(*args) - error_template_helper(env, {{args.splat}}) -end - -def github_details(summary : String, content : String) - details = %(\n
    ) - details += %(\n#{summary}) - details += %(\n

    ) - details += %(\n \n```\n) - details += content.strip - details += %(\n```) - details += %(\n

    ) - details += %(\n
    ) - return HTML.escape(details) -end - -def error_template_helper(env : HTTP::Server::Context, status_code : Int32, exception : Exception) - if exception.is_a?(InfoException) - return error_template_helper(env, status_code, exception.message || "") - end - - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "text/html" - env.response.status_code = status_code - - issue_title = "#{exception.message} (#{exception.class})" - - issue_template = <<-TEXT - Title: `#{HTML.escape(issue_title)}` - Date: `#{Time::Format::ISO_8601_DATE_TIME.format(Time.utc)}` - Route: `#{HTML.escape(env.request.resource)}` - Version: `#{SOFTWARE["version"]} @ #{SOFTWARE["branch"]}` - - TEXT - - issue_template += github_details("Backtrace", exception.inspect_with_backtrace) - - # URLs for the error message below - url_faq = "https://github.com/iv-org/documentation/blob/master/docs/faq.md" - url_search_issues = "https://github.com/iv-org/invidious/issues" - - url_switch = "https://redirect.invidious.io" + env.request.resource - - url_new_issue = "https://github.com/iv-org/invidious/issues/new" - url_new_issue += "?labels=bug&template=bug_report.md&title=" - url_new_issue += URI.encode_www_form("[Bug] " + issue_title) - - error_message = <<-END_HTML -
    -

    #{translate(locale, "crash_page_you_found_a_bug")}

    -

    - -

    #{translate(locale, "crash_page_before_reporting")}

    -
      -
    • #{translate(locale, "crash_page_refresh", env.request.resource)}
    • -
    • #{translate(locale, "crash_page_switch_instance", url_switch)}
    • -
    • #{translate(locale, "crash_page_read_the_faq", url_faq)}
    • -
    • #{translate(locale, "crash_page_search_issue", url_search_issues)}
    • -
    - -
    -

    #{translate(locale, "crash_page_report_issue", url_new_issue)}

    - - -
    #{issue_template}
    -
    - END_HTML - - # Don't show the usual "next steps" widget. The same options are - # proposed above the error message, just worded differently. - next_steps = "" - - return templated "error" -end - -def error_template_helper(env : HTTP::Server::Context, status_code : Int32, message : String) - env.response.content_type = "text/html" - env.response.status_code = status_code - - locale = env.get("preferences").as(Preferences).locale - - error_message = translate(locale, message) - next_steps = error_redirect_helper(env) - - return templated "error" -end - -# ------------------- -# Atom feeds -# ------------------- - -macro error_atom(*args) - error_atom_helper(env, {{args.splat}}) -end - -def error_atom_helper(env : HTTP::Server::Context, status_code : Int32, exception : Exception) - if exception.is_a?(InfoException) - return error_atom_helper(env, status_code, exception.message || "") - end - - env.response.content_type = "application/atom+xml" - env.response.status_code = status_code - - return "#{exception.inspect_with_backtrace}" -end - -def error_atom_helper(env : HTTP::Server::Context, status_code : Int32, message : String) - env.response.content_type = "application/atom+xml" - env.response.status_code = status_code - - return "#{message}" -end - -# ------------------- -# JSON -# ------------------- - -macro error_json(*args) - error_json_helper(env, {{args.splat}}) -end - -def error_json_helper( - env : HTTP::Server::Context, - status_code : Int32, - exception : Exception, - additional_fields : Hash(String, Object) | Nil = nil -) - if exception.is_a?(InfoException) - return error_json_helper(env, status_code, exception.message || "", additional_fields) - end - - env.response.content_type = "application/json" - env.response.status_code = status_code - - error_message = {"error" => exception.message, "errorBacktrace" => exception.inspect_with_backtrace} - - if additional_fields - error_message = error_message.merge(additional_fields) - end - - return error_message.to_json -end - -def error_json_helper( - env : HTTP::Server::Context, - status_code : Int32, - message : String, - additional_fields : Hash(String, Object) | Nil = nil -) - env.response.content_type = "application/json" - env.response.status_code = status_code - - error_message = {"error" => message} - - if additional_fields - error_message = error_message.merge(additional_fields) - end - - return error_message.to_json -end - -# ------------------- -# Redirect -# ------------------- - -def error_redirect_helper(env : HTTP::Server::Context) - request_path = env.request.path - - locale = env.get("preferences").as(Preferences).locale - - if request_path.starts_with?("/search") || request_path.starts_with?("/watch") || - request_path.starts_with?("/channel") || request_path.starts_with?("/playlist?list=PL") - next_steps_text = translate(locale, "next_steps_error_message") - refresh = translate(locale, "next_steps_error_message_refresh") - go_to_youtube = translate(locale, "next_steps_error_message_go_to_youtube") - switch_instance = translate(locale, "Switch Invidious Instance") - - return <<-END_HTML -

    #{next_steps_text}

    - - END_HTML - else - return "" - end -end diff --git a/invidious/src/invidious/helpers/handlers.cr b/invidious/src/invidious/helpers/handlers.cr deleted file mode 100755 index 174f620..0000000 --- a/invidious/src/invidious/helpers/handlers.cr +++ /dev/null @@ -1,159 +0,0 @@ -module HTTP::Handler - @@exclude_routes_tree = Radix::Tree(String).new - - macro exclude(paths, method = "GET") - class_name = {{@type.name}} - method_downcase = {{method.downcase}} - class_name_method = "#{class_name}/#{method_downcase}" - ({{paths}}).each do |path| - @@exclude_routes_tree.add class_name_method + path, '/' + method_downcase + path - end - end - - def exclude_match?(env : HTTP::Server::Context) - @@exclude_routes_tree.find(radix_path(env.request.method, env.request.path)).found? - end - - private def radix_path(method : String, path : String) - "#{self.class}/#{method.downcase}#{path}" - end -end - -class Kemal::RouteHandler - {% for method in %w(GET POST PUT HEAD DELETE PATCH OPTIONS) %} - exclude ["/api/v1/*"], {{method}} - {% end %} - - # Processes the route if it's a match. Otherwise renders 404. - private def process_request(context) - raise Kemal::Exceptions::RouteNotFound.new(context) unless context.route_found? - content = context.route.handler.call(context) - - if !Kemal.config.error_handlers.empty? && Kemal.config.error_handlers.has_key?(context.response.status_code) && exclude_match?(context) - raise Kemal::Exceptions::CustomException.new(context) - end - - if context.request.method == "HEAD" && context.request.path.ends_with? ".jpg" - context.response.headers["Content-Type"] = "image/jpeg" - end - - context.response.print(content) - context - end -end - -class Kemal::ExceptionHandler - {% for method in %w(GET POST PUT HEAD DELETE PATCH OPTIONS) %} - exclude ["/api/v1/*"], {{method}} - {% end %} - - private def call_exception_with_status_code(context : HTTP::Server::Context, exception : Exception, status_code : Int32) - return if context.response.closed? - return if exclude_match? context - - if !Kemal.config.error_handlers.empty? && Kemal.config.error_handlers.has_key?(status_code) - context.response.content_type = "text/html" unless context.response.headers.has_key?("Content-Type") - context.response.status_code = status_code - context.response.print Kemal.config.error_handlers[status_code].call(context, exception) - context - end - end -end - -class FilteredCompressHandler < Kemal::Handler - exclude ["/videoplayback", "/videoplayback/*", "/vi/*", "/sb/*", "/ggpht/*", "/api/v1/auth/notifications"] - exclude ["/api/v1/auth/notifications", "/data_control"], "POST" - - def call(env) - return call_next env if exclude_match? env - - {% if flag?(:without_zlib) %} - call_next env - {% else %} - request_headers = env.request.headers - - if request_headers.includes_word?("Accept-Encoding", "gzip") - env.response.headers["Content-Encoding"] = "gzip" - env.response.output = Compress::Gzip::Writer.new(env.response.output, sync_close: true) - elsif request_headers.includes_word?("Accept-Encoding", "deflate") - env.response.headers["Content-Encoding"] = "deflate" - env.response.output = Compress::Deflate::Writer.new(env.response.output, sync_close: true) - end - - call_next env - {% end %} - end -end - -class AuthHandler < Kemal::Handler - {% for method in %w(GET POST PUT HEAD DELETE PATCH OPTIONS) %} - only ["/api/v1/auth/*"], {{method}} - {% end %} - - def call(env) - return call_next env unless only_match? env - - begin - if token = env.request.headers["Authorization"]? - token = JSON.parse(URI.decode_www_form(token.lchop("Bearer "))) - session = URI.decode_www_form(token["session"].as_s) - scopes, expire, signature = validate_request(token, session, env.request, HMAC_KEY, nil) - - if email = Invidious::Database::SessionIDs.select_email(session) - user = Invidious::Database::Users.select!(email: email) - end - elsif sid = env.request.cookies["SID"]?.try &.value - if sid.starts_with? "v1:" - raise "Cannot use token as SID" - end - - if email = Invidious::Database::SessionIDs.select_email(sid) - user = Invidious::Database::Users.select!(email: email) - end - - scopes = [":*"] - session = sid - end - - if !user - raise "Request must be authenticated" - end - - env.set "scopes", scopes - env.set "user", user - env.set "session", session - - call_next env - rescue ex - env.response.content_type = "application/json" - - error_message = {"error" => ex.message}.to_json - env.response.status_code = 403 - env.response.print error_message - end - end -end - -class APIHandler < Kemal::Handler - {% for method in %w(GET POST PUT HEAD DELETE PATCH OPTIONS) %} - only ["/api/v1/*"], {{method}} - {% end %} - exclude ["/api/v1/auth/notifications"], "GET" - exclude ["/api/v1/auth/notifications"], "POST" - - def call(env) - env.response.headers["Access-Control-Allow-Origin"] = "*" if only_match?(env) - call_next env - end -end - -class DenyFrame < Kemal::Handler - exclude ["/embed/*"] - - def call(env) - return call_next env if exclude_match? env - - env.response.headers["X-Frame-Options"] = "sameorigin" - call_next env - end -end diff --git a/invidious/src/invidious/helpers/helpers.cr b/invidious/src/invidious/helpers/helpers.cr deleted file mode 100755 index 6add023..0000000 --- a/invidious/src/invidious/helpers/helpers.cr +++ /dev/null @@ -1,200 +0,0 @@ -require "./macros" - -struct Nonce - include DB::Serializable - - property nonce : String - property expire : Time -end - -struct SessionId - include DB::Serializable - - property id : String - property email : String - property issued : String -end - -struct Annotation - include DB::Serializable - - property id : String - property annotations : String -end - -def html_to_content(description_html : String) - description = description_html.gsub(/(
    )|()/, { - "
    ": "\n", - "
    ": "\n", - }) - - if !description.empty? - description = XML.parse_html(description).content.strip("\n ") - end - - return description -end - -def cache_annotation(id, annotations) - if !CONFIG.cache_annotations - return - end - - body = XML.parse(annotations) - nodeset = body.xpath_nodes(%q(/document/annotations/annotation)) - - return if nodeset == 0 - - has_legacy_annotations = false - nodeset.each do |node| - if !{"branding", "card", "drawer"}.includes? node["type"]? - has_legacy_annotations = true - break - end - end - - Invidious::Database::Annotations.insert(id, annotations) if has_legacy_annotations -end - -def create_notification_stream(env, topics, connection_channel) - connection = Channel(PQ::Notification).new(8) - connection_channel.send({true, connection}) - - locale = env.get("preferences").as(Preferences).locale - - since = env.params.query["since"]?.try &.to_i? - id = 0 - - if topics.includes? "debug" - spawn do - begin - loop do - time_span = [0, 0, 0, 0] - time_span[rand(4)] = rand(30) + 5 - published = Time.utc - Time::Span.new(days: time_span[0], hours: time_span[1], minutes: time_span[2], seconds: time_span[3]) - video_id = TEST_IDS[rand(TEST_IDS.size)] - - video = get_video(video_id) - video.published = published - response = JSON.parse(video.to_json(locale, nil)) - - env.response.puts "id: #{id}" - env.response.puts "data: #{response.to_json}" - env.response.puts - env.response.flush - - id += 1 - - sleep 1.minute - Fiber.yield - end - rescue ex - end - end - end - - spawn do - begin - if since - since_unix = Time.unix(since.not_nil!) - - topics.try &.each do |topic| - case topic - when .match(/UC[A-Za-z0-9_-]{22}/) - Invidious::Database::ChannelVideos.select_notfications(topic, since_unix).each do |video| - response = JSON.parse(video.to_json(locale)) - - env.response.puts "id: #{id}" - env.response.puts "data: #{response.to_json}" - env.response.puts - env.response.flush - - id += 1 - end - else - # TODO - end - end - end - end - end - - spawn do - begin - loop do - event = connection.receive - - notification = JSON.parse(event.payload) - topic = notification["topic"].as_s - video_id = notification["videoId"].as_s - published = notification["published"].as_i64 - - if !topics.try &.includes? topic - next - end - - video = get_video(video_id) - video.published = Time.unix(published) - response = JSON.parse(video.to_json(locale, nil)) - - env.response.puts "id: #{id}" - env.response.puts "data: #{response.to_json}" - env.response.puts - env.response.flush - - id += 1 - end - rescue ex - ensure - connection_channel.send({false, connection}) - end - end - - begin - # Send heartbeat - loop do - env.response.puts ":keepalive #{Time.utc.to_unix}" - env.response.puts - env.response.flush - sleep (20 + rand(11)).seconds - end - rescue ex - ensure - connection_channel.send({false, connection}) - end -end - -def extract_initial_data(body) : Hash(String, JSON::Any) - return JSON.parse(body.match(/(window\["ytInitialData"\]|var\s*ytInitialData)\s*=\s*(?{.*?});<\/script>/mx).try &.["info"] || "{}").as_h -end - -def proxy_file(response, env) - if response.headers.includes_word?("Content-Encoding", "gzip") - Compress::Gzip::Writer.open(env.response) do |deflate| - IO.copy response.body_io, deflate - end - elsif response.headers.includes_word?("Content-Encoding", "deflate") - Compress::Deflate::Writer.open(env.response) do |deflate| - IO.copy response.body_io, deflate - end - else - IO.copy response.body_io, env.response - end -end - -# Fetch the playback requests tracker from the statistics endpoint. -# -# Creates a new tracker when unavailable. -def get_playback_statistic - if (tracker = Invidious::Jobs::StatisticsRefreshJob::STATISTICS["playback"]) && tracker.as(Hash).empty? - tracker = { - "totalRequests" => 0_i64, - "successfulRequests" => 0_i64, - "ratio" => 0_f64, - } - - Invidious::Jobs::StatisticsRefreshJob::STATISTICS["playback"] = tracker - end - - return tracker.as(Hash(String, Int64 | Float64)) -end diff --git a/invidious/src/invidious/helpers/i18n.cr b/invidious/src/invidious/helpers/i18n.cr deleted file mode 100755 index 23a1aaf..0000000 --- a/invidious/src/invidious/helpers/i18n.cr +++ /dev/null @@ -1,183 +0,0 @@ -LOCALES_LIST = { - "ar" => "العربية", # Arabic - "bn" => "বাংলা", # Bengali - "ca" => "Català", # Catalan - "cs" => "Čeština", # Czech - "da" => "Dansk", # Danish - "de" => "Deutsch", # German - "el" => "Ελληνικά", # Greek - "en-US" => "English", # English - "eo" => "Esperanto", # Esperanto - "es" => "Español", # Spanish - "et" => "Eesti keel", # Estonian - "eu" => "Euskara", # Basque - "fa" => "فارسی", # Persian - "fi" => "Suomi", # Finnish - "fr" => "Français", # French - "he" => "עברית", # Hebrew - "hi" => "हिन्दी", # Hindi - "hr" => "Hrvatski", # Croatian - "hu-HU" => "Magyar Nyelv", # Hungarian - "id" => "Bahasa Indonesia", # Indonesian - "is" => "Íslenska", # Icelandic - "it" => "Italiano", # Italian - "ja" => "日本語", # Japanese - "ko" => "한국어", # Korean - "lt" => "Lietuvių", # Lithuanian - "nb-NO" => "Norsk bokmål", # Norwegian Bokmål - "nl" => "Nederlands", # Dutch - "pl" => "Polski", # Polish - "pt" => "Português", # Portuguese - "pt-BR" => "Português Brasileiro", # Portuguese (Brazil) - "pt-PT" => "Português de Portugal", # Portuguese (Portugal) - "ro" => "Română", # Romanian - "ru" => "Русский", # Russian - "si" => "සිංහල", # Sinhala - "sk" => "Slovenčina", # Slovak - "sl" => "Slovenščina", # Slovenian - "sq" => "Shqip", # Albanian - "sr" => "Srpski (latinica)", # Serbian (Latin) - "sr_Cyrl" => "Српски (ћирилица)", # Serbian (Cyrillic) - "sv-SE" => "Svenska", # Swedish - "tr" => "Türkçe", # Turkish - "uk" => "Українська", # Ukrainian - "vi" => "Tiếng Việt", # Vietnamese - "zh-CN" => "汉语", # Chinese (Simplified) - "zh-TW" => "漢語", # Chinese (Traditional) -} - -LOCALES = load_all_locales() - -CONTENT_REGIONS = { - "AE", "AR", "AT", "AU", "AZ", "BA", "BD", "BE", "BG", "BH", "BO", "BR", "BY", - "CA", "CH", "CL", "CO", "CR", "CY", "CZ", "DE", "DK", "DO", "DZ", "EC", "EE", - "EG", "ES", "FI", "FR", "GB", "GE", "GH", "GR", "GT", "HK", "HN", "HR", "HU", - "ID", "IE", "IL", "IN", "IQ", "IS", "IT", "JM", "JO", "JP", "KE", "KR", "KW", - "KZ", "LB", "LI", "LK", "LT", "LU", "LV", "LY", "MA", "ME", "MK", "MT", "MX", - "MY", "NG", "NI", "NL", "NO", "NP", "NZ", "OM", "PA", "PE", "PG", "PH", "PK", - "PL", "PR", "PT", "PY", "QA", "RO", "RS", "RU", "SA", "SE", "SG", "SI", "SK", - "SN", "SV", "TH", "TN", "TR", "TW", "TZ", "UA", "UG", "US", "UY", "VE", "VN", - "YE", "ZA", "ZW", -} - -# Enum for the different types of number formats -enum NumberFormatting - None # Print the number as-is - Separator # Use a separator for thousands - Short # Use short notation (k/M/B) - HtmlSpan # Surround with -end - -def load_all_locales - locales = {} of String => Hash(String, JSON::Any) - - LOCALES_LIST.each_key do |name| - locales[name] = JSON.parse(File.read("locales/#{name}.json")).as_h - end - - return locales -end - -def translate(locale : String?, key : String, text : String | Hash(String, String) | Nil = nil) : String - # Log a warning if "key" doesn't exist in en-US locale and return - # that key as the text, so this is more or less transparent to the user. - if !LOCALES["en-US"].has_key?(key) - LOGGER.warn("i18n: Missing translation key \"#{key}\"") - return key - end - - # Default to english, whenever the locale doesn't exist, - # or the key requested has not been translated - if locale && LOCALES.has_key?(locale) && LOCALES[locale].has_key?(key) - raw_data = LOCALES[locale][key] - else - raw_data = LOCALES["en-US"][key] - end - - case raw_data - when .as_h? - # Init - translation = "" - match_length = 0 - - raw_data.as_h.each do |hash_key, value| - if text.is_a?(String) - if md = text.try &.match(/#{hash_key}/) - if md[0].size >= match_length - translation = value.as_s - match_length = md[0].size - end - end - end - end - when .as_s? - translation = raw_data.as_s - else - raise "Invalid translation \"#{raw_data}\"" - end - - if text.is_a?(String) - translation = translation.gsub("`x`", text) - elsif text.is_a?(Hash(String, String)) - # adds support for multi string interpolation. Based on i18next https://www.i18next.com/translation-function/interpolation#basic - text.each_key do |hash_key| - translation = translation.gsub("{{#{hash_key}}}", text[hash_key]) - end - end - - return translation -end - -def translate_count(locale : String, key : String, count : Int, format = NumberFormatting::None) : String - # Fallback on english if locale doesn't exist - locale = "en-US" if !LOCALES.has_key?(locale) - - # Retrieve suffix - suffix = I18next::Plurals::RESOLVER.get_suffix(locale, count) - plural_key = key + suffix - - if LOCALES[locale].has_key?(plural_key) - translation = LOCALES[locale][plural_key].as_s - else - # Try #1: Fallback to singular in the same locale - singular_suffix = I18next::Plurals::RESOLVER.get_suffix(locale, 1) - - if LOCALES[locale].has_key?(key + singular_suffix) - translation = LOCALES[locale][key + singular_suffix].as_s - elsif locale != "en-US" - # Try #2: Fallback to english - translation = translate_count("en-US", key, count) - else - # Return key if we're already in english, as the translation is missing - LOGGER.warn("i18n: Missing translation key \"#{key}\"") - return key - end - end - - case format - when .separator? then count_txt = number_with_separator(count) - when .short? then count_txt = number_to_short_text(count) - when .html_span? then count_txt = "" + count.to_s + "" - else count_txt = count.to_s - end - - return translation.gsub("{{count}}", count_txt) -end - -def translate_bool(locale : String?, translation : Bool) - case translation - when true - return translate(locale, "Yes") - when false - return translate(locale, "No") - end -end - -def locale_is_rtl?(locale : String?) - # Fallback to en-US - return false if locale.nil? - - # Arabic, Persian, Hebrew - # See https://en.wikipedia.org/wiki/Right-to-left_script#List_of_RTL_scripts - return {"ar", "fa", "he"}.includes? locale -end diff --git a/invidious/src/invidious/helpers/i18next.cr b/invidious/src/invidious/helpers/i18next.cr deleted file mode 100755 index 9f4077e..0000000 --- a/invidious/src/invidious/helpers/i18next.cr +++ /dev/null @@ -1,567 +0,0 @@ -# I18next-compatible implementation of plural forms -# -module I18next::Plurals - # ----------------------------------- - # I18next plural forms definition - # ----------------------------------- - - enum PluralForms - # One singular, one plural forms - Single_gt_one = 1 # E.g: French - Single_not_one = 2 # E.g: English - - # No plural forms (E.g: Azerbaijani) - None = 3 - - # One singular, two plural forms - Dual_Slavic = 4 # E.g: Russian - - # Special cases (rules used by only one or two language(s)) - Special_Arabic = 5 - Special_Czech_Slovak = 6 - Special_Polish_Kashubian = 7 - Special_Welsh = 8 - Special_Irish = 10 - Special_Scottish_Gaelic = 11 - Special_Icelandic = 12 - Special_Javanese = 13 - Special_Cornish = 14 - Special_Lithuanian = 15 - Special_Latvian = 16 - Special_Macedonian = 17 - Special_Mandinka = 18 - Special_Maltese = 19 - Special_Romanian = 20 - Special_Slovenian = 21 - Special_Hebrew = 22 - Special_Odia = 23 - - # Mixed v3/v4 rules in Weblate - # `es`, `pt` and `pt-PT` doesn't seem to have been refreshed - # by weblate yet, but I suspect it will happen one day. - # See: https://github.com/translate/translate/issues/4873 - Special_French_Portuguese - Special_Hungarian_Serbian - Special_Spanish_Italian - end - - private PLURAL_SETS = { - PluralForms::Single_gt_one => [ - "ach", "ak", "am", "arn", "br", "fa", "fil", "gun", "ln", "mfe", "mg", - "mi", "oc", "pt-PT", "tg", "tl", "ti", "tr", "uz", "wa", - ], - PluralForms::Single_not_one => [ - "af", "an", "ast", "az", "bg", "bn", "ca", "da", "de", "dev", "el", "en", - "eo", "et", "eu", "fi", "fo", "fur", "fy", "gl", "gu", "ha", "hi", - "hu", "hy", "ia", "kk", "kn", "ku", "lb", "mai", "ml", "mn", "mr", - "nah", "nap", "nb", "ne", "nl", "nn", "no", "nso", "pa", "pap", "pms", - "ps", "rm", "sco", "se", "si", "so", "son", "sq", "sv", "sw", - "ta", "te", "tk", "ur", "yo", - ], - PluralForms::None => [ - "ay", "bo", "cgg", "ht", "id", "ja", "jbo", "ka", "km", "ko", "ky", - "lo", "ms", "sah", "su", "th", "tt", "ug", "vi", "wo", "zh", - ], - PluralForms::Dual_Slavic => [ - "be", "bs", "cnr", "dz", "ru", "uk", - ], - } - - private PLURAL_SINGLES = { - "ar" => PluralForms::Special_Arabic, - "cs" => PluralForms::Special_Czech_Slovak, - "csb" => PluralForms::Special_Polish_Kashubian, - "cy" => PluralForms::Special_Welsh, - "ga" => PluralForms::Special_Irish, - "gd" => PluralForms::Special_Scottish_Gaelic, - "he" => PluralForms::Special_Hebrew, - "is" => PluralForms::Special_Icelandic, - "iw" => PluralForms::Special_Hebrew, - "jv" => PluralForms::Special_Javanese, - "kw" => PluralForms::Special_Cornish, - "lt" => PluralForms::Special_Lithuanian, - "lv" => PluralForms::Special_Latvian, - "mk" => PluralForms::Special_Macedonian, - "mnk" => PluralForms::Special_Mandinka, - "mt" => PluralForms::Special_Maltese, - "or" => PluralForms::Special_Odia, - "pl" => PluralForms::Special_Polish_Kashubian, - "ro" => PluralForms::Special_Romanian, - "sk" => PluralForms::Special_Czech_Slovak, - "sl" => PluralForms::Special_Slovenian, - # Mixed v3/v4 rules - "es" => PluralForms::Special_Spanish_Italian, - "fr" => PluralForms::Special_French_Portuguese, - "hr" => PluralForms::Special_Hungarian_Serbian, - "it" => PluralForms::Special_Spanish_Italian, - "pt" => PluralForms::Special_French_Portuguese, - "pt" => PluralForms::Special_French_Portuguese, - "sr" => PluralForms::Special_Hungarian_Serbian, - } - - # These are the v1 and v2 compatible suffixes. - # The array indices matches the PluralForms enum above. - private NUMBERS = [ - [1, 2], # 1 - [1, 2], # 2 - [1], # 3 - [1, 2, 5], # 4 - [0, 1, 2, 3, 11, 100], # 5 - [1, 2, 5], # 6 - [1, 2, 5], # 7 - [1, 2, 3, 8], # 8 - [1, 2], # 9 (not used) - [1, 2, 3, 7, 11], # 10 - [1, 2, 3, 20], # 11 - [1, 2], # 12 - [0, 1], # 13 - [1, 2, 3, 4], # 14 - [1, 2, 10], # 15 - [1, 2, 0], # 16 - [1, 2], # 17 - [0, 1, 2], # 18 - [1, 2, 11, 20], # 19 - [1, 2, 20], # 20 - [5, 1, 2, 3], # 21 - [1, 2, 20, 21], # 22 - [2, 1], # 23 (Odia) - ] - - # ----------------------------------- - # I18next plural resolver class - # ----------------------------------- - - RESOLVER = Resolver.new - - class Resolver - private property forms = {} of String => PluralForms - property version : UInt8 = 3 - - # Options - property simplify_plural_suffix : Bool = true - - def initialize(version : Int = 3) - # Sanity checks - # V4 isn't supported, as it requires a full CLDR database. - if version > 4 || version == 0 - raise "Invalid i18next version: v#{version}." - elsif version == 4 - # Logger.error("Unsupported i18next version: v4. Falling back to v3") - @version = 3_u8 - else - @version = version.to_u8 - end - - self.init_rules - end - - def init_rules - # Look into sets - PLURAL_SETS.each do |form, langs| - langs.each { |lang| self.forms[lang] = form } - end - - # Add plurals from the "singles" set - self.forms.merge!(PLURAL_SINGLES) - end - - def get_plural_form(locale : String) : PluralForms - # Extract the ISO 639-1 or 639-2 code from an RFC 5646 language code - if !locale.matches?(/^pt-PT$/) - locale = locale.split('-')[0] - end - - return self.forms[locale] if self.forms[locale]? - - # If nothing was found, then use the most common form, i.e - # one singular and one plural, as in english. Not perfect, - # but better than yielding an exception at the user. - return PluralForms::Single_not_one - end - - def get_suffix(locale : String, count : Int) : String - # Checked count must be absolute. In i18next, `rule.noAbs` is used to - # determine if comparison should be done on a signed or unsigned integer, - # but this variable is never set, resulting in the comparison always - # being done on absolute numbers. - return get_suffix_retrocompat(locale, count.abs) - end - - # Emulate the `rule.numbers.size == 2 && rule.numbers[0] == 1` check - # from original i18next code - private def is_simple_plural(form : PluralForms) : Bool - case form - when .single_gt_one? then return true - when .single_not_one? then return true - when .special_icelandic? then return true - when .special_macedonian? then return true - else - return false - end - end - - private def get_suffix_retrocompat(locale : String, count : Int) : String - # Get plural form - plural_form = get_plural_form(locale) - - # Languages with no plural have the "_0" suffix - return "_0" if plural_form.none? - - # Get the index and suffix for this number - idx = SuffixIndex.get_index(plural_form, count) - - # Simple plurals are handled differently in all versions (but v4) - if @simplify_plural_suffix && is_simple_plural(plural_form) - return (idx == 1) ? "_plural" : "" - end - - # More complex plurals - # TODO: support v1 and v2 - # TODO: support `options.prepend` (v2 and v3) - # this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString() - # - # case @version - # when 1 - # suffix = SUFFIXES_V1_V2[plural_form.to_i][idx] - # return (suffix == 1) ? "" : return "_plural_#{suffix}" - # when 2 - # return "_#{suffix}" - # else # v3 - return "_#{idx}" - # end - end - end - - # ----------------------------- - # Plural functions - # ----------------------------- - - module SuffixIndex - def self.get_index(plural_form : PluralForms, count : Int) : UInt8 - case plural_form - when .single_gt_one? then return (count > 1) ? 1_u8 : 0_u8 - when .single_not_one? then return (count != 1) ? 1_u8 : 0_u8 - when .none? then return 0_u8 - when .dual_slavic? then return dual_slavic(count) - when .special_arabic? then return special_arabic(count) - when .special_czech_slovak? then return special_czech_slovak(count) - when .special_polish_kashubian? then return special_polish_kashubian(count) - when .special_welsh? then return special_welsh(count) - when .special_irish? then return special_irish(count) - when .special_scottish_gaelic? then return special_scottish_gaelic(count) - when .special_icelandic? then return special_icelandic(count) - when .special_javanese? then return special_javanese(count) - when .special_cornish? then return special_cornish(count) - when .special_lithuanian? then return special_lithuanian(count) - when .special_latvian? then return special_latvian(count) - when .special_macedonian? then return special_macedonian(count) - when .special_mandinka? then return special_mandinka(count) - when .special_maltese? then return special_maltese(count) - when .special_romanian? then return special_romanian(count) - when .special_slovenian? then return special_slovenian(count) - when .special_hebrew? then return special_hebrew(count) - when .special_odia? then return special_odia(count) - # Mixed v3/v4 forms - when .special_spanish_italian? then return special_cldr_Spanish_Italian(count) - when .special_french_portuguese? then return special_cldr_French_Portuguese(count) - when .special_hungarian_serbian? then return special_cldr_Hungarian_Serbian(count) - else - # default, if nothing matched above - return 0_u8 - end - end - - # Plural form of Slavic languages (E.g: Russian) - # - # Corresponds to i18next rule #4 - # Rule: (n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2) - # - def self.dual_slavic(count : Int) : UInt8 - n_mod_10 = count % 10 - n_mod_100 = count % 100 - - if n_mod_10 == 1 && n_mod_100 != 11 - return 0_u8 - elsif n_mod_10 >= 2 && n_mod_10 <= 4 && (n_mod_100 < 10 || n_mod_100 >= 20) - return 1_u8 - else - return 2_u8 - end - end - - # Plural form for Arabic language - # - # Corresponds to i18next rule #5 - # Rule: (n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5) - # - def self.special_arabic(count : Int) : UInt8 - return count.to_u8 if (count == 0 || count == 1 || count == 2) - - n_mod_100 = count % 100 - - return 3_u8 if (n_mod_100 >= 3 && n_mod_100 <= 10) - return 4_u8 if (n_mod_100 >= 11) - return 5_u8 - end - - # Plural form for Czech and Slovak languages - # - # Corresponds to i18next rule #6 - # Rule: ((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2) - # - def self.special_czech_slovak(count : Int) : UInt8 - return 0_u8 if (count == 1) - return 1_u8 if (count >= 2 && count <= 4) - return 2_u8 - end - - # Plural form for Polish and Kashubian languages - # - # Corresponds to i18next rule #7 - # Rule: (n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2) - # - def self.special_polish_kashubian(count : Int) : UInt8 - return 0_u8 if (count == 1) - - n_mod_10 = count % 10 - n_mod_100 = count % 100 - - if n_mod_10 >= 2 && n_mod_10 <= 4 && (n_mod_100 < 10 || n_mod_100 >= 20) - return 1_u8 - else - return 2_u8 - end - end - - # Plural form for Welsh language - # - # Corresponds to i18next rule #8 - # Rule: ((n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3) - # - def self.special_welsh(count : Int) : UInt8 - return 0_u8 if (count == 1) - return 1_u8 if (count == 2) - return 2_u8 if (count != 8 && count != 11) - return 3_u8 - end - - # Plural form for Irish language - # - # Corresponds to i18next rule #10 - # Rule: (n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4) - # - def self.special_irish(count : Int) : UInt8 - return 0_u8 if (count == 1) - return 1_u8 if (count == 2) - return 2_u8 if (count < 7) - return 3_u8 if (count < 11) - return 4_u8 - end - - # Plural form for Gaelic language - # - # Corresponds to i18next rule #11 - # Rule: ((n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3) - # - def self.special_scottish_gaelic(count : Int) : UInt8 - return 0_u8 if (count == 1 || count == 11) - return 1_u8 if (count == 2 || count == 12) - return 2_u8 if (count > 2 && count < 20) - return 3_u8 - end - - # Plural form for Icelandic language - # - # Corresponds to i18next rule #12 - # Rule: (n%10!=1 || n%100==11) - # - def self.special_icelandic(count : Int) : UInt8 - if (count % 10) != 1 || (count % 100) == 11 - return 1_u8 - else - return 0_u8 - end - end - - # Plural form for Javanese language - # - # Corresponds to i18next rule #13 - # Rule: (n !== 0) - # - def self.special_javanese(count : Int) : UInt8 - return (count != 0) ? 1_u8 : 0_u8 - end - - # Plural form for Cornish language - # - # Corresponds to i18next rule #14 - # Rule: ((n==1) ? 0 : (n==2) ? 1 : (n == 3) ? 2 : 3) - # - def self.special_cornish(count : Int) : UInt8 - return 0_u8 if count == 1 - return 1_u8 if count == 2 - return 2_u8 if count == 3 - return 3_u8 - end - - # Plural form for Lithuanian language - # - # Corresponds to i18next rule #15 - # Rule: (n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2) - # - def self.special_lithuanian(count : Int) : UInt8 - n_mod_10 = count % 10 - n_mod_100 = count % 100 - - if n_mod_10 == 1 && n_mod_100 != 11 - return 0_u8 - elsif n_mod_10 >= 2 && (n_mod_100 < 10 || n_mod_100 >= 20) - return 1_u8 - else - return 2_u8 - end - end - - # Plural form for Latvian language - # - # Corresponds to i18next rule #16 - # Rule: (n%10==1 && n%100!=11 ? 0 : n !== 0 ? 1 : 2) - # - def self.special_latvian(count : Int) : UInt8 - if (count % 10) == 1 && (count % 100) != 11 - return 0_u8 - elsif count != 0 - return 1_u8 - else - return 2_u8 - end - end - - # Plural form for Macedonian language - # - # Corresponds to i18next rule #17 - # Rule: (n==1 || n%10==1 && n%100!=11 ? 0 : 1) - # - def self.special_macedonian(count : Int) : UInt8 - if count == 1 || ((count % 10) == 1 && (count % 100) != 11) - return 0_u8 - else - return 1_u8 - end - end - - # Plural form for Mandinka language - # - # Corresponds to i18next rule #18 - # Rule: (n==0 ? 0 : n==1 ? 1 : 2) - # - def self.special_mandinka(count : Int) : UInt8 - return (count == 0 || count == 1) ? count.to_u8 : 2_u8 - end - - # Plural form for Maltese language - # - # Corresponds to i18next rule #19 - # Rule: (n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3) - # - def self.special_maltese(count : Int) : UInt8 - return 0_u8 if count == 1 - return 1_u8 if count == 0 - - n_mod_100 = count % 100 - return 1_u8 if (n_mod_100 > 1 && n_mod_100 < 11) - return 2_u8 if (n_mod_100 > 10 && n_mod_100 < 20) - return 3_u8 - end - - # Plural form for Romanian language - # - # Corresponds to i18next rule #20 - # Rule: (n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2) - # - def self.special_romanian(count : Int) : UInt8 - return 0_u8 if count == 1 - return 1_u8 if count == 0 - - n_mod_100 = count % 100 - return 1_u8 if (n_mod_100 > 0 && n_mod_100 < 20) - return 2_u8 - end - - # Plural form for Slovenian language - # - # Corresponds to i18next rule #21 - # Rule: (n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0) - # - def self.special_slovenian(count : Int) : UInt8 - n_mod_100 = count % 100 - return 1_u8 if (n_mod_100 == 1) - return 2_u8 if (n_mod_100 == 2) - return 3_u8 if (n_mod_100 == 3 || n_mod_100 == 4) - return 0_u8 - end - - # Plural form for Hebrew language - # - # Corresponds to i18next rule #22 - # Rule: (n==1 ? 0 : n==2 ? 1 : (n<0 || n>10) && n%10==0 ? 2 : 3) - # - def self.special_hebrew(count : Int) : UInt8 - return 0_u8 if (count == 1) - return 1_u8 if (count == 2) - - if (count < 0 || count > 10) && (count % 10) == 0 - return 2_u8 - else - return 3_u8 - end - end - - # Plural form for Odia ("or") language - # - # This one is a bit special. It should use rule #2 (like english) - # but the "numbers" (suffixes?) it has are inverted, so we'll make a - # special rule for it. - # - def self.special_odia(count : Int) : UInt8 - return (count == 1) ? 0_u8 : 1_u8 - end - - # ------------------- - # "v3.5" rules - # ------------------- - - # Plural form for Spanish & Italian languages - # - # This rule is mostly compliant to CLDR v42 - # - def self.special_cldr_Spanish_Italian(count : Int) : UInt8 - return 0_u8 if (count == 1) # one - return 1_u8 if (count != 0 && count % 1_000_000 == 0) # many - return 2_u8 # other - end - - # Plural form for French and Portuguese - # - # This rule is mostly compliant to CLDR v42 - # - def self.special_cldr_French_Portuguese(count : Int) : UInt8 - return 0_u8 if (count == 0 || count == 1) # one - return 1_u8 if (count % 1_000_000 == 0) # many - return 2_u8 # other - end - - # Plural form for Hungarian and Serbian - # - # This rule is mostly compliant to CLDR v42 - # - def self.special_cldr_Hungarian_Serbian(count : Int) : UInt8 - n_mod_10 = count % 10 - n_mod_100 = count % 100 - - return 0_u8 if (n_mod_10 == 1 && n_mod_100 != 11) # one - return 1_u8 if (2 <= n_mod_10 <= 4 && (n_mod_100 < 12 || 14 < n_mod_100)) # few - return 2_u8 # other - end - end -end diff --git a/invidious/src/invidious/helpers/logger.cr b/invidious/src/invidious/helpers/logger.cr deleted file mode 100755 index e2e5090..0000000 --- a/invidious/src/invidious/helpers/logger.cr +++ /dev/null @@ -1,69 +0,0 @@ -enum LogLevel - All = 0 - Trace = 1 - Debug = 2 - Info = 3 - Warn = 4 - Error = 5 - Fatal = 6 - Off = 7 -end - -class Invidious::LogHandler < Kemal::BaseLogHandler - def initialize(@io : IO = STDOUT, @level = LogLevel::Debug) - end - - def call(context : HTTP::Server::Context) - elapsed_time = Time.measure { call_next(context) } - elapsed_text = elapsed_text(elapsed_time) - - # Default: full path with parameters - requested_url = context.request.resource - - # Try not to log search queries passed as GET parameters during normal use - # (They will still be logged if log level is 'Debug' or 'Trace') - if @level > LogLevel::Debug && ( - requested_url.downcase.includes?("search") || requested_url.downcase.includes?("q=") - ) - # Log only the path - requested_url = context.request.path - end - - info("#{context.response.status_code} #{context.request.method} #{requested_url} #{elapsed_text}") - - context - end - - def puts(message : String) - @io << message << '\n' - @io.flush - end - - def write(message : String) - @io << message - @io.flush - end - - def set_log_level(level : String) - @level = LogLevel.parse(level) - end - - def set_log_level(level : LogLevel) - @level = level - end - - {% for level in %w(trace debug info warn error fatal) %} - def {{level.id}}(message : String) - if LogLevel::{{level.id.capitalize}} >= @level - puts("#{Time.utc} [{{level.id}}] #{message}") - end - end - {% end %} - - private def elapsed_text(elapsed) - millis = elapsed.total_milliseconds - return "#{millis.round(2)}ms" if millis >= 1 - - "#{(millis * 1000).round(2)}µs" - end -end diff --git a/invidious/src/invidious/helpers/macros.cr b/invidious/src/invidious/helpers/macros.cr deleted file mode 100755 index 43e7171..0000000 --- a/invidious/src/invidious/helpers/macros.cr +++ /dev/null @@ -1,73 +0,0 @@ -module DB::Serializable - macro included - {% verbatim do %} - macro finished - def self.type_array - \{{ @type.instance_vars - .reject { |var| var.annotation(::DB::Field) && var.annotation(::DB::Field)[:ignore] } - .map { |name| name.stringify } - }} - end - - def initialize(tuple) - \{% for var in @type.instance_vars %} - \{% ann = var.annotation(::DB::Field) %} - \{% if ann && ann[:ignore] %} - \{% else %} - @\{{var.name}} = tuple[:\{{var.name.id}}] - \{% end %} - \{% end %} - end - - def to_a - \{{ @type.instance_vars - .reject { |var| var.annotation(::DB::Field) && var.annotation(::DB::Field)[:ignore] } - .map { |name| name } - }} - end - end - {% end %} - end -end - -module JSON::Serializable - macro included - {% verbatim do %} - macro finished - def initialize(tuple) - \{% for var in @type.instance_vars %} - \{% ann = var.annotation(::JSON::Field) %} - \{% if ann && ann[:ignore] %} - \{% else %} - @\{{var.name}} = tuple[:\{{var.name.id}}] - \{% end %} - \{% end %} - end - end - {% end %} - end -end - -macro templated(_filename, template = "template", navbar_search = true) - navbar_search = {{navbar_search}} - - {{ filename = "src/invidious/views/" + _filename + ".ecr" }} - {{ layout = "src/invidious/views/" + template + ".ecr" }} - - __content_filename__ = {{filename}} - content = Kilt.render({{filename}}) - Kilt.render({{layout}}) -end - -macro rendered(filename) - Kilt.render("src/invidious/views/#{{{filename}}}.ecr") -end - -# Similar to Kemals halt method but works in a -# method. -macro haltf(env, status_code = 200, response = "") - {{env}}.response.status_code = {{status_code}} - {{env}}.response.print {{response}} - {{env}}.response.close - return -end diff --git a/invidious/src/invidious/helpers/serialized_yt_data.cr b/invidious/src/invidious/helpers/serialized_yt_data.cr deleted file mode 100755 index 31a3cf4..0000000 --- a/invidious/src/invidious/helpers/serialized_yt_data.cr +++ /dev/null @@ -1,298 +0,0 @@ -struct SearchVideo - include DB::Serializable - - property title : String - property id : String - property author : String - property ucid : String - property published : Time - property views : Int64 - property description_html : String - property length_seconds : Int32 - property live_now : Bool - property premium : Bool - property premiere_timestamp : Time? - property author_verified : Bool - - def to_xml(auto_generated, query_params, xml : XML::Builder) - query_params["v"] = self.id - - xml.element("entry") do - xml.element("id") { xml.text "yt:video:#{self.id}" } - xml.element("yt:videoId") { xml.text self.id } - xml.element("yt:channelId") { xml.text self.ucid } - xml.element("title") { xml.text self.title } - xml.element("link", rel: "alternate", href: "#{HOST_URL}/watch?#{query_params}") - - xml.element("author") do - if auto_generated - xml.element("name") { xml.text self.author } - xml.element("uri") { xml.text "#{HOST_URL}/channel/#{self.ucid}" } - else - xml.element("name") { xml.text author } - xml.element("uri") { xml.text "#{HOST_URL}/channel/#{ucid}" } - end - end - - xml.element("content", type: "xhtml") do - xml.element("div", xmlns: "http://www.w3.org/1999/xhtml") do - xml.element("a", href: "#{HOST_URL}/watch?#{query_params}") do - xml.element("img", src: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg") - end - - xml.element("p", style: "word-break:break-word;white-space:pre-wrap") { xml.text html_to_content(self.description_html) } - end - end - - xml.element("published") { xml.text self.published.to_s("%Y-%m-%dT%H:%M:%S%:z") } - - xml.element("media:group") do - xml.element("media:title") { xml.text self.title } - xml.element("media:thumbnail", url: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg", - width: "320", height: "180") - xml.element("media:description") { xml.text html_to_content(self.description_html) } - end - - xml.element("media:community") do - xml.element("media:statistics", views: self.views) - end - end - end - - def to_xml(auto_generated, query_params, _xml : Nil) - XML.build do |xml| - to_xml(auto_generated, query_params, xml) - end - end - - def to_json(locale : String?, json : JSON::Builder) - json.object do - json.field "type", "video" - json.field "title", self.title - json.field "videoId", self.id - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - json.field "authorVerified", self.author_verified - - json.field "videoThumbnails" do - Invidious::JSONify::APIv1.thumbnails(json, self.id) - end - - json.field "description", html_to_content(self.description_html) - json.field "descriptionHtml", self.description_html - - json.field "viewCount", self.views - json.field "viewCountText", translate_count(locale, "generic_views_count", self.views, NumberFormatting::Short) - json.field "published", self.published.to_unix - json.field "publishedText", translate(locale, "`x` ago", recode_date(self.published, locale)) - json.field "lengthSeconds", self.length_seconds - json.field "liveNow", self.live_now - json.field "premium", self.premium - json.field "isUpcoming", self.is_upcoming - - if self.premiere_timestamp - json.field "premiereTimestamp", self.premiere_timestamp.try &.to_unix - end - end - end - - # TODO: remove the locale and follow the crystal convention - def to_json(locale : String?, _json : Nil) - JSON.build do |json| - to_json(locale, json) - end - end - - def to_json(json : JSON::Builder) - to_json(nil, json) - end - - def is_upcoming - premiere_timestamp ? true : false - end -end - -struct SearchPlaylistVideo - include DB::Serializable - - property title : String - property id : String - property length_seconds : Int32 -end - -struct SearchPlaylist - include DB::Serializable - - property title : String - property id : String - property author : String - property ucid : String - property video_count : Int32 - property videos : Array(SearchPlaylistVideo) - property thumbnail : String? - property author_verified : Bool - - def to_json(locale : String?, json : JSON::Builder) - json.object do - json.field "type", "playlist" - json.field "title", self.title - json.field "playlistId", self.id - json.field "playlistThumbnail", self.thumbnail - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - - json.field "authorVerified", self.author_verified - - json.field "videoCount", self.video_count - json.field "videos" do - json.array do - self.videos.each do |video| - json.object do - json.field "title", video.title - json.field "videoId", video.id - json.field "lengthSeconds", video.length_seconds - - json.field "videoThumbnails" do - Invidious::JSONify::APIv1.thumbnails(json, video.id) - end - end - end - end - end - end - end - - # TODO: remove the locale and follow the crystal convention - def to_json(locale : String?, _json : Nil) - JSON.build do |json| - to_json(locale, json) - end - end - - def to_json(json : JSON::Builder) - to_json(nil, json) - end -end - -struct SearchChannel - include DB::Serializable - - property author : String - property ucid : String - property author_thumbnail : String - property subscriber_count : Int32 - property video_count : Int32 - property channel_handle : String? - property description_html : String - property auto_generated : Bool - property author_verified : Bool - - def to_json(locale : String?, json : JSON::Builder) - json.object do - json.field "type", "channel" - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - json.field "authorVerified", self.author_verified - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - - qualities.each do |quality| - json.object do - json.field "url", self.author_thumbnail.gsub(/=\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", quality - end - end - end - end - - json.field "autoGenerated", self.auto_generated - json.field "subCount", self.subscriber_count - json.field "videoCount", self.video_count - json.field "channelHandle", self.channel_handle - - json.field "description", html_to_content(self.description_html) - json.field "descriptionHtml", self.description_html - end - end - - # TODO: remove the locale and follow the crystal convention - def to_json(locale : String?, _json : Nil) - JSON.build do |json| - to_json(locale, json) - end - end - - def to_json(json : JSON::Builder) - to_json(nil, json) - end -end - -struct SearchHashtag - include DB::Serializable - - property title : String - property url : String - property video_count : Int64 - property channel_count : Int64 - - def to_json(locale : String?, json : JSON::Builder) - json.object do - json.field "type", "hashtag" - json.field "title", self.title - json.field "url", self.url - json.field "videoCount", self.video_count - json.field "channelCount", self.channel_count - end - end -end - -class Category - include DB::Serializable - - property title : String - property contents : Array(SearchItem) | Array(Video) - property url : String? - property description_html : String - property badges : Array(Tuple(String, String))? - - def to_json(locale : String?, json : JSON::Builder) - json.object do - json.field "type", "category" - json.field "title", self.title - json.field "contents" do - json.array do - self.contents.each do |item| - item.to_json(locale, json) - end - end - end - end - end - - # TODO: remove the locale and follow the crystal convention - def to_json(locale : String?, _json : Nil) - JSON.build do |json| - to_json(locale, json) - end - end - - def to_json(json : JSON::Builder) - to_json(nil, json) - end -end - -struct Continuation - getter token - - def initialize(@token : String) - end -end - -alias SearchItem = SearchVideo | SearchChannel | SearchPlaylist | SearchHashtag | Category diff --git a/invidious/src/invidious/helpers/signatures.cr b/invidious/src/invidious/helpers/signatures.cr deleted file mode 100755 index ee09415..0000000 --- a/invidious/src/invidious/helpers/signatures.cr +++ /dev/null @@ -1,73 +0,0 @@ -alias SigProc = Proc(Array(String), Int32, Array(String)) - -struct DecryptFunction - @decrypt_function = [] of {SigProc, Int32} - @decrypt_time = Time.monotonic - - def initialize(@use_polling = true) - end - - def update_decrypt_function - @decrypt_function = fetch_decrypt_function - end - - private def fetch_decrypt_function(id = "CvFH_6DNRCY") - document = YT_POOL.client &.get("/watch?v=#{id}&gl=US&hl=en").body - url = document.match(/src="(?\/s\/player\/[^\/]+\/player_ias[^\/]+\/en_US\/base.js)"/).not_nil!["url"] - player = YT_POOL.client &.get(url).body - - function_name = player.match(/^(?[^=]+)=function\(\w\){\w=\w\.split\(""\);[^\. ]+\.[^( ]+/m).not_nil!["name"] - function_body = player.match(/^#{Regex.escape(function_name)}=function\(\w\){(?[^}]+)}/m).not_nil!["body"] - function_body = function_body.split(";")[1..-2] - - var_name = function_body[0][0, 2] - var_body = player.delete("\n").match(/var #{Regex.escape(var_name)}={(?(.*?))};/).not_nil!["body"] - - operations = {} of String => SigProc - var_body.split("},").each do |operation| - op_name = operation.match(/^[^:]+/).not_nil![0] - op_body = operation.match(/\{[^}]+/).not_nil![0] - - case op_body - when "{a.reverse()" - operations[op_name] = ->(a : Array(String), _b : Int32) { a.reverse } - when "{a.splice(0,b)" - operations[op_name] = ->(a : Array(String), b : Int32) { a.delete_at(0..(b - 1)); a } - else - operations[op_name] = ->(a : Array(String), b : Int32) { c = a[0]; a[0] = a[b % a.size]; a[b % a.size] = c; a } - end - end - - decrypt_function = [] of {SigProc, Int32} - function_body.each do |function| - function = function.lchop(var_name).delete("[].") - - op_name = function.match(/[^\(]+/).not_nil![0] - value = function.match(/\(\w,(?[\d]+)\)/).not_nil!["value"].to_i - - decrypt_function << {operations[op_name], value} - end - - return decrypt_function - end - - def decrypt_signature(fmt : Hash(String, JSON::Any)) - return "" if !fmt["s"]? || !fmt["sp"]? - - sp = fmt["sp"].as_s - sig = fmt["s"].as_s.split("") - if !@use_polling - now = Time.monotonic - if now - @decrypt_time > 60.seconds || @decrypt_function.size == 0 - @decrypt_function = fetch_decrypt_function - @decrypt_time = Time.monotonic - end - end - - @decrypt_function.each do |proc, value| - sig = proc.call(sig, value) - end - - return "&#{sp}=#{sig.join("")}" - end -end diff --git a/invidious/src/invidious/helpers/tokens.cr b/invidious/src/invidious/helpers/tokens.cr deleted file mode 100755 index a44988c..0000000 --- a/invidious/src/invidious/helpers/tokens.cr +++ /dev/null @@ -1,145 +0,0 @@ -require "crypto/subtle" - -def generate_token(email, scopes, expire, key) - session = "v1:#{Base64.urlsafe_encode(Random::Secure.random_bytes(32))}" - Invidious::Database::SessionIDs.insert(session, email) - - token = { - "session" => session, - "scopes" => scopes, - "expire" => expire, - } - - if !expire - token.delete("expire") - end - - token["signature"] = sign_token(key, token) - - return token.to_json -end - -def generate_response(session, scopes, key, expire = 6.hours, use_nonce = false) - expire = Time.utc + expire - - token = { - "session" => session, - "expire" => expire.to_unix, - "scopes" => scopes, - } - - if use_nonce - nonce = Random::Secure.hex(16) - Invidious::Database::Nonces.insert(nonce, expire) - token["nonce"] = nonce - end - - token["signature"] = sign_token(key, token) - - return token.to_json -end - -def sign_token(key, hash) - string_to_sign = [] of String - - # TODO: figure out which "key" variable is used - # Ameba reports a warning for "Lint/ShadowingOuterLocalVar" on this - # variable, but it's preferable to not touch that (works fine atm). - hash.each do |key, value| - next if key == "signature" - - if value.is_a?(JSON::Any) && value.as_a? - value = value.as_a.map(&.as_s) - end - - case value - when Array - string_to_sign << "#{key}=#{value.sort.join(",")}" - when Tuple - string_to_sign << "#{key}=#{value.to_a.sort.join(",")}" - else - string_to_sign << "#{key}=#{value}" - end - end - - string_to_sign = string_to_sign.sort.join("\n") - return Base64.urlsafe_encode(OpenSSL::HMAC.digest(:sha256, key, string_to_sign)).strip -end - -def validate_request(token, session, request, key, locale = nil) - case token - when String - token = JSON.parse(URI.decode_www_form(token)).as_h - when JSON::Any - token = token.as_h - when Nil - raise InfoException.new("Hidden field \"token\" is a required field") - end - - expire = token["expire"]?.try &.as_i - if expire.try &.< Time.utc.to_unix - raise InfoException.new("Token is expired, please try again") - end - - if token["session"] != session - raise InfoException.new("Erroneous token") - end - - scopes = token["scopes"].as_a.map(&.as_s) - scope = "#{request.method}:#{request.path.lchop("/api/v1/auth/").lstrip("/")}" - if !scopes_include_scope(scopes, scope) - raise InfoException.new("Invalid scope") - end - - if !Crypto::Subtle.constant_time_compare(token["signature"].to_s, sign_token(key, token)) - raise InfoException.new("Invalid signature") - end - - if token["nonce"]? && (nonce = Invidious::Database::Nonces.select(token["nonce"].as_s)) - if nonce[1] > Time.utc - Invidious::Database::Nonces.update_set_expired(nonce[0]) - else - raise InfoException.new("Erroneous token") - end - end - - return {scopes, expire, token["signature"].as_s} -end - -def scope_includes_scope(scope, subset) - methods, endpoint = scope.split(":") - methods = methods.split(";").map(&.upcase).reject(&.empty?).sort! - endpoint = endpoint.downcase - - subset_methods, subset_endpoint = subset.split(":") - subset_methods = subset_methods.split(";").map(&.upcase).sort! - subset_endpoint = subset_endpoint.downcase - - if methods.empty? - methods = %w(GET POST PUT HEAD DELETE PATCH OPTIONS) - end - - if methods & subset_methods != subset_methods - return false - end - - if endpoint.ends_with?("*") && !subset_endpoint.starts_with? endpoint.rchop("*") - return false - end - - if !endpoint.ends_with?("*") && subset_endpoint != endpoint - return false - end - - return true -end - -def scopes_include_scope(scopes, subset) - scopes.each do |scope| - if scope_includes_scope(scope, subset) - return true - end - end - - return false -end diff --git a/invidious/src/invidious/helpers/utils.cr b/invidious/src/invidious/helpers/utils.cr deleted file mode 100755 index e438e3b..0000000 --- a/invidious/src/invidious/helpers/utils.cr +++ /dev/null @@ -1,447 +0,0 @@ -# See http://www.evanmiller.org/how-not-to-sort-by-average-rating.html -def ci_lower_bound(pos, n) - if n == 0 - return 0.0 - end - - # z value here represents a confidence level of 0.95 - z = 1.96 - phat = 1.0*pos/n - - return (phat + z*z/(2*n) - z * Math.sqrt((phat*(1 - phat) + z*z/(4*n))/n))/(1 + z*z/n) -end - -def elapsed_text(elapsed) - millis = elapsed.total_milliseconds - return "#{millis.round(2)}ms" if millis >= 1 - - "#{(millis * 1000).round(2)}µs" -end - -def decode_length_seconds(string) - length_seconds = string.gsub(/[^0-9:]/, "") - return 0_i32 if length_seconds.empty? - - length_seconds = length_seconds.split(":").map { |x| x.to_i? || 0 } - length_seconds = [0] * (3 - length_seconds.size) + length_seconds - - length_seconds = Time::Span.new( - hours: length_seconds[0], - minutes: length_seconds[1], - seconds: length_seconds[2] - ).total_seconds.to_i32 - - return length_seconds -end - -def recode_length_seconds(time) - if time <= 0 - return "" - else - time = time.seconds - text = "#{time.minutes.to_s.rjust(2, '0')}:#{time.seconds.to_s.rjust(2, '0')}" - - if time.total_hours.to_i > 0 - text = "#{time.total_hours.to_i.to_s.rjust(2, '0')}:#{text}" - end - - text = text.lchop('0') - - return text - end -end - -def decode_interval(string : String) : Time::Span - rawMinutes = string.try &.to_i32? - - if !rawMinutes - hours = /(?\d+)h/.match(string).try &.["hours"].try &.to_i32 - hours ||= 0 - - minutes = /(?\d+)m(?!s)/.match(string).try &.["minutes"].try &.to_i32 - minutes ||= 0 - - time = Time::Span.new(hours: hours, minutes: minutes) - else - time = Time::Span.new(minutes: rawMinutes) - end - - return time -end - -def decode_time(string) - time = string.try &.to_f? - - if !time - hours = /(?\d+)h/.match(string).try &.["hours"].try &.to_f - hours ||= 0 - - minutes = /(?\d+)m(?!s)/.match(string).try &.["minutes"].try &.to_f - minutes ||= 0 - - seconds = /(?\d+)s/.match(string).try &.["seconds"].try &.to_f - seconds ||= 0 - - millis = /(?\d+)ms/.match(string).try &.["millis"].try &.to_f - millis ||= 0 - - time = hours * 3600 + minutes * 60 + seconds + millis // 1000 - end - - return time -end - -def decode_date(string : String) - # String matches 'YYYY' - if string.match(/^\d{4}/) - return Time.utc(string.to_i, 1, 1) - end - - # Try to parse as format Jul 10, 2000 - begin - return Time.parse(string, "%b %-d, %Y", Time::Location.local) - rescue ex - end - - case string - when "today" - return Time.utc - when "yesterday" - return Time.utc - 1.day - else nil # Continue - end - - # String matches format "20 hours ago", "4 months ago", "20s ago", "15min ago"... - match = string.match(/(?\d+) ?(?[smhdwy]\w*) ago/) - - raise "Could not parse #{string}" if match.nil? - - delta = match["count"].to_i - - case match["span"] - when .starts_with? "s" # second(s) - delta = delta.seconds - when .starts_with? "mi" # minute(s) - delta = delta.minutes - when .starts_with? "h" # hour(s) - delta = delta.hours - when .starts_with? "d" # day(s) - delta = delta.days - when .starts_with? "w" # week(s) - delta = delta.weeks - when .starts_with? "mo" # month(s) - delta = delta.months - when .starts_with? "y" # year(s) - delta = delta.years - else - raise "Could not parse #{string}" - end - - return Time.utc - delta -end - -def recode_date(time : Time, locale) - span = Time.utc - time - - if span.total_days > 365.0 - return translate_count(locale, "generic_count_years", span.total_days.to_i // 365) - elsif span.total_days > 30.0 - return translate_count(locale, "generic_count_months", span.total_days.to_i // 30) - elsif span.total_days > 7.0 - return translate_count(locale, "generic_count_weeks", span.total_days.to_i // 7) - elsif span.total_hours > 24.0 - return translate_count(locale, "generic_count_days", span.total_days.to_i) - elsif span.total_minutes > 60.0 - return translate_count(locale, "generic_count_hours", span.total_hours.to_i) - elsif span.total_seconds > 60.0 - return translate_count(locale, "generic_count_minutes", span.total_minutes.to_i) - else - return translate_count(locale, "generic_count_seconds", span.total_seconds.to_i) - end -end - -def number_with_separator(number) - number.to_s.reverse.gsub(/(\d{3})(?=\d)/, "\\1,").reverse -end - -def short_text_to_number(short_text : String) : Int64 - matches = /(?\d+(\.\d+)?)\s?(?[mMkKbB]?)/.match(short_text) - number = matches.try &.["number"].to_f || 0.0 - - case matches.try &.["suffix"].downcase - when "k" then number *= 1_000 - when "m" then number *= 1_000_000 - when "b" then number *= 1_000_000_000 - end - - return number.to_i64 -rescue ex - return 0_i64 -end - -def number_to_short_text(number) - separated = number_with_separator(number).gsub(",", ".").split("") - text = separated.first(2).join - - if separated[2]? && separated[2] != "." - text += separated[2] - end - - text = text.rchop(".0") - - if number // 1_000_000_000 != 0 - text += "B" - elsif number // 1_000_000 != 0 - text += "M" - elsif number // 1000 != 0 - text += "K" - end - - text -end - -def arg_array(array, start = 1) - if array.size == 0 - args = "NULL" - else - args = [] of String - (start..array.size + start - 1).each { |i| args << "($#{i})" } - args = args.join(",") - end - - return args -end - -def make_host_url(kemal_config) - ssl = CONFIG.https_only || kemal_config.ssl - port = CONFIG.external_port || kemal_config.port - - if ssl - scheme = "https://" - else - scheme = "http://" - end - - # Add if non-standard port - if port != 80 && port != 443 - port = ":#{port}" - else - port = "" - end - - if !CONFIG.domain - return "" - end - - host = CONFIG.domain.not_nil!.lchop(".") - - return "#{scheme}#{host}#{port}" -end - -def get_referer(env, fallback = "/", unroll = true) - referer = env.params.query["referer"]? - referer ||= env.request.headers["referer"]? - referer ||= fallback - - referer = URI.parse(referer) - - # "Unroll" nested referrers - if unroll - loop do - if referer.query - params = HTTP::Params.parse(referer.query.not_nil!) - if params["referer"]? - referer = URI.parse(URI.decode_www_form(params["referer"])) - else - break - end - else - break - end - end - end - - referer = referer.request_target - referer = "/" + referer.gsub(/[^\/?@&%=\-_.:,*0-9a-zA-Z]/, "").lstrip("/\\") - - if referer == env.request.path - referer = fallback - end - - return referer -end - -def sha256(text) - digest = OpenSSL::Digest.new("SHA256") - digest << text - return digest.final.hexstring -end - -def subscribe_pubsub(topic, key) - case topic - when .match(/^UC[A-Za-z0-9_-]{22}$/) - topic = "channel_id=#{topic}" - when .match(/^(PL|LL|EC|UU|FL|UL|OLAK5uy_)[0-9A-Za-z-_]{10,}$/) - # There's a couple missing from the above regex, namely TL and RD, which - # don't have feeds - topic = "playlist_id=#{topic}" - else - # TODO - end - - time = Time.utc.to_unix.to_s - nonce = Random::Secure.hex(4) - signature = "#{time}:#{nonce}" - - body = { - "hub.callback" => "#{HOST_URL}/feed/webhook/v1:#{time}:#{nonce}:#{OpenSSL::HMAC.hexdigest(:sha1, key, signature)}", - "hub.topic" => "https://www.youtube.com/xml/feeds/videos.xml?#{topic}", - "hub.verify" => "async", - "hub.mode" => "subscribe", - "hub.lease_seconds" => "432000", - "hub.secret" => key.to_s, - } - - return make_client(PUBSUB_URL, &.post("/subscribe", form: body)) -end - -def parse_range(range) - if !range - return 0_i64, nil - end - - ranges = range.lchop("bytes=").split(',') - ranges.each do |r| - start_range, end_range = r.split('-') - - start_range = start_range.to_i64? || 0_i64 - end_range = end_range.to_i64? - - return start_range, end_range - end - - return 0_i64, nil -end - -def fetch_random_instance - begin - instance_api_client = make_client(URI.parse("https://api.invidious.io")) - - # Timeouts - instance_api_client.connect_timeout = 10.seconds - instance_api_client.dns_timeout = 10.seconds - - instance_list = JSON.parse(instance_api_client.get("/instances.json").body).as_a - instance_api_client.close - rescue Socket::ConnectError | IO::TimeoutError | JSON::ParseException - instance_list = [] of JSON::Any - end - - filtered_instance_list = [] of String - - instance_list.each do |data| - # TODO Check if current URL is onion instance and use .onion types if so. - if data[1]["type"] == "https" - # Instances can have statistics disabled, which is an requirement of version validation. - # as_nil? doesn't exist. Thus we'll have to handle the error raised if as_nil fails. - begin - data[1]["stats"].as_nil - next - rescue TypeCastError - end - - # stats endpoint could also lack the software dict. - next if data[1]["stats"]["software"]?.nil? - - # Makes sure the instance isn't too outdated. - if remote_version = data[1]["stats"]?.try &.["software"]?.try &.["version"] - remote_commit_date = remote_version.as_s.match(/\d{4}\.\d{2}\.\d{2}/) - next if !remote_commit_date - - remote_commit_date = Time.parse(remote_commit_date[0], "%Y.%m.%d", Time::Location::UTC) - local_commit_date = Time.parse(CURRENT_VERSION, "%Y.%m.%d", Time::Location::UTC) - - next if (remote_commit_date - local_commit_date).abs.days > 30 - - begin - data[1]["monitor"].as_nil - health = data[1]["monitor"].as_h["dailyRatios"][0].as_h["ratio"] - filtered_instance_list << data[0].as_s if health.to_s.to_f > 90 - rescue TypeCastError - # We can't check the health if the monitoring is broken. Thus we'll just add it to the list - # and move on. Ideally we'll ignore any instance that has broken health monitoring but due to the fact that - # it's an error that often occurs with all the instances at the same time, we have to just skip the check. - filtered_instance_list << data[0].as_s - end - end - end - end - - # If for some reason no instances managed to get fetched successfully then we'll just redirect to redirect.invidious.io - if filtered_instance_list.size == 0 - return "redirect.invidious.io" - end - - return filtered_instance_list.sample(1)[0] -end - -def reduce_uri(uri : URI | String, max_length : Int32 = 50, suffix : String = "…") : String - str = uri.to_s.sub(/^https?:\/\//, "") - if str.size > max_length - str = "#{str[0, max_length]}#{suffix}" - end - return str -end - -# Get the html link from a NavigationEndpoint or an innertubeCommand -def parse_link_endpoint(endpoint : JSON::Any, text : String, video_id : String) - if url = endpoint.dig?("urlEndpoint", "url").try &.as_s - url = URI.parse(url) - displayed_url = text - - if url.host == "youtu.be" - url = "/watch?v=#{url.request_target.lstrip('/')}" - elsif url.host.nil? || url.host.not_nil!.ends_with?("youtube.com") - if url.path == "/redirect" - # Sometimes, links can be corrupted (why?) so make sure to fallback - # nicely. See https://github.com/iv-org/invidious/issues/2682 - url = url.query_params["q"]? || "" - displayed_url = url - else - url = url.request_target - displayed_url = "youtube.com#{url}" - end - end - - text = %(#{reduce_uri(displayed_url)}) - elsif watch_endpoint = endpoint.dig?("watchEndpoint") - start_time = watch_endpoint["startTimeSeconds"]?.try &.as_i - link_video_id = watch_endpoint["videoId"].as_s - - url = "/watch?v=#{link_video_id}" - url += "&t=#{start_time}" if !start_time.nil? - - # If the current video ID (passed through from the caller function) - # is the same as the video ID in the link, add HTML attributes for - # the JS handler function that bypasses page reload. - # - # See: https://github.com/iv-org/invidious/issues/3063 - if link_video_id == video_id - start_time ||= 0 - text = %(#{reduce_uri(text)}) - else - text = %(#{text}) - end - elsif url = endpoint.dig?("commandMetadata", "webCommandMetadata", "url").try &.as_s - if text.starts_with?(/\s?[@#]/) - # Handle "pings" in comments and hasthags differently - # See: - # - https://github.com/iv-org/invidious/issues/3038 - # - https://github.com/iv-org/invidious/issues/3062 - text = %(#{text}) - else - text = %(#{reduce_uri(text)}) - end - end - return text -end diff --git a/invidious/src/invidious/helpers/webvtt.cr b/invidious/src/invidious/helpers/webvtt.cr deleted file mode 100755 index 260d250..0000000 --- a/invidious/src/invidious/helpers/webvtt.cr +++ /dev/null @@ -1,81 +0,0 @@ -# Namespace for logic relating to generating WebVTT files -# -# Probably not compliant to WebVTT's specs but it is enough for Invidious. -module WebVTT - # A WebVTT builder generates WebVTT files - private class Builder - # See https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API#cue_payload - private ESCAPE_SUBSTITUTIONS = { - '&' => "&", - '<' => "<", - '>' => ">", - '\u200E' => "‎", - '\u200F' => "‏", - '\u00A0' => " ", - } - - def initialize(@io : IO) - end - - # Writes an vtt cue with the specified time stamp and contents - def cue(start_time : Time::Span, end_time : Time::Span, text : String) - timestamp(start_time, end_time) - @io << self.escape(text) - @io << "\n\n" - end - - private def timestamp(start_time : Time::Span, end_time : Time::Span) - timestamp_component(start_time) - @io << " --> " - timestamp_component(end_time) - - @io << '\n' - end - - private def timestamp_component(timestamp : Time::Span) - @io << timestamp.hours.to_s.rjust(2, '0') - @io << ':' << timestamp.minutes.to_s.rjust(2, '0') - @io << ':' << timestamp.seconds.to_s.rjust(2, '0') - @io << '.' << timestamp.milliseconds.to_s.rjust(3, '0') - end - - private def escape(text : String) : String - return text.gsub(ESCAPE_SUBSTITUTIONS) - end - - def document(setting_fields : Hash(String, String)? = nil, &) - @io << "WEBVTT\n" - - if setting_fields - setting_fields.each do |name, value| - @io << name << ": " << value << '\n' - end - end - - @io << '\n' - - yield - end - end - - # Returns the resulting `String` of writing WebVTT to the yielded `WebVTT::Builder` - # - # ``` - # string = WebVTT.build do |vtt| - # vtt.cue(Time::Span.new(seconds: 1), Time::Span.new(seconds: 2), "Line 1") - # vtt.cue(Time::Span.new(seconds: 2), Time::Span.new(seconds: 3), "Line 2") - # end - # - # string # => "WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nLine 1\n\n00:00:02.000 --> 00:00:03.000\nLine 2\n\n" - # ``` - # - # Accepts an optional settings fields hash to add settings attribute to the resulting vtt file. - def self.build(setting_fields : Hash(String, String)? = nil, &) - String.build do |str| - builder = Builder.new(str) - builder.document(setting_fields) do - yield builder - end - end - end -end diff --git a/invidious/src/invidious/http_server/utils.cr b/invidious/src/invidious/http_server/utils.cr deleted file mode 100755 index 222dfc4..0000000 --- a/invidious/src/invidious/http_server/utils.cr +++ /dev/null @@ -1,40 +0,0 @@ -require "uri" - -module Invidious::HttpServer - module Utils - extend self - - def proxy_video_url(raw_url : String, *, region : String? = nil, absolute : Bool = false) - url = URI.parse(raw_url) - - # Add some URL parameters - params = url.query_params - params["host"] = url.host.not_nil! # Should never be nil, in theory - params["region"] = region if !region.nil? - - if absolute - return "#{HOST_URL}#{url.request_target}?#{params}" - else - return "#{url.request_target}?#{params}" - end - end - - def add_params_to_url(url : String | URI, params : URI::Params) : URI - url = URI.parse(url) if url.is_a?(String) - - url_query = url.query || "" - - # Append the parameters - url.query = String.build do |str| - if !url_query.empty? - str << url_query - str << '&' - end - - str << params - end - - return url - end - end -end diff --git a/invidious/src/invidious/jobs.cr b/invidious/src/invidious/jobs.cr deleted file mode 100755 index b6b673f..0000000 --- a/invidious/src/invidious/jobs.cr +++ /dev/null @@ -1,40 +0,0 @@ -module Invidious::Jobs - JOBS = [] of BaseJob - - # Automatically generate a structure that wraps the various - # jobs' configs, so that the following YAML config can be used: - # - # jobs: - # job_name: - # enabled: true - # some_property: "value" - # - macro finished - struct JobsConfig - include YAML::Serializable - - {% for sc in BaseJob.subclasses %} - # Voodoo macro to transform `Some::Module::CustomJob` to `custom` - {% class_name = sc.id.split("::").last.id.gsub(/Job$/, "").underscore %} - - getter {{ class_name }} = {{ sc.name }}::Config.new - {% end %} - - def initialize - end - end - end - - def self.register(job : BaseJob) - JOBS << job - end - - def self.start_all - JOBS.each do |job| - # Don't run the main rountine if the job is disabled by config - next if job.disabled? - - spawn { job.begin } - end - end -end diff --git a/invidious/src/invidious/jobs/base_job.cr b/invidious/src/invidious/jobs/base_job.cr deleted file mode 100755 index f90f0bf..0000000 --- a/invidious/src/invidious/jobs/base_job.cr +++ /dev/null @@ -1,33 +0,0 @@ -abstract class Invidious::Jobs::BaseJob - abstract def begin - - # When this base job class is inherited, make sure to define - # a basic "Config" structure, that contains the "enable" property, - # and to create the associated instance property. - # - macro inherited - macro finished - # This config structure can be expanded as required. - struct Config - include YAML::Serializable - - property enable = true - - def initialize - end - end - - property cfg = Config.new - - # Return true if job is enabled by config - protected def enabled? : Bool - return (@cfg.enable == true) - end - - # Return true if job is disabled by config - protected def disabled? : Bool - return (@cfg.enable == false) - end - end - end -end diff --git a/invidious/src/invidious/jobs/clear_expired_items_job.cr b/invidious/src/invidious/jobs/clear_expired_items_job.cr deleted file mode 100755 index 17191aa..0000000 --- a/invidious/src/invidious/jobs/clear_expired_items_job.cr +++ /dev/null @@ -1,27 +0,0 @@ -class Invidious::Jobs::ClearExpiredItemsJob < Invidious::Jobs::BaseJob - # Remove items (videos, nonces, etc..) whose cache is outdated every hour. - # Removes the need for a cron job. - def begin - loop do - failed = false - - LOGGER.info("jobs: running ClearExpiredItems job") - - begin - Invidious::Database::Videos.delete_expired - Invidious::Database::Nonces.delete_expired - rescue DB::Error - failed = true - end - - # Retry earlier than scheduled on DB error - if failed - LOGGER.info("jobs: ClearExpiredItems failed. Retrying in 10 minutes.") - sleep 10.minutes - else - LOGGER.info("jobs: ClearExpiredItems done.") - sleep 1.hour - end - end - end -end diff --git a/invidious/src/invidious/jobs/notification_job.cr b/invidious/src/invidious/jobs/notification_job.cr deleted file mode 100755 index b445107..0000000 --- a/invidious/src/invidious/jobs/notification_job.cr +++ /dev/null @@ -1,24 +0,0 @@ -class Invidious::Jobs::NotificationJob < Invidious::Jobs::BaseJob - private getter connection_channel : ::Channel({Bool, ::Channel(PQ::Notification)}) - private getter pg_url : URI - - def initialize(@connection_channel, @pg_url) - end - - def begin - connections = [] of ::Channel(PQ::Notification) - - PG.connect_listen(pg_url, "notifications") { |event| connections.each(&.send(event)) } - - loop do - action, connection = connection_channel.receive - - case action - when true - connections << connection - when false - connections.delete(connection) - end - end - end -end diff --git a/invidious/src/invidious/jobs/pull_popular_videos_job.cr b/invidious/src/invidious/jobs/pull_popular_videos_job.cr deleted file mode 100755 index dc785ba..0000000 --- a/invidious/src/invidious/jobs/pull_popular_videos_job.cr +++ /dev/null @@ -1,20 +0,0 @@ -class Invidious::Jobs::PullPopularVideosJob < Invidious::Jobs::BaseJob - POPULAR_VIDEOS = Atomic.new([] of ChannelVideo) - private getter db : DB::Database - - def initialize(@db) - end - - def begin - loop do - videos = Invidious::Database::ChannelVideos.select_popular_videos - .sort_by!(&.published) - .reverse! - - POPULAR_VIDEOS.set(videos) - - sleep 1.minute - Fiber.yield - end - end -end diff --git a/invidious/src/invidious/jobs/refresh_channels_job.cr b/invidious/src/invidious/jobs/refresh_channels_job.cr deleted file mode 100755 index 80812a6..0000000 --- a/invidious/src/invidious/jobs/refresh_channels_job.cr +++ /dev/null @@ -1,66 +0,0 @@ -class Invidious::Jobs::RefreshChannelsJob < Invidious::Jobs::BaseJob - private getter db : DB::Database - - def initialize(@db) - end - - def begin - max_fibers = CONFIG.channel_threads - lim_fibers = max_fibers - active_fibers = 0 - active_channel = ::Channel(Bool).new - backoff = 2.minutes - - loop do - LOGGER.debug("RefreshChannelsJob: Refreshing all channels") - PG_DB.query("SELECT id FROM channels ORDER BY updated") do |rs| - rs.each do - id = rs.read(String) - - if active_fibers >= lim_fibers - LOGGER.trace("RefreshChannelsJob: Fiber limit reached, waiting...") - if active_channel.receive - LOGGER.trace("RefreshChannelsJob: Fiber limit ok, continuing") - active_fibers -= 1 - end - end - - LOGGER.debug("RefreshChannelsJob: #{id} : Spawning fiber") - active_fibers += 1 - spawn do - begin - LOGGER.trace("RefreshChannelsJob: #{id} fiber : Fetching channel") - channel = fetch_channel(id, pull_all_videos: CONFIG.full_refresh) - - lim_fibers = max_fibers - - LOGGER.trace("RefreshChannelsJob: #{id} fiber : Updating DB") - Invidious::Database::Channels.update_author(id, channel.author) - rescue ex - LOGGER.error("RefreshChannelsJob: #{id} : #{ex.message}") - if ex.message == "Deleted or invalid channel" - Invidious::Database::Channels.update_mark_deleted(id) - else - lim_fibers = 1 - LOGGER.error("RefreshChannelsJob: #{id} fiber : backing off for #{backoff}s") - sleep backoff - if backoff < 1.days - backoff += backoff - else - backoff = 1.days - end - end - ensure - LOGGER.debug("RefreshChannelsJob: #{id} fiber : Done") - active_channel.send(true) - end - end - end - end - - LOGGER.debug("RefreshChannelsJob: Done, sleeping for #{CONFIG.channel_refresh_interval}") - sleep CONFIG.channel_refresh_interval - Fiber.yield - end - end -end diff --git a/invidious/src/invidious/jobs/refresh_feeds_job.cr b/invidious/src/invidious/jobs/refresh_feeds_job.cr deleted file mode 100755 index 4f8130d..0000000 --- a/invidious/src/invidious/jobs/refresh_feeds_job.cr +++ /dev/null @@ -1,75 +0,0 @@ -class Invidious::Jobs::RefreshFeedsJob < Invidious::Jobs::BaseJob - private getter db : DB::Database - - def initialize(@db) - end - - def begin - max_fibers = CONFIG.feed_threads - active_fibers = 0 - active_channel = ::Channel(Bool).new - - loop do - db.query("SELECT email FROM users WHERE feed_needs_update = true OR feed_needs_update IS NULL") do |rs| - rs.each do - email = rs.read(String) - view_name = "subscriptions_#{sha256(email)}" - - if active_fibers >= max_fibers - if active_channel.receive - active_fibers -= 1 - end - end - - active_fibers += 1 - spawn do - begin - # Drop outdated views - column_array = Invidious::Database.get_column_array(db, view_name) - ChannelVideo.type_array.each_with_index do |name, i| - if name != column_array[i]? - LOGGER.info("RefreshFeedsJob: DROP MATERIALIZED VIEW #{view_name}") - db.exec("DROP MATERIALIZED VIEW #{view_name}") - raise "view does not exist" - end - end - - if !db.query_one("SELECT pg_get_viewdef('#{view_name}')", as: String).includes? "WHERE ((cv.ucid = ANY (u.subscriptions))" - LOGGER.info("RefreshFeedsJob: Materialized view #{view_name} is out-of-date, recreating...") - db.exec("DROP MATERIALIZED VIEW #{view_name}") - end - - db.exec("REFRESH MATERIALIZED VIEW #{view_name}") - db.exec("UPDATE users SET feed_needs_update = false WHERE email = $1", email) - rescue ex - # Rename old views - begin - legacy_view_name = "subscriptions_#{sha256(email)[0..7]}" - - db.exec("SELECT * FROM #{legacy_view_name} LIMIT 0") - LOGGER.info("RefreshFeedsJob: RENAME MATERIALIZED VIEW #{legacy_view_name}") - db.exec("ALTER MATERIALIZED VIEW #{legacy_view_name} RENAME TO #{view_name}") - rescue ex - begin - # While iterating through, we may have an email stored from a deleted account - if db.query_one?("SELECT true FROM users WHERE email = $1", email, as: Bool) - LOGGER.info("RefreshFeedsJob: CREATE #{view_name}") - db.exec("CREATE MATERIALIZED VIEW #{view_name} AS #{MATERIALIZED_VIEW_SQL.call(email)}") - db.exec("UPDATE users SET feed_needs_update = false WHERE email = $1", email) - end - rescue ex - LOGGER.error("RefreshFeedJobs: REFRESH #{email} : #{ex.message}") - end - end - end - - active_channel.send(true) - end - end - end - - sleep 5.seconds - Fiber.yield - end - end -end diff --git a/invidious/src/invidious/jobs/statistics_refresh_job.cr b/invidious/src/invidious/jobs/statistics_refresh_job.cr deleted file mode 100755 index 66c91ad..0000000 --- a/invidious/src/invidious/jobs/statistics_refresh_job.cr +++ /dev/null @@ -1,70 +0,0 @@ -class Invidious::Jobs::StatisticsRefreshJob < Invidious::Jobs::BaseJob - STATISTICS = { - "version" => "2.0", - "software" => { - "name" => "invidious", - "version" => "", - "branch" => "", - }, - "openRegistrations" => true, - "usage" => { - "users" => { - "total" => 0_i64, - "activeHalfyear" => 0_i64, - "activeMonth" => 0_i64, - }, - }, - "metadata" => { - "updatedAt" => Time.utc.to_unix, - "lastChannelRefreshedAt" => 0_i64, - }, - - # - # "totalRequests" => 0_i64, - # "successfulRequests" => 0_i64 - # "ratio" => 0_i64 - # - "playback" => {} of String => Int64 | Float64, - } - - private getter db : DB::Database - - def initialize(@db, @software_config : Hash(String, String)) - end - - def begin - load_initial_stats - - loop do - refresh_stats - sleep 10.minute - Fiber.yield - end - end - - # should only be called once at the very beginning - private def load_initial_stats - STATISTICS["software"] = { - "name" => @software_config["name"], - "version" => @software_config["version"], - "branch" => @software_config["branch"], - } - STATISTICS["openRegistrations"] = CONFIG.registration_enabled - end - - private def refresh_stats - users = STATISTICS.dig("usage", "users").as(Hash(String, Int64)) - - users["total"] = Invidious::Database::Statistics.count_users_total - users["activeHalfyear"] = Invidious::Database::Statistics.count_users_active_6m - users["activeMonth"] = Invidious::Database::Statistics.count_users_active_1m - - STATISTICS["metadata"] = { - "updatedAt" => Time.utc.to_unix, - "lastChannelRefreshedAt" => Invidious::Database::Statistics.channel_last_update.try &.to_unix || 0_i64, - } - - # Reset playback requests tracker - STATISTICS["playback"] = {} of String => Int64 | Float64 - end -end diff --git a/invidious/src/invidious/jobs/subscribe_to_feeds_job.cr b/invidious/src/invidious/jobs/subscribe_to_feeds_job.cr deleted file mode 100755 index 8584fb9..0000000 --- a/invidious/src/invidious/jobs/subscribe_to_feeds_job.cr +++ /dev/null @@ -1,50 +0,0 @@ -class Invidious::Jobs::SubscribeToFeedsJob < Invidious::Jobs::BaseJob - private getter db : DB::Database - private getter hmac_key : String - - def initialize(@db, @hmac_key) - end - - def begin - max_fibers = 1 - if CONFIG.use_pubsub_feeds.is_a?(Int32) - max_fibers = CONFIG.use_pubsub_feeds.as(Int32) - end - - active_fibers = 0 - active_channel = ::Channel(Bool).new - - loop do - db.query_all("SELECT id FROM channels WHERE CURRENT_TIMESTAMP - subscribed > interval '4 days' OR subscribed IS NULL") do |rs| - rs.each do - ucid = rs.read(String) - - if active_fibers >= max_fibers.as(Int32) - if active_channel.receive - active_fibers -= 1 - end - end - - active_fibers += 1 - - spawn do - begin - response = subscribe_pubsub(ucid, hmac_key) - - if response.status_code >= 400 - LOGGER.error("SubscribeToFeedsJob: #{ucid} : #{response.body}") - end - rescue ex - LOGGER.error("SubscribeToFeedsJob: #{ucid} : #{ex.message}") - end - - active_channel.send(true) - end - end - end - - sleep 1.minute - Fiber.yield - end - end -end diff --git a/invidious/src/invidious/jobs/update_decrypt_function_job.cr b/invidious/src/invidious/jobs/update_decrypt_function_job.cr deleted file mode 100755 index 6fa0ae1..0000000 --- a/invidious/src/invidious/jobs/update_decrypt_function_job.cr +++ /dev/null @@ -1,14 +0,0 @@ -class Invidious::Jobs::UpdateDecryptFunctionJob < Invidious::Jobs::BaseJob - def begin - loop do - begin - DECRYPT_FUNCTION.update_decrypt_function - rescue ex - LOGGER.error("UpdateDecryptFunctionJob : #{ex.message}") - ensure - sleep 1.minute - Fiber.yield - end - end - end -end diff --git a/invidious/src/invidious/jsonify/api_v1/common.cr b/invidious/src/invidious/jsonify/api_v1/common.cr deleted file mode 100755 index 64b0646..0000000 --- a/invidious/src/invidious/jsonify/api_v1/common.cr +++ /dev/null @@ -1,18 +0,0 @@ -require "json" - -module Invidious::JSONify::APIv1 - extend self - - def thumbnails(json : JSON::Builder, id : String) - json.array do - build_thumbnails(id).each do |thumbnail| - json.object do - json.field "quality", thumbnail[:name] - json.field "url", "#{thumbnail[:host]}/vi/#{id}/#{thumbnail["url"]}.jpg" - json.field "width", thumbnail[:width] - json.field "height", thumbnail[:height] - end - end - end - end -end diff --git a/invidious/src/invidious/jsonify/api_v1/video_json.cr b/invidious/src/invidious/jsonify/api_v1/video_json.cr deleted file mode 100755 index 1651559..0000000 --- a/invidious/src/invidious/jsonify/api_v1/video_json.cr +++ /dev/null @@ -1,274 +0,0 @@ -require "json" - -module Invidious::JSONify::APIv1 - extend self - - def video(video : Video, json : JSON::Builder, *, locale : String?, proxy : Bool = false) - json.object do - json.field "type", video.video_type - - json.field "title", video.title - json.field "videoId", video.id - - json.field "error", video.info["reason"] if video.info["reason"]? - - json.field "videoThumbnails" do - self.thumbnails(json, video.id) - end - json.field "storyboards" do - self.storyboards(json, video.id, video.storyboards) - end - - json.field "description", video.description - json.field "descriptionHtml", video.description_html - json.field "published", video.published.to_unix - json.field "publishedText", translate(locale, "`x` ago", recode_date(video.published, locale)) - json.field "keywords", video.keywords - - json.field "viewCount", video.views - json.field "likeCount", video.likes - json.field "dislikeCount", 0_i64 - - json.field "paid", video.paid - json.field "premium", video.premium - json.field "isFamilyFriendly", video.is_family_friendly - json.field "allowedRegions", video.allowed_regions - json.field "genre", video.genre - json.field "genreUrl", video.genre_url - - json.field "author", video.author - json.field "authorId", video.ucid - json.field "authorUrl", "/channel/#{video.ucid}" - json.field "authorVerified", video.author_verified - - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - - qualities.each do |quality| - json.object do - json.field "url", video.author_thumbnail.gsub(/=s\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", quality - end - end - end - end - - json.field "subCountText", video.sub_count_text - - json.field "lengthSeconds", video.length_seconds - json.field "allowRatings", video.allow_ratings - json.field "rating", 0_i64 - json.field "isListed", video.is_listed - json.field "liveNow", video.live_now - json.field "isUpcoming", video.is_upcoming - - if video.premiere_timestamp - json.field "premiereTimestamp", video.premiere_timestamp.try &.to_unix - end - - if hlsvp = video.hls_manifest_url - hlsvp = hlsvp.gsub("https://manifest.googlevideo.com", HOST_URL) - json.field "hlsUrl", hlsvp - end - - json.field "dashUrl", "#{HOST_URL}/api/manifest/dash/id/#{video.id}" - - json.field "adaptiveFormats" do - json.array do - video.adaptive_fmts.each do |fmt| - json.object do - # Only available on regular videos, not livestreams/OTF streams - if init_range = fmt["initRange"]? - json.field "init", "#{init_range["start"]}-#{init_range["end"]}" - end - if index_range = fmt["indexRange"]? - json.field "index", "#{index_range["start"]}-#{index_range["end"]}" - end - - # Not available on MPEG-4 Timed Text (`text/mp4`) streams (livestreams only) - json.field "bitrate", fmt["bitrate"].as_i.to_s if fmt["bitrate"]? - - if proxy - json.field "url", Invidious::HttpServer::Utils.proxy_video_url( - fmt["url"].to_s, absolute: true - ) - else - json.field "url", fmt["url"] - end - - json.field "itag", fmt["itag"].as_i.to_s - json.field "type", fmt["mimeType"] - json.field "clen", fmt["contentLength"]? || "-1" - - # Last modified is a unix timestamp with µS, with the dot omitted. - # E.g: 1638056732(.)141582 - # - # On livestreams, it's not present, so always fall back to the - # current unix timestamp (up to mS precision) for compatibility. - last_modified = fmt["lastModified"]? - last_modified ||= "#{Time.utc.to_unix_ms.to_s}000" - json.field "lmt", last_modified - - json.field "projectionType", fmt["projectionType"] - - if fmt_info = Invidious::Videos::Formats.itag_to_metadata?(fmt["itag"]) - fps = fmt_info["fps"]?.try &.to_i || fmt["fps"]?.try &.as_i || 30 - json.field "fps", fps - json.field "container", fmt_info["ext"] - json.field "encoding", fmt_info["vcodec"]? || fmt_info["acodec"] - - if fmt_info["height"]? - json.field "resolution", "#{fmt_info["height"]}p" - - quality_label = "#{fmt_info["height"]}p" - if fps > 30 - quality_label += "60" - end - json.field "qualityLabel", quality_label - - if fmt_info["width"]? - json.field "size", "#{fmt_info["width"]}x#{fmt_info["height"]}" - end - end - end - - # Livestream chunk infos - json.field "targetDurationSec", fmt["targetDurationSec"].as_i if fmt.has_key?("targetDurationSec") - json.field "maxDvrDurationSec", fmt["maxDvrDurationSec"].as_i if fmt.has_key?("maxDvrDurationSec") - - # Audio-related data - json.field "audioQuality", fmt["audioQuality"] if fmt.has_key?("audioQuality") - json.field "audioSampleRate", fmt["audioSampleRate"].as_s.to_i if fmt.has_key?("audioSampleRate") - json.field "audioChannels", fmt["audioChannels"] if fmt.has_key?("audioChannels") - - # Extra misc stuff - json.field "colorInfo", fmt["colorInfo"] if fmt.has_key?("colorInfo") - json.field "captionTrack", fmt["captionTrack"] if fmt.has_key?("captionTrack") - end - end - end - end - - json.field "formatStreams" do - json.array do - video.fmt_stream.each do |fmt| - json.object do - json.field "url", fmt["url"] - json.field "itag", fmt["itag"].as_i.to_s - json.field "type", fmt["mimeType"] - json.field "quality", fmt["quality"] - - fmt_info = Invidious::Videos::Formats.itag_to_metadata?(fmt["itag"]) - if fmt_info - fps = fmt_info["fps"]?.try &.to_i || fmt["fps"]?.try &.as_i || 30 - json.field "fps", fps - json.field "container", fmt_info["ext"] - json.field "encoding", fmt_info["vcodec"]? || fmt_info["acodec"] - - if fmt_info["height"]? - json.field "resolution", "#{fmt_info["height"]}p" - - quality_label = "#{fmt_info["height"]}p" - if fps > 30 - quality_label += "60" - end - json.field "qualityLabel", quality_label - - if fmt_info["width"]? - json.field "size", "#{fmt_info["width"]}x#{fmt_info["height"]}" - end - end - end - end - end - end - end - - json.field "captions" do - json.array do - video.captions.each do |caption| - json.object do - json.field "label", caption.name - json.field "language_code", caption.language_code - json.field "url", "/api/v1/captions/#{video.id}?label=#{URI.encode_www_form(caption.name)}" - end - end - end - end - - if !video.music.empty? - json.field "musicTracks" do - json.array do - video.music.each do |music| - json.object do - json.field "song", music.song - json.field "artist", music.artist - json.field "album", music.album - json.field "license", music.license - end - end - end - end - end - - json.field "recommendedVideos" do - json.array do - video.related_videos.each do |rv| - if rv["id"]? - json.object do - json.field "videoId", rv["id"] - json.field "title", rv["title"] - json.field "videoThumbnails" do - self.thumbnails(json, rv["id"]) - end - - json.field "author", rv["author"] - json.field "authorUrl", "/channel/#{rv["ucid"]?}" - json.field "authorId", rv["ucid"]? - if rv["author_thumbnail"]? - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - - qualities.each do |quality| - json.object do - json.field "url", rv["author_thumbnail"].gsub(/s\d+-/, "s#{quality}-") - json.field "width", quality - json.field "height", quality - end - end - end - end - end - - json.field "lengthSeconds", rv["length_seconds"]?.try &.to_i - json.field "viewCountText", rv["short_view_count"]? - json.field "viewCount", rv["view_count"]?.try &.empty? ? nil : rv["view_count"].to_i64 - end - end - end - end - end - end - end - - def storyboards(json, id, storyboards) - json.array do - storyboards.each do |storyboard| - json.object do - json.field "url", "/api/v1/storyboards/#{id}?width=#{storyboard[:width]}&height=#{storyboard[:height]}" - json.field "templateUrl", storyboard[:url] - json.field "width", storyboard[:width] - json.field "height", storyboard[:height] - json.field "count", storyboard[:count] - json.field "interval", storyboard[:interval] - json.field "storyboardWidth", storyboard[:storyboard_width] - json.field "storyboardHeight", storyboard[:storyboard_height] - json.field "storyboardCount", storyboard[:storyboard_count] - end - end - end - end -end diff --git a/invidious/src/invidious/mixes.cr b/invidious/src/invidious/mixes.cr deleted file mode 100755 index 823ca85..0000000 --- a/invidious/src/invidious/mixes.cr +++ /dev/null @@ -1,119 +0,0 @@ -struct MixVideo - include DB::Serializable - - property title : String - property id : String - property author : String - property ucid : String - property length_seconds : Int32 - property index : Int32 - property rdid : String -end - -struct Mix - include DB::Serializable - - property title : String - property id : String - property videos : Array(MixVideo) -end - -def fetch_mix(rdid, video_id, cookies = nil, locale = nil) - headers = HTTP::Headers.new - - if cookies - headers = cookies.add_request_headers(headers) - end - - video_id = "CvFH_6DNRCY" if rdid.starts_with? "OLAK5uy_" - response = YT_POOL.client &.get("/watch?v=#{video_id}&list=#{rdid}&gl=US&hl=en", headers) - initial_data = extract_initial_data(response.body) - - if !initial_data["contents"]["twoColumnWatchNextResults"]["playlist"]? - raise InfoException.new("Could not create mix.") - end - - playlist = initial_data["contents"]["twoColumnWatchNextResults"]["playlist"]["playlist"] - mix_title = playlist["title"].as_s - - contents = playlist["contents"].as_a - if contents.map { |video| video["playlistPanelVideoRenderer"]["videoId"] }.includes? video_id - until contents[0]["playlistPanelVideoRenderer"]["videoId"].as_s == video_id - contents.shift - end - end - - videos = [] of MixVideo - contents.each do |item| - item = item["playlistPanelVideoRenderer"] - - id = item["videoId"].as_s - title = item["title"]?.try &.["simpleText"].as_s - next if !title - - author = item["longBylineText"]["runs"][0]["text"].as_s - ucid = item["longBylineText"]["runs"][0]["navigationEndpoint"]["browseEndpoint"]["browseId"].as_s - length_seconds = decode_length_seconds(item["lengthText"]["simpleText"].as_s) - index = item["navigationEndpoint"]["watchEndpoint"]["index"].as_i - - videos << MixVideo.new({ - title: title, - id: id, - author: author, - ucid: ucid, - length_seconds: length_seconds, - index: index, - rdid: rdid, - }) - end - - if !cookies - next_page = fetch_mix(rdid, videos[-1].id, response.cookies, locale) - videos += next_page.videos - end - - videos.uniq!(&.id) - videos = videos.first(50) - return Mix.new({ - title: mix_title, - id: rdid, - videos: videos, - }) -end - -def template_mix(mix) - html = <<-END_HTML -

    - - #{mix["title"]} - -

    -
    -
      - END_HTML - - mix["videos"].as_a.each do |video| - html += <<-END_HTML -
    1. - -
      - -

      #{recode_length_seconds(video["lengthSeconds"].as_i)}

      -
      -

      #{video["title"]}

      -

      - #{video["author"]} -

      -
      -
    2. - END_HTML - end - - html += <<-END_HTML -
    -
    -
    - END_HTML - - html -end diff --git a/invidious/src/invidious/playlists.cr b/invidious/src/invidious/playlists.cr deleted file mode 100755 index 955e085..0000000 --- a/invidious/src/invidious/playlists.cr +++ /dev/null @@ -1,534 +0,0 @@ -struct PlaylistVideo - include DB::Serializable - - property title : String - property id : String - property author : String - property ucid : String - property length_seconds : Int32 - property published : Time - property plid : String - property index : Int64 - property live_now : Bool - - def to_xml(xml : XML::Builder) - xml.element("entry") do - xml.element("id") { xml.text "yt:video:#{self.id}" } - xml.element("yt:videoId") { xml.text self.id } - xml.element("yt:channelId") { xml.text self.ucid } - xml.element("title") { xml.text self.title } - xml.element("link", rel: "alternate", href: "#{HOST_URL}/watch?v=#{self.id}") - - xml.element("author") do - xml.element("name") { xml.text self.author } - xml.element("uri") { xml.text "#{HOST_URL}/channel/#{self.ucid}" } - end - - xml.element("content", type: "xhtml") do - xml.element("div", xmlns: "http://www.w3.org/1999/xhtml") do - xml.element("a", href: "#{HOST_URL}/watch?v=#{self.id}") do - xml.element("img", src: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg") - end - end - end - - xml.element("published") { xml.text self.published.to_s("%Y-%m-%dT%H:%M:%S%:z") } - - xml.element("media:group") do - xml.element("media:title") { xml.text self.title } - xml.element("media:thumbnail", url: "#{HOST_URL}/vi/#{self.id}/mqdefault.jpg", - width: "320", height: "180") - end - end - end - - def to_xml(_xml : Nil = nil) - XML.build { |xml| to_xml(xml) } - end - - def to_json(json : JSON::Builder, index : Int32? = nil) - json.object do - json.field "title", self.title - json.field "videoId", self.id - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - - json.field "videoThumbnails" do - Invidious::JSONify::APIv1.thumbnails(json, self.id) - end - - if index - json.field "index", index - json.field "indexId", self.index.to_u64.to_s(16).upcase - else - json.field "index", self.index - end - - json.field "lengthSeconds", self.length_seconds - end - end - - def to_json(_json : Nil, index : Int32? = nil) - JSON.build { |json| to_json(json, index: index) } - end -end - -struct Playlist - include DB::Serializable - - property title : String - property id : String - property author : String - property author_thumbnail : String - property ucid : String - property description : String - property description_html : String - property video_count : Int32 - property views : Int64 - property updated : Time - property thumbnail : String? - property subtitle : String? - - def to_json(offset, json : JSON::Builder, video_id : String? = nil) - json.object do - json.field "type", "playlist" - json.field "title", self.title - json.field "playlistId", self.id - json.field "playlistThumbnail", self.thumbnail - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", "/channel/#{self.ucid}" - json.field "subtitle", self.subtitle - - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - - qualities.each do |quality| - json.object do - json.field "url", self.author_thumbnail.not_nil!.gsub(/=\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", quality - end - end - end - end - - json.field "description", self.description - json.field "descriptionHtml", self.description_html - json.field "videoCount", self.video_count - - json.field "viewCount", self.views - json.field "updated", self.updated.to_unix - json.field "isListed", self.privacy.public? - - json.field "videos" do - json.array do - videos = get_playlist_videos(self, offset: offset, video_id: video_id) - videos.each do |video| - video.to_json(json) - end - end - end - end - end - - def to_json(offset, _json : Nil = nil, video_id : String? = nil) - JSON.build do |json| - to_json(offset, json, video_id: video_id) - end - end - - def privacy - PlaylistPrivacy::Public - end -end - -enum PlaylistPrivacy - Public = 0 - Unlisted = 1 - Private = 2 -end - -struct InvidiousPlaylist - include DB::Serializable - - property title : String - property id : String - property author : String - property description : String = "" - property video_count : Int32 - property created : Time - property updated : Time - - @[DB::Field(converter: InvidiousPlaylist::PlaylistPrivacyConverter)] - property privacy : PlaylistPrivacy = PlaylistPrivacy::Private - property index : Array(Int64) - - @[DB::Field(ignore: true)] - property thumbnail_id : String? - - module PlaylistPrivacyConverter - def self.from_rs(rs) - return PlaylistPrivacy.parse(String.new(rs.read(Slice(UInt8)))) - end - end - - def to_json(offset, json : JSON::Builder, video_id : String? = nil) - json.object do - json.field "type", "invidiousPlaylist" - json.field "title", self.title - json.field "playlistId", self.id - - json.field "author", self.author - json.field "authorId", self.ucid - json.field "authorUrl", nil - json.field "authorThumbnails", [] of String - - json.field "description", html_to_content(self.description_html) - json.field "descriptionHtml", self.description_html - json.field "videoCount", self.video_count - - json.field "viewCount", self.views - json.field "updated", self.updated.to_unix - json.field "isListed", self.privacy.public? - - json.field "videos" do - json.array do - if (!offset || offset == 0) && !video_id.nil? - index = Invidious::Database::PlaylistVideos.select_index(self.id, video_id) - offset = self.index.index(index) || 0 - end - - videos = get_playlist_videos(self, offset: offset, video_id: video_id) - videos.each_with_index do |video, idx| - video.to_json(json, offset + idx) - end - end - end - end - end - - def to_json(offset, _json : Nil = nil, video_id : String? = nil) - JSON.build do |json| - to_json(offset, json, video_id: video_id) - end - end - - def thumbnail - # TODO: Get playlist thumbnail from playlist data rather than first video - @thumbnail_id ||= Invidious::Database::PlaylistVideos.select_one_id(self.id, self.index) || "-----------" - "/vi/#{@thumbnail_id}/mqdefault.jpg" - end - - def author_thumbnail - nil - end - - def ucid - nil - end - - def views - 0_i64 - end - - def description_html - HTML.escape(self.description) - end -end - -def create_playlist(title, privacy, user) - plid = "IVPL#{Random::Secure.urlsafe_base64(24)[0, 31]}" - - playlist = InvidiousPlaylist.new({ - title: title.byte_slice(0, 150), - id: plid, - author: user.email, - description: "", # Max 5000 characters - video_count: 0, - created: Time.utc, - updated: Time.utc, - privacy: privacy, - index: [] of Int64, - }) - - Invidious::Database::Playlists.insert(playlist) - - return playlist -end - -def subscribe_playlist(user, playlist) - playlist = InvidiousPlaylist.new({ - title: playlist.title.byte_slice(0, 150), - id: playlist.id, - author: user.email, - description: "", # Max 5000 characters - video_count: playlist.video_count, - created: Time.utc, - updated: playlist.updated, - privacy: PlaylistPrivacy::Private, - index: [] of Int64, - }) - - Invidious::Database::Playlists.insert(playlist) - - return playlist -end - -def produce_playlist_continuation(id, index) - if id.starts_with? "UC" - id = "UU" + id.lchop("UC") - end - plid = "VL" + id - - # Emulate a "request counter" increment, to make perfectly valid - # ctokens, even if at the time of writing, it's ignored by youtube. - request_count = (index / 100).to_i64 || 1_i64 - - data = {"1:varint" => index.to_i64} - .try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i, padding: false) } - - object = { - "80226972:embedded" => { - "2:string" => plid, - "3:base64" => { - "1:varint" => request_count, - "15:string" => "PT:#{data}", - "104:embedded" => {"1:0:varint" => 0_i64}, - }, - "35:string" => id, - }, - } - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation -end - -def get_playlist(plid : String) - if plid.starts_with? "IV" - if playlist = Invidious::Database::Playlists.select(id: plid) - return playlist - else - raise NotFoundException.new("Playlist does not exist.") - end - else - return fetch_playlist(plid) - end -end - -def fetch_playlist(plid : String) - if plid.starts_with? "UC" - plid = "UU#{plid.lchop("UC")}" - end - - initial_data = YoutubeAPI.browse("VL" + plid, params: "") - - playlist_sidebar_renderer = initial_data.dig?("sidebar", "playlistSidebarRenderer", "items") - raise InfoException.new("Could not extract playlistSidebarRenderer.") if !playlist_sidebar_renderer - - playlist_info = playlist_sidebar_renderer.dig?(0, "playlistSidebarPrimaryInfoRenderer") - raise InfoException.new("Could not extract playlist info") if !playlist_info - - title = playlist_info.dig?("title", "runs", 0, "text").try &.as_s || "" - - desc_item = playlist_info["description"]? - - description_txt = desc_item.try &.["runs"]?.try &.as_a - .map(&.["text"].as_s).join("") || desc_item.try &.["simpleText"]?.try &.as_s || "" - - description_html = desc_item.try &.["runs"]?.try &.as_a - .try { |run| content_to_comment_html(run).try &.to_s } || "

    " - - thumbnail = playlist_info.dig?( - "thumbnailRenderer", "playlistVideoThumbnailRenderer", - "thumbnail", "thumbnails", 0, "url" - ).try &.as_s - - views = 0_i64 - updated = Time.utc - video_count = 0 - - subtitle = extract_text(initial_data.dig?("header", "playlistHeaderRenderer", "subtitle")) - - playlist_info["stats"]?.try &.as_a.each do |stat| - text = stat["runs"]?.try &.as_a.map(&.["text"].as_s).join("") || stat["simpleText"]?.try &.as_s - next if !text - - if text.includes? "video" - video_count = text.gsub(/\D/, "").to_i? || 0 - elsif text.includes? "view" - views = text.gsub(/\D/, "").to_i64? || 0_i64 - else - updated = decode_date(text.lchop("Last updated on ").lchop("Updated ")) - end - end - - if playlist_sidebar_renderer.size < 2 - author = "" - author_thumbnail = "" - ucid = "" - else - author_info = playlist_sidebar_renderer[1].dig?( - "playlistSidebarSecondaryInfoRenderer", "videoOwner", "videoOwnerRenderer" - ) - - raise InfoException.new("Could not extract author info") if !author_info - - author = author_info.dig?("title", "runs", 0, "text").try &.as_s || "" - author_thumbnail = author_info.dig?("thumbnail", "thumbnails", 0, "url").try &.as_s || "" - ucid = author_info.dig?("title", "runs", 0, "navigationEndpoint", "browseEndpoint", "browseId").try &.as_s || "" - end - - return Playlist.new({ - title: title, - id: plid, - author: author, - author_thumbnail: author_thumbnail, - ucid: ucid, - description: description_txt, - description_html: description_html, - video_count: video_count, - views: views, - updated: updated, - thumbnail: thumbnail, - subtitle: subtitle, - }) -end - -def get_playlist_videos(playlist : InvidiousPlaylist | Playlist, offset : Int32, video_id = nil) - # Show empty playlist if requested page is out of range - # (e.g, when a new playlist has been created, offset will be negative) - if offset >= playlist.video_count || offset < 0 - return [] of PlaylistVideo - end - - if playlist.is_a? InvidiousPlaylist - Invidious::Database::PlaylistVideos.select(playlist.id, playlist.index, offset, limit: 100) - else - if video_id - initial_data = YoutubeAPI.next({ - "videoId" => video_id, - "playlistId" => playlist.id, - }) - offset = initial_data.dig?("contents", "twoColumnWatchNextResults", "playlist", "playlist", "currentIndex").try &.as_i || offset - end - - videos = [] of PlaylistVideo - - until videos.size >= 200 || videos.size == playlist.video_count || offset >= playlist.video_count - # 100 videos per request - ctoken = produce_playlist_continuation(playlist.id, offset) - initial_data = YoutubeAPI.browse(ctoken) - videos += extract_playlist_videos(initial_data) - - offset += 100 - end - - return videos - end -end - -def extract_playlist_videos(initial_data : Hash(String, JSON::Any)) - videos = [] of PlaylistVideo - - if initial_data["contents"]? - tabs = initial_data["contents"]["twoColumnBrowseResultsRenderer"]["tabs"] - tabs_renderer = tabs.as_a.select(&.["tabRenderer"]["selected"]?.try &.as_bool)[0]["tabRenderer"] - - # Watch out the two versions, with and without "s" - if tabs_renderer["contents"]? || tabs_renderer["content"]? - # Initial playlist data - tabs_contents = tabs_renderer.["contents"]? || tabs_renderer.["content"] - - list_renderer = tabs_contents.["sectionListRenderer"]["contents"][0] - item_renderer = list_renderer.["itemSectionRenderer"]["contents"][0] - contents = item_renderer.["playlistVideoListRenderer"]["contents"].as_a - else - # Continuation data - contents = initial_data["onResponseReceivedActions"][0]? - .try &.["appendContinuationItemsAction"]["continuationItems"].as_a - end - else - contents = initial_data["response"]?.try &.["continuationContents"]["playlistVideoListContinuation"]["contents"].as_a - end - - contents.try &.each do |item| - if i = item["playlistVideoRenderer"]? - video_id = i["navigationEndpoint"]["watchEndpoint"]["videoId"].as_s - plid = i["navigationEndpoint"]["watchEndpoint"]["playlistId"].as_s - index = i["navigationEndpoint"]["watchEndpoint"]["index"].as_i64 - - title = i["title"].try { |t| t["simpleText"]? || t["runs"]?.try &.[0]["text"]? }.try &.as_s || "" - author = i["shortBylineText"]?.try &.["runs"][0]["text"].as_s || "" - ucid = i["shortBylineText"]?.try &.["runs"][0]["navigationEndpoint"]["browseEndpoint"]["browseId"].as_s || "" - length_seconds = i["lengthSeconds"]?.try &.as_s.to_i - live = false - - if !length_seconds - live = true - length_seconds = 0 - end - - videos << PlaylistVideo.new({ - title: title, - id: video_id, - author: author, - ucid: ucid, - length_seconds: length_seconds, - published: Time.utc, - plid: plid, - live_now: live, - index: index, - }) - end - end - - return videos -end - -def template_playlist(playlist) - html = <<-END_HTML -

    - - #{playlist["title"]} - -

    -
    -
      - END_HTML - - playlist["videos"].as_a.each do |video| - html += <<-END_HTML -
    1. - -
      - -

      #{recode_length_seconds(video["lengthSeconds"].as_i)}

      -
      -

      #{video["title"]}

      -

      - #{video["author"]} -

      -
      -
    2. - END_HTML - end - - html += <<-END_HTML -
    -
    -
    - END_HTML - - html -end diff --git a/invidious/src/invidious/routes/account.cr b/invidious/src/invidious/routes/account.cr deleted file mode 100755 index 9d93084..0000000 --- a/invidious/src/invidious/routes/account.cr +++ /dev/null @@ -1,354 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Account - extend self - - # ------------------- - # Password update - # ------------------- - - # Show the password change interface (GET request) - def get_change_password(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - csrf_token = generate_response(sid, {":change_password"}, HMAC_KEY) - - templated "user/change_password" - end - - # Handle the password change (POST request) - def post_change_password(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - password = env.params.body["password"]? - if password.nil? || password.empty? - return error_template(401, "Password is a required field") - end - - new_passwords = env.params.body.select { |k, v| k.match(/^new_password\[\d+\]$/) }.map { |k, v| v } - - if new_passwords.size <= 1 || new_passwords.uniq.size != 1 - return error_template(400, "New passwords must match") - end - - new_password = new_passwords.uniq[0] - if new_password.empty? - return error_template(401, "Password cannot be empty") - end - - if new_password.bytesize > 55 - return error_template(400, "Password cannot be longer than 55 characters") - end - - if !Crypto::Bcrypt::Password.new(user.password.not_nil!).verify(password.byte_slice(0, 55)) - return error_template(401, "Incorrect password") - end - - new_password = Crypto::Bcrypt::Password.create(new_password, cost: 10) - Invidious::Database::Users.update_password(user, new_password.to_s) - - env.redirect referer - end - - # ------------------- - # Account deletion - # ------------------- - - # Show the account deletion confirmation prompt (GET request) - def get_delete(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - csrf_token = generate_response(sid, {":delete_account"}, HMAC_KEY) - - templated "user/delete_account" - end - - # Handle the account deletion (POST request) - def post_delete(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - view_name = "subscriptions_#{sha256(user.email)}" - Invidious::Database::Users.delete(user) - Invidious::Database::SessionIDs.delete(email: user.email) - PG_DB.exec("DROP MATERIALIZED VIEW #{view_name}") - - env.request.cookies.each do |cookie| - cookie.expires = Time.utc(1990, 1, 1) - env.response.cookies << cookie - end - - env.redirect referer - end - - # ------------------- - # Clear history - # ------------------- - - # Show the watch history deletion confirmation prompt (GET request) - def get_clear_history(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - csrf_token = generate_response(sid, {":clear_watch_history"}, HMAC_KEY) - - templated "user/clear_watch_history" - end - - # Handle the watch history clearing (POST request) - def post_clear_history(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - Invidious::Database::Users.clear_watch_history(user) - env.redirect referer - end - - # ------------------- - # Authorize tokens - # ------------------- - - # Show the "authorize token?" confirmation prompt (GET request) - def get_authorize_token(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect "/login?referer=#{URI.encode_path_segment(env.request.resource)}" - end - - user = user.as(User) - sid = sid.as(String) - csrf_token = generate_response(sid, {":authorize_token"}, HMAC_KEY) - - scopes = env.params.query["scopes"]?.try &.split(",") - scopes ||= [] of String - - callback_url = env.params.query["callback_url"]? - if callback_url - callback_url = URI.parse(callback_url) - end - - expire = env.params.query["expire"]?.try &.to_i? - - templated "user/authorize_token" - end - - # Handle token authorization (POST request) - def post_authorize_token(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = env.get("user").as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - scopes = env.params.body.select { |k, v| k.match(/^scopes\[\d+\]$/) }.map { |k, v| v } - callback_url = env.params.body["callbackUrl"]? - expire = env.params.body["expire"]?.try &.to_i? - - access_token = generate_token(user.email, scopes, expire, HMAC_KEY) - - if callback_url - access_token = URI.encode_www_form(access_token) - url = URI.parse(callback_url) - - if url.query - query = HTTP::Params.parse(url.query.not_nil!) - else - query = HTTP::Params.new - end - - query["token"] = access_token - query["username"] = URI.encode_path_segment(user.email) - url.query = query.to_s - - env.redirect url.to_s - else - csrf_token = "" - env.set "access_token", access_token - templated "user/authorize_token" - end - end - - # ------------------- - # Manage tokens - # ------------------- - - # Show the token manager page (GET request) - def token_manager(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env, "/subscription_manager") - - if !user - return env.redirect referer - end - - user = user.as(User) - tokens = Invidious::Database::SessionIDs.select_all(user.email) - - templated "user/token_manager" - end - - # ------------------- - # AJAX for tokens - # ------------------- - - # Handle internal (non-API) token actions (POST request) - def token_ajax(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - redirect = env.params.query["redirect"]? - redirect ||= "true" - redirect = redirect == "true" - - if !user - if redirect - return env.redirect referer - else - return error_json(403, "No such user") - end - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - if redirect - return error_template(400, ex) - else - return error_json(400, ex) - end - end - - if env.params.query["action_revoke_token"]? - action = "action_revoke_token" - else - return env.redirect referer - end - - session = env.params.query["session"]? - session ||= "" - - case action - when .starts_with? "action_revoke_token" - Invidious::Database::SessionIDs.delete(sid: session, email: user.email) - else - return error_json(400, "Unsupported action #{action}") - end - - if redirect - return env.redirect referer - else - env.response.content_type = "application/json" - return "{}" - end - end -end diff --git a/invidious/src/invidious/routes/api/manifest.cr b/invidious/src/invidious/routes/api/manifest.cr deleted file mode 100755 index 662d100..0000000 --- a/invidious/src/invidious/routes/api/manifest.cr +++ /dev/null @@ -1,235 +0,0 @@ -module Invidious::Routes::API::Manifest - # /api/manifest/dash/id/:id - def self.get_dash_video_id(env) - env.response.headers.add("Access-Control-Allow-Origin", "*") - env.response.content_type = "application/dash+xml" - - local = env.params.query["local"]?.try &.== "true" - id = env.params.url["id"] - region = env.params.query["region"]? - - # Since some implementations create playlists based on resolution regardless of different codecs, - # we can opt to only add a source to a representation if it has a unique height within that representation - unique_res = env.params.query["unique_res"]?.try { |q| (q == "true" || q == "1").to_unsafe } - - begin - video = get_video(id, region: region) - rescue ex : NotFoundException - haltf env, status_code: 404 - rescue ex - haltf env, status_code: 403 - end - - if dashmpd = video.dash_manifest_url - manifest = YT_POOL.client &.get(URI.parse(dashmpd).request_target).body - - manifest = manifest.gsub(/[^<]+<\/BaseURL>/) do |baseurl| - url = baseurl.lchop("") - url = url.rchop("") - - if local - uri = URI.parse(url) - url = "#{HOST_URL}#{uri.request_target}host/#{uri.host}/" - end - - "#{url}" - end - - return manifest - end - - adaptive_fmts = video.adaptive_fmts - - if local - adaptive_fmts.each do |fmt| - fmt["url"] = JSON::Any.new("#{HOST_URL}#{URI.parse(fmt["url"].as_s).request_target}") - end - end - - audio_streams = video.audio_streams.sort_by { |stream| {stream["bitrate"].as_i} }.reverse! - video_streams = video.video_streams.sort_by { |stream| {stream["width"].as_i, stream["fps"].as_i} }.reverse! - - manifest = XML.build(indent: " ", encoding: "UTF-8") do |xml| - xml.element("MPD", "xmlns": "urn:mpeg:dash:schema:mpd:2011", - "profiles": "urn:mpeg:dash:profile:full:2011", minBufferTime: "PT1.5S", type: "static", - mediaPresentationDuration: "PT#{video.length_seconds}S") do - xml.element("Period") do - i = 0 - - {"audio/mp4"}.each do |mime_type| - mime_streams = audio_streams.select { |stream| stream["mimeType"].as_s.starts_with? mime_type } - next if mime_streams.empty? - - mime_streams.each do |fmt| - # OTF streams aren't supported yet (See https://github.com/TeamNewPipe/NewPipe/issues/2415) - next if !(fmt.has_key?("indexRange") && fmt.has_key?("initRange")) - - # Different representations of the same audio should be groupped into one AdaptationSet. - # However, most players don't support auto quality switching, so we have to trick them - # into providing a quality selector. - # See https://github.com/iv-org/invidious/issues/3074 for more details. - xml.element("AdaptationSet", id: i, mimeType: mime_type, startWithSAP: 1, subsegmentAlignment: true, label: fmt["bitrate"].to_s + "k") do - codecs = fmt["mimeType"].as_s.split("codecs=")[1].strip('"') - bandwidth = fmt["bitrate"].as_i - itag = fmt["itag"].as_i - url = fmt["url"].as_s - - xml.element("Role", schemeIdUri: "urn:mpeg:dash:role:2011", value: i == 0 ? "main" : "alternate") - - xml.element("Representation", id: fmt["itag"], codecs: codecs, bandwidth: bandwidth) do - xml.element("AudioChannelConfiguration", schemeIdUri: "urn:mpeg:dash:23003:3:audio_channel_configuration:2011", - value: "2") - xml.element("BaseURL") { xml.text url } - xml.element("SegmentBase", indexRange: "#{fmt["indexRange"]["start"]}-#{fmt["indexRange"]["end"]}") do - xml.element("Initialization", range: "#{fmt["initRange"]["start"]}-#{fmt["initRange"]["end"]}") - end - end - end - i += 1 - end - end - - potential_heights = {4320, 2160, 1440, 1080, 720, 480, 360, 240, 144} - - {"video/mp4"}.each do |mime_type| - mime_streams = video_streams.select { |stream| stream["mimeType"].as_s.starts_with? mime_type } - next if mime_streams.empty? - - heights = [] of Int32 - xml.element("AdaptationSet", id: i, mimeType: mime_type, startWithSAP: 1, subsegmentAlignment: true, scanType: "progressive") do - mime_streams.each do |fmt| - # OTF streams aren't supported yet (See https://github.com/TeamNewPipe/NewPipe/issues/2415) - next if !(fmt.has_key?("indexRange") && fmt.has_key?("initRange")) - - codecs = fmt["mimeType"].as_s.split("codecs=")[1].strip('"') - bandwidth = fmt["bitrate"].as_i - itag = fmt["itag"].as_i - url = fmt["url"].as_s - width = fmt["width"].as_i - height = fmt["height"].as_i - - # Resolutions reported by YouTube player (may not accurately reflect source) - height = potential_heights.min_by { |x| (height - x).abs } - next if unique_res && heights.includes? height - heights << height - - xml.element("Representation", id: itag, codecs: codecs, width: width, height: height, - startWithSAP: "1", maxPlayoutRate: "1", - bandwidth: bandwidth, frameRate: fmt["fps"]) do - xml.element("BaseURL") { xml.text url } - xml.element("SegmentBase", indexRange: "#{fmt["indexRange"]["start"]}-#{fmt["indexRange"]["end"]}") do - xml.element("Initialization", range: "#{fmt["initRange"]["start"]}-#{fmt["initRange"]["end"]}") - end - end - end - end - - i += 1 - end - end - end - end - - return manifest - end - - # /api/manifest/dash/id/videoplayback - def self.get_dash_video_playback(env) - env.response.headers.delete("Content-Type") - env.response.headers["Access-Control-Allow-Origin"] = "*" - env.redirect "/videoplayback?#{env.params.query}" - end - - # /api/manifest/dash/id/videoplayback/* - def self.get_dash_video_playback_greedy(env) - env.response.headers.delete("Content-Type") - env.response.headers["Access-Control-Allow-Origin"] = "*" - env.redirect env.request.path.lchop("/api/manifest/dash/id") - end - - # /api/manifest/dash/id/videoplayback && /api/manifest/dash/id/videoplayback/* - def self.options_dash_video_playback(env) - env.response.headers.delete("Content-Type") - env.response.headers["Access-Control-Allow-Origin"] = "*" - env.response.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS" - env.response.headers["Access-Control-Allow-Headers"] = "Content-Type, Range" - end - - # /api/manifest/hls_playlist/* - def self.get_hls_playlist(env) - response = YT_POOL.client &.get(env.request.path) - - if response.status_code != 200 - haltf env, status_code: response.status_code - end - - local = env.params.query["local"]?.try &.== "true" - - env.response.content_type = "application/x-mpegURL" - env.response.headers.add("Access-Control-Allow-Origin", "*") - - manifest = response.body - - if local - manifest = manifest.gsub(/^https:\/\/\w+---.{11}\.c\.youtube\.com[^\n]*/m) do |match| - path = URI.parse(match).path - - path = path.lchop("/videoplayback/") - path = path.rchop("/") - - path = path.gsub(/mime\/\w+\/\w+/) do |mimetype| - mimetype = mimetype.split("/") - mimetype[0] + "/" + mimetype[1] + "%2F" + mimetype[2] - end - - path = path.split("/") - - raw_params = {} of String => Array(String) - path.each_slice(2) do |pair| - key, value = pair - value = URI.decode_www_form(value) - - if raw_params[key]? - raw_params[key] << value - else - raw_params[key] = [value] - end - end - - raw_params = HTTP::Params.new(raw_params) - if fvip = raw_params["hls_chunk_host"].match(/r(?\d+)---/) - raw_params["fvip"] = fvip["fvip"] - end - - raw_params["local"] = "true" - - "#{HOST_URL}/videoplayback?#{raw_params}" - end - end - - manifest - end - - # /api/manifest/hls_variant/* - def self.get_hls_variant(env) - response = YT_POOL.client &.get(env.request.path) - - if response.status_code != 200 - haltf env, status_code: response.status_code - end - - local = env.params.query["local"]?.try &.== "true" - - env.response.content_type = "application/x-mpegURL" - env.response.headers.add("Access-Control-Allow-Origin", "*") - - manifest = response.body - - if local - manifest = manifest.gsub("https://www.youtube.com", HOST_URL) - manifest = manifest.gsub("index.m3u8", "index.m3u8?local=true") - end - - manifest - end -end diff --git a/invidious/src/invidious/routes/api/v1/authenticated.cr b/invidious/src/invidious/routes/api/v1/authenticated.cr deleted file mode 100755 index a35d2f2..0000000 --- a/invidious/src/invidious/routes/api/v1/authenticated.cr +++ /dev/null @@ -1,490 +0,0 @@ -module Invidious::Routes::API::V1::Authenticated - # The notification APIs cannot be extracted yet! - # They require the *local* notifications constant defined in invidious.cr - # - # def self.notifications(env) - # env.response.content_type = "text/event-stream" - - # topics = env.params.body["topics"]?.try &.split(",").uniq.first(1000) - # topics ||= [] of String - - # create_notification_stream(env, topics, connection_channel) - # end - - def self.get_preferences(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - user.preferences.to_json - end - - def self.set_preferences(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - begin - user.preferences = Preferences.from_json(env.request.body || "{}") - rescue - end - - Invidious::Database::Users.update_preferences(user) - - env.response.status_code = 204 - end - - def self.export_invidious(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - return Invidious::User::Export.to_invidious(user) - end - - def self.import_invidious(env) - user = env.get("user").as(User) - - begin - if body = env.request.body - body = env.request.body.not_nil!.gets_to_end - else - body = "{}" - end - Invidious::User::Import.from_invidious(user, body) - rescue - end - - env.response.status_code = 204 - end - - def self.get_history(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - page = env.params.query["page"]?.try &.to_i?.try &.clamp(0, Int32::MAX) - page ||= 1 - - max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE) - max_results ||= user.preferences.max_results - max_results ||= CONFIG.default_user_preferences.max_results - - start_index = (page - 1) * max_results - if user.watched[start_index]? - watched = user.watched.reverse[start_index, max_results] - end - watched ||= [] of String - - return watched.to_json - end - - def self.mark_watched(env) - user = env.get("user").as(User) - - if !user.preferences.watch_history - return error_json(409, "Watch history is disabled in preferences.") - end - - id = env.params.url["id"] - if !id.match(/^[a-zA-Z0-9_-]{11}$/) - return error_json(400, "Invalid video id.") - end - - Invidious::Database::Users.mark_watched(user, id) - env.response.status_code = 204 - end - - def self.mark_unwatched(env) - user = env.get("user").as(User) - - if !user.preferences.watch_history - return error_json(409, "Watch history is disabled in preferences.") - end - - id = env.params.url["id"] - if !id.match(/^[a-zA-Z0-9_-]{11}$/) - return error_json(400, "Invalid video id.") - end - - Invidious::Database::Users.mark_unwatched(user, id) - env.response.status_code = 204 - end - - def self.clear_history(env) - user = env.get("user").as(User) - - Invidious::Database::Users.clear_watch_history(user) - env.response.status_code = 204 - end - - def self.feed(env) - env.response.content_type = "application/json" - - user = env.get("user").as(User) - locale = env.get("preferences").as(Preferences).locale - - max_results = env.params.query["max_results"]?.try &.to_i? - max_results ||= user.preferences.max_results - max_results ||= CONFIG.default_user_preferences.max_results - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - videos, notifications = get_subscription_feed(user, max_results, page) - - JSON.build do |json| - json.object do - json.field "notifications" do - json.array do - notifications.each do |video| - video.to_json(locale, json) - end - end - end - - json.field "videos" do - json.array do - videos.each do |video| - video.to_json(locale, json) - end - end - end - end - end - end - - def self.get_subscriptions(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - subscriptions = Invidious::Database::Channels.select(user.subscriptions) - - JSON.build do |json| - json.array do - subscriptions.each do |subscription| - json.object do - json.field "author", subscription.author - json.field "authorId", subscription.id - end - end - end - end - end - - def self.subscribe_channel(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - ucid = env.params.url["ucid"] - - if !user.subscriptions.includes? ucid - get_channel(ucid) - Invidious::Database::Users.subscribe_channel(user, ucid) - end - - env.response.status_code = 204 - end - - def self.unsubscribe_channel(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - ucid = env.params.url["ucid"] - - Invidious::Database::Users.unsubscribe_channel(user, ucid) - - env.response.status_code = 204 - end - - def self.list_playlists(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - playlists = Invidious::Database::Playlists.select_all(author: user.email) - - JSON.build do |json| - json.array do - playlists.each do |playlist| - playlist.to_json(0, json) - end - end - end - end - - def self.create_playlist(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - title = env.params.json["title"]?.try &.as(String).delete("<>").byte_slice(0, 150) - if !title - return error_json(400, "Invalid title.") - end - - privacy = env.params.json["privacy"]?.try { |p| PlaylistPrivacy.parse(p.as(String).downcase) } - if !privacy - return error_json(400, "Invalid privacy setting.") - end - - if Invidious::Database::Playlists.count_owned_by(user.email) >= 100 - return error_json(400, "User cannot have more than 100 playlists.") - end - - playlist = create_playlist(title, privacy, user) - env.response.headers["Location"] = "#{HOST_URL}/api/v1/auth/playlists/#{playlist.id}" - env.response.status_code = 201 - { - "title" => title, - "playlistId" => playlist.id, - }.to_json - end - - def self.update_playlist_attribute(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - plid = env.params.url["plid"]? - if !plid || plid.empty? - return error_json(400, "A playlist ID is required") - end - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email && playlist.privacy.private? - return error_json(404, "Playlist does not exist.") - end - - if playlist.author != user.email - return error_json(403, "Invalid user") - end - - title = env.params.json["title"].try &.as(String).delete("<>").byte_slice(0, 150) || playlist.title - privacy = env.params.json["privacy"]?.try { |p| PlaylistPrivacy.parse(p.as(String).downcase) } || playlist.privacy - description = env.params.json["description"]?.try &.as(String).delete("\r") || playlist.description - - if title != playlist.title || - privacy != playlist.privacy || - description != playlist.description - updated = Time.utc - else - updated = playlist.updated - end - - Invidious::Database::Playlists.update(plid, title, privacy, description, updated) - - env.response.status_code = 204 - end - - def self.delete_playlist(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - plid = env.params.url["plid"] - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email && playlist.privacy.private? - return error_json(404, "Playlist does not exist.") - end - - if playlist.author != user.email - return error_json(403, "Invalid user") - end - - Invidious::Database::Playlists.delete(plid) - - env.response.status_code = 204 - end - - def self.insert_video_into_playlist(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - plid = env.params.url["plid"] - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email && playlist.privacy.private? - return error_json(404, "Playlist does not exist.") - end - - if playlist.author != user.email - return error_json(403, "Invalid user") - end - - if playlist.index.size >= CONFIG.playlist_length_limit - return error_json(400, "Playlist cannot have more than #{CONFIG.playlist_length_limit} videos") - end - - video_id = env.params.json["videoId"].try &.as(String) - if !video_id - return error_json(403, "Invalid videoId") - end - - begin - video = get_video(video_id) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - return error_json(500, ex) - end - - playlist_video = PlaylistVideo.new({ - title: video.title, - id: video.id, - author: video.author, - ucid: video.ucid, - length_seconds: video.length_seconds, - published: video.published, - plid: plid, - live_now: video.live_now, - index: Random::Secure.rand(0_i64..Int64::MAX), - }) - - Invidious::Database::PlaylistVideos.insert(playlist_video) - Invidious::Database::Playlists.update_video_added(plid, playlist_video.index) - - env.response.headers["Location"] = "#{HOST_URL}/api/v1/auth/playlists/#{plid}/videos/#{playlist_video.index.to_u64.to_s(16).upcase}" - env.response.status_code = 201 - - JSON.build do |json| - playlist_video.to_json(json, index: playlist.index.size) - end - end - - def self.delete_video_in_playlist(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - - plid = env.params.url["plid"] - index = env.params.url["index"].to_i64(16) - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email && playlist.privacy.private? - return error_json(404, "Playlist does not exist.") - end - - if playlist.author != user.email - return error_json(403, "Invalid user") - end - - if !playlist.index.includes? index - return error_json(404, "Playlist does not contain index") - end - - Invidious::Database::PlaylistVideos.delete(index) - Invidious::Database::Playlists.update_video_removed(plid, index) - - env.response.status_code = 204 - end - - # Invidious::Routing.patch "/api/v1/auth/playlists/:plid/videos/:index" - # def modify_playlist_at(env) - # TODO - # end - - def self.get_tokens(env) - env.response.content_type = "application/json" - user = env.get("user").as(User) - scopes = env.get("scopes").as(Array(String)) - - tokens = Invidious::Database::SessionIDs.select_all(user.email) - - JSON.build do |json| - json.array do - tokens.each do |token| - json.object do - json.field "session", token[:session] - json.field "issued", token[:issued].to_unix - end - end - end - end - end - - def self.register_token(env) - user = env.get("user").as(User) - locale = env.get("preferences").as(Preferences).locale - - case env.request.headers["Content-Type"]? - when "application/x-www-form-urlencoded" - scopes = env.params.body.select { |k, _| k.match(/^scopes\[\d+\]$/) }.map { |_, v| v } - callback_url = env.params.body["callbackUrl"]? - expire = env.params.body["expire"]?.try &.to_i? - when "application/json" - scopes = env.params.json["scopes"].as(Array).map(&.as_s) - callback_url = env.params.json["callbackUrl"]?.try &.as(String) - expire = env.params.json["expire"]?.try &.as(Int64) - else - return error_json(400, "Invalid or missing header 'Content-Type'") - end - - if callback_url && callback_url.empty? - callback_url = nil - end - - if callback_url - callback_url = URI.parse(callback_url) - end - - if sid = env.get?("sid").try &.as(String) - env.response.content_type = "text/html" - - csrf_token = generate_response(sid, {":authorize_token"}, HMAC_KEY, use_nonce: true) - return templated "user/authorize_token" - else - env.response.content_type = "application/json" - - superset_scopes = env.get("scopes").as(Array(String)) - - authorized_scopes = [] of String - scopes.each do |scope| - if scopes_include_scope(superset_scopes, scope) - authorized_scopes << scope - end - end - - access_token = generate_token(user.email, authorized_scopes, expire, HMAC_KEY) - - if callback_url - access_token = URI.encode_www_form(access_token) - - if query = callback_url.query - query = HTTP::Params.parse(query.not_nil!) - else - query = HTTP::Params.new - end - - query["token"] = access_token - callback_url.query = query.to_s - - env.redirect callback_url.to_s - else - access_token - end - end - end - - def self.unregister_token(env) - env.response.content_type = "application/json" - - user = env.get("user").as(User) - scopes = env.get("scopes").as(Array(String)) - - session = env.params.json["session"]?.try &.as(String) - session ||= env.get("session").as(String) - - # Allow tokens to revoke other tokens with correct scope - if session == env.get("session").as(String) - Invidious::Database::SessionIDs.delete(sid: session) - elsif scopes_include_scope(scopes, "GET:tokens") - Invidious::Database::SessionIDs.delete(sid: session) - else - return error_json(400, "Cannot revoke session #{session}") - end - - env.response.status_code = 204 - end - - def self.notifications(env) - env.response.content_type = "text/event-stream" - - raw_topics = env.params.body["topics"]? || env.params.query["topics"]? - topics = raw_topics.try &.split(",").uniq.first(1000) - topics ||= [] of String - - create_notification_stream(env, topics, CONNECTION_CHANNEL) - end -end diff --git a/invidious/src/invidious/routes/api/v1/channels.cr b/invidious/src/invidious/routes/api/v1/channels.cr deleted file mode 100755 index 6701866..0000000 --- a/invidious/src/invidious/routes/api/v1/channels.cr +++ /dev/null @@ -1,468 +0,0 @@ -module Invidious::Routes::API::V1::Channels - # Macro to avoid duplicating some code below - # This sets the `channel` variable, or handles Exceptions. - private macro get_channel - begin - channel = get_about_info(ucid, locale) - rescue ex : ChannelRedirect - env.response.headers["Location"] = env.request.resource.gsub(ucid, ex.channel_id) - return error_json(302, "Channel is unavailable", {"authorId" => ex.channel_id}) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - return error_json(500, ex) - end - end - - def self.home(env) - locale = env.get("preferences").as(Preferences).locale - ucid = env.params.url["ucid"] - - env.response.content_type = "application/json" - - # Use the private macro defined above. - channel = nil # Make the compiler happy - get_channel() - - # Retrieve "sort by" setting from URL parameters - sort_by = env.params.query["sort_by"]?.try &.downcase || "newest" - - begin - videos, _ = Channel::Tabs.get_videos(channel, sort_by: sort_by) - rescue ex - return error_json(500, ex) - end - - JSON.build do |json| - # TODO: Refactor into `to_json` for InvidiousChannel - json.object do - json.field "author", channel.author - json.field "authorId", channel.ucid - json.field "authorUrl", channel.author_url - - json.field "authorBanners" do - json.array do - if channel.banner - qualities = { - {width: 2560, height: 424}, - {width: 2120, height: 351}, - {width: 1060, height: 175}, - } - qualities.each do |quality| - json.object do - json.field "url", channel.banner.not_nil!.gsub("=w1060-", "=w#{quality[:width]}-") - json.field "width", quality[:width] - json.field "height", quality[:height] - end - end - - json.object do - json.field "url", channel.banner.not_nil!.split("=w1060-")[0] - json.field "width", 512 - json.field "height", 288 - end - end - end - end - - json.field "authorThumbnails" do - json.array do - qualities = {32, 48, 76, 100, 176, 512} - - qualities.each do |quality| - json.object do - json.field "url", channel.author_thumbnail.gsub(/=s\d+/, "=s#{quality}") - json.field "width", quality - json.field "height", quality - end - end - end - end - - json.field "subCount", channel.sub_count - json.field "totalViews", channel.total_views - json.field "joined", channel.joined.to_unix - - json.field "autoGenerated", channel.auto_generated - json.field "isFamilyFriendly", channel.is_family_friendly - json.field "description", html_to_content(channel.description_html) - json.field "descriptionHtml", channel.description_html - - json.field "allowedRegions", channel.allowed_regions - json.field "tabs", channel.tabs - json.field "authorVerified", channel.verified - - json.field "latestVideos" do - json.array do - videos.each do |video| - video.to_json(locale, json) - end - end - end - - json.field "relatedChannels" do - json.array do - # Fetch related channels - begin - related_channels, _ = fetch_related_channels(channel) - rescue ex - related_channels = [] of SearchChannel - end - - related_channels.each do |related_channel| - related_channel.to_json(locale, json) - end - end - end # relatedChannels - - end - end - end - - def self.latest(env) - # Remove parameters that could affect this endpoint's behavior - env.params.query.delete("sort_by") if env.params.query.has_key?("sort_by") - env.params.query.delete("continuation") if env.params.query.has_key?("continuation") - - return self.videos(env) - end - - def self.videos(env) - locale = env.get("preferences").as(Preferences).locale - ucid = env.params.url["ucid"] - - env.response.content_type = "application/json" - - # Use the private macro defined above. - channel = nil # Make the compiler happy - get_channel() - - # Retrieve some URL parameters - sort_by = env.params.query["sort_by"]?.try &.downcase || "newest" - continuation = env.params.query["continuation"]? - - begin - videos, next_continuation = Channel::Tabs.get_60_videos( - channel, continuation: continuation, sort_by: sort_by - ) - rescue ex - return error_json(500, ex) - end - - return JSON.build do |json| - json.object do - json.field "videos" do - json.array do - videos.each &.to_json(locale, json) - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.shorts(env) - locale = env.get("preferences").as(Preferences).locale - ucid = env.params.url["ucid"] - - env.response.content_type = "application/json" - - # Use the private macro defined above. - channel = nil # Make the compiler happy - get_channel() - - # Retrieve continuation from URL parameters - continuation = env.params.query["continuation"]? - - begin - videos, next_continuation = Channel::Tabs.get_shorts( - channel, continuation: continuation - ) - rescue ex - return error_json(500, ex) - end - - return JSON.build do |json| - json.object do - json.field "videos" do - json.array do - videos.each &.to_json(locale, json) - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.streams(env) - locale = env.get("preferences").as(Preferences).locale - ucid = env.params.url["ucid"] - - env.response.content_type = "application/json" - - # Use the private macro defined above. - channel = nil # Make the compiler happy - get_channel() - - # Retrieve continuation from URL parameters - continuation = env.params.query["continuation"]? - - begin - videos, next_continuation = Channel::Tabs.get_60_livestreams( - channel, continuation: continuation - ) - rescue ex - return error_json(500, ex) - end - - return JSON.build do |json| - json.object do - json.field "videos" do - json.array do - videos.each &.to_json(locale, json) - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.playlists(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - ucid = env.params.url["ucid"] - continuation = env.params.query["continuation"]? - sort_by = env.params.query["sort"]?.try &.downcase || - env.params.query["sort_by"]?.try &.downcase || - "last" - - # Use the macro defined above - channel = nil # Make the compiler happy - get_channel() - - items, next_continuation = fetch_channel_playlists(channel.ucid, channel.author, continuation, sort_by) - - JSON.build do |json| - json.object do - json.field "playlists" do - json.array do - items.each do |item| - item.to_json(locale, json) if item.is_a?(SearchPlaylist) - end - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.podcasts(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - ucid = env.params.url["ucid"] - continuation = env.params.query["continuation"]? - - # Use the macro defined above - channel = nil # Make the compiler happy - get_channel() - - items, next_continuation = fetch_channel_podcasts(channel.ucid, channel.author, continuation) - - JSON.build do |json| - json.object do - json.field "playlists" do - json.array do - items.each do |item| - item.to_json(locale, json) if item.is_a?(SearchPlaylist) - end - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.releases(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - ucid = env.params.url["ucid"] - continuation = env.params.query["continuation"]? - - # Use the macro defined above - channel = nil # Make the compiler happy - get_channel() - - items, next_continuation = fetch_channel_releases(channel.ucid, channel.author, continuation) - - JSON.build do |json| - json.object do - json.field "playlists" do - json.array do - items.each do |item| - item.to_json(locale, json) if item.is_a?(SearchPlaylist) - end - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.community(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - ucid = env.params.url["ucid"] - - thin_mode = env.params.query["thin_mode"]? - thin_mode = thin_mode == "true" - - format = env.params.query["format"]? - format ||= "json" - - continuation = env.params.query["continuation"]? - # sort_by = env.params.query["sort_by"]?.try &.downcase - - begin - fetch_channel_community(ucid, continuation, locale, format, thin_mode) - rescue ex - return error_json(500, ex) - end - end - - def self.post(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - id = env.params.url["id"].to_s - ucid = env.params.query["ucid"]? - - thin_mode = env.params.query["thin_mode"]? - thin_mode = thin_mode == "true" - - format = env.params.query["format"]? - format ||= "json" - - if ucid.nil? - response = YoutubeAPI.resolve_url("https://www.youtube.com/post/#{id}") - return error_json(400, "Invalid post ID") if response["error"]? - ucid = response.dig("endpoint", "browseEndpoint", "browseId").as_s - else - ucid = ucid.to_s - end - - begin - fetch_channel_community_post(ucid, id, locale, format, thin_mode) - rescue ex - return error_json(500, ex) - end - end - - def self.post_comments(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - id = env.params.url["id"] - - thin_mode = env.params.query["thin_mode"]? - thin_mode = thin_mode == "true" - - format = env.params.query["format"]? - format ||= "json" - - continuation = env.params.query["continuation"]? - - case continuation - when nil, "" - ucid = env.params.query["ucid"] - comments = Comments.fetch_community_post_comments(ucid, id) - else - comments = YoutubeAPI.browse(continuation: continuation) - end - return Comments.parse_youtube(id, comments, format, locale, thin_mode, isPost: true) - end - - def self.channels(env) - locale = env.get("preferences").as(Preferences).locale - ucid = env.params.url["ucid"] - - env.response.content_type = "application/json" - - # Use the macro defined above - channel = nil # Make the compiler happy - get_channel() - - continuation = env.params.query["continuation"]? - - begin - items, next_continuation = fetch_related_channels(channel, continuation) - rescue ex - return error_json(500, ex) - end - - JSON.build do |json| - json.object do - json.field "relatedChannels" do - json.array do - items.each &.to_json(locale, json) - end - end - - json.field "continuation", next_continuation if next_continuation - end - end - end - - def self.search(env) - locale = env.get("preferences").as(Preferences).locale - region = env.params.query["region"]? - - env.response.content_type = "application/json" - - query = Invidious::Search::Query.new(env.params.query, :channel, region) - - # Required because we can't (yet) pass multiple parameter to the - # `Search::Query` initializer (in this case, an URL segment) - query.channel = env.params.url["ucid"] - - begin - search_results = query.process - rescue ex - return error_json(400, ex) - end - - JSON.build do |json| - json.array do - search_results.each do |item| - item.to_json(locale, json) - end - end - end - end - - # 301 redirect from /api/v1/channels/comments/:ucid - # and /api/v1/channels/:ucid/comments to new /api/v1/channels/:ucid/community and - # corresponding equivalent URL structure of the other one. - def self.channel_comments_redirect(env) - env.response.content_type = "application/json" - ucid = env.params.url["ucid"] - - env.response.headers["Location"] = "/api/v1/channels/#{ucid}/community?#{env.params.query}" - env.response.status_code = 301 - return - end -end diff --git a/invidious/src/invidious/routes/api/v1/feeds.cr b/invidious/src/invidious/routes/api/v1/feeds.cr deleted file mode 100755 index 41865f3..0000000 --- a/invidious/src/invidious/routes/api/v1/feeds.cr +++ /dev/null @@ -1,45 +0,0 @@ -module Invidious::Routes::API::V1::Feeds - def self.trending(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - region = env.params.query["region"]? - trending_type = env.params.query["type"]? - - begin - trending, plid = fetch_trending(trending_type, region, locale) - rescue ex - return error_json(500, ex) - end - - videos = JSON.build do |json| - json.array do - trending.each do |video| - video.to_json(locale, json) - end - end - end - - videos - end - - def self.popular(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - if !CONFIG.popular_enabled - error_message = {"error" => "Administrator has disabled this endpoint."}.to_json - haltf env, 400, error_message - end - - JSON.build do |json| - json.array do - popular_videos.each do |video| - video.to_json(locale, json) - end - end - end - end -end diff --git a/invidious/src/invidious/routes/api/v1/misc.cr b/invidious/src/invidious/routes/api/v1/misc.cr deleted file mode 100755 index 1294290..0000000 --- a/invidious/src/invidious/routes/api/v1/misc.cr +++ /dev/null @@ -1,201 +0,0 @@ -module Invidious::Routes::API::V1::Misc - # Stats API endpoint for Invidious - def self.stats(env) - env.response.content_type = "application/json" - - if !CONFIG.statistics_enabled - return {"software" => SOFTWARE}.to_json - else - # Calculate playback success rate - if (tracker = Invidious::Jobs::StatisticsRefreshJob::STATISTICS["playback"]?) - tracker = tracker.as(Hash(String, Int64 | Float64)) - - if !tracker.empty? - total_requests = tracker["totalRequests"] - success_count = tracker["successfulRequests"] - - if total_requests.zero? - tracker["ratio"] = 1_i64 - else - tracker["ratio"] = (success_count / (total_requests)).round(2) - end - end - end - - return Invidious::Jobs::StatisticsRefreshJob::STATISTICS.to_json - end - end - - # APIv1 currently uses the same logic for both - # user playlists and Invidious playlists. This means that we can't - # reasonably split them yet. This should be addressed in APIv2 - def self.get_playlist(env : HTTP::Server::Context) - env.response.content_type = "application/json" - plid = env.params.url["plid"] - - offset = env.params.query["index"]?.try &.to_i? - offset ||= env.params.query["page"]?.try &.to_i?.try { |page| (page - 1) * 100 } - offset ||= 0 - - video_id = env.params.query["continuation"]? - - format = env.params.query["format"]? - format ||= "json" - - if plid.starts_with? "RD" - return env.redirect "/api/v1/mixes/#{plid}" - end - - begin - playlist = get_playlist(plid) - rescue ex : InfoException - return error_json(404, ex) - rescue ex - return error_json(404, "Playlist does not exist.") - end - - user = env.get?("user").try &.as(User) - if !playlist || playlist.privacy.private? && playlist.author != user.try &.email - return error_json(404, "Playlist does not exist.") - end - - # includes into the playlist a maximum of 20 videos, before the offset - if offset > 0 - lookback = offset < 50 ? offset : 50 - response = playlist.to_json(offset - lookback) - json_response = JSON.parse(response) - else - # Unless the continuation is really the offset 0, it becomes expensive. - # It happens when the offset is not set. - # First we find the actual offset, and then we lookback - # it shouldn't happen often though - - lookback = 0 - response = playlist.to_json(offset, video_id: video_id) - json_response = JSON.parse(response) - - if json_response["videos"].as_a[0]["index"] != offset - offset = json_response["videos"].as_a[0]["index"].as_i - lookback = offset < 50 ? offset : 50 - response = playlist.to_json(offset - lookback) - json_response = JSON.parse(response) - end - end - - if format == "html" - playlist_html = template_playlist(json_response) - index, next_video = json_response["videos"].as_a.skip(1 + lookback).select { |video| !video["author"].as_s.empty? }[0]?.try { |v| {v["index"], v["videoId"]} } || {nil, nil} - - response = { - "playlistHtml" => playlist_html, - "index" => index, - "nextVideo" => next_video, - }.to_json - end - - response - end - - def self.mixes(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - rdid = env.params.url["rdid"] - - continuation = env.params.query["continuation"]? - continuation ||= rdid.lchop("RD")[0, 11] - - format = env.params.query["format"]? - format ||= "json" - - begin - mix = fetch_mix(rdid, continuation, locale: locale) - - if !rdid.ends_with? continuation - mix = fetch_mix(rdid, mix.videos[1].id) - index = mix.videos.index(mix.videos.select { |video| video.id == continuation }[0]?) - end - - mix.videos = mix.videos[index..-1] - rescue ex - return error_json(500, ex) - end - - response = JSON.build do |json| - json.object do - json.field "title", mix.title - json.field "mixId", mix.id - - json.field "videos" do - json.array do - mix.videos.each do |video| - json.object do - json.field "title", video.title - json.field "videoId", video.id - json.field "author", video.author - - json.field "authorId", video.ucid - json.field "authorUrl", "/channel/#{video.ucid}" - - json.field "videoThumbnails" do - json.array do - Invidious::JSONify::APIv1.thumbnails(json, video.id) - end - end - - json.field "index", video.index - json.field "lengthSeconds", video.length_seconds - end - end - end - end - end - end - - if format == "html" - response = JSON.parse(response) - playlist_html = template_mix(response) - next_video = response["videos"].as_a.select { |video| !video["author"].as_s.empty? }[0]?.try &.["videoId"] - - response = { - "playlistHtml" => playlist_html, - "nextVideo" => next_video, - }.to_json - end - - response - end - - # resolve channel and clip urls, return the UCID - def self.resolve_url(env) - env.response.content_type = "application/json" - url = env.params.query["url"]? - - return error_json(400, "Missing URL to resolve") if !url - - begin - resolved_url = YoutubeAPI.resolve_url(url.as(String)) - endpoint = resolved_url["endpoint"] - pageType = endpoint.dig?("commandMetadata", "webCommandMetadata", "webPageType").try &.as_s || "" - if pageType == "WEB_PAGE_TYPE_UNKNOWN" - return error_json(400, "Unknown url") - end - - sub_endpoint = endpoint["watchEndpoint"]? || endpoint["browseEndpoint"]? || endpoint - params = sub_endpoint.try &.dig?("params") - rescue ex - return error_json(500, ex) - end - JSON.build do |json| - json.object do - json.field "ucid", sub_endpoint["browseId"].as_s if sub_endpoint["browseId"]? - json.field "videoId", sub_endpoint["videoId"].as_s if sub_endpoint["videoId"]? - json.field "playlistId", sub_endpoint["playlistId"].as_s if sub_endpoint["playlistId"]? - json.field "startTimeSeconds", sub_endpoint["startTimeSeconds"].as_i if sub_endpoint["startTimeSeconds"]? - json.field "params", params.try &.as_s - json.field "pageType", pageType - end - end - end -end diff --git a/invidious/src/invidious/routes/api/v1/search.cr b/invidious/src/invidious/routes/api/v1/search.cr deleted file mode 100755 index 2922b06..0000000 --- a/invidious/src/invidious/routes/api/v1/search.cr +++ /dev/null @@ -1,89 +0,0 @@ -module Invidious::Routes::API::V1::Search - def self.search(env) - locale = env.get("preferences").as(Preferences).locale - region = env.params.query["region"]? - - env.response.content_type = "application/json" - - query = Invidious::Search::Query.new(env.params.query, :regular, region) - - begin - search_results = query.process - rescue ex - return error_json(400, ex) - end - - JSON.build do |json| - json.array do - search_results.each do |item| - item.to_json(locale, json) - end - end - end - end - - def self.search_suggestions(env) - preferences = env.get("preferences").as(Preferences) - region = env.params.query["region"]? || preferences.region - - env.response.content_type = "application/json" - - query = env.params.query["q"]? || "" - - begin - client = HTTP::Client.new("suggestqueries-clients6.youtube.com") - client.before_request { |r| add_yt_headers(r) } - - url = "/complete/search?client=youtube&hl=en&gl=#{region}&q=#{URI.encode_www_form(query)}&gs_ri=youtube&ds=yt" - - response = client.get(url).body - client.close - - body = JSON.parse(response[19..-2]).as_a - suggestions = body[1].as_a[0..-2] - - JSON.build do |json| - json.object do - json.field "query", body[0].as_s - json.field "suggestions" do - json.array do - suggestions.each do |suggestion| - json.string suggestion[0].as_s - end - end - end - end - end - rescue ex - return error_json(500, ex) - end - end - - def self.hashtag(env) - hashtag = env.params.url["hashtag"] - - page = env.params.query["page"]?.try &.to_i? || 1 - - locale = env.get("preferences").as(Preferences).locale - region = env.params.query["region"]? - env.response.content_type = "application/json" - - begin - results = Invidious::Hashtag.fetch(hashtag, page, region) - rescue ex - return error_json(400, ex) - end - - JSON.build do |json| - json.object do - json.field "results" do - json.array do - results.each do |item| - item.to_json(locale, json) - end - end - end - end - end - end -end diff --git a/invidious/src/invidious/routes/api/v1/videos.cr b/invidious/src/invidious/routes/api/v1/videos.cr deleted file mode 100755 index 9281f4d..0000000 --- a/invidious/src/invidious/routes/api/v1/videos.cr +++ /dev/null @@ -1,409 +0,0 @@ -module Invidious::Routes::API::V1::Videos - def self.videos(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - id = env.params.url["id"] - region = env.params.query["region"]? - proxy = {"1", "true"}.any? &.== env.params.query["local"]? - - begin - video = get_video(id, region: region) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - return error_json(500, ex) - end - - return JSON.build do |json| - Invidious::JSONify::APIv1.video(video, json, locale: locale, proxy: proxy) - end - end - - def self.captions(env) - env.response.content_type = "application/json" - - id = env.params.url["id"] - region = env.params.query["region"]? || env.params.body["region"]? - - if id.nil? || id.size != 11 || !id.matches?(/^[\w-]+$/) - return error_json(400, "Invalid video ID") - end - - # See https://github.com/ytdl-org/youtube-dl/blob/6ab30ff50bf6bd0585927cb73c7421bef184f87a/youtube_dl/extractor/youtube.py#L1354 - # It is possible to use `/api/timedtext?type=list&v=#{id}` and - # `/api/timedtext?type=track&v=#{id}&lang=#{lang_code}` directly, - # but this does not provide links for auto-generated captions. - # - # In future this should be investigated as an alternative, since it does not require - # getting video info. - - begin - video = get_video(id, region: region) - rescue ex : NotFoundException - haltf env, 404 - rescue ex - haltf env, 500 - end - - captions = video.captions - - label = env.params.query["label"]? - lang = env.params.query["lang"]? - tlang = env.params.query["tlang"]? - - if !label && !lang - response = JSON.build do |json| - json.object do - json.field "captions" do - json.array do - captions.each do |caption| - json.object do - json.field "label", caption.name - json.field "languageCode", caption.language_code - json.field "url", "/api/v1/captions/#{id}?label=#{URI.encode_www_form(caption.name)}" - end - end - end - end - end - end - - return response - end - - env.response.content_type = "text/vtt; charset=UTF-8" - - if lang - caption = captions.select(&.language_code.== lang) - else - caption = captions.select(&.name.== label) - end - - if caption.empty? - haltf env, 404 - else - caption = caption[0] - end - - if CONFIG.use_innertube_for_captions - params = Invidious::Videos::Transcript.generate_param(id, caption.language_code, caption.auto_generated) - initial_data = YoutubeAPI.get_transcript(params) - - webvtt = Invidious::Videos::Transcript.convert_transcripts_to_vtt(initial_data, caption.language_code) - else - # Timedtext API handling - url = URI.parse("#{caption.base_url}&tlang=#{tlang}").request_target - - # Auto-generated captions often have cues that aren't aligned properly with the video, - # as well as some other markup that makes it cumbersome, so we try to fix that here - if caption.name.includes? "auto-generated" - caption_xml = YT_POOL.client &.get(url).body - - settings_field = { - "Kind" => "captions", - "Language" => "#{tlang || caption.language_code}", - } - - if caption_xml.starts_with?(" i + 1 - end_time = caption_nodes[i + 1]["start"].to_f.seconds - else - end_time = start_time + duration - end - - text = HTML.unescape(node.content) - text = text.gsub(//, "") - text = text.gsub(/<\/font>/, "") - if md = text.match(/(?.*) : (?.*)/) - text = "#{md["text"]}" - end - - webvtt.cue(start_time, end_time, text) - end - end - end - else - webvtt = YT_POOL.client &.get("#{url}&fmt=vtt").body - - if webvtt.starts_with?(" [0-9:.]{12}).+/, "\\1") - end - end - end - - if title = env.params.query["title"]? - # https://blog.fastmail.com/2011/06/24/download-non-english-filenames/ - env.response.headers["Content-Disposition"] = "attachment; filename=\"#{URI.encode_www_form(title)}\"; filename*=UTF-8''#{URI.encode_www_form(title)}" - end - - webvtt - end - - # Fetches YouTube storyboards - # - # Which are sprites containing x * y preview - # thumbnails for individual scenes in a video. - # See https://support.jwplayer.com/articles/how-to-add-preview-thumbnails - def self.storyboards(env) - env.response.content_type = "application/json" - - id = env.params.url["id"] - region = env.params.query["region"]? - - begin - video = get_video(id, region: region) - rescue ex : NotFoundException - haltf env, 404 - rescue ex - haltf env, 500 - end - - storyboards = video.storyboards - width = env.params.query["width"]? - height = env.params.query["height"]? - - if !width && !height - response = JSON.build do |json| - json.object do - json.field "storyboards" do - Invidious::JSONify::APIv1.storyboards(json, id, storyboards) - end - end - end - - return response - end - - env.response.content_type = "text/vtt" - - storyboard = storyboards.select { |sb| width == "#{sb[:width]}" || height == "#{sb[:height]}" } - - if storyboard.empty? - haltf env, 404 - else - storyboard = storyboard[0] - end - - WebVTT.build do |vtt| - start_time = 0.milliseconds - end_time = storyboard[:interval].milliseconds - - storyboard[:storyboard_count].times do |i| - url = storyboard[:url] - authority = /(i\d?).ytimg.com/.match(url).not_nil![1]? - url = url.gsub("$M", i).gsub(%r(https://i\d?.ytimg.com/sb/), "") - url = "#{HOST_URL}/sb/#{authority}/#{url}" - - storyboard[:storyboard_height].times do |j| - storyboard[:storyboard_width].times do |k| - current_cue_url = "#{url}#xywh=#{storyboard[:width] * k},#{storyboard[:height] * j},#{storyboard[:width] - 2},#{storyboard[:height]}" - vtt.cue(start_time, end_time, current_cue_url) - - start_time += storyboard[:interval].milliseconds - end_time += storyboard[:interval].milliseconds - end - end - end - end - end - - def self.annotations(env) - env.response.content_type = "text/xml" - - id = env.params.url["id"] - source = env.params.query["source"]? - source ||= "archive" - - if !id.match(/[a-zA-Z0-9_-]{11}/) - haltf env, 400 - end - - annotations = "" - - case source - when "archive" - if CONFIG.cache_annotations && (cached_annotation = Invidious::Database::Annotations.select(id)) - annotations = cached_annotation.annotations - else - index = CHARS_SAFE.index(id[0]).not_nil!.to_s.rjust(2, '0') - - # IA doesn't handle leading hyphens, - # so we use https://archive.org/details/youtubeannotations_64 - if index == "62" - index = "64" - id = id.sub(/^-/, 'A') - end - - file = URI.encode_www_form("#{id[0, 3]}/#{id}.xml") - - location = make_client(ARCHIVE_URL, &.get("/download/youtubeannotations_#{index}/#{id[0, 2]}.tar/#{file}")) - - if !location.headers["Location"]? - env.response.status_code = location.status_code - end - - response = make_client(URI.parse(location.headers["Location"]), &.get(location.headers["Location"])) - - if response.body.empty? - haltf env, 404 - end - - if response.status_code != 200 - haltf env, response.status_code - end - - annotations = response.body - - cache_annotation(id, annotations) - end - else # "youtube" - response = YT_POOL.client &.get("/annotations_invideo?video_id=#{id}") - - if response.status_code != 200 - haltf env, response.status_code - end - - annotations = response.body - end - - etag = sha256(annotations)[0, 16] - if env.request.headers["If-None-Match"]?.try &.== etag - haltf env, 304 - else - env.response.headers["ETag"] = etag - annotations - end - end - - def self.comments(env) - locale = env.get("preferences").as(Preferences).locale - region = env.params.query["region"]? - - env.response.content_type = "application/json" - - id = env.params.url["id"] - - source = env.params.query["source"]? - source ||= "youtube" - - thin_mode = env.params.query["thin_mode"]? - thin_mode = thin_mode == "true" - - format = env.params.query["format"]? - format ||= "json" - - action = env.params.query["action"]? - action ||= "action_get_comments" - - continuation = env.params.query["continuation"]? - sort_by = env.params.query["sort_by"]?.try &.downcase - - if source == "youtube" - sort_by ||= "top" - - begin - comments = Comments.fetch_youtube(id, continuation, format, locale, thin_mode, region, sort_by: sort_by) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - return error_json(500, ex) - end - - return comments - elsif source == "reddit" - sort_by ||= "confidence" - - begin - comments, reddit_thread = Comments.fetch_reddit(id, sort_by: sort_by) - rescue ex - comments = nil - reddit_thread = nil - end - - if !reddit_thread || !comments - return error_json(404, "No reddit threads found") - end - - if format == "json" - reddit_thread = JSON.parse(reddit_thread.to_json).as_h - reddit_thread["comments"] = JSON.parse(comments.to_json) - - return reddit_thread.to_json - else - content_html = Frontend::Comments.template_reddit(comments, locale) - content_html = Comments.fill_links(content_html, "https", "www.reddit.com") - content_html = Comments.replace_links(content_html) - response = { - "title" => reddit_thread.title, - "permalink" => reddit_thread.permalink, - "contentHtml" => content_html, - } - - return response.to_json - end - end - end - - def self.clips(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.content_type = "application/json" - - clip_id = env.params.url["id"] - region = env.params.query["region"]? - proxy = {"1", "true"}.any? &.== env.params.query["local"]? - - response = YoutubeAPI.resolve_url("https://www.youtube.com/clip/#{clip_id}") - return error_json(400, "Invalid clip ID") if response["error"]? - - video_id = response.dig?("endpoint", "watchEndpoint", "videoId").try &.as_s - return error_json(400, "Invalid clip ID") if video_id.nil? - - start_time = nil - end_time = nil - clip_title = nil - - if params = response.dig?("endpoint", "watchEndpoint", "params").try &.as_s - start_time, end_time, clip_title = parse_clip_parameters(params) - end - - begin - video = get_video(video_id, region: region) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - return error_json(500, ex) - end - - return JSON.build do |json| - json.object do - json.field "startTime", start_time - json.field "endTime", end_time - json.field "clipTitle", clip_title - json.field "video" do - Invidious::JSONify::APIv1.video(video, json, locale: locale, proxy: proxy) - end - end - end - end -end diff --git a/invidious/src/invidious/routes/before_all.cr b/invidious/src/invidious/routes/before_all.cr deleted file mode 100755 index 396840a..0000000 --- a/invidious/src/invidious/routes/before_all.cr +++ /dev/null @@ -1,126 +0,0 @@ -module Invidious::Routes::BeforeAll - def self.handle(env) - preferences = Preferences.from_json("{}") - - begin - if prefs_cookie = env.request.cookies["PREFS"]? - preferences = Preferences.from_json(URI.decode_www_form(prefs_cookie.value)) - else - if language_header = env.request.headers["Accept-Language"]? - if language = ANG.language_negotiator.best(language_header, LOCALES.keys) - preferences.locale = language.header - end - end - end - rescue - preferences = Preferences.from_json("{}") - end - - env.set "preferences", preferences - env.response.headers["X-XSS-Protection"] = "1; mode=block" - env.response.headers["X-Content-Type-Options"] = "nosniff" - - # Allow media resources to be loaded from google servers - # TODO: check if *.youtube.com can be removed - if CONFIG.disabled?("local") || !preferences.local - extra_media_csp = " https://*.googlevideo.com:443 https://*.youtube.com:443" - else - extra_media_csp = "" - end - - # Only allow the pages at /embed/* to be embedded - if env.request.resource.starts_with?("/embed") - frame_ancestors = "'self' http: https:" - else - frame_ancestors = "'none'" - end - - # TODO: Remove style-src's 'unsafe-inline', requires to remove all - # inline styles (, style=" [..] ") - env.response.headers["Content-Security-Policy"] = { - "default-src 'none'", - "script-src 'self'", - "style-src 'self' 'unsafe-inline'", - "img-src 'self' data:", - "font-src 'self' data:", - "connect-src 'self'", - "manifest-src 'self'", - "media-src 'self' blob:" + extra_media_csp, - "child-src 'self' blob:", - "frame-src 'self'", - "frame-ancestors " + frame_ancestors, - }.join("; ") - - env.response.headers["Referrer-Policy"] = "same-origin" - - # Ask the chrom*-based browsers to disable FLoC - # See: https://blog.runcloud.io/google-floc/ - env.response.headers["Permissions-Policy"] = "interest-cohort=()" - - if (Kemal.config.ssl || CONFIG.https_only) && CONFIG.hsts - env.response.headers["Strict-Transport-Security"] = "max-age=31536000; includeSubDomains; preload" - end - - return if { - "/sb/", - "/vi/", - "/s_p/", - "/yts/", - "/ggpht/", - "/api/manifest/", - "/videoplayback", - "/latest_version", - "/download", - }.any? { |r| env.request.resource.starts_with? r } - - if env.request.cookies.has_key? "SID" - sid = env.request.cookies["SID"].value - - if sid.starts_with? "v1:" - raise "Cannot use token as SID" - end - - if email = Database::SessionIDs.select_email(sid) - user = Database::Users.select!(email: email) - csrf_token = generate_response(sid, { - ":authorize_token", - ":playlist_ajax", - ":signout", - ":subscription_ajax", - ":token_ajax", - ":watch_ajax", - }, HMAC_KEY, 1.week) - - preferences = user.preferences - env.set "preferences", preferences - - env.set "sid", sid - env.set "csrf_token", csrf_token - env.set "user", user - end - end - - dark_mode = convert_theme(env.params.query["dark_mode"]?) || preferences.dark_mode.to_s - thin_mode = env.params.query["thin_mode"]? || preferences.thin_mode.to_s - thin_mode = thin_mode == "true" - locale = env.params.query["hl"]? || preferences.locale - - preferences.dark_mode = dark_mode - preferences.thin_mode = thin_mode - preferences.locale = locale - env.set "preferences", preferences - - current_page = env.request.path - if env.request.query - query = HTTP::Params.parse(env.request.query.not_nil!) - - if query["referer"]? - query["referer"] = get_referer(env, "/") - end - - current_page += "?#{query}" - end - - env.set "current_page", URI.encode_www_form(current_page) - end -end diff --git a/invidious/src/invidious/routes/channels.cr b/invidious/src/invidious/routes/channels.cr deleted file mode 100755 index d4d8b1c..0000000 --- a/invidious/src/invidious/routes/channels.cr +++ /dev/null @@ -1,384 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Channels - # Redirection for unsupported routes ("tabs") - def self.redirect_home(env) - ucid = env.params.url["ucid"] - return env.redirect "/channel/#{URI.encode_www_form(ucid)}" - end - - def self.home(env) - self.videos(env) - end - - def self.videos(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - sort_by = env.params.query["sort_by"]?.try &.downcase - - if channel.auto_generated - sort_options = {"last", "oldest", "newest"} - - items, next_continuation = fetch_channel_playlists( - channel.ucid, channel.author, continuation, (sort_by || "last") - ) - - items.uniq! do |item| - if item.responds_to?(:title) - item.title - elsif item.responds_to?(:author) - item.author - end - end - items = items.select(SearchPlaylist) - items.each(&.author = "") - else - sort_options = {"newest", "oldest", "popular"} - - # Fetch items and continuation token - items, next_continuation = Channel::Tabs.get_videos( - channel, continuation: continuation, sort_by: (sort_by || "newest") - ) - end - - selected_tab = Frontend::ChannelPage::TabsAvailable::Videos - templated "channel" - end - - def self.shorts(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - if !channel.tabs.includes? "shorts" - return env.redirect "/channel/#{channel.ucid}" - end - - # TODO: support sort option for shorts - sort_by = "" - sort_options = [] of String - - # Fetch items and continuation token - items, next_continuation = Channel::Tabs.get_shorts( - channel, continuation: continuation - ) - - selected_tab = Frontend::ChannelPage::TabsAvailable::Shorts - templated "channel" - end - - def self.streams(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - if !channel.tabs.includes? "streams" - return env.redirect "/channel/#{channel.ucid}" - end - - # TODO: support sort option for livestreams - sort_by = "" - sort_options = [] of String - - # Fetch items and continuation token - items, next_continuation = Channel::Tabs.get_60_livestreams( - channel, continuation: continuation - ) - - selected_tab = Frontend::ChannelPage::TabsAvailable::Streams - templated "channel" - end - - def self.playlists(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - sort_options = {"last", "oldest", "newest"} - sort_by = env.params.query["sort_by"]?.try &.downcase - - if channel.auto_generated - return env.redirect "/channel/#{channel.ucid}" - end - - items, next_continuation = fetch_channel_playlists( - channel.ucid, channel.author, continuation, (sort_by || "last") - ) - - items = items.select(SearchPlaylist) - items.each(&.author = "") - - selected_tab = Frontend::ChannelPage::TabsAvailable::Playlists - templated "channel" - end - - def self.podcasts(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - sort_by = "" - sort_options = [] of String - - items, next_continuation = fetch_channel_podcasts( - channel.ucid, channel.author, continuation - ) - - items = items.select(SearchPlaylist) - items.each(&.author = "") - - selected_tab = Frontend::ChannelPage::TabsAvailable::Podcasts - templated "channel" - end - - def self.releases(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - sort_by = "" - sort_options = [] of String - - items, next_continuation = fetch_channel_releases( - channel.ucid, channel.author, continuation - ) - - items = items.select(SearchPlaylist) - items.each(&.author = "") - - selected_tab = Frontend::ChannelPage::TabsAvailable::Releases - templated "channel" - end - - def self.community(env) - data = self.fetch_basic_information(env) - if !data.is_a?(Tuple) - return data - end - locale, user, subscriptions, continuation, ucid, channel = data - - # redirect to post page - if lb = env.params.query["lb"]? - env.redirect "/post/#{URI.encode_www_form(lb)}?ucid=#{URI.encode_www_form(ucid)}" - end - - thin_mode = env.params.query["thin_mode"]? || env.get("preferences").as(Preferences).thin_mode - thin_mode = thin_mode == "true" - - continuation = env.params.query["continuation"]? - - if !channel.tabs.includes? "community" - return env.redirect "/channel/#{channel.ucid}" - end - - # TODO: support sort options for community posts - sort_by = "" - sort_options = [] of String - - begin - items = JSON.parse(fetch_channel_community(ucid, continuation, locale, "json", thin_mode)) - rescue ex : InfoException - env.response.status_code = 500 - error_message = ex.message - rescue ex : NotFoundException - env.response.status_code = 404 - error_message = ex.message - rescue ex - return error_template(500, ex) - end - - templated "community" - end - - def self.post(env) - # /post/{postId} - id = env.params.url["id"] - ucid = env.params.query["ucid"]? - - prefs = env.get("preferences").as(Preferences) - - locale = prefs.locale - - thin_mode = env.params.query["thin_mode"]? || prefs.thin_mode - thin_mode = thin_mode == "true" - - nojs = env.params.query["nojs"]? - - nojs ||= "0" - nojs = nojs == "1" - - if !ucid.nil? - ucid = ucid.to_s - post_response = fetch_channel_community_post(ucid, id, locale, "json", thin_mode) - else - # resolve the url to get the author's UCID - response = YoutubeAPI.resolve_url("https://www.youtube.com/post/#{id}") - return error_template(400, "Invalid post ID") if response["error"]? - - ucid = response.dig("endpoint", "browseEndpoint", "browseId").as_s - post_response = fetch_channel_community_post(ucid, id, locale, "json", thin_mode) - end - - post_response = JSON.parse(post_response) - - if nojs - comments = Comments.fetch_community_post_comments(ucid, id) - comment_html = JSON.parse(Comments.parse_youtube(id, comments, "html", locale, thin_mode, isPost: true))["contentHtml"] - end - templated "post" - end - - def self.channels(env) - data = self.fetch_basic_information(env) - return data if !data.is_a?(Tuple) - - locale, user, subscriptions, continuation, ucid, channel = data - - if channel.auto_generated - return env.redirect "/channel/#{channel.ucid}" - end - - items, next_continuation = fetch_related_channels(channel, continuation) - - # Featured/related channels can't be sorted - sort_options = [] of String - sort_by = nil - - selected_tab = Frontend::ChannelPage::TabsAvailable::Channels - templated "channel" - end - - def self.about(env) - data = self.fetch_basic_information(env) - if !data.is_a?(Tuple) - return data - end - locale, user, subscriptions, continuation, ucid, channel = data - - env.redirect "/channel/#{ucid}" - end - - private KNOWN_TABS = { - "home", "videos", "shorts", "streams", "podcasts", - "releases", "playlists", "community", "channels", "about", - } - - # Redirects brand url channels to a normal /channel/:ucid route - def self.brand_redirect(env) - locale = env.get("preferences").as(Preferences).locale - - # /attribution_link endpoint needs both the `a` and `u` parameter - # and in order to avoid detection from YouTube we should only send the required ones - # without any of the additional url parameters that only Invidious uses. - yt_url_params = URI::Params.encode(env.params.query.to_h.select(["a", "u", "user"])) - - # Retrieves URL params that only Invidious uses - invidious_url_params = env.params.query.dup - invidious_url_params.delete_all("a") - invidious_url_params.delete_all("u") - invidious_url_params.delete_all("user") - - begin - resolved_url = YoutubeAPI.resolve_url("https://youtube.com#{env.request.path}#{yt_url_params.size > 0 ? "?#{yt_url_params}" : ""}") - ucid = resolved_url["endpoint"]["browseEndpoint"]["browseId"] - rescue ex : InfoException | KeyError - return error_template(404, translate(locale, "This channel does not exist.")) - end - - selected_tab = env.params.url["tab"]? - - if KNOWN_TABS.includes? selected_tab - url = "/channel/#{ucid}/#{selected_tab}" - else - url = "/channel/#{ucid}" - end - - url += "?#{invidious_url_params}" if !invidious_url_params.empty? - - return env.redirect url - end - - # Handles redirects for the /profile endpoint - def self.profile(env) - # The /profile endpoint is special. If passed into the resolve_url - # endpoint YouTube would return a sign in page instead of an /channel/:ucid - # thus we'll add an edge case and handle it here. - - uri_params = env.params.query.size > 0 ? "?#{env.params.query}" : "" - - user = env.params.query["user"]? - if !user - return error_template(404, "This channel does not exist.") - else - env.redirect "/user/#{user}#{uri_params}" - end - end - - def self.live(env) - locale = env.get("preferences").as(Preferences).locale - - # Appears to be a bug in routing, having several routes configured - # as `/a/:a`, `/b/:a`, `/c/:a` results in 404 - value = env.request.resource.split("/")[2] - body = "" - {"channel", "user", "c"}.each do |type| - response = YT_POOL.client &.get("/#{type}/#{value}/live?disable_polymer=1") - if response.status_code == 200 - body = response.body - end - end - - video_id = body.match(/'VIDEO_ID': "(?[a-zA-Z0-9_-]{11})"/).try &.["id"]? - if video_id - params = [] of String - env.params.query.each do |k, v| - params << "#{k}=#{v}" - end - params = params.join("&") - - url = "/watch?v=#{video_id}" - if !params.empty? - url += "&#{params}" - end - - env.redirect url - else - env.redirect "/channel/#{value}" - end - end - - private def self.fetch_basic_information(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - if user - user = user.as(User) - subscriptions = user.subscriptions - end - subscriptions ||= [] of String - - ucid = env.params.url["ucid"] - continuation = env.params.query["continuation"]? - - begin - channel = get_about_info(ucid, locale) - rescue ex : ChannelRedirect - return env.redirect env.request.resource.gsub(ucid, ex.channel_id) - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - env.set "search", "channel:#{ucid} " - return {locale, user, subscriptions, continuation, ucid, channel} - end -end diff --git a/invidious/src/invidious/routes/embed.cr b/invidious/src/invidious/routes/embed.cr deleted file mode 100755 index 266f7ba..0000000 --- a/invidious/src/invidious/routes/embed.cr +++ /dev/null @@ -1,206 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Embed - def self.redirect(env) - locale = env.get("preferences").as(Preferences).locale - if plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") - begin - playlist = get_playlist(plid) - offset = env.params.query["index"]?.try &.to_i? || 0 - videos = get_playlist_videos(playlist, offset: offset) - if videos.empty? - url = "/playlist?list=#{plid}" - raise NotFoundException.new(translate(locale, "error_video_not_in_playlist", url)) - end - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - url = "/embed/#{videos[0].id}?#{env.params.query}" - - if env.params.query.size > 0 - url += "?#{env.params.query}" - end - else - url = "/" - end - - env.redirect url - end - - def self.show(env) - locale = env.get("preferences").as(Preferences).locale - id = env.params.url["id"] - - plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") - continuation = process_continuation(env.params.query, plid, id) - - if md = env.params.query["playlist"]? - .try &.match(/[a-zA-Z0-9_-]{11}(,[a-zA-Z0-9_-]{11})*/) - video_series = md[0].split(",") - env.params.query.delete("playlist") - end - - preferences = env.get("preferences").as(Preferences) - - if id.includes?("%20") || id.includes?("+") || env.params.query.to_s.includes?("%20") || env.params.query.to_s.includes?("+") - id = env.params.url["id"].gsub("%20", "").delete("+") - - url = "/embed/#{id}" - - if env.params.query.size > 0 - url += "?#{env.params.query.to_s.gsub("%20", "").delete("+")}" - end - - return env.redirect url - end - - # YouTube embed supports `videoseries` with either `list=PLID` - # or `playlist=VIDEO_ID,VIDEO_ID` - case id - when "videoseries" - url = "" - - if plid - begin - playlist = get_playlist(plid) - offset = env.params.query["index"]?.try &.to_i? || 0 - videos = get_playlist_videos(playlist, offset: offset) - if videos.empty? - url = "/playlist?list=#{plid}" - raise NotFoundException.new(translate(locale, "error_video_not_in_playlist", url)) - end - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - url = "/embed/#{videos[0].id}" - elsif video_series - url = "/embed/#{video_series.shift}" - env.params.query["playlist"] = video_series.join(",") - else - return env.redirect "/" - end - - if env.params.query.size > 0 - url += "?#{env.params.query}" - end - - return env.redirect url - when "live_stream" - response = YT_POOL.client &.get("/embed/live_stream?channel=#{env.params.query["channel"]? || ""}") - video_id = response.body.match(/"video_id":"(?[a-zA-Z0-9_-]{11})"/).try &.["video_id"] - - env.params.query.delete_all("channel") - - if !video_id || video_id == "live_stream" - return error_template(500, "Video is unavailable.") - end - - url = "/embed/#{video_id}" - - if env.params.query.size > 0 - url += "?#{env.params.query}" - end - - return env.redirect url - when id.size > 11 - url = "/embed/#{id[0, 11]}" - - if env.params.query.size > 0 - url += "?#{env.params.query}" - end - - return env.redirect url - else nil # Continue - end - - params = process_video_params(env.params.query, preferences) - - user = env.get?("user").try &.as(User) - if user - subscriptions = user.subscriptions - watched = user.watched - notifications = user.notifications - end - subscriptions ||= [] of String - - begin - video = get_video(id, region: params.region) - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - if preferences.annotations_subscribed && - subscriptions.includes?(video.ucid) && - (env.params.query["iv_load_policy"]? || "1") == "1" - params.annotations = true - end - - # if watched && !watched.includes? id - # PG_DB.exec("UPDATE users SET watched = array_append(watched, $1) WHERE email = $2", id, user.as(User).email) - # end - - if CONFIG.enable_user_notifications && notifications && notifications.includes? id - Invidious::Database::Users.remove_notification(user.as(User), id) - env.get("user").as(User).notifications.delete(id) - notifications.delete(id) - end - - fmt_stream = video.fmt_stream - adaptive_fmts = video.adaptive_fmts - - if params.local - fmt_stream.each { |fmt| fmt["url"] = JSON::Any.new(URI.parse(fmt["url"].as_s).request_target) } - adaptive_fmts.each { |fmt| fmt["url"] = JSON::Any.new(URI.parse(fmt["url"].as_s).request_target) } - end - - video_streams = video.video_streams - audio_streams = video.audio_streams - - if audio_streams.empty? && !video.live_now - if params.quality == "dash" - env.params.query.delete_all("quality") - return env.redirect "/embed/#{id}?#{env.params.query}" - elsif params.listen - env.params.query.delete_all("listen") - env.params.query["listen"] = "0" - return env.redirect "/embed/#{id}?#{env.params.query}" - end - end - - captions = video.captions - - preferred_captions = captions.select { |caption| - params.preferred_captions.includes?(caption.name) || - params.preferred_captions.includes?(caption.language_code.split("-")[0]) - } - preferred_captions.sort_by! { |caption| - (params.preferred_captions.index(caption.name) || - params.preferred_captions.index(caption.language_code.split("-")[0])).not_nil! - } - captions = captions - preferred_captions - - aspect_ratio = nil - - thumbnail = "/vi/#{video.id}/maxres.jpg" - - if params.raw - url = fmt_stream[0]["url"].as_s - - fmt_stream.each do |fmt| - url = fmt["url"].as_s if fmt["quality"].as_s == params.quality - end - - return env.redirect url - end - - rendered "embed" - end -end diff --git a/invidious/src/invidious/routes/errors.cr b/invidious/src/invidious/routes/errors.cr deleted file mode 100755 index 1e9ab44..0000000 --- a/invidious/src/invidious/routes/errors.cr +++ /dev/null @@ -1,52 +0,0 @@ -module Invidious::Routes::ErrorRoutes - def self.error_404(env) - # Workaround for #3117 - if HOST_URL.empty? && env.request.path.starts_with?("/v1/storyboards/sb") - return env.redirect "#{env.request.path[15..]}?#{env.params.query}" - end - - if md = env.request.path.match(/^\/(?([a-zA-Z0-9_-]{11})|(\w+))$/) - item = md["id"] - - # Check if item is branding URL e.g. https://youtube.com/gaming - response = YT_POOL.client &.get("/#{item}") - - if response.status_code == 301 - response = YT_POOL.client &.get(URI.parse(response.headers["Location"]).request_target) - end - - if response.body.empty? - env.response.headers["Location"] = "/" - haltf env, status_code: 302 - end - - html = XML.parse_html(response.body) - ucid = html.xpath_node(%q(//link[@rel="canonical"])).try &.["href"].split("/")[-1] - - if ucid - env.response.headers["Location"] = "/channel/#{ucid}" - haltf env, status_code: 302 - end - - params = [] of String - env.params.query.each do |k, v| - params << "#{k}=#{v}" - end - params = params.join("&") - - url = "/watch?v=#{item}" - if !params.empty? - url += "&#{params}" - end - - # Check if item is video ID - if item.match(/^[a-zA-Z0-9_-]{11}$/) && YT_POOL.client &.head("/watch?v=#{item}").status_code != 404 - env.response.headers["Location"] = url - haltf env, status_code: 302 - end - end - - env.response.headers["Location"] = "/" - haltf env, status_code: 302 - end -end diff --git a/invidious/src/invidious/routes/feeds.cr b/invidious/src/invidious/routes/feeds.cr deleted file mode 100755 index e20a713..0000000 --- a/invidious/src/invidious/routes/feeds.cr +++ /dev/null @@ -1,464 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Feeds - def self.view_all_playlists_redirect(env) - env.redirect "/feed/playlists" - end - - def self.playlists(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - - # TODO: make a single DB call and separate the items here? - items_created = Invidious::Database::Playlists.select_like_iv(user.email) - items_created.map! do |item| - item.author = "" - item - end - - items_saved = Invidious::Database::Playlists.select_not_like_iv(user.email) - items_saved.map! do |item| - item.author = "" - item - end - - templated "feeds/playlists" - end - - def self.popular(env) - locale = env.get("preferences").as(Preferences).locale - - if CONFIG.popular_enabled - templated "feeds/popular" - else - message = translate(locale, "The Popular feed has been disabled by the administrator.") - templated "message" - end - end - - def self.trending(env) - locale = env.get("preferences").as(Preferences).locale - - trending_type = env.params.query["type"]? - trending_type ||= "Default" - - region = env.params.query["region"]? - region ||= env.get("preferences").as(Preferences).region - - begin - trending, plid = fetch_trending(trending_type, region, locale) - rescue ex - return error_template(500, ex) - end - - templated "feeds/trending" - end - - def self.subscriptions(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - token = user.token - - if user.preferences.unseen_only - env.set "show_watched", true - end - - # Refresh account - headers = HTTP::Headers.new - headers["Cookie"] = env.request.headers["Cookie"] - - max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE) - max_results ||= user.preferences.max_results - max_results ||= CONFIG.default_user_preferences.max_results - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - videos, notifications = get_subscription_feed(user, max_results, page) - - if CONFIG.enable_user_notifications - # "updated" here is used for delivering new notifications, so if - # we know a user has looked at their feed e.g. in the past 10 minutes, - # they've already seen a video posted 20 minutes ago, and don't need - # to be notified. - Invidious::Database::Users.clear_notifications(user) - user.notifications = [] of String - end - env.set "user", user - - # Used for pagination links - base_url = "/feed/subscriptions" - base_url += "?max_results=#{max_results}" if env.params.query.has_key?("max_results") - - templated "feeds/subscriptions" - end - - def self.history(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - referer = get_referer(env) - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - if !user - return env.redirect referer - end - - user = user.as(User) - - max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE) - max_results ||= user.preferences.max_results - max_results ||= CONFIG.default_user_preferences.max_results - - if user.watched[(page - 1) * max_results]? - watched = user.watched.reverse[(page - 1) * max_results, max_results] - end - watched ||= [] of String - - # Used for pagination links - base_url = "/feed/history" - base_url += "?max_results=#{max_results}" if env.params.query.has_key?("max_results") - - templated "feeds/history" - end - - # RSS feeds - - def self.rss_channel(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.headers["Content-Type"] = "application/atom+xml" - env.response.content_type = "application/atom+xml" - - ucid = env.params.url["ucid"] - - params = HTTP::Params.parse(env.params.query["params"]? || "") - - begin - channel = get_about_info(ucid, locale) - rescue ex : ChannelRedirect - return env.redirect env.request.resource.gsub(ucid, ex.channel_id) - rescue ex : NotFoundException - return error_atom(404, ex) - rescue ex - return error_atom(500, ex) - end - - namespaces = { - "yt" => "http://www.youtube.com/xml/schemas/2015", - "media" => "http://search.yahoo.com/mrss/", - "default" => "http://www.w3.org/2005/Atom", - } - - response = YT_POOL.client &.get("/feeds/videos.xml?channel_id=#{channel.ucid}") - rss = XML.parse(response.body) - - videos = rss.xpath_nodes("//default:feed/default:entry", namespaces).map do |entry| - video_id = entry.xpath_node("yt:videoId", namespaces).not_nil!.content - title = entry.xpath_node("default:title", namespaces).not_nil!.content - - published = Time.parse_rfc3339(entry.xpath_node("default:published", namespaces).not_nil!.content) - updated = Time.parse_rfc3339(entry.xpath_node("default:updated", namespaces).not_nil!.content) - - author = entry.xpath_node("default:author/default:name", namespaces).not_nil!.content - ucid = entry.xpath_node("yt:channelId", namespaces).not_nil!.content - description_html = entry.xpath_node("media:group/media:description", namespaces).not_nil!.to_s - views = entry.xpath_node("media:group/media:community/media:statistics", namespaces).not_nil!.["views"].to_i64 - - SearchVideo.new({ - title: title, - id: video_id, - author: author, - ucid: ucid, - published: published, - views: views, - description_html: description_html, - length_seconds: 0, - live_now: false, - paid: false, - premium: false, - premiere_timestamp: nil, - author_verified: false, - }) - end - - XML.build(indent: " ", encoding: "UTF-8") do |xml| - xml.element("feed", "xmlns:yt": "http://www.youtube.com/xml/schemas/2015", - "xmlns:media": "http://search.yahoo.com/mrss/", xmlns: "http://www.w3.org/2005/Atom", - "xml:lang": "en-US") do - xml.element("link", rel: "self", href: "#{HOST_URL}#{env.request.resource}") - xml.element("id") { xml.text "yt:channel:#{channel.ucid}" } - xml.element("yt:channelId") { xml.text channel.ucid } - xml.element("icon") { xml.text channel.author_thumbnail } - xml.element("title") { xml.text channel.author } - xml.element("link", rel: "alternate", href: "#{HOST_URL}/channel/#{channel.ucid}") - - xml.element("author") do - xml.element("name") { xml.text channel.author } - xml.element("uri") { xml.text "#{HOST_URL}/channel/#{channel.ucid}" } - end - - xml.element("image") do - xml.element("url") { xml.text channel.author_thumbnail } - xml.element("title") { xml.text channel.author } - xml.element("link", rel: "self", href: "#{HOST_URL}#{env.request.resource}") - end - - videos.each do |video| - video.to_xml(channel.auto_generated, params, xml) - end - end - end - end - - def self.rss_private(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.headers["Content-Type"] = "application/atom+xml" - env.response.content_type = "application/atom+xml" - - token = env.params.query["token"]? - - if !token - haltf env, status_code: 403 - end - - user = Invidious::Database::Users.select(token: token.strip) - if !user - haltf env, status_code: 403 - end - - max_results = env.params.query["max_results"]?.try &.to_i?.try &.clamp(0, MAX_ITEMS_PER_PAGE) - max_results ||= user.preferences.max_results - max_results ||= CONFIG.default_user_preferences.max_results - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - params = HTTP::Params.parse(env.params.query["params"]? || "") - - videos, notifications = get_subscription_feed(user, max_results, page) - - XML.build(indent: " ", encoding: "UTF-8") do |xml| - xml.element("feed", "xmlns:yt": "http://www.youtube.com/xml/schemas/2015", - "xmlns:media": "http://search.yahoo.com/mrss/", xmlns: "http://www.w3.org/2005/Atom", - "xml:lang": "en-US") do - xml.element("link", "type": "text/html", rel: "alternate", href: "#{HOST_URL}/feed/subscriptions") - xml.element("link", "type": "application/atom+xml", rel: "self", - href: "#{HOST_URL}#{env.request.resource}") - xml.element("title") { xml.text translate(locale, "Invidious Private Feed for `x`", user.email) } - - (notifications + videos).each do |video| - video.to_xml(locale, params, xml) - end - end - end - end - - def self.rss_playlist(env) - locale = env.get("preferences").as(Preferences).locale - - env.response.headers["Content-Type"] = "application/atom+xml" - env.response.content_type = "application/atom+xml" - - plid = env.params.url["plid"] - - params = HTTP::Params.parse(env.params.query["params"]? || "") - path = env.request.path - - if plid.starts_with? "IV" - if playlist = Invidious::Database::Playlists.select(id: plid) - videos = get_playlist_videos(playlist, offset: 0) - - return XML.build(indent: " ", encoding: "UTF-8") do |xml| - xml.element("feed", "xmlns:yt": "http://www.youtube.com/xml/schemas/2015", - "xmlns:media": "http://search.yahoo.com/mrss/", xmlns: "http://www.w3.org/2005/Atom", - "xml:lang": "en-US") do - xml.element("link", rel: "self", href: "#{HOST_URL}#{env.request.resource}") - xml.element("id") { xml.text "iv:playlist:#{plid}" } - xml.element("iv:playlistId") { xml.text plid } - xml.element("title") { xml.text playlist.title } - xml.element("link", rel: "alternate", href: "#{HOST_URL}/playlist?list=#{plid}") - - xml.element("author") do - xml.element("name") { xml.text playlist.author } - end - - videos.each &.to_xml(xml) - end - end - else - haltf env, status_code: 404 - end - end - - response = YT_POOL.client &.get("/feeds/videos.xml?playlist_id=#{plid}") - document = XML.parse(response.body) - - document.xpath_nodes(%q(//*[@href]|//*[@url])).each do |node| - node.attributes.each do |attribute| - case attribute.name - when "url", "href" - request_target = URI.parse(node[attribute.name]).request_target - query_string_opt = request_target.starts_with?("/watch?v=") ? "&#{params}" : "" - node[attribute.name] = "#{HOST_URL}#{request_target}#{query_string_opt}" - else nil # Skip - end - end - end - - document = document.to_xml(options: XML::SaveOptions::NO_DECL) - - document.scan(/(?[^<]+)<\/uri>/).each do |match| - content = "#{HOST_URL}#{URI.parse(match["url"]).request_target}" - document = document.gsub(match[0], "#{content}") - end - document - end - - def self.rss_videos(env) - if ucid = env.params.query["channel_id"]? - env.redirect "/feed/channel/#{ucid}" - elsif user = env.params.query["user"]? - env.redirect "/feed/channel/#{user}" - elsif plid = env.params.query["playlist_id"]? - env.redirect "/feed/playlist/#{plid}" - end - end - - # Push notifications via PubSub - - def self.push_notifications_get(env) - verify_token = env.params.url["token"] - - mode = env.params.query["hub.mode"]? - topic = env.params.query["hub.topic"]? - challenge = env.params.query["hub.challenge"]? - - if !mode || !topic || !challenge - haltf env, status_code: 400 - else - mode = mode.not_nil! - topic = topic.not_nil! - challenge = challenge.not_nil! - end - - case verify_token - when .starts_with? "v1" - _, time, nonce, signature = verify_token.split(":") - data = "#{time}:#{nonce}" - when .starts_with? "v2" - time, signature = verify_token.split(":") - data = "#{time}" - else - haltf env, status_code: 400 - end - - # The hub will sometimes check if we're still subscribed after delivery errors, - # so we reply with a 200 as long as the request hasn't expired - if Time.utc.to_unix - time.to_i > 432000 - haltf env, status_code: 400 - end - - if OpenSSL::HMAC.hexdigest(:sha1, HMAC_KEY, data) != signature - haltf env, status_code: 400 - end - - if ucid = HTTP::Params.parse(URI.parse(topic).query.not_nil!)["channel_id"]? - Invidious::Database::Channels.update_subscription_time(ucid) - elsif plid = HTTP::Params.parse(URI.parse(topic).query.not_nil!)["playlist_id"]? - Invidious::Database::Playlists.update_subscription_time(plid) - else - haltf env, status_code: 400 - end - - env.response.status_code = 200 - challenge - end - - def self.push_notifications_post(env) - locale = env.get("preferences").as(Preferences).locale - - token = env.params.url["token"] - body = env.request.body.not_nil!.gets_to_end - signature = env.request.headers["X-Hub-Signature"].lchop("sha1=") - - if signature != OpenSSL::HMAC.hexdigest(:sha1, HMAC_KEY, body) - LOGGER.error("/feed/webhook/#{token} : Invalid signature") - haltf env, status_code: 200 - end - - spawn do - # TODO: unify this with the other almost identical looking parts in this and channels.cr somehow? - namespaces = { - "yt" => "http://www.youtube.com/xml/schemas/2015", - "default" => "http://www.w3.org/2005/Atom", - } - rss = XML.parse(body) - rss.xpath_nodes("//default:feed/default:entry", namespaces).each do |entry| - id = entry.xpath_node("yt:videoId", namespaces).not_nil!.content - author = entry.xpath_node("default:author/default:name", namespaces).not_nil!.content - published = Time.parse_rfc3339(entry.xpath_node("default:published", namespaces).not_nil!.content) - updated = Time.parse_rfc3339(entry.xpath_node("default:updated", namespaces).not_nil!.content) - - begin - video = get_video(id, force_refresh: true) - rescue - next # skip this video since it raised an exception (e.g. it is a scheduled live event) - end - - if CONFIG.enable_user_notifications - # Deliver notifications to `/api/v1/auth/notifications` - payload = { - "topic" => video.ucid, - "videoId" => video.id, - "published" => published.to_unix, - }.to_json - PG_DB.exec("NOTIFY notifications, E'#{payload}'") - end - - video = ChannelVideo.new({ - id: id, - title: video.title, - published: published, - updated: updated, - ucid: video.ucid, - author: author, - length_seconds: video.length_seconds, - live_now: video.live_now, - premiere_timestamp: video.premiere_timestamp, - views: video.views, - }) - - was_insert = Invidious::Database::ChannelVideos.insert(video, with_premiere_timestamp: true) - if was_insert - if CONFIG.enable_user_notifications - Invidious::Database::Users.add_notification(video) - else - Invidious::Database::Users.feed_needs_update(video) - end - end - end - end - - env.response.status_code = 200 - end -end diff --git a/invidious/src/invidious/routes/images.cr b/invidious/src/invidious/routes/images.cr deleted file mode 100755 index b6a2e11..0000000 --- a/invidious/src/invidious/routes/images.cr +++ /dev/null @@ -1,209 +0,0 @@ -module Invidious::Routes::Images - # Avatars, banners and other large image assets. - def self.ggpht(env) - url = env.request.path.lchop("/ggpht") - - headers = HTTP::Headers.new - - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - # We're encapsulating this into a proc in order to easily reuse this - # portion of the code for each request block below. - request_proc = ->(response : HTTP::Client::Response) { - env.response.status_code = response.status_code - response.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if response.status_code >= 300 - env.response.headers.delete("Transfer-Encoding") - return - end - - proxy_file(response, env) - } - - begin - HTTP::Client.get("https://yt3.ggpht.com#{url}") do |resp| - return request_proc.call(resp) - end - rescue ex - end - end - - def self.options_storyboard(env) - env.response.headers["Access-Control-Allow-Origin"] = "*" - env.response.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS" - env.response.headers["Access-Control-Allow-Headers"] = "Content-Type, Range" - end - - def self.get_storyboard(env) - authority = env.params.url["authority"] - id = env.params.url["id"] - storyboard = env.params.url["storyboard"] - index = env.params.url["index"] - - url = "/sb/#{id}/#{storyboard}/#{index}?#{env.params.query}" - - headers = HTTP::Headers.new - - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - request_proc = ->(response : HTTP::Client::Response) { - env.response.status_code = response.status_code - response.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Connection"] = "close" - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if response.status_code >= 300 - return env.response.headers.delete("Transfer-Encoding") - end - - proxy_file(response, env) - } - - begin - HTTP::Client.get("https://#{authority}.ytimg.com#{url}") do |resp| - return request_proc.call(resp) - end - rescue ex - end - end - - # ??? maybe also for storyboards? - def self.s_p_image(env) - id = env.params.url["id"] - name = env.params.url["name"] - url = env.request.resource - - headers = HTTP::Headers.new - - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - request_proc = ->(response : HTTP::Client::Response) { - env.response.status_code = response.status_code - response.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if response.status_code >= 300 && response.status_code != 404 - return env.response.headers.delete("Transfer-Encoding") - end - - proxy_file(response, env) - } - - begin - HTTP::Client.get("https://i9.ytimg.com#{url}") do |resp| - return request_proc.call(resp) - end - rescue ex - end - end - - def self.yts_image(env) - headers = HTTP::Headers.new - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - begin - YT_POOL.client &.get(env.request.resource, headers) do |response| - env.response.status_code = response.status_code - response.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if response.status_code >= 300 && response.status_code != 404 - env.response.headers.delete("Transfer-Encoding") - break - end - - proxy_file(response, env) - end - rescue ex - end - end - - def self.thumbnails(env) - id = env.params.url["id"] - name = env.params.url["name"] - - headers = HTTP::Headers.new - - if name == "maxres.jpg" - build_thumbnails(id).each do |thumb| - thumbnail_resource_path = "/vi/#{id}/#{thumb[:url]}.jpg" - # This can likely be optimized into a (small) pool sometime in the future. - if HTTP::Client.head("https://i.ytimg.com#{thumbnail_resource_path}").status_code == 200 - name = thumb[:url] + ".jpg" - break - end - end - end - - url = "/vi/#{id}/#{name}" - - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - request_proc = ->(response : HTTP::Client::Response) { - env.response.status_code = response.status_code - response.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if response.status_code >= 300 && response.status_code != 404 - return env.response.headers.delete("Transfer-Encoding") - end - - proxy_file(response, env) - } - - begin - # This can likely be optimized into a (small) pool sometime in the future. - HTTP::Client.get("https://i.ytimg.com#{url}") do |resp| - return request_proc.call(resp) - end - rescue ex - end - end -end diff --git a/invidious/src/invidious/routes/login.cr b/invidious/src/invidious/routes/login.cr deleted file mode 100755 index d0f7ac2..0000000 --- a/invidious/src/invidious/routes/login.cr +++ /dev/null @@ -1,214 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Login - def self.login_page(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - - referer = get_referer(env, "/feed/subscriptions") - - return env.redirect referer if user - - if !CONFIG.login_enabled - return error_template(400, "Login has been disabled by administrator.") - end - - email = nil - password = nil - captcha = nil - - account_type = env.params.query["type"]? - account_type ||= "invidious" - - captcha_type = env.params.query["captcha"]? - captcha_type ||= "image" - - templated "user/login" - end - - def self.login(env) - locale = env.get("preferences").as(Preferences).locale - - referer = get_referer(env, "/feed/subscriptions") - - if !CONFIG.login_enabled - return error_template(403, "Login has been disabled by administrator.") - end - - # https://stackoverflow.com/a/574698 - email = env.params.body["email"]?.try &.downcase.byte_slice(0, 254) - password = env.params.body["password"]? - - account_type = env.params.query["type"]? - account_type ||= "invidious" - - case account_type - when "invidious" - if email.nil? || email.empty? - return error_template(401, "User ID is a required field") - end - - if password.nil? || password.empty? - return error_template(401, "Password is a required field") - end - - user = Invidious::Database::Users.select(email: email) - - if user - if Crypto::Bcrypt::Password.new(user.password.not_nil!).verify(password.byte_slice(0, 55)) - sid = Base64.urlsafe_encode(Random::Secure.random_bytes(32)) - Invidious::Database::SessionIDs.insert(sid, email) - - env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) - else - return error_template(401, "Wrong username or password") - end - - # Since this user has already registered, we don't want to overwrite their preferences - if env.request.cookies["PREFS"]? - cookie = env.request.cookies["PREFS"] - cookie.expires = Time.utc(1990, 1, 1) - env.response.cookies << cookie - end - else - if !CONFIG.registration_enabled - return error_template(400, "Registration has been disabled by administrator.") - end - - if password.empty? - return error_template(401, "Password cannot be empty") - end - - # See https://security.stackexchange.com/a/39851 - if password.bytesize > 55 - return error_template(400, "Password cannot be longer than 55 characters") - end - - password = password.byte_slice(0, 55) - - if CONFIG.captcha_enabled - captcha_type = env.params.body["captcha_type"]? - answer = env.params.body["answer"]? - change_type = env.params.body["change_type"]? - - if !captcha_type || change_type - if change_type - captcha_type = change_type - end - captcha_type ||= "image" - - account_type = "invidious" - - if captcha_type == "image" - captcha = Invidious::User::Captcha.generate_image(HMAC_KEY) - else - captcha = Invidious::User::Captcha.generate_text(HMAC_KEY) - end - - return templated "user/login" - end - - tokens = env.params.body.select { |k, _| k.match(/^token\[\d+\]$/) }.map { |_, v| v } - - answer ||= "" - captcha_type ||= "image" - - case captcha_type - when "image" - answer = answer.lstrip('0') - answer = OpenSSL::HMAC.hexdigest(:sha256, HMAC_KEY, answer) - - begin - validate_request(tokens[0], answer, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - else # "text" - answer = Digest::MD5.hexdigest(answer.downcase.strip) - - if tokens.empty? - return error_template(500, "Erroneous CAPTCHA") - end - - found_valid_captcha = false - error_exception = Exception.new - tokens.each do |tok| - begin - validate_request(tok, answer, env.request, HMAC_KEY, locale) - found_valid_captcha = true - rescue ex - error_exception = ex - end - end - - if !found_valid_captcha - return error_template(500, error_exception) - end - end - end - - sid = Base64.urlsafe_encode(Random::Secure.random_bytes(32)) - user, sid = create_user(sid, email, password) - - if language_header = env.request.headers["Accept-Language"]? - if language = ANG.language_negotiator.best(language_header, LOCALES.keys) - user.preferences.locale = language.header - end - end - - Invidious::Database::Users.insert(user) - Invidious::Database::SessionIDs.insert(sid, email) - - view_name = "subscriptions_#{sha256(user.email)}" - PG_DB.exec("CREATE MATERIALIZED VIEW #{view_name} AS #{MATERIALIZED_VIEW_SQL.call(user.email)}") - - env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) - - if env.request.cookies["PREFS"]? - user.preferences = env.get("preferences").as(Preferences) - Invidious::Database::Users.update_preferences(user) - - cookie = env.request.cookies["PREFS"] - cookie.expires = Time.utc(1990, 1, 1) - env.response.cookies << cookie - end - end - - env.redirect referer - else - env.redirect referer - end - end - - def self.signout(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - Invidious::Database::SessionIDs.delete(sid: sid) - - env.request.cookies.each do |cookie| - cookie.expires = Time.utc(1990, 1, 1) - env.response.cookies << cookie - end - - env.redirect referer - end -end diff --git a/invidious/src/invidious/routes/misc.cr b/invidious/src/invidious/routes/misc.cr deleted file mode 100755 index d6bd957..0000000 --- a/invidious/src/invidious/routes/misc.cr +++ /dev/null @@ -1,46 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Misc - def self.home(env) - preferences = env.get("preferences").as(Preferences) - locale = preferences.locale - user = env.get? "user" - - case preferences.default_home - when "Popular" - env.redirect "/feed/popular" - when "Trending" - env.redirect "/feed/trending" - when "Subscriptions" - if user - env.redirect "/feed/subscriptions" - else - env.redirect "/feed/popular" - end - when "Playlists" - if user - env.redirect "/feed/playlists" - else - env.redirect "/feed/popular" - end - else - templated "search_homepage", navbar_search: false - end - end - - def self.privacy(env) - locale = env.get("preferences").as(Preferences).locale - templated "privacy" - end - - def self.licenses(env) - locale = env.get("preferences").as(Preferences).locale - rendered "licenses" - end - - def self.cross_instance_redirect(env) - referer = get_referer(env) - instance_url = fetch_random_instance - env.redirect "https://#{instance_url}#{referer}" - end -end diff --git a/invidious/src/invidious/routes/notifications.cr b/invidious/src/invidious/routes/notifications.cr deleted file mode 100755 index 8922b74..0000000 --- a/invidious/src/invidious/routes/notifications.cr +++ /dev/null @@ -1,34 +0,0 @@ -module Invidious::Routes::Notifications - # /modify_notifications - # will "ding" all subscriptions. - # /modify_notifications?receive_all_updates=false&receive_no_updates=false - # will "unding" all subscriptions. - def self.modify(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env, "/") - - redirect = env.params.query["redirect"]? - redirect ||= "false" - redirect = redirect == "true" - - if !user - if redirect - return env.redirect referer - else - return error_json(403, "No such user") - end - end - - user = user.as(User) - - if redirect - env.redirect referer - else - env.response.content_type = "application/json" - "{}" - end - end -end diff --git a/invidious/src/invidious/routes/playlists.cr b/invidious/src/invidious/routes/playlists.cr deleted file mode 100755 index 9c6843e..0000000 --- a/invidious/src/invidious/routes/playlists.cr +++ /dev/null @@ -1,494 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Playlists - def self.new(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - sid = sid.as(String) - csrf_token = generate_response(sid, {":create_playlist"}, HMAC_KEY) - - templated "create_playlist" - end - - def self.create(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - title = env.params.body["title"]?.try &.as(String) - if !title || title.empty? - return error_template(400, "Title cannot be empty.") - end - - privacy = PlaylistPrivacy.parse?(env.params.body["privacy"]?.try &.as(String) || "") - if !privacy - return error_template(400, "Invalid privacy setting.") - end - - if Invidious::Database::Playlists.count_owned_by(user.email) >= 100 - return error_template(400, "User cannot have more than 100 playlists.") - end - - playlist = create_playlist(title, privacy, user) - - env.redirect "/playlist?list=#{playlist.id}" - end - - def self.subscribe(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - - playlist_id = env.params.query["list"] - begin - playlist = get_playlist(playlist_id) - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - subscribe_playlist(user, playlist) - - env.redirect "/playlist?list=#{playlist.id}" - end - - def self.delete_page(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - sid = sid.as(String) - - plid = env.params.query["list"]? - if !plid || plid.empty? - return error_template(400, "A playlist ID is required") - end - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email - return env.redirect referer - end - - csrf_token = generate_response(sid, {":delete_playlist"}, HMAC_KEY) - - templated "delete_playlist" - end - - def self.delete(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - plid = env.params.query["list"]? - return env.redirect referer if plid.nil? - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email - return env.redirect referer - end - - Invidious::Database::Playlists.delete(plid) - - env.redirect "/feed/playlists" - end - - def self.edit(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - sid = sid.as(String) - - plid = env.params.query["list"]? - if !plid || !plid.starts_with?("IV") - return env.redirect referer - end - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email - return env.redirect referer - end - - begin - items = get_playlist_videos(playlist, offset: (page - 1) * 100) - rescue ex - items = [] of PlaylistVideo - end - - csrf_token = generate_response(sid, {":edit_playlist"}, HMAC_KEY) - - # Pagination - page_nav_html = Frontend::Pagination.nav_numeric(locale, - base_url: "/playlist?list=#{playlist.id}", - current_page: page, - show_next: (items.size == 100) - ) - - templated "edit_playlist" - end - - def self.update(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - plid = env.params.query["list"]? - return env.redirect referer if plid.nil? - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - return error_template(400, ex) - end - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email - return env.redirect referer - end - - title = env.params.body["title"]?.try &.delete("<>") || "" - privacy = PlaylistPrivacy.parse(env.params.body["privacy"]? || "Public") - description = env.params.body["description"]?.try &.delete("\r") || "" - - if title != playlist.title || - privacy != playlist.privacy || - description != playlist.description - updated = Time.utc - else - updated = playlist.updated - end - - Invidious::Database::Playlists.update(plid, title, privacy, description, updated) - - env.redirect "/playlist?list=#{plid}" - end - - def self.add_playlist_items_page(env) - prefs = env.get("preferences").as(Preferences) - locale = prefs.locale - - region = env.params.query["region"]? || prefs.region - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - return env.redirect "/" if user.nil? - - user = user.as(User) - sid = sid.as(String) - - plid = env.params.query["list"]? - if !plid || !plid.starts_with?("IV") - return env.redirect referer - end - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - playlist = Invidious::Database::Playlists.select(id: plid) - if !playlist || playlist.author != user.email - return env.redirect referer - end - - begin - query = Invidious::Search::Query.new(env.params.query, :playlist, region) - items = query.process.select(SearchVideo).map(&.as(SearchVideo)) - rescue ex - items = [] of SearchVideo - end - - # Pagination - query_encoded = URI.encode_www_form(query.try &.text || "", space_to_plus: true) - page_nav_html = Frontend::Pagination.nav_numeric(locale, - base_url: "/add_playlist_items?list=#{playlist.id}&q=#{query_encoded}", - current_page: page, - show_next: (items.size >= 20) - ) - - env.set "add_playlist_items", plid - templated "add_playlist_items" - end - - def self.playlist_ajax(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env, "/") - - redirect = env.params.query["redirect"]? - redirect ||= "true" - redirect = redirect == "true" - - if !user - if redirect - return env.redirect referer - else - return error_json(403, "No such user") - end - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - if redirect - return error_template(400, ex) - else - return error_json(400, ex) - end - end - - if env.params.query["action_create_playlist"]? - action = "action_create_playlist" - elsif env.params.query["action_delete_playlist"]? - action = "action_delete_playlist" - elsif env.params.query["action_edit_playlist"]? - action = "action_edit_playlist" - elsif env.params.query["action_add_video"]? - action = "action_add_video" - video_id = env.params.query["video_id"] - elsif env.params.query["action_remove_video"]? - action = "action_remove_video" - elsif env.params.query["action_move_video_before"]? - action = "action_move_video_before" - else - return env.redirect referer - end - - begin - playlist_id = env.params.query["playlist_id"] - playlist = get_playlist(playlist_id).as(InvidiousPlaylist) - raise "Invalid user" if playlist.author != user.email - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - if redirect - return error_template(400, ex) - else - return error_json(400, ex) - end - end - - email = user.email - - case action - when "action_edit_playlist" - # TODO: Playlist stub - when "action_add_video" - if playlist.index.size >= CONFIG.playlist_length_limit - if redirect - return error_template(400, "Playlist cannot have more than #{CONFIG.playlist_length_limit} videos") - else - return error_json(400, "Playlist cannot have more than #{CONFIG.playlist_length_limit} videos") - end - end - - video_id = env.params.query["video_id"] - - begin - video = get_video(video_id) - rescue ex : NotFoundException - return error_json(404, ex) - rescue ex - if redirect - return error_template(500, ex) - else - return error_json(500, ex) - end - end - - playlist_video = PlaylistVideo.new({ - title: video.title, - id: video.id, - author: video.author, - ucid: video.ucid, - length_seconds: video.length_seconds, - published: video.published, - plid: playlist_id, - live_now: video.live_now, - index: Random::Secure.rand(0_i64..Int64::MAX), - }) - - Invidious::Database::PlaylistVideos.insert(playlist_video) - Invidious::Database::Playlists.update_video_added(playlist_id, playlist_video.index) - when "action_remove_video" - index = env.params.query["set_video_id"] - Invidious::Database::PlaylistVideos.delete(index) - Invidious::Database::Playlists.update_video_removed(playlist_id, index) - when "action_move_video_before" - # TODO: Playlist stub - else - return error_json(400, "Unsupported action #{action}") - end - - if redirect - env.redirect referer - else - env.response.content_type = "application/json" - "{}" - end - end - - def self.show(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get?("user").try &.as(User) - referer = get_referer(env) - - plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") - if !plid - return env.redirect "/" - end - - page = env.params.query["page"]?.try &.to_i? - page ||= 1 - - if plid.starts_with? "RD" - return env.redirect "/mix?list=#{plid}" - end - - begin - playlist = get_playlist(plid) - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - if playlist.is_a? InvidiousPlaylist - page_count = (playlist.video_count / 100).to_i - page_count += 1 if (playlist.video_count % 100) > 0 - else - page_count = (playlist.video_count / 200).to_i - page_count += 1 if (playlist.video_count % 200) > 0 - end - - if page > page_count - return env.redirect "/playlist?list=#{plid}&page=#{page_count}" - end - - if playlist.privacy == PlaylistPrivacy::Private && playlist.author != user.try &.email - return error_template(403, "This playlist is private.") - end - - begin - if playlist.is_a? InvidiousPlaylist - items = get_playlist_videos(playlist, offset: (page - 1) * 100) - else - items = get_playlist_videos(playlist, offset: (page - 1) * 200) - end - rescue ex - return error_template(500, "Error encountered while retrieving playlist videos.
    #{ex.message}") - end - - if playlist.author == user.try &.email - env.set "remove_playlist_items", plid - end - - # Pagination - page_nav_html = Frontend::Pagination.nav_numeric(locale, - base_url: "/playlist?list=#{playlist.id}", - current_page: page, - show_next: (page_count != 1 && page < page_count) - ) - - templated "playlist" - end - - def self.mix(env) - locale = env.get("preferences").as(Preferences).locale - - rdid = env.params.query["list"]? - if !rdid - return env.redirect "/" - end - - continuation = env.params.query["continuation"]? - continuation ||= rdid.lchop("RD") - - begin - mix = fetch_mix(rdid, continuation, locale: locale) - rescue ex - return error_template(500, ex) - end - - templated "mix" - end - - # Undocumented, creates anonymous playlist with specified 'video_ids', max 50 videos - def self.watch_videos(env) - response = YT_POOL.client &.get(env.request.resource) - if url = response.headers["Location"]? - url = URI.parse(url).request_target - return env.redirect url - end - - env.response.status_code = response.status_code - end -end diff --git a/invidious/src/invidious/routes/preferences.cr b/invidious/src/invidious/routes/preferences.cr deleted file mode 100755 index 112535b..0000000 --- a/invidious/src/invidious/routes/preferences.cr +++ /dev/null @@ -1,350 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::PreferencesRoute - def self.show(env) - locale = env.get("preferences").as(Preferences).locale - - referer = get_referer(env) - - preferences = env.get("preferences").as(Preferences) - - templated "user/preferences" - end - - def self.update(env) - locale = env.get("preferences").as(Preferences).locale - referer = get_referer(env) - - video_loop = env.params.body["video_loop"]?.try &.as(String) - video_loop ||= "off" - video_loop = video_loop == "on" - - annotations = env.params.body["annotations"]?.try &.as(String) - annotations ||= "off" - annotations = annotations == "on" - - annotations_subscribed = env.params.body["annotations_subscribed"]?.try &.as(String) - annotations_subscribed ||= "off" - annotations_subscribed = annotations_subscribed == "on" - - autoplay = env.params.body["autoplay"]?.try &.as(String) - autoplay ||= "off" - autoplay = autoplay == "on" - - continue = env.params.body["continue"]?.try &.as(String) - continue ||= "off" - continue = continue == "on" - - continue_autoplay = env.params.body["continue_autoplay"]?.try &.as(String) - continue_autoplay ||= "off" - continue_autoplay = continue_autoplay == "on" - - listen = env.params.body["listen"]?.try &.as(String) - listen ||= "off" - listen = listen == "on" - - local = env.params.body["local"]?.try &.as(String) - local ||= "off" - local = local == "on" - - watch_history = env.params.body["watch_history"]?.try &.as(String) - watch_history ||= "off" - watch_history = watch_history == "on" - - speed = env.params.body["speed"]?.try &.as(String).to_f32? - speed ||= CONFIG.default_user_preferences.speed - - player_style = env.params.body["player_style"]?.try &.as(String) - player_style ||= CONFIG.default_user_preferences.player_style - - quality = env.params.body["quality"]?.try &.as(String) - quality ||= CONFIG.default_user_preferences.quality - - quality_dash = env.params.body["quality_dash"]?.try &.as(String) - quality_dash ||= CONFIG.default_user_preferences.quality_dash - - volume = env.params.body["volume"]?.try &.as(String).to_i? - volume ||= CONFIG.default_user_preferences.volume - - extend_desc = env.params.body["extend_desc"]?.try &.as(String) - extend_desc ||= "off" - extend_desc = extend_desc == "on" - - vr_mode = env.params.body["vr_mode"]?.try &.as(String) - vr_mode ||= "off" - vr_mode = vr_mode == "on" - - save_player_pos = env.params.body["save_player_pos"]?.try &.as(String) - save_player_pos ||= "off" - save_player_pos = save_player_pos == "on" - - show_nick = env.params.body["show_nick"]?.try &.as(String) - show_nick ||= "off" - show_nick = show_nick == "on" - - comments = [] of String - 2.times do |i| - comments << (env.params.body["comments[#{i}]"]?.try &.as(String) || CONFIG.default_user_preferences.comments[i]) - end - - captions = [] of String - 3.times do |i| - captions << (env.params.body["captions[#{i}]"]?.try &.as(String) || CONFIG.default_user_preferences.captions[i]) - end - - related_videos = env.params.body["related_videos"]?.try &.as(String) - related_videos ||= "off" - related_videos = related_videos == "on" - - default_home = env.params.body["default_home"]?.try &.as(String) || CONFIG.default_user_preferences.default_home - - feed_menu = [] of String - 4.times do |index| - option = env.params.body["feed_menu[#{index}]"]?.try &.as(String) || "" - if !option.empty? - feed_menu << option - end - end - - automatic_instance_redirect = env.params.body["automatic_instance_redirect"]?.try &.as(String) - automatic_instance_redirect ||= "off" - automatic_instance_redirect = automatic_instance_redirect == "on" - - region = env.params.body["region"]?.try &.as(String) - - locale = env.params.body["locale"]?.try &.as(String) - locale ||= CONFIG.default_user_preferences.locale - - dark_mode = env.params.body["dark_mode"]?.try &.as(String) - dark_mode ||= CONFIG.default_user_preferences.dark_mode - - thin_mode = env.params.body["thin_mode"]?.try &.as(String) - thin_mode ||= "off" - thin_mode = thin_mode == "on" - - max_results = env.params.body["max_results"]?.try &.as(String).to_i? - max_results ||= CONFIG.default_user_preferences.max_results - - sort = env.params.body["sort"]?.try &.as(String) - sort ||= CONFIG.default_user_preferences.sort - - latest_only = env.params.body["latest_only"]?.try &.as(String) - latest_only ||= "off" - latest_only = latest_only == "on" - - unseen_only = env.params.body["unseen_only"]?.try &.as(String) - unseen_only ||= "off" - unseen_only = unseen_only == "on" - - notifications_only = env.params.body["notifications_only"]?.try &.as(String) - notifications_only ||= "off" - notifications_only = notifications_only == "on" - - # Convert to JSON and back again to take advantage of converters used for compatibility - preferences = Preferences.from_json({ - annotations: annotations, - annotations_subscribed: annotations_subscribed, - autoplay: autoplay, - captions: captions, - comments: comments, - continue: continue, - continue_autoplay: continue_autoplay, - dark_mode: dark_mode, - latest_only: latest_only, - listen: listen, - local: local, - watch_history: watch_history, - locale: locale, - max_results: max_results, - notifications_only: notifications_only, - player_style: player_style, - quality: quality, - quality_dash: quality_dash, - default_home: default_home, - feed_menu: feed_menu, - automatic_instance_redirect: automatic_instance_redirect, - region: region, - related_videos: related_videos, - sort: sort, - speed: speed, - thin_mode: thin_mode, - unseen_only: unseen_only, - video_loop: video_loop, - volume: volume, - extend_desc: extend_desc, - vr_mode: vr_mode, - show_nick: show_nick, - save_player_pos: save_player_pos, - }.to_json) - - if user = env.get? "user" - user = user.as(User) - user.preferences = preferences - Invidious::Database::Users.update_preferences(user) - - if CONFIG.admins.includes? user.email - CONFIG.default_user_preferences.default_home = env.params.body["admin_default_home"]?.try &.as(String) || CONFIG.default_user_preferences.default_home - - admin_feed_menu = [] of String - 4.times do |index| - option = env.params.body["admin_feed_menu[#{index}]"]?.try &.as(String) || "" - if !option.empty? - admin_feed_menu << option - end - end - CONFIG.default_user_preferences.feed_menu = admin_feed_menu - - popular_enabled = env.params.body["popular_enabled"]?.try &.as(String) - popular_enabled ||= "off" - CONFIG.popular_enabled = popular_enabled == "on" - - captcha_enabled = env.params.body["captcha_enabled"]?.try &.as(String) - captcha_enabled ||= "off" - CONFIG.captcha_enabled = captcha_enabled == "on" - - login_enabled = env.params.body["login_enabled"]?.try &.as(String) - login_enabled ||= "off" - CONFIG.login_enabled = login_enabled == "on" - - registration_enabled = env.params.body["registration_enabled"]?.try &.as(String) - registration_enabled ||= "off" - CONFIG.registration_enabled = registration_enabled == "on" - - statistics_enabled = env.params.body["statistics_enabled"]?.try &.as(String) - statistics_enabled ||= "off" - CONFIG.statistics_enabled = statistics_enabled == "on" - - CONFIG.modified_source_code_url = env.params.body["modified_source_code_url"]?.try &.as(String) - - File.write("config/config.yml", CONFIG.to_yaml) - end - else - env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) - end - - env.redirect referer - end - - def self.toggle_theme(env) - locale = env.get("preferences").as(Preferences).locale - referer = get_referer(env, unroll: false) - - redirect = env.params.query["redirect"]? - redirect ||= "true" - redirect = redirect == "true" - - if user = env.get? "user" - user = user.as(User) - - case user.preferences.dark_mode - when "dark" - user.preferences.dark_mode = "light" - else - user.preferences.dark_mode = "dark" - end - - Invidious::Database::Users.update_preferences(user) - else - preferences = env.get("preferences").as(Preferences) - - case preferences.dark_mode - when "dark" - preferences.dark_mode = "light" - else - preferences.dark_mode = "dark" - end - - env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) - end - - if redirect - env.redirect referer - else - env.response.content_type = "application/json" - "{}" - end - end - - def self.data_control(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - - templated "user/data_control" - end - - def self.update_data_control(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - referer = get_referer(env) - - if user - user = user.as(User) - - # TODO: Find a way to prevent browser timeout - - HTTP::FormData.parse(env.request) do |part| - body = part.body.gets_to_end - type = part.headers["Content-Type"] - - next if body.empty? - - # TODO: Unify into single import based on content-type - case part.name - when "import_invidious" - Invidious::User::Import.from_invidious(user, body) - when "import_youtube" - filename = part.filename || "" - success = Invidious::User::Import.from_youtube(user, body, filename, type) - - if !success - haltf(env, status_code: 415, - response: error_template(415, "Invalid subscription file uploaded") - ) - end - when "import_youtube_pl" - filename = part.filename || "" - success = Invidious::User::Import.from_youtube_pl(user, body, filename, type) - - if !success - haltf(env, status_code: 415, - response: error_template(415, "Invalid playlist file uploaded") - ) - end - when "import_youtube_wh" - filename = part.filename || "" - success = Invidious::User::Import.from_youtube_wh(user, body, filename, type) - - if !success - haltf(env, status_code: 415, - response: error_template(415, "Invalid watch history file uploaded") - ) - end - when "import_freetube" - Invidious::User::Import.from_freetube(user, body) - when "import_newpipe_subscriptions" - Invidious::User::Import.from_newpipe_subs(user, body) - when "import_newpipe" - success = Invidious::User::Import.from_newpipe(user, body) - - if !success - haltf(env, status_code: 415, - response: error_template(415, "Uploaded file is too large") - ) - end - else nil # Ignore - end - end - end - - env.redirect referer - end -end diff --git a/invidious/src/invidious/routes/search.cr b/invidious/src/invidious/routes/search.cr deleted file mode 100755 index 5be3353..0000000 --- a/invidious/src/invidious/routes/search.cr +++ /dev/null @@ -1,113 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Search - def self.opensearch(env) - locale = env.get("preferences").as(Preferences).locale - env.response.content_type = "application/opensearchdescription+xml" - - XML.build(indent: " ", encoding: "UTF-8") do |xml| - xml.element("OpenSearchDescription", xmlns: "http://a9.com/-/spec/opensearch/1.1/") do - xml.element("ShortName") { xml.text "Invidious" } - xml.element("LongName") { xml.text "Invidious Search" } - xml.element("Description") { xml.text "Search for videos, channels, and playlists on Invidious" } - xml.element("InputEncoding") { xml.text "UTF-8" } - xml.element("Image", width: 48, height: 48, type: "image/x-icon") { xml.text "#{HOST_URL}/favicon.ico" } - xml.element("Url", type: "text/html", method: "get", template: "#{HOST_URL}/search?q={searchTerms}") - end - end - end - - def self.results(env) - locale = env.get("preferences").as(Preferences).locale - - query = env.params.query["search_query"]? - query ||= env.params.query["q"]? - - page = env.params.query["page"]? - - if query && !query.empty? - if page && !page.empty? - env.redirect "/search?q=" + URI.encode_www_form(query) + "&page=" + page - else - env.redirect "/search?q=" + URI.encode_www_form(query) - end - else - env.redirect "/search" - end - end - - def self.search(env) - prefs = env.get("preferences").as(Preferences) - locale = prefs.locale - - region = env.params.query["region"]? || prefs.region - - query = Invidious::Search::Query.new(env.params.query, :regular, region) - - if query.empty? - # Display the full page search box implemented in #1977 - env.set "search", "" - templated "search_homepage", navbar_search: false - else - user = env.get? "user" - - begin - items = query.process - rescue ex : ChannelSearchException - return error_template(404, "Unable to find channel with id of '#{HTML.escape(ex.channel)}'. Are you sure that's an actual channel id? It should look like 'UC4QobU6STFB0P71PMvOGN5A'.") - rescue ex - return error_template(500, ex) - end - - redirect_url = Invidious::Frontend::Misc.redirect_url(env) - - # Pagination - page_nav_html = Frontend::Pagination.nav_numeric(locale, - base_url: "/search?#{query.to_http_params}", - current_page: query.page, - show_next: (items.size >= 20) - ) - - if query.type == Invidious::Search::Query::Type::Channel - env.set "search", "channel:#{query.channel} #{query.text}" - else - env.set "search", query.text - end - - templated "search" - end - end - - def self.hashtag(env : HTTP::Server::Context) - locale = env.get("preferences").as(Preferences).locale - - hashtag = env.params.url["hashtag"]? - if hashtag.nil? || hashtag.empty? - return error_template(400, "Invalid request") - end - - page = env.params.query["page"]? - if page.nil? - page = 1 - else - page = Math.max(1, page.to_i) - env.params.query.delete_all("page") - end - - begin - items = Invidious::Hashtag.fetch(hashtag, page) - rescue ex - return error_template(500, ex) - end - - # Pagination - hashtag_encoded = URI.encode_www_form(hashtag, space_to_plus: false) - page_nav_html = Frontend::Pagination.nav_numeric(locale, - base_url: "/hashtag/#{hashtag_encoded}", - current_page: page, - show_next: (items.size >= 60) - ) - - templated "hashtag" - end -end diff --git a/invidious/src/invidious/routes/subscriptions.cr b/invidious/src/invidious/routes/subscriptions.cr deleted file mode 100755 index 7f9ec59..0000000 --- a/invidious/src/invidious/routes/subscriptions.cr +++ /dev/null @@ -1,130 +0,0 @@ -module Invidious::Routes::Subscriptions - def self.toggle_subscription(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env, "/") - - redirect = env.params.query["redirect"]? - redirect ||= "true" - redirect = redirect == "true" - - if !user - if redirect - return env.redirect referer - else - return error_json(403, "No such user") - end - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - if redirect - return error_template(400, ex) - else - return error_json(400, ex) - end - end - - if env.params.query["action_create_subscription_to_channel"]?.try &.to_i?.try &.== 1 - action = "action_create_subscription_to_channel" - elsif env.params.query["action_remove_subscriptions"]?.try &.to_i?.try &.== 1 - action = "action_remove_subscriptions" - else - return env.redirect referer - end - - channel_id = env.params.query["c"]? - channel_id ||= "" - - case action - when "action_create_subscription_to_channel" - if !user.subscriptions.includes? channel_id - get_channel(channel_id) - Invidious::Database::Users.subscribe_channel(user, channel_id) - end - when "action_remove_subscriptions" - Invidious::Database::Users.unsubscribe_channel(user, channel_id) - else - return error_json(400, "Unsupported action #{action}") - end - - if redirect - env.redirect referer - else - env.response.content_type = "application/json" - "{}" - end - end - - def self.subscription_manager(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env) - - if !user - return env.redirect referer - end - - user = user.as(User) - sid = sid.as(String) - - action_takeout = env.params.query["action_takeout"]?.try &.to_i? - action_takeout ||= 0 - action_takeout = action_takeout == 1 - - format = env.params.query["format"]? - format ||= "rss" - - subscriptions = Invidious::Database::Channels.select(user.subscriptions) - subscriptions.sort_by!(&.author.downcase) - - if action_takeout - if format == "json" - env.response.content_type = "application/json" - env.response.headers["content-disposition"] = "attachment" - - return Invidious::User::Export.to_invidious(user) - else - env.response.content_type = "application/xml" - env.response.headers["content-disposition"] = "attachment" - export = XML.build do |xml| - xml.element("opml", version: "1.1") do - xml.element("body") do - if format == "newpipe" - title = "YouTube Subscriptions" - else - title = "Invidious Subscriptions" - end - - xml.element("outline", text: title, title: title) do - subscriptions.each do |channel| - if format == "newpipe" - xml_url = "https://www.youtube.com/feeds/videos.xml?channel_id=#{channel.id}" - else - xml_url = "#{HOST_URL}/feed/channel/#{channel.id}" - end - - xml.element("outline", text: channel.author, title: channel.author, - "type": "rss", xmlUrl: xml_url) - end - end - end - end - end - - return export.gsub(%(\n), "") - end - end - - templated "user/subscription_manager" - end -end diff --git a/invidious/src/invidious/routes/video_playback.cr b/invidious/src/invidious/routes/video_playback.cr deleted file mode 100755 index ec18f3b..0000000 --- a/invidious/src/invidious/routes/video_playback.cr +++ /dev/null @@ -1,303 +0,0 @@ -module Invidious::Routes::VideoPlayback - # /videoplayback - def self.get_video_playback(env) - locale = env.get("preferences").as(Preferences).locale - query_params = env.params.query - - fvip = query_params["fvip"]? || "3" - mns = query_params["mn"]?.try &.split(",") - mns ||= [] of String - - if query_params["region"]? - region = query_params["region"] - query_params.delete("region") - end - - if query_params["host"]? && !query_params["host"].empty? - host = query_params["host"] - query_params.delete("host") - else - host = "r#{fvip}---#{mns.pop}.googlevideo.com" - end - - # Sanity check, to avoid being used as an open proxy - if !host.matches?(/[\w-]+.googlevideo.com/) - return error_template(400, "Invalid \"host\" parameter.") - end - - host = "https://#{host}" - url = "/videoplayback?#{query_params}" - - headers = HTTP::Headers.new - REQUEST_HEADERS_WHITELIST.each do |header| - if env.request.headers[header]? - headers[header] = env.request.headers[header] - end - end - - # See: https://github.com/iv-org/invidious/issues/3302 - range_header = env.request.headers["Range"]? - if range_header.nil? - range_for_head = query_params["range"]? || "0-640" - headers["Range"] = "bytes=#{range_for_head}" - end - - client = make_client(URI.parse(host), region, force_resolve = true) - response = HTTP::Client::Response.new(500) - error = "" - 5.times do - begin - response = client.head(url, headers) - - if response.headers["Location"]? - location = URI.parse(response.headers["Location"]) - env.response.headers["Access-Control-Allow-Origin"] = "*" - - new_host = "#{location.scheme}://#{location.host}" - if new_host != host - host = new_host - client.close - client = make_client(URI.parse(new_host), region, force_resolve = true) - end - - url = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}" - else - break - end - rescue Socket::Addrinfo::Error - if !mns.empty? - mn = mns.pop - end - fvip = "3" - - host = "https://r#{fvip}---#{mn}.googlevideo.com" - client = make_client(URI.parse(host), region, force_resolve = true) - rescue ex - error = ex.message - end - end - - # Remove the Range header added previously. - headers.delete("Range") if range_header.nil? - - playback_statistics = get_playback_statistic() - playback_statistics["totalRequests"] += 1 - - if response.status_code >= 400 - env.response.content_type = "text/plain" - haltf env, response.status_code - else - playback_statistics["successfulRequests"] += 1 - end - - if url.includes? "&file=seg.ts" - if CONFIG.disabled?("livestreams") - return error_template(403, "Administrator has disabled this endpoint.") - end - - begin - client.get(url, headers) do |resp| - resp.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if location = resp.headers["Location"]? - url = Invidious::HttpServer::Utils.proxy_video_url(location, region: region) - return env.redirect url - end - - IO.copy(resp.body_io, env.response) - end - rescue ex - end - else - if query_params["title"]? && CONFIG.disabled?("downloads") || - CONFIG.disabled?("dash") - return error_template(403, "Administrator has disabled this endpoint.") - end - - content_length = nil - first_chunk = true - range_start, range_end = parse_range(env.request.headers["Range"]?) - chunk_start = range_start - chunk_end = range_end - - if !chunk_end || chunk_end - chunk_start > HTTP_CHUNK_SIZE - chunk_end = chunk_start + HTTP_CHUNK_SIZE - 1 - end - - # TODO: Record bytes written so we can restart after a chunk fails - while true - if !range_end && content_length - range_end = content_length - end - - if range_end && chunk_start > range_end - break - end - - if range_end && chunk_end > range_end - chunk_end = range_end - end - - headers["Range"] = "bytes=#{chunk_start}-#{chunk_end}" - - begin - client.get(url, headers) do |resp| - if first_chunk - if !env.request.headers["Range"]? && resp.status_code == 206 - env.response.status_code = 200 - else - env.response.status_code = resp.status_code - end - - resp.headers.each do |key, value| - if !RESPONSE_HEADERS_BLACKLIST.includes?(key.downcase) && key.downcase != "content-range" - env.response.headers[key] = value - end - end - - env.response.headers["Access-Control-Allow-Origin"] = "*" - - if location = resp.headers["Location"]? - location = URI.parse(location) - location = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}" - - env.redirect location - break - end - - if title = query_params["title"]? - # https://blog.fastmail.com/2011/06/24/download-non-english-filenames/ - filename = URI.encode_www_form(title, space_to_plus: false) - header = "attachment; filename=\"#{filename}\"; filename*=UTF-8''#{filename}" - env.response.headers["Content-Disposition"] = header - end - - if !resp.headers.includes_word?("Transfer-Encoding", "chunked") - content_length = resp.headers["Content-Range"].split("/")[-1].to_i64 - if env.request.headers["Range"]? - env.response.headers["Content-Range"] = "bytes #{range_start}-#{range_end || (content_length - 1)}/#{content_length}" - env.response.content_length = ((range_end.try &.+ 1) || content_length) - range_start - else - env.response.content_length = content_length - end - end - end - - proxy_file(resp, env) - end - rescue ex - if ex.message != "Error reading socket: Connection reset by peer" - break - else - client.close - client = make_client(URI.parse(host), region, force_resolve = true) - end - end - - chunk_start = chunk_end + 1 - chunk_end += HTTP_CHUNK_SIZE - first_chunk = false - end - end - client.close - end - - # /videoplayback/* - def self.get_video_playback_greedy(env) - path = env.request.path - - path = path.lchop("/videoplayback/") - path = path.rchop("/") - - path = path.gsub(/mime\/\w+\/\w+/) do |mimetype| - mimetype = mimetype.split("/") - mimetype[0] + "/" + mimetype[1] + "%2F" + mimetype[2] - end - - path = path.split("/") - - raw_params = {} of String => Array(String) - path.each_slice(2) do |pair| - key, value = pair - value = URI.decode_www_form(value) - - if raw_params[key]? - raw_params[key] << value - else - raw_params[key] = [value] - end - end - - query_params = HTTP::Params.new(raw_params) - - env.response.headers["Access-Control-Allow-Origin"] = "*" - return env.redirect "/videoplayback?#{query_params}" - end - - # /videoplayback/* && /videoplayback/* - def self.options_video_playback(env) - env.response.headers.delete("Content-Type") - env.response.headers["Access-Control-Allow-Origin"] = "*" - env.response.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS" - env.response.headers["Access-Control-Allow-Headers"] = "Content-Type, Range" - end - - # /latest_version - # - # YouTube /videoplayback links expire after 6 hours, - # so we have a mechanism here to redirect to the latest version - def self.latest_version(env) - id = env.params.query["id"]? - itag = env.params.query["itag"]?.try &.to_i? - - # Sanity checks - if id.nil? || id.size != 11 || !id.matches?(/^[\w-]+$/) - return error_template(400, "Invalid video ID") - end - - if !itag.nil? && (itag <= 0 || itag >= 1000) - return error_template(400, "Invalid itag") - end - - region = env.params.query["region"]? - local = (env.params.query["local"]? == "true") - - title = env.params.query["title"]? - - if title && CONFIG.disabled?("downloads") - return error_template(403, "Administrator has disabled this endpoint.") - end - - begin - video = get_video(id, region: region) - rescue ex : NotFoundException - return error_template(404, ex) - rescue ex - return error_template(500, ex) - end - - if itag.nil? - fmt = video.fmt_stream[-1]? - else - fmt = video.fmt_stream.find(nil) { |f| f["itag"].as_i == itag } || video.adaptive_fmts.find(nil) { |f| f["itag"].as_i == itag } - end - url = fmt.try &.["url"]?.try &.as_s - - if !url - haltf env, status_code: 404 - end - - if local - url = URI.parse(url).request_target.not_nil! - url += "&title=#{URI.encode_www_form(title, space_to_plus: false)}" if title - end - - return env.redirect url - end -end diff --git a/invidious/src/invidious/routes/watch.cr b/invidious/src/invidious/routes/watch.cr deleted file mode 100755 index aabe8df..0000000 --- a/invidious/src/invidious/routes/watch.cr +++ /dev/null @@ -1,335 +0,0 @@ -{% skip_file if flag?(:api_only) %} - -module Invidious::Routes::Watch - def self.handle(env) - locale = env.get("preferences").as(Preferences).locale - region = env.params.query["region"]? - - if env.params.query.to_s.includes?("%20") || env.params.query.to_s.includes?("+") - url = "/watch?" + env.params.query.to_s.gsub("%20", "").delete("+") - return env.redirect url - end - - if env.params.query["v"]? - id = env.params.query["v"] - - if env.params.query["v"].empty? - return error_template(400, "Invalid parameters.") - end - - if id.size > 11 - url = "/watch?v=#{id[0, 11]}" - env.params.query.delete_all("v") - if env.params.query.size > 0 - url += "&#{env.params.query}" - end - - return env.redirect url - end - else - return env.redirect "/" - end - - plid = env.params.query["list"]?.try &.gsub(/[^a-zA-Z0-9_-]/, "") - continuation = process_continuation(env.params.query, plid, id) - - nojs = env.params.query["nojs"]? - - nojs ||= "0" - nojs = nojs == "1" - - preferences = env.get("preferences").as(Preferences) - - user = env.get?("user").try &.as(User) - if user - subscriptions = user.subscriptions - watched = user.watched - notifications = user.notifications - end - subscriptions ||= [] of String - - params = process_video_params(env.params.query, preferences) - env.params.query.delete_all("listen") - - begin - video = get_video(id, region: params.region) - rescue ex : NotFoundException - LOGGER.error("get_video not found: #{id} : #{ex.message}") - return error_template(404, ex) - rescue ex - LOGGER.error("get_video: #{id} : #{ex.message}") - return error_template(500, ex) - end - - if preferences.annotations_subscribed && - subscriptions.includes?(video.ucid) && - (env.params.query["iv_load_policy"]? || "1") == "1" - params.annotations = true - end - env.params.query.delete_all("iv_load_policy") - - if watched && preferences.watch_history - Invidious::Database::Users.mark_watched(user.as(User), id) - end - - if CONFIG.enable_user_notifications && notifications && notifications.includes? id - Invidious::Database::Users.remove_notification(user.as(User), id) - env.get("user").as(User).notifications.delete(id) - notifications.delete(id) - end - - if nojs - if preferences - source = preferences.comments[0] - if source.empty? - source = preferences.comments[1] - end - - if source == "youtube" - begin - comment_html = JSON.parse(Comments.fetch_youtube(id, nil, "html", locale, preferences.thin_mode, region))["contentHtml"] - rescue ex - if preferences.comments[1] == "reddit" - comments, reddit_thread = Comments.fetch_reddit(id) - comment_html = Frontend::Comments.template_reddit(comments, locale) - - comment_html = Comments.fill_links(comment_html, "https", "www.reddit.com") - comment_html = Comments.replace_links(comment_html) - end - end - elsif source == "reddit" - begin - comments, reddit_thread = Comments.fetch_reddit(id) - comment_html = Frontend::Comments.template_reddit(comments, locale) - - comment_html = Comments.fill_links(comment_html, "https", "www.reddit.com") - comment_html = Comments.replace_links(comment_html) - rescue ex - if preferences.comments[1] == "youtube" - comment_html = JSON.parse(Comments.fetch_youtube(id, nil, "html", locale, preferences.thin_mode, region))["contentHtml"] - end - end - end - else - comment_html = JSON.parse(Comments.fetch_youtube(id, nil, "html", locale, preferences.thin_mode, region))["contentHtml"] - end - - comment_html ||= "" - end - - fmt_stream = video.fmt_stream - adaptive_fmts = video.adaptive_fmts - - if params.local - fmt_stream.each { |fmt| fmt["url"] = JSON::Any.new(URI.parse(fmt["url"].as_s).request_target) } - adaptive_fmts.each { |fmt| fmt["url"] = JSON::Any.new(URI.parse(fmt["url"].as_s).request_target) } - end - - video_streams = video.video_streams - audio_streams = video.audio_streams - - # Older videos may not have audio sources available. - # We redirect here so they're not unplayable - if audio_streams.empty? && !video.live_now - if params.quality == "dash" - env.params.query.delete_all("quality") - env.params.query["quality"] = "medium" - return env.redirect "/watch?#{env.params.query}" - elsif params.listen - env.params.query.delete_all("listen") - env.params.query["listen"] = "0" - return env.redirect "/watch?#{env.params.query}" - end - end - - captions = video.captions - - preferred_captions = captions.select { |caption| - params.preferred_captions.includes?(caption.name) || - params.preferred_captions.includes?(caption.language_code.split("-")[0]) - } - preferred_captions.sort_by! { |caption| - (params.preferred_captions.index(caption.name) || - params.preferred_captions.index(caption.language_code.split("-")[0])).not_nil! - } - captions = captions - preferred_captions - - aspect_ratio = "16:9" - - thumbnail = "/vi/#{video.id}/maxres.jpg" - - if params.raw - if params.listen - url = audio_streams[0]["url"].as_s - - if params.quality.ends_with? "k" - audio_streams.each do |fmt| - if fmt["bitrate"].as_i == params.quality.rchop("k").to_i - url = fmt["url"].as_s - end - end - end - else - url = fmt_stream[0]["url"].as_s - - fmt_stream.each do |fmt| - if fmt["quality"].as_s == params.quality - url = fmt["url"].as_s - end - end - end - - return env.redirect url - end - - # Structure used for the download widget - video_assets = Invidious::Frontend::WatchPage::VideoAssets.new( - full_videos: fmt_stream, - video_streams: video_streams, - audio_streams: audio_streams, - captions: video.captions - ) - - templated "watch" - end - - def self.redirect(env) - url = "/watch?v=#{env.params.url["id"]}" - if env.params.query.size > 0 - url += "&#{env.params.query}" - end - - return env.redirect url - end - - def self.mark_watched(env) - locale = env.get("preferences").as(Preferences).locale - - user = env.get? "user" - sid = env.get? "sid" - referer = get_referer(env, "/feed/subscriptions") - - redirect = env.params.query["redirect"]? - redirect ||= "true" - redirect = redirect == "true" - - if !user - if redirect - return env.redirect referer - else - return error_json(403, "No such user") - end - end - - user = user.as(User) - sid = sid.as(String) - token = env.params.body["csrf_token"]? - - id = env.params.query["id"]? - if !id - env.response.status_code = 400 - return - end - - begin - validate_request(token, sid, env.request, HMAC_KEY, locale) - rescue ex - if redirect - return error_template(400, ex) - else - return error_json(400, ex) - end - end - - if env.params.query["action_mark_watched"]? - action = "action_mark_watched" - elsif env.params.query["action_mark_unwatched"]? - action = "action_mark_unwatched" - else - return env.redirect referer - end - - case action - when "action_mark_watched" - Invidious::Database::Users.mark_watched(user, id) - when "action_mark_unwatched" - Invidious::Database::Users.mark_unwatched(user, id) - else - return error_json(400, "Unsupported action #{action}") - end - - if redirect - env.redirect referer - else - env.response.content_type = "application/json" - "{}" - end - end - - def self.clip(env) - clip_id = env.params.url["clip"]? - - return error_template(400, "A clip ID is required") if !clip_id - - response = YoutubeAPI.resolve_url("https://www.youtube.com/clip/#{clip_id}") - return error_template(400, "Invalid clip ID") if response["error"]? - - if video_id = response.dig?("endpoint", "watchEndpoint", "videoId") - if params = response.dig?("endpoint", "watchEndpoint", "params").try &.as_s - start_time, end_time, _ = parse_clip_parameters(params) - env.params.query["start"] = start_time.to_s if start_time != nil - env.params.query["end"] = end_time.to_s if end_time != nil - end - - return env.redirect "/watch?v=#{video_id}&#{env.params.query}" - else - return error_template(404, "The requested clip doesn't exist") - end - end - - def self.download(env) - if CONFIG.disabled?("downloads") - return error_template(403, "Administrator has disabled this endpoint.") - end - - title = env.params.body["title"]? || "" - video_id = env.params.body["id"]? || "" - selection = env.params.body["download_widget"]? - - if title.empty? || video_id.empty? || selection.nil? - return error_template(400, "Missing form data") - end - - download_widget = JSON.parse(selection) - - extension = download_widget["ext"].as_s - filename = "#{title}-#{video_id}.#{extension}" - - # Delete the now useless URL parameters - env.params.body.delete("id") - env.params.body.delete("title") - env.params.body.delete("download_widget") - - # Pass form parameters as URL parameters for the handlers of both - # /latest_version and /api/v1/captions. This avoids an un-necessary - # redirect and duplicated (and hazardous) sanity checks. - if label = download_widget["label"]? - # URL params specific to /api/v1/captions/:id - env.params.url["id"] = video_id - env.params.query["title"] = filename - env.params.query["label"] = URI.decode_www_form(label.as_s) - - return Invidious::Routes::API::V1::Videos.captions(env) - elsif itag = download_widget["itag"]?.try &.as_i - # URL params specific to /latest_version - env.params.query["id"] = video_id - env.params.query["itag"] = itag.to_s - env.params.query["title"] = filename - env.params.query["local"] = "true" - - return Invidious::Routes::VideoPlayback.latest_version(env) - else - return error_template(400, "Invalid label or itag") - end - end -end diff --git a/invidious/src/invidious/routing.cr b/invidious/src/invidious/routing.cr deleted file mode 100755 index ba05da1..0000000 --- a/invidious/src/invidious/routing.cr +++ /dev/null @@ -1,320 +0,0 @@ -module Invidious::Routing - extend self - - {% for http_method in {"get", "post", "delete", "options", "patch", "put"} %} - - macro {{http_method.id}}(path, controller, method = :handle) - unless Kemal::Utils.path_starts_with_slash?(\{{path}}) - raise Kemal::Exceptions::InvalidPathStartException.new({{http_method}}, \{{path}}) - end - - Kemal::RouteHandler::INSTANCE.add_route({{http_method.upcase}}, \{{path}}) do |env| - \{{ controller }}.\{{ method.id }}(env) - end - end - - {% end %} - - def register_all - {% unless flag?(:api_only) %} - get "/", Routes::Misc, :home - get "/privacy", Routes::Misc, :privacy - get "/licenses", Routes::Misc, :licenses - get "/redirect", Routes::Misc, :cross_instance_redirect - - self.register_channel_routes - self.register_watch_routes - - self.register_iv_playlist_routes - self.register_yt_playlist_routes - - self.register_search_routes - - self.register_user_routes - self.register_feed_routes - - # Support push notifications via PubSubHubbub - get "/feed/webhook/:token", Routes::Feeds, :push_notifications_get - post "/feed/webhook/:token", Routes::Feeds, :push_notifications_post - - if CONFIG.enable_user_notifications - get "/modify_notifications", Routes::Notifications, :modify - end - {% end %} - - self.register_image_routes - self.register_api_v1_routes - self.register_api_manifest_routes - self.register_video_playback_routes - end - - # ------------------- - # Invidious routes - # ------------------- - - def register_user_routes - # User login/out - get "/login", Routes::Login, :login_page - post "/login", Routes::Login, :login - post "/signout", Routes::Login, :signout - - # User preferences - get "/preferences", Routes::PreferencesRoute, :show - post "/preferences", Routes::PreferencesRoute, :update - get "/toggle_theme", Routes::PreferencesRoute, :toggle_theme - get "/data_control", Routes::PreferencesRoute, :data_control - post "/data_control", Routes::PreferencesRoute, :update_data_control - - # User account management - get "/change_password", Routes::Account, :get_change_password - post "/change_password", Routes::Account, :post_change_password - get "/delete_account", Routes::Account, :get_delete - post "/delete_account", Routes::Account, :post_delete - get "/clear_watch_history", Routes::Account, :get_clear_history - post "/clear_watch_history", Routes::Account, :post_clear_history - get "/authorize_token", Routes::Account, :get_authorize_token - post "/authorize_token", Routes::Account, :post_authorize_token - get "/token_manager", Routes::Account, :token_manager - post "/token_ajax", Routes::Account, :token_ajax - post "/subscription_ajax", Routes::Subscriptions, :toggle_subscription - get "/subscription_manager", Routes::Subscriptions, :subscription_manager - end - - def register_iv_playlist_routes - get "/create_playlist", Routes::Playlists, :new - post "/create_playlist", Routes::Playlists, :create - get "/subscribe_playlist", Routes::Playlists, :subscribe - get "/delete_playlist", Routes::Playlists, :delete_page - post "/delete_playlist", Routes::Playlists, :delete - get "/edit_playlist", Routes::Playlists, :edit - post "/edit_playlist", Routes::Playlists, :update - get "/add_playlist_items", Routes::Playlists, :add_playlist_items_page - post "/playlist_ajax", Routes::Playlists, :playlist_ajax - end - - def register_feed_routes - # Feeds - get "/view_all_playlists", Routes::Feeds, :view_all_playlists_redirect - get "/feed/playlists", Routes::Feeds, :playlists - get "/feed/popular", Routes::Feeds, :popular - get "/feed/trending", Routes::Feeds, :trending - get "/feed/subscriptions", Routes::Feeds, :subscriptions - get "/feed/history", Routes::Feeds, :history - - # RSS Feeds - get "/feed/channel/:ucid", Routes::Feeds, :rss_channel - get "/feed/private", Routes::Feeds, :rss_private - get "/feed/playlist/:plid", Routes::Feeds, :rss_playlist - get "/feeds/videos.xml", Routes::Feeds, :rss_videos - end - - # ------------------- - # Youtube routes - # ------------------- - - def register_channel_routes - get "/channel/:ucid", Routes::Channels, :home - get "/channel/:ucid/home", Routes::Channels, :home - get "/channel/:ucid/videos", Routes::Channels, :videos - get "/channel/:ucid/shorts", Routes::Channels, :shorts - get "/channel/:ucid/streams", Routes::Channels, :streams - get "/channel/:ucid/podcasts", Routes::Channels, :podcasts - get "/channel/:ucid/releases", Routes::Channels, :releases - get "/channel/:ucid/playlists", Routes::Channels, :playlists - get "/channel/:ucid/community", Routes::Channels, :community - get "/channel/:ucid/channels", Routes::Channels, :channels - get "/channel/:ucid/about", Routes::Channels, :about - - get "/channel/:ucid/live", Routes::Channels, :live - get "/user/:user/live", Routes::Channels, :live - get "/c/:user/live", Routes::Channels, :live - get "/post/:id", Routes::Channels, :post - - # Channel catch-all, to redirect future routes to the channel's home - # NOTE: defined last in order to be processed after the other routes - get "/channel/:ucid/*", Routes::Channels, :redirect_home - - # /c/LinusTechTips - get "/c/:user", Routes::Channels, :brand_redirect - get "/c/:user/:tab", Routes::Channels, :brand_redirect - - # /user/linustechtips (Not always the same as /c/) - get "/user/:user", Routes::Channels, :brand_redirect - get "/user/:user/:tab", Routes::Channels, :brand_redirect - - # /@LinusTechTips (Handle) - get "/@:user", Routes::Channels, :brand_redirect - get "/@:user/:tab", Routes::Channels, :brand_redirect - - # /attribution_link?a=anything&u=/channel/UCZYTClx2T1of7BRZ86-8fow - get "/attribution_link", Routes::Channels, :brand_redirect - get "/attribution_link/:tab", Routes::Channels, :brand_redirect - - # /profile?user=linustechtips - get "/profile", Routes::Channels, :profile - get "/profile/*", Routes::Channels, :profile - end - - def register_watch_routes - get "/watch", Routes::Watch, :handle - post "/watch_ajax", Routes::Watch, :mark_watched - get "/watch/:id", Routes::Watch, :redirect - get "/live/:id", Routes::Watch, :redirect - get "/shorts/:id", Routes::Watch, :redirect - get "/clip/:clip", Routes::Watch, :clip - get "/w/:id", Routes::Watch, :redirect - get "/v/:id", Routes::Watch, :redirect - get "/e/:id", Routes::Watch, :redirect - - post "/download", Routes::Watch, :download - - get "/embed/", Routes::Embed, :redirect - get "/embed/:id", Routes::Embed, :show - end - - def register_yt_playlist_routes - get "/playlist", Routes::Playlists, :show - get "/mix", Routes::Playlists, :mix - get "/watch_videos", Routes::Playlists, :watch_videos - end - - def register_search_routes - get "/opensearch.xml", Routes::Search, :opensearch - get "/results", Routes::Search, :results - get "/search", Routes::Search, :search - get "/hashtag/:hashtag", Routes::Search, :hashtag - end - - # ------------------- - # Media proxy routes - # ------------------- - - def register_api_manifest_routes - get "/api/manifest/dash/id/:id", Routes::API::Manifest, :get_dash_video_id - - get "/api/manifest/dash/id/videoplayback", Routes::API::Manifest, :get_dash_video_playback - get "/api/manifest/dash/id/videoplayback/*", Routes::API::Manifest, :get_dash_video_playback_greedy - - options "/api/manifest/dash/id/videoplayback", Routes::API::Manifest, :options_dash_video_playback - options "/api/manifest/dash/id/videoplayback/*", Routes::API::Manifest, :options_dash_video_playback - - get "/api/manifest/hls_playlist/*", Routes::API::Manifest, :get_hls_playlist - get "/api/manifest/hls_variant/*", Routes::API::Manifest, :get_hls_variant - end - - def register_video_playback_routes - get "/videoplayback", Routes::VideoPlayback, :get_video_playback - get "/videoplayback/*", Routes::VideoPlayback, :get_video_playback_greedy - - options "/videoplayback", Routes::VideoPlayback, :options_video_playback - options "/videoplayback/*", Routes::VideoPlayback, :options_video_playback - - get "/latest_version", Routes::VideoPlayback, :latest_version - end - - def register_image_routes - get "/ggpht/*", Routes::Images, :ggpht - options "/sb/:authority/:id/:storyboard/:index", Routes::Images, :options_storyboard - get "/sb/:authority/:id/:storyboard/:index", Routes::Images, :get_storyboard - get "/s_p/:id/:name", Routes::Images, :s_p_image - get "/yts/img/:name", Routes::Images, :yts_image - get "/vi/:id/:name", Routes::Images, :thumbnails - end - - # ------------------- - # API routes - # ------------------- - - def register_api_v1_routes - {% begin %} - {{namespace = Routes::API::V1}} - - # Videos - get "/api/v1/videos/:id", {{namespace}}::Videos, :videos - get "/api/v1/storyboards/:id", {{namespace}}::Videos, :storyboards - get "/api/v1/captions/:id", {{namespace}}::Videos, :captions - get "/api/v1/annotations/:id", {{namespace}}::Videos, :annotations - get "/api/v1/comments/:id", {{namespace}}::Videos, :comments - get "/api/v1/clips/:id", {{namespace}}::Videos, :clips - - # Feeds - get "/api/v1/trending", {{namespace}}::Feeds, :trending - get "/api/v1/popular", {{namespace}}::Feeds, :popular - - # Channels - get "/api/v1/channels/:ucid", {{namespace}}::Channels, :home - get "/api/v1/channels/:ucid/shorts", {{namespace}}::Channels, :shorts - get "/api/v1/channels/:ucid/streams", {{namespace}}::Channels, :streams - get "/api/v1/channels/:ucid/podcasts", {{namespace}}::Channels, :podcasts - get "/api/v1/channels/:ucid/releases", {{namespace}}::Channels, :releases - - get "/api/v1/channels/:ucid/channels", {{namespace}}::Channels, :channels - - {% for route in {"videos", "latest", "playlists", "community", "search"} %} - get "/api/v1/channels/#{{{route}}}/:ucid", {{namespace}}::Channels, :{{route}} - get "/api/v1/channels/:ucid/#{{{route}}}", {{namespace}}::Channels, :{{route}} - {% end %} - - # Posts - get "/api/v1/post/:id", {{namespace}}::Channels, :post - get "/api/v1/post/:id/comments", {{namespace}}::Channels, :post_comments - - # 301 redirects to new /api/v1/channels/community/:ucid and /:ucid/community - get "/api/v1/channels/comments/:ucid", {{namespace}}::Channels, :channel_comments_redirect - get "/api/v1/channels/:ucid/comments", {{namespace}}::Channels, :channel_comments_redirect - - # Search - get "/api/v1/search", {{namespace}}::Search, :search - get "/api/v1/search/suggestions", {{namespace}}::Search, :search_suggestions - get "/api/v1/hashtag/:hashtag", {{namespace}}::Search, :hashtag - - - # Authenticated - - # The notification APIs cannot be extracted yet! They require the *local* notifications constant defined in invidious.cr - # - # Invidious::Routing.get "/api/v1/auth/notifications", {{namespace}}::Authenticated, :notifications - # Invidious::Routing.post "/api/v1/auth/notifications", {{namespace}}::Authenticated, :notifications - - get "/api/v1/auth/preferences", {{namespace}}::Authenticated, :get_preferences - post "/api/v1/auth/preferences", {{namespace}}::Authenticated, :set_preferences - - get "/api/v1/auth/export/invidious", {{namespace}}::Authenticated, :export_invidious - post "/api/v1/auth/import/invidious", {{namespace}}::Authenticated, :import_invidious - - get "/api/v1/auth/history", {{namespace}}::Authenticated, :get_history - post "/api/v1/auth/history/:id", {{namespace}}::Authenticated, :mark_watched - delete "/api/v1/auth/history/:id", {{namespace}}::Authenticated, :mark_unwatched - delete "/api/v1/auth/history", {{namespace}}::Authenticated, :clear_history - - get "/api/v1/auth/feed", {{namespace}}::Authenticated, :feed - - get "/api/v1/auth/subscriptions", {{namespace}}::Authenticated, :get_subscriptions - post "/api/v1/auth/subscriptions/:ucid", {{namespace}}::Authenticated, :subscribe_channel - delete "/api/v1/auth/subscriptions/:ucid", {{namespace}}::Authenticated, :unsubscribe_channel - - get "/api/v1/auth/playlists", {{namespace}}::Authenticated, :list_playlists - post "/api/v1/auth/playlists", {{namespace}}::Authenticated, :create_playlist - patch "/api/v1/auth/playlists/:plid",{{namespace}}:: Authenticated, :update_playlist_attribute - delete "/api/v1/auth/playlists/:plid", {{namespace}}::Authenticated, :delete_playlist - post "/api/v1/auth/playlists/:plid/videos", {{namespace}}::Authenticated, :insert_video_into_playlist - delete "/api/v1/auth/playlists/:plid/videos/:index", {{namespace}}::Authenticated, :delete_video_in_playlist - - get "/api/v1/auth/tokens", {{namespace}}::Authenticated, :get_tokens - post "/api/v1/auth/tokens/register", {{namespace}}::Authenticated, :register_token - post "/api/v1/auth/tokens/unregister", {{namespace}}::Authenticated, :unregister_token - - if CONFIG.enable_user_notifications - get "/api/v1/auth/notifications", {{namespace}}::Authenticated, :notifications - post "/api/v1/auth/notifications", {{namespace}}::Authenticated, :notifications - end - - # Misc - get "/api/v1/stats", {{namespace}}::Misc, :stats - get "/api/v1/playlists/:plid", {{namespace}}::Misc, :get_playlist - get "/api/v1/auth/playlists/:plid", {{namespace}}::Misc, :get_playlist - get "/api/v1/mixes/:rdid", {{namespace}}::Misc, :mixes - get "/api/v1/resolveurl", {{namespace}}::Misc, :resolve_url - {% end %} - end -end diff --git a/invidious/src/invidious/search/ctoken.cr b/invidious/src/invidious/search/ctoken.cr deleted file mode 100755 index 161065e..0000000 --- a/invidious/src/invidious/search/ctoken.cr +++ /dev/null @@ -1,32 +0,0 @@ -def produce_channel_search_continuation(ucid, query, page) - if page <= 1 - idx = 0_i64 - else - idx = 30_i64 * (page - 1) - end - - object = { - "80226972:embedded" => { - "2:string" => ucid, - "3:base64" => { - "2:string" => "search", - "6:varint" => 1_i64, - "7:varint" => 1_i64, - "12:varint" => 1_i64, - "15:base64" => { - "3:varint" => idx, - }, - "23:varint" => 0_i64, - }, - "11:string" => query, - "35:string" => "browse-feed#{ucid}search", - }, - } - - continuation = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return continuation -end diff --git a/invidious/src/invidious/search/filters.cr b/invidious/src/invidious/search/filters.cr deleted file mode 100755 index bf96873..0000000 --- a/invidious/src/invidious/search/filters.cr +++ /dev/null @@ -1,376 +0,0 @@ -require "protodec/utils" -require "http/params" - -module Invidious::Search - struct Filters - # Values correspond to { "2:embedded": { "1:varint": }} - # except for "None" which is only used by us (= nothing selected) - enum Date - None = 0 - Hour = 1 - Today = 2 - Week = 3 - Month = 4 - Year = 5 - end - - # Values correspond to { "2:embedded": { "2:varint": }} - # except for "All" which is only used by us (= nothing selected) - enum Type - All = 0 - Video = 1 - Channel = 2 - Playlist = 3 - Movie = 4 - - # Has it been removed? - # (Not available on youtube's UI) - Show = 5 - end - - # Values correspond to { "2:embedded": { "3:varint": }} - # except for "None" which is only used by us (= nothing selected) - enum Duration - None = 0 - Short = 1 # "Under 4 minutes" - Long = 2 # "Over 20 minutes" - Medium = 3 # "4 - 20 minutes" - end - - # Note: flag enums automatically generate - # "none" and "all" members - @[Flags] - enum Features - Live - FourK # "4K" - HD - Subtitles # "Subtitles/CC" - CCommons # "Creative Commons" - ThreeSixty # "360°" - VR180 - ThreeD # "3D" - HDR - Location - Purchased - end - - # Values correspond to { "1:varint": } - enum Sort - Relevance = 0 - Rating = 1 - Date = 2 - Views = 3 - end - - # Parameters are sorted as on Youtube - property date : Date - property type : Type - property duration : Duration - property features : Features - property sort : Sort - - def initialize( - *, # All parameters must be named - @date : Date = Date::None, - @type : Type = Type::All, - @duration : Duration = Duration::None, - @features : Features = Features::None, - @sort : Sort = Sort::Relevance - ) - end - - def default? : Bool - return @date.none? && @type.all? && @duration.none? && \ - @features.none? && @sort.relevance? - end - - # ------------------- - # Invidious params - # ------------------- - - def self.parse_features(raw : Array(String)) : Features - # Initialize return variable - features = Features.new(0) - - raw.each do |ft| - case ft.downcase - when "live", "livestream" - features = features | Features::Live - when "4k" then features = features | Features::FourK - when "hd" then features = features | Features::HD - when "subtitles" then features = features | Features::Subtitles - when "creative_commons", "commons", "cc" - features = features | Features::CCommons - when "360" then features = features | Features::ThreeSixty - when "vr180" then features = features | Features::VR180 - when "3d" then features = features | Features::ThreeD - when "hdr" then features = features | Features::HDR - when "location" then features = features | Features::Location - when "purchased" then features = features | Features::Purchased - end - end - - return features - end - - def self.format_features(features : Features) : String - # Directly return an empty string if there are no features - return "" if features.none? - - # Initialize return variable - str = [] of String - - str << "live" if features.live? - str << "4k" if features.four_k? - str << "hd" if features.hd? - str << "subtitles" if features.subtitles? - str << "commons" if features.c_commons? - str << "360" if features.three_sixty? - str << "vr180" if features.vr180? - str << "3d" if features.three_d? - str << "hdr" if features.hdr? - str << "location" if features.location? - str << "purchased" if features.purchased? - - return str.join(',') - end - - def self.from_legacy_filters(str : String) : {Filters, String, String, Bool} - # Split search query on spaces - members = str.split(' ') - - # Output variables - channel = "" - filters = Filters.new - subscriptions = false - - # Array to hold the non-filter members - query = [] of String - - # Parse! - members.each do |substr| - # Separator operators - operators = substr.split(':') - - case operators[0] - when "user", "channel" - next if operators.size != 2 - channel = operators[1] - # - when "type", "content_type" - next if operators.size != 2 - type = Type.parse?(operators[1]) - filters.type = type if !type.nil? - # - when "date" - next if operators.size != 2 - date = Date.parse?(operators[1]) - filters.date = date if !date.nil? - # - when "duration" - next if operators.size != 2 - duration = Duration.parse?(operators[1]) - filters.duration = duration if !duration.nil? - # - when "feature", "features" - next if operators.size != 2 - features = parse_features(operators[1].split(',')) - filters.features = features if !features.nil? - # - when "sort" - next if operators.size != 2 - sort = Sort.parse?(operators[1]) - filters.sort = sort if !sort.nil? - # - when "subscriptions" - next if operators.size != 2 - subscriptions = {"true", "on", "yes", "1"}.any?(&.== operators[1]) - # - else - query << substr - end - end - - # Re-assemble query (without filters) - cleaned_query = query.join(' ') - - return {filters, channel, cleaned_query, subscriptions} - end - - def self.from_iv_params(params : HTTP::Params) : Filters - # Temporary variables - filters = Filters.new - - if type = params["type"]? - filters.type = Type.parse?(type) || Type::All - params.delete("type") - end - - if date = params["date"]? - filters.date = Date.parse?(date) || Date::None - params.delete("date") - end - - if duration = params["duration"]? - filters.duration = Duration.parse?(duration) || Duration::None - params.delete("duration") - end - - features = params.fetch_all("features") - if !features.empty? - # Un-array input so it can be treated as a comma-separated list - features = features[0].split(',') if features.size == 1 - - filters.features = parse_features(features) || Features::None - params.delete_all("features") - end - - if sort = params["sort"]? - filters.sort = Sort.parse?(sort) || Sort::Relevance - params.delete("sort") - end - - return filters - end - - def to_iv_params : HTTP::Params - # Temporary variables - raw_params = {} of String => Array(String) - - raw_params["date"] = [@date.to_s.underscore] if !@date.none? - raw_params["type"] = [@type.to_s.underscore] if !@type.all? - raw_params["sort"] = [@sort.to_s.underscore] if !@sort.relevance? - - if !@duration.none? - raw_params["duration"] = [@duration.to_s.underscore] - end - - if !@features.none? - raw_params["features"] = [Filters.format_features(@features)] - end - - return HTTP::Params.new(raw_params) - end - - # ------------------- - # Youtube params - # ------------------- - - # Produce the youtube search parameters for the - # innertube API (base64-encoded protobuf object). - def to_yt_params(page : Int = 1) : String - # Initialize the embedded protobuf object - embedded = {} of String => Int64 - - # Add these field only if associated parameter is selected - embedded["1:varint"] = @date.to_i64 if !@date.none? - embedded["2:varint"] = @type.to_i64 if !@type.all? - embedded["3:varint"] = @duration.to_i64 if !@duration.none? - - if !@features.none? - # All features have a value of "1" when enabled, and - # the field is omitted when the feature is no selected. - embedded["4:varint"] = 1_i64 if @features.includes?(Features::HD) - embedded["5:varint"] = 1_i64 if @features.includes?(Features::Subtitles) - embedded["6:varint"] = 1_i64 if @features.includes?(Features::CCommons) - embedded["7:varint"] = 1_i64 if @features.includes?(Features::ThreeD) - embedded["8:varint"] = 1_i64 if @features.includes?(Features::Live) - embedded["9:varint"] = 1_i64 if @features.includes?(Features::Purchased) - embedded["14:varint"] = 1_i64 if @features.includes?(Features::FourK) - embedded["15:varint"] = 1_i64 if @features.includes?(Features::ThreeSixty) - embedded["23:varint"] = 1_i64 if @features.includes?(Features::Location) - embedded["25:varint"] = 1_i64 if @features.includes?(Features::HDR) - embedded["26:varint"] = 1_i64 if @features.includes?(Features::VR180) - end - - # Initialize an empty protobuf object - object = {} of String => (Int64 | String | Hash(String, Int64)) - - # As usual, everything can be omitted if it has no value - object["2:embedded"] = embedded if !embedded.empty? - - # Default sort is "relevance", so when this option is selected, - # the associated field can be omitted. - if !@sort.relevance? - object["1:varint"] = @sort.to_i64 - end - - # Add page number (if provided) - if page > 1 - object["9:varint"] = ((page - 1) * 20).to_i64 - end - - # Prevent censoring of self harm topics - # See https://github.com/iv-org/invidious/issues/4398 - object["30:varint"] = 1.to_i64 - - return object - .try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - end - - # Function to parse the `sp` URL parameter from Youtube - # search page. It's a base64-encoded protobuf object. - def self.from_yt_params(params : HTTP::Params) : Filters - # Initialize output variable - filters = Filters.new - - # Get parameter, and check emptyness - search_params = params["sp"]? - - if search_params.nil? || search_params.empty? - return filters - end - - # Decode protobuf object - object = search_params - .try { |i| URI.decode_www_form(i) } - .try { |i| Base64.decode(i) } - .try { |i| IO::Memory.new(i) } - .try { |i| Protodec::Any.parse(i) } - - # Parse items from embedded object - if embedded = object["2:0:embedded"]? - # All the following fields (date, type, duration) are optional. - if date = embedded["1:0:varint"]? - filters.date = Date.from_value?(date.as_i) || Date::None - end - - if type = embedded["2:0:varint"]? - filters.type = Type.from_value?(type.as_i) || Type::All - end - - if duration = embedded["3:0:varint"]? - filters.duration = Duration.from_value?(duration.as_i) || Duration::None - end - - # All features should have a value of "1" when enabled, and - # the field should be omitted when the feature is no selected. - features = 0 - features += (embedded["4:0:varint"]?.try &.as_i == 1_i64) ? Features::HD.value : 0 - features += (embedded["5:0:varint"]?.try &.as_i == 1_i64) ? Features::Subtitles.value : 0 - features += (embedded["6:0:varint"]?.try &.as_i == 1_i64) ? Features::CCommons.value : 0 - features += (embedded["7:0:varint"]?.try &.as_i == 1_i64) ? Features::ThreeD.value : 0 - features += (embedded["8:0:varint"]?.try &.as_i == 1_i64) ? Features::Live.value : 0 - features += (embedded["9:0:varint"]?.try &.as_i == 1_i64) ? Features::Purchased.value : 0 - features += (embedded["14:0:varint"]?.try &.as_i == 1_i64) ? Features::FourK.value : 0 - features += (embedded["15:0:varint"]?.try &.as_i == 1_i64) ? Features::ThreeSixty.value : 0 - features += (embedded["23:0:varint"]?.try &.as_i == 1_i64) ? Features::Location.value : 0 - features += (embedded["25:0:varint"]?.try &.as_i == 1_i64) ? Features::HDR.value : 0 - features += (embedded["26:0:varint"]?.try &.as_i == 1_i64) ? Features::VR180.value : 0 - - filters.features = Features.from_value?(features) || Features::None - end - - if sort = object["1:0:varint"]? - filters.sort = Sort.from_value?(sort.as_i) || Sort::Relevance - end - - # Remove URL parameter and return result - params.delete("sp") - return filters - end - end -end diff --git a/invidious/src/invidious/search/processors.cr b/invidious/src/invidious/search/processors.cr deleted file mode 100755 index 25edb93..0000000 --- a/invidious/src/invidious/search/processors.cr +++ /dev/null @@ -1,56 +0,0 @@ -module Invidious::Search - module Processors - extend self - - # Regular search (`/search` endpoint) - def regular(query : Query) : Array(SearchItem) - search_params = query.filters.to_yt_params(page: query.page) - - client_config = YoutubeAPI::ClientConfig.new(region: query.region) - initial_data = YoutubeAPI.search(query.text, search_params, client_config: client_config) - - items, _ = extract_items(initial_data) - return items.reject!(Category) - end - - # Search a youtube channel - # TODO: clean code, and rely more on YoutubeAPI - def channel(query : Query) : Array(SearchItem) - response = YT_POOL.client &.get("/channel/#{query.channel}") - - if response.status_code == 404 - response = YT_POOL.client &.get("/user/#{query.channel}") - response = YT_POOL.client &.get("/c/#{query.channel}") if response.status_code == 404 - initial_data = extract_initial_data(response.body) - ucid = initial_data.dig?("header", "c4TabbedHeaderRenderer", "channelId").try(&.as_s?) - raise ChannelSearchException.new(query.channel) if !ucid - else - ucid = query.channel - end - - continuation = produce_channel_search_continuation(ucid, query.text, query.page) - response_json = YoutubeAPI.browse(continuation) - - items, _ = extract_items(response_json, "", ucid) - return items.reject!(Category) - end - - # Search inside of user subscriptions - def subscriptions(query : Query, user : Invidious::User) : Array(ChannelVideo) - view_name = "subscriptions_#{sha256(user.email)}" - - return PG_DB.query_all(" - SELECT id,title,published,updated,ucid,author,length_seconds - FROM ( - SELECT *, - to_tsvector(#{view_name}.title) || - to_tsvector(#{view_name}.author) - as document - FROM #{view_name} - ) v_search WHERE v_search.document @@ plainto_tsquery($1) LIMIT 20 OFFSET $2;", - query.text, (query.page - 1) * 20, - as: ChannelVideo - ) - end - end -end diff --git a/invidious/src/invidious/search/query.cr b/invidious/src/invidious/search/query.cr deleted file mode 100755 index e38845d..0000000 --- a/invidious/src/invidious/search/query.cr +++ /dev/null @@ -1,140 +0,0 @@ -module Invidious::Search - class Query - enum Type - # Types related to YouTube - Regular # Youtube search page - Channel # Youtube channel search box - - # Types specific to Invidious - Subscriptions # Search user subscriptions - Playlist # "Add playlist item" search - end - - getter type : Type = Type::Regular - - @raw_query : String - @query : String = "" - - property filters : Filters = Filters.new - property page : Int32 - property region : String? - property channel : String = "" - - # Return true if @raw_query is either `nil` or empty - private def empty_raw_query? - return @raw_query.empty? - end - - # Same as `empty_raw_query?`, but named for external use - def empty? - return self.empty_raw_query? - end - - # Getter for the query string. - # It is named `text` to reduce confusion (`search_query.text` makes more - # sense than `search_query.query`) - def text - return @query - end - - # Initialize a new search query. - # Parameters are used to get the query string, the page number - # and the search filters (if any). Type tells this function - # where it is being called from (See `Type` above). - def initialize( - params : HTTP::Params, - @type : Type = Type::Regular, - @region : String? = nil - ) - # Get the raw search query string (common to all search types). In - # Regular search mode, also look for the `search_query` URL parameter - if @type.regular? - @raw_query = params["q"]? || params["search_query"]? || "" - else - @raw_query = params["q"]? || "" - end - - # Get the page number (also common to all search types) - @page = params["page"]?.try &.to_i? || 1 - - # Stop here if raw query is empty - # NOTE: maybe raise in the future? - return if self.empty_raw_query? - - # Specific handling - case @type - when .channel? - # In "channel search" mode, filters are ignored, but we still parse - # the query prevent transmission of legacy filters to youtube. - # - _, _, @query, _ = Filters.from_legacy_filters(@raw_query) - # - when .playlist? - # In "add playlist item" mode, filters are parsed from the query - # string itself (legacy), and the channel is ignored. - # - @filters, _, @query, _ = Filters.from_legacy_filters(@raw_query) - # - when .subscriptions?, .regular? - if params["sp"]? - # Parse the `sp` URL parameter (youtube compatibility) - @filters = Filters.from_yt_params(params) - @query = @raw_query || "" - else - # Parse invidious URL parameters (sort, date, etc...) - @filters = Filters.from_iv_params(params) - @channel = params["channel"]? || "" - - if @filters.default? && @raw_query.includes?(':') - # Parse legacy filters from query - @filters, @channel, @query, subs = Filters.from_legacy_filters(@raw_query) - else - @query = @raw_query || "" - end - - if !@channel.empty? - # Switch to channel search mode (filters will be ignored) - @type = Type::Channel - elsif subs - # Switch to subscriptions search mode - @type = Type::Subscriptions - end - end - end - end - - # Run the search query using the corresponding search processor. - # Returns either the results or an empty array of `SearchItem`. - def process(user : Invidious::User? = nil) : Array(SearchItem) | Array(ChannelVideo) - items = [] of SearchItem - - # Don't bother going further if search query is empty - return items if self.empty_raw_query? - - case @type - when .regular?, .playlist? - items = Processors.regular(self) - # - when .channel? - items = Processors.channel(self) - # - when .subscriptions? - if user - items = Processors.subscriptions(self, user.as(Invidious::User)) - end - end - - return items - end - - # Return the HTTP::Params corresponding to this Query (invidious format) - def to_http_params : HTTP::Params - params = @filters.to_iv_params - - params["q"] = @query - params["channel"] = @channel if !@channel.empty? - - return params - end - end -end diff --git a/invidious/src/invidious/trending.cr b/invidious/src/invidious/trending.cr deleted file mode 100755 index 2d9f8a8..0000000 --- a/invidious/src/invidious/trending.cr +++ /dev/null @@ -1,40 +0,0 @@ -def fetch_trending(trending_type, region, locale) - region ||= "US" - region = region.upcase - - plid = nil - - case trending_type.try &.downcase - when "music" - params = "4gINGgt5dG1hX2NoYXJ0cw%3D%3D" - when "gaming" - params = "4gIcGhpnYW1pbmdfY29ycHVzX21vc3RfcG9wdWxhcg%3D%3D" - when "movies" - params = "4gIKGgh0cmFpbGVycw%3D%3D" - else # Default - params = "" - end - - client_config = YoutubeAPI::ClientConfig.new(region: region) - initial_data = YoutubeAPI.browse("FEtrending", params: params, client_config: client_config) - - items, _ = extract_items(initial_data) - - extracted = [] of SearchItem - - items.each do |itm| - if itm.is_a?(Category) - # Ignore the smaller categories, as they generally contain a sponsored - # channel, which brings a lot of noise on the trending page. - # See: https://github.com/iv-org/invidious/issues/2989 - next if itm.contents.size < 24 - - extracted.concat extract_category(itm) - else - extracted << itm - end - end - - # Deduplicate items before returning results - return extracted.select(SearchVideo).uniq!(&.id), plid -end diff --git a/invidious/src/invidious/user/captcha.cr b/invidious/src/invidious/user/captcha.cr deleted file mode 100755 index 8a0f67e..0000000 --- a/invidious/src/invidious/user/captcha.cr +++ /dev/null @@ -1,78 +0,0 @@ -require "openssl/hmac" - -struct Invidious::User - module Captcha - extend self - - private TEXTCAPTCHA_URL = URI.parse("https://textcaptcha.com") - - def generate_image(key) - second = Random::Secure.rand(12) - second_angle = second * 30 - second = second * 5 - - minute = Random::Secure.rand(12) - minute_angle = minute * 30 - minute = minute * 5 - - hour = Random::Secure.rand(12) - hour_angle = hour * 30 + minute_angle.to_f / 12 - if hour == 0 - hour = 12 - end - - clock_svg = <<-END_SVG - - - - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - - - - - - - END_SVG - - image = "data:image/png;base64," - image += Process.run(%(rsvg-convert -w 400 -h 400 -b none -f png), shell: true, - input: IO::Memory.new(clock_svg), output: Process::Redirect::Pipe - ) do |proc| - Base64.strict_encode(proc.output.gets_to_end) - end - - answer = "#{hour}:#{minute.to_s.rjust(2, '0')}:#{second.to_s.rjust(2, '0')}" - answer = OpenSSL::HMAC.hexdigest(:sha256, key, answer) - - return { - question: image, - tokens: {generate_response(answer, {":login"}, key, use_nonce: true)}, - } - end - - def generate_text(key) - response = make_client(TEXTCAPTCHA_URL, &.get("/github.com/iv.org/invidious.json").body) - response = JSON.parse(response) - - tokens = response["a"].as_a.map do |answer| - generate_response(answer.as_s, {":login"}, key, use_nonce: true) - end - - return { - question: response["q"].as_s, - tokens: tokens, - } - end - end -end diff --git a/invidious/src/invidious/user/converters.cr b/invidious/src/invidious/user/converters.cr deleted file mode 100755 index dcbf8c5..0000000 --- a/invidious/src/invidious/user/converters.cr +++ /dev/null @@ -1,12 +0,0 @@ -def convert_theme(theme) - case theme - when "true" - "dark" - when "false" - "light" - when "", nil - nil - else - theme - end -end diff --git a/invidious/src/invidious/user/cookies.cr b/invidious/src/invidious/user/cookies.cr deleted file mode 100755 index 654efc1..0000000 --- a/invidious/src/invidious/user/cookies.cr +++ /dev/null @@ -1,39 +0,0 @@ -require "http/cookie" - -struct Invidious::User - module Cookies - extend self - - # Note: we use ternary operator because the two variables - # used in here are not booleans. - SECURE = (Kemal.config.ssl || CONFIG.https_only) ? true : false - - # Session ID (SID) cookie - # Parameter "domain" comes from the global config - def sid(domain : String?, sid) : HTTP::Cookie - return HTTP::Cookie.new( - name: "SID", - domain: domain, - value: sid, - expires: Time.utc + 2.years, - secure: SECURE, - http_only: true, - samesite: HTTP::Cookie::SameSite::Lax - ) - end - - # Preferences (PREFS) cookie - # Parameter "domain" comes from the global config - def prefs(domain : String?, preferences : Preferences) : HTTP::Cookie - return HTTP::Cookie.new( - name: "PREFS", - domain: domain, - value: URI.encode_www_form(preferences.to_json), - expires: Time.utc + 2.years, - secure: SECURE, - http_only: false, - samesite: HTTP::Cookie::SameSite::Lax - ) - end - end -end diff --git a/invidious/src/invidious/user/exports.cr b/invidious/src/invidious/user/exports.cr deleted file mode 100755 index b52503c..0000000 --- a/invidious/src/invidious/user/exports.cr +++ /dev/null @@ -1,35 +0,0 @@ -struct Invidious::User - module Export - extend self - - def to_invidious(user : User) - playlists = Invidious::Database::Playlists.select_like_iv(user.email) - - return JSON.build do |json| - json.object do - json.field "subscriptions", user.subscriptions - json.field "watch_history", user.watched - json.field "preferences", user.preferences - json.field "playlists" do - json.array do - playlists.each do |playlist| - json.object do - json.field "title", playlist.title - json.field "description", html_to_content(playlist.description_html) - json.field "privacy", playlist.privacy.to_s - json.field "videos" do - json.array do - Invidious::Database::PlaylistVideos.select_ids(playlist.id, playlist.index, limit: CONFIG.playlist_length_limit).each do |video_id| - json.string video_id - end - end - end - end - end - end - end - end - end - end - end # module -end diff --git a/invidious/src/invidious/user/imports.cr b/invidious/src/invidious/user/imports.cr deleted file mode 100755 index 108f2cc..0000000 --- a/invidious/src/invidious/user/imports.cr +++ /dev/null @@ -1,337 +0,0 @@ -require "csv" - -struct Invidious::User - module Import - extend self - - # Parse a youtube CSV subscription file - def parse_subscription_export_csv(csv_content : String) - rows = CSV.new(csv_content.strip('\n'), headers: true) - subscriptions = Array(String).new - - # Counter to limit the amount of imports. - # This is intended to prevent DoS. - row_counter = 0 - - rows.each do |row| - # Limit to 1200 - row_counter += 1 - break if row_counter > 1_200 - - # Channel ID is the first column in the csv export we can't use the header - # name, because the header name is localized depending on the - # language the user has set on their account - channel_id = row[0].strip - - next if channel_id.empty? - subscriptions << channel_id - end - - return subscriptions - end - - def parse_playlist_export_csv(user : User, raw_input : String) - # Split the input into head and body content - raw_head, raw_body = raw_input.strip('\n').split("\n\n", limit: 2, remove_empty: true) - - # Create the playlist from the head content - csv_head = CSV.new(raw_head.strip('\n'), headers: true) - csv_head.next - title = csv_head[4] - description = csv_head[5] - visibility = csv_head[6] - - if visibility.compare("Public", case_insensitive: true) == 0 - privacy = PlaylistPrivacy::Public - else - privacy = PlaylistPrivacy::Private - end - - playlist = create_playlist(title, privacy, user) - Invidious::Database::Playlists.update_description(playlist.id, description) - - # Add each video to the playlist from the body content - csv_body = CSV.new(raw_body.strip('\n'), headers: true) - csv_body.each do |row| - video_id = row[0] - if playlist - next if !video_id - next if video_id == "Video Id" - - begin - video = get_video(video_id) - rescue ex - next - end - - playlist_video = PlaylistVideo.new({ - title: video.title, - id: video.id, - author: video.author, - ucid: video.ucid, - length_seconds: video.length_seconds, - published: video.published, - plid: playlist.id, - live_now: video.live_now, - index: Random::Secure.rand(0_i64..Int64::MAX), - }) - - Invidious::Database::PlaylistVideos.insert(playlist_video) - Invidious::Database::Playlists.update_video_added(playlist.id, playlist_video.index) - end - end - - return playlist - end - - # ------------------- - # Invidious - # ------------------- - - # Import from another invidious account - def from_invidious(user : User, body : String) - data = JSON.parse(body) - - if data["subscriptions"]? - user.subscriptions += data["subscriptions"].as_a.map(&.as_s) - user.subscriptions.uniq! - user.subscriptions = get_batch_channels(user.subscriptions) - - Invidious::Database::Users.update_subscriptions(user) - end - - if data["watch_history"]? - user.watched += data["watch_history"].as_a.map(&.as_s) - user.watched.reverse!.uniq!.reverse! - Invidious::Database::Users.update_watch_history(user) - end - - if data["preferences"]? - user.preferences = Preferences.from_json(data["preferences"].to_json) - Invidious::Database::Users.update_preferences(user) - end - - if playlists = data["playlists"]?.try &.as_a? - playlists.each do |item| - title = item["title"]?.try &.as_s?.try &.delete("<>") - description = item["description"]?.try &.as_s?.try &.delete("\r") - privacy = item["privacy"]?.try &.as_s?.try { |privacy| PlaylistPrivacy.parse? privacy } - - next if !title - next if !description - next if !privacy - - playlist = create_playlist(title, privacy, user) - Invidious::Database::Playlists.update_description(playlist.id, description) - - videos = item["videos"]?.try &.as_a?.try &.each_with_index do |video_id, idx| - if idx > CONFIG.playlist_length_limit - raise InfoException.new("Playlist cannot have more than #{CONFIG.playlist_length_limit} videos") - end - - video_id = video_id.try &.as_s? - next if !video_id - - begin - video = get_video(video_id, false) - rescue ex - next - end - - playlist_video = PlaylistVideo.new({ - title: video.title, - id: video.id, - author: video.author, - ucid: video.ucid, - length_seconds: video.length_seconds, - published: video.published, - plid: playlist.id, - live_now: video.live_now, - index: Random::Secure.rand(0_i64..Int64::MAX), - }) - - Invidious::Database::PlaylistVideos.insert(playlist_video) - Invidious::Database::Playlists.update_video_added(playlist.id, playlist_video.index) - end - end - end - end - - # ------------------- - # Youtube - # ------------------- - - private def is_opml?(mimetype : String, extension : String) - opml_mimetypes = [ - "application/xml", - "text/xml", - "text/x-opml", - "text/x-opml+xml", - ] - - opml_extensions = ["xml", "opml"] - - return opml_mimetypes.any?(&.== mimetype) || opml_extensions.any?(&.== extension) - end - - # Import subscribed channels from Youtube - # Returns success status - def from_youtube(user : User, body : String, filename : String, type : String) : Bool - extension = filename.split(".").last - - if is_opml?(type, extension) - subscriptions = XML.parse(body) - user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel| - channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0] - end - elsif extension == "json" || type == "application/json" - subscriptions = JSON.parse(body) - user.subscriptions += subscriptions.as_a.compact_map do |entry| - entry["snippet"]["resourceId"]["channelId"].as_s - end - elsif extension == "csv" || type == "text/csv" - subscriptions = parse_subscription_export_csv(body) - user.subscriptions += subscriptions - else - return false - end - - user.subscriptions.uniq! - user.subscriptions = get_batch_channels(user.subscriptions) - - Invidious::Database::Users.update_subscriptions(user) - return true - end - - def from_youtube_pl(user : User, body : String, filename : String, type : String) : Bool - extension = filename.split(".").last - - if extension == "csv" || type == "text/csv" - playlist = parse_playlist_export_csv(user, body) - if playlist - return true - else - return false - end - else - return false - end - end - - def from_youtube_wh(user : User, body : String, filename : String, type : String) : Bool - extension = filename.split(".").last - - if extension == "json" || type == "application/json" - data = JSON.parse(body) - watched = data.as_a.compact_map do |item| - next unless url = item["titleUrl"]? - next unless match = url.as_s.match(/\?v=(?[a-zA-Z0-9_-]+)$/) - match["video_id"] - end - watched.reverse! # YouTube have newest first - user.watched += watched - user.watched.uniq! - Invidious::Database::Users.update_watch_history(user) - return true - else - return false - end - end - - # ------------------- - # Freetube - # ------------------- - - def from_freetube(user : User, body : String) - # Legacy import? - matches = body.scan(/"channelId":"(?[a-zA-Z0-9_-]{24})"/) - subs = matches.map(&.["channel_id"]) - - if subs.empty? - profiles = body.split('\n', remove_empty: true) - profiles.each do |profile| - if data = JSON.parse(profile)["subscriptions"]? - subs += data.as_a.map(&.["id"].as_s) - end - end - end - - user.subscriptions += subs - user.subscriptions.uniq! - user.subscriptions = get_batch_channels(user.subscriptions) - - Invidious::Database::Users.update_subscriptions(user) - end - - # ------------------- - # Newpipe - # ------------------- - - def from_newpipe_subs(user : User, body : String) - data = JSON.parse(body) - - user.subscriptions += data["subscriptions"].as_a.compact_map do |channel| - if match = channel["url"].as_s.match(/\/channel\/(?UC[a-zA-Z0-9_-]{22})/) - next match["channel"] - elsif match = channel["url"].as_s.match(/\/user\/(?.+)/) - # Resolve URL using the API - resolved_url = YoutubeAPI.resolve_url("https://www.youtube.com/user/#{match["user"]}") - ucid = resolved_url.dig?("endpoint", "browseEndpoint", "browseId") - next ucid.as_s if ucid - end - - nil - end - - user.subscriptions.uniq! - user.subscriptions = get_batch_channels(user.subscriptions) - - Invidious::Database::Users.update_subscriptions(user) - end - - def from_newpipe(user : User, body : String) : Bool - io = IO::Memory.new(body) - - Compress::Zip::File.open(io) do |file| - file.entries.each do |entry| - entry.open do |file_io| - # Ensure max size of 4MB - io_sized = IO::Sized.new(file_io, 0x400000) - - next if entry.filename != "newpipe.db" - - tempfile = File.tempfile(".db") - - begin - File.write(tempfile.path, io_sized.gets_to_end) - rescue - return false - end - - db = DB.open("sqlite3://" + tempfile.path) - - user.watched += db.query_all("SELECT url FROM streams", as: String) - .map(&.lchop("https://www.youtube.com/watch?v=")) - - user.watched.uniq! - Invidious::Database::Users.update_watch_history(user) - - user.subscriptions += db.query_all("SELECT url FROM subscriptions", as: String) - .map(&.lchop("https://www.youtube.com/channel/")) - - user.subscriptions.uniq! - user.subscriptions = get_batch_channels(user.subscriptions) - - Invidious::Database::Users.update_subscriptions(user) - - db.close - tempfile.delete - end - end - end - - # Success! - return true - end - end # module -end diff --git a/invidious/src/invidious/user/preferences.cr b/invidious/src/invidious/user/preferences.cr deleted file mode 100755 index b305940..0000000 --- a/invidious/src/invidious/user/preferences.cr +++ /dev/null @@ -1,274 +0,0 @@ -struct Preferences - include JSON::Serializable - include YAML::Serializable - - property annotations : Bool = CONFIG.default_user_preferences.annotations - property annotations_subscribed : Bool = CONFIG.default_user_preferences.annotations_subscribed - property autoplay : Bool = CONFIG.default_user_preferences.autoplay - property automatic_instance_redirect : Bool = CONFIG.default_user_preferences.automatic_instance_redirect - - @[JSON::Field(converter: Preferences::StringToArray)] - @[YAML::Field(converter: Preferences::StringToArray)] - property captions : Array(String) = CONFIG.default_user_preferences.captions - - @[JSON::Field(converter: Preferences::StringToArray)] - @[YAML::Field(converter: Preferences::StringToArray)] - property comments : Array(String) = CONFIG.default_user_preferences.comments - property continue : Bool = CONFIG.default_user_preferences.continue - property continue_autoplay : Bool = CONFIG.default_user_preferences.continue_autoplay - - @[JSON::Field(converter: Preferences::BoolToString)] - @[YAML::Field(converter: Preferences::BoolToString)] - property dark_mode : String = CONFIG.default_user_preferences.dark_mode - property latest_only : Bool = CONFIG.default_user_preferences.latest_only - property listen : Bool = CONFIG.default_user_preferences.listen - property local : Bool = CONFIG.default_user_preferences.local - property watch_history : Bool = CONFIG.default_user_preferences.watch_history - property vr_mode : Bool = CONFIG.default_user_preferences.vr_mode - property show_nick : Bool = CONFIG.default_user_preferences.show_nick - - @[JSON::Field(converter: Preferences::ProcessString)] - property locale : String = CONFIG.default_user_preferences.locale - property region : String? = CONFIG.default_user_preferences.region - - @[JSON::Field(converter: Preferences::ClampInt)] - property max_results : Int32 = CONFIG.default_user_preferences.max_results - property notifications_only : Bool = CONFIG.default_user_preferences.notifications_only - - @[JSON::Field(converter: Preferences::ProcessString)] - property player_style : String = CONFIG.default_user_preferences.player_style - - @[JSON::Field(converter: Preferences::ProcessString)] - property quality : String = CONFIG.default_user_preferences.quality - @[JSON::Field(converter: Preferences::ProcessString)] - property quality_dash : String = CONFIG.default_user_preferences.quality_dash - property default_home : String? = CONFIG.default_user_preferences.default_home - property feed_menu : Array(String) = CONFIG.default_user_preferences.feed_menu - property related_videos : Bool = CONFIG.default_user_preferences.related_videos - - @[JSON::Field(converter: Preferences::ProcessString)] - property sort : String = CONFIG.default_user_preferences.sort - property speed : Float32 = CONFIG.default_user_preferences.speed - property thin_mode : Bool = CONFIG.default_user_preferences.thin_mode - property unseen_only : Bool = CONFIG.default_user_preferences.unseen_only - property video_loop : Bool = CONFIG.default_user_preferences.video_loop - property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc - property volume : Int32 = CONFIG.default_user_preferences.volume - property save_player_pos : Bool = CONFIG.default_user_preferences.save_player_pos - - module BoolToString - def self.to_json(value : String, json : JSON::Builder) - json.string value - end - - def self.from_json(value : JSON::PullParser) : String - begin - result = value.read_string - - if result.empty? - CONFIG.default_user_preferences.dark_mode - else - result - end - rescue ex - if value.read_bool - "dark" - else - "light" - end - end - end - - def self.to_yaml(value : String, yaml : YAML::Nodes::Builder) - yaml.scalar value - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : String - unless node.is_a?(YAML::Nodes::Scalar) - node.raise "Expected scalar, not #{node.class}" - end - - case node.value - when "true" - "dark" - when "false" - "light" - when "" - CONFIG.default_user_preferences.dark_mode - else - node.value - end - end - end - - module ClampInt - def self.to_json(value : Int32, json : JSON::Builder) - json.number value - end - - def self.from_json(value : JSON::PullParser) : Int32 - value.read_int.clamp(0, MAX_ITEMS_PER_PAGE).to_i32 - end - - def self.to_yaml(value : Int32, yaml : YAML::Nodes::Builder) - yaml.scalar value - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : Int32 - node.value.clamp(0, MAX_ITEMS_PER_PAGE) - end - end - - module FamilyConverter - def self.to_yaml(value : Socket::Family, yaml : YAML::Nodes::Builder) - case value - when Socket::Family::UNSPEC - yaml.scalar nil - when Socket::Family::INET - yaml.scalar "ipv4" - when Socket::Family::INET6 - yaml.scalar "ipv6" - when Socket::Family::UNIX - raise "Invalid socket family #{value}" - end - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : Socket::Family - if node.is_a?(YAML::Nodes::Scalar) - case node.value.downcase - when "ipv4" - Socket::Family::INET - when "ipv6" - Socket::Family::INET6 - else - Socket::Family::UNSPEC - end - else - node.raise "Expected scalar, not #{node.class}" - end - end - end - - module URIConverter - def self.to_yaml(value : URI, yaml : YAML::Nodes::Builder) - yaml.scalar value.normalize! - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : URI - if node.is_a?(YAML::Nodes::Scalar) - URI.parse node.value - else - node.raise "Expected scalar, not #{node.class}" - end - end - end - - module ProcessString - def self.to_json(value : String, json : JSON::Builder) - json.string value - end - - def self.from_json(value : JSON::PullParser) : String - HTML.escape(value.read_string[0, 100]) - end - - def self.to_yaml(value : String, yaml : YAML::Nodes::Builder) - yaml.scalar value - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : String - HTML.escape(node.value[0, 100]) - end - end - - module StringToArray - def self.to_json(value : Array(String), json : JSON::Builder) - json.array do - value.each do |element| - json.string element - end - end - end - - def self.from_json(value : JSON::PullParser) : Array(String) - begin - result = [] of String - value.read_array do - result << HTML.escape(value.read_string[0, 100]) - end - rescue ex - result = [HTML.escape(value.read_string[0, 100]), ""] - end - - result - end - - def self.to_yaml(value : Array(String), yaml : YAML::Nodes::Builder) - yaml.sequence do - value.each do |element| - yaml.scalar element - end - end - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : Array(String) - begin - unless node.is_a?(YAML::Nodes::Sequence) - node.raise "Expected sequence, not #{node.class}" - end - - result = [] of String - node.nodes.each do |item| - unless item.is_a?(YAML::Nodes::Scalar) - node.raise "Expected scalar, not #{item.class}" - end - - result << HTML.escape(item.value[0, 100]) - end - rescue ex - if node.is_a?(YAML::Nodes::Scalar) - result = [HTML.escape(node.value[0, 100]), ""] - else - result = ["", ""] - end - end - - result - end - end - - module StringToCookies - def self.to_yaml(value : HTTP::Cookies, yaml : YAML::Nodes::Builder) - (value.map { |c| "#{c.name}=#{c.value}" }).join("; ").to_yaml(yaml) - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : HTTP::Cookies - unless node.is_a?(YAML::Nodes::Scalar) - node.raise "Expected scalar, not #{node.class}" - end - - cookies = HTTP::Cookies.new - node.value.split(";").each do |cookie| - next if cookie.strip.empty? - name, value = cookie.split("=", 2) - cookies << HTTP::Cookie.new(name.strip, value.strip) - end - - cookies - end - end - - module TimeSpanConverter - def self.to_yaml(value : Time::Span, yaml : YAML::Nodes::Builder) - return yaml.scalar value.total_minutes.to_i32 - end - - def self.from_yaml(ctx : YAML::ParseContext, node : YAML::Nodes::Node) : Time::Span - if node.is_a?(YAML::Nodes::Scalar) - return decode_interval(node.value) - else - node.raise "Expected scalar, not #{node.class}" - end - end - end -end diff --git a/invidious/src/invidious/user/user.cr b/invidious/src/invidious/user/user.cr deleted file mode 100755 index a6d05fd..0000000 --- a/invidious/src/invidious/user/user.cr +++ /dev/null @@ -1,27 +0,0 @@ -require "db" - -struct Invidious::User - include DB::Serializable - - property updated : Time - property notifications : Array(String) - property subscriptions : Array(String) - property email : String - - @[DB::Field(converter: Invidious::User::PreferencesConverter)] - property preferences : Preferences - property password : String? - property token : String - property watched : Array(String) - property feed_needs_update : Bool? - - module PreferencesConverter - def self.from_rs(rs) - begin - Preferences.from_json(rs.read(String)) - rescue ex - Preferences.from_json("{}") - end - end - end -end diff --git a/invidious/src/invidious/users.cr b/invidious/src/invidious/users.cr deleted file mode 100755 index 65566d2..0000000 --- a/invidious/src/invidious/users.cr +++ /dev/null @@ -1,106 +0,0 @@ -require "crypto/bcrypt/password" - -# Materialized views may not be defined using bound parameters (`$1` as used elsewhere) -MATERIALIZED_VIEW_SQL = ->(email : String) { "SELECT cv.* FROM channel_videos cv WHERE EXISTS (SELECT subscriptions FROM users u WHERE cv.ucid = ANY (u.subscriptions) AND u.email = E'#{email.gsub({'\'' => "\\'", '\\' => "\\\\"})}') ORDER BY published DESC" } - -def create_user(sid, email, password) - password = Crypto::Bcrypt::Password.create(password, cost: 10) - token = Base64.urlsafe_encode(Random::Secure.random_bytes(32)) - - user = Invidious::User.new({ - updated: Time.utc, - notifications: [] of String, - subscriptions: [] of String, - email: email, - preferences: Preferences.new(CONFIG.default_user_preferences.to_tuple), - password: password.to_s, - token: token, - watched: [] of String, - feed_needs_update: true, - }) - - return user, sid -end - -def get_subscription_feed(user, max_results = 40, page = 1) - limit = max_results.clamp(0, MAX_ITEMS_PER_PAGE) - offset = (page - 1) * limit - - notifications = Invidious::Database::Users.select_notifications(user) - view_name = "subscriptions_#{sha256(user.email)}" - - if user.preferences.notifications_only && !notifications.empty? - # Only show notifications - notifications = Invidious::Database::ChannelVideos.select(notifications) - videos = [] of ChannelVideo - - notifications.sort_by!(&.published).reverse! - - case user.preferences.sort - when "alphabetically" - notifications.sort_by!(&.title) - when "alphabetically - reverse" - notifications.sort_by!(&.title).reverse! - when "channel name" - notifications.sort_by!(&.author) - when "channel name - reverse" - notifications.sort_by!(&.author).reverse! - else nil # Ignore - end - else - if user.preferences.latest_only - if user.preferences.unseen_only - # Show latest video from a channel that a user hasn't watched - # "unseen_only" isn't really correct here, more accurate would be "unwatched_only" - - if user.watched.empty? - values = "'{}'" - else - values = "VALUES #{user.watched.map { |id| %(('#{id}')) }.join(",")}" - end - videos = PG_DB.query_all("SELECT DISTINCT ON (ucid) * FROM #{view_name} WHERE NOT id = ANY (#{values}) ORDER BY ucid, published DESC", as: ChannelVideo) - else - # Show latest video from each channel - - videos = PG_DB.query_all("SELECT DISTINCT ON (ucid) * FROM #{view_name} ORDER BY ucid, published DESC", as: ChannelVideo) - end - - videos.sort_by!(&.published).reverse! - else - if user.preferences.unseen_only - # Only show unwatched - - if user.watched.empty? - values = "'{}'" - else - values = "VALUES #{user.watched.map { |id| %(('#{id}')) }.join(",")}" - end - videos = PG_DB.query_all("SELECT * FROM #{view_name} WHERE NOT id = ANY (#{values}) ORDER BY published DESC LIMIT $1 OFFSET $2", limit, offset, as: ChannelVideo) - else - # Sort subscriptions as normal - - videos = PG_DB.query_all("SELECT * FROM #{view_name} ORDER BY published DESC LIMIT $1 OFFSET $2", limit, offset, as: ChannelVideo) - end - end - - case user.preferences.sort - when "published - reverse" - videos.sort_by!(&.published) - when "alphabetically" - videos.sort_by!(&.title) - when "alphabetically - reverse" - videos.sort_by!(&.title).reverse! - when "channel name" - videos.sort_by!(&.author) - when "channel name - reverse" - videos.sort_by!(&.author).reverse! - else nil # Ignore - end - - notifications = Invidious::Database::Users.select_notifications(user) - notifications = videos.select { |v| notifications.includes? v.id } - videos = videos - notifications - end - - return videos, notifications -end diff --git a/invidious/src/invidious/videos.cr b/invidious/src/invidious/videos.cr deleted file mode 100755 index a8f0205..0000000 --- a/invidious/src/invidious/videos.cr +++ /dev/null @@ -1,453 +0,0 @@ -enum VideoType - Video - Livestream - Scheduled -end - -struct Video - include DB::Serializable - - # Version of the JSON structure - # It prevents us from loading an incompatible version from cache - # (either newer or older, if instances with different versions run - # concurrently, e.g during a version upgrade rollout). - # - # NOTE: don't forget to bump this number if any change is made to - # the `params` structure in videos/parser.cr!!! - # - SCHEMA_VERSION = 2 - - property id : String - - @[DB::Field(converter: Video::JSONConverter)] - property info : Hash(String, JSON::Any) - property updated : Time - - @[DB::Field(ignore: true)] - @captions = [] of Invidious::Videos::Captions::Metadata - - @[DB::Field(ignore: true)] - property adaptive_fmts : Array(Hash(String, JSON::Any))? - - @[DB::Field(ignore: true)] - property fmt_stream : Array(Hash(String, JSON::Any))? - - @[DB::Field(ignore: true)] - property description : String? - - module JSONConverter - def self.from_rs(rs) - JSON.parse(rs.read(String)).as_h - end - end - - # Methods for API v1 JSON - - def to_json(locale : String?, json : JSON::Builder) - Invidious::JSONify::APIv1.video(self, json, locale: locale) - end - - # TODO: remove the locale and follow the crystal convention - def to_json(locale : String?, _json : Nil) - JSON.build do |json| - Invidious::JSONify::APIv1.video(self, json, locale: locale) - end - end - - def to_json(json : JSON::Builder | Nil = nil) - to_json(nil, json) - end - - # Misc methods - - def video_type : VideoType - video_type = info["videoType"]?.try &.as_s || "video" - return VideoType.parse?(video_type) || VideoType::Video - end - - def schema_version : Int - return info["version"]?.try &.as_i || 1 - end - - def published : Time - return info["published"]? - .try { |t| Time.parse(t.as_s, "%Y-%m-%d", Time::Location::UTC) } || Time.utc - end - - def published=(other : Time) - info["published"] = JSON::Any.new(other.to_s("%Y-%m-%d")) - end - - def live_now - return (self.video_type == VideoType::Livestream) - end - - def premiere_timestamp : Time? - info - .dig?("microformat", "playerMicroformatRenderer", "liveBroadcastDetails", "startTimestamp") - .try { |t| Time.parse_rfc3339(t.as_s) } - end - - def related_videos - info["relatedVideos"]?.try &.as_a.map { |h| h.as_h.transform_values &.as_s } || [] of Hash(String, String) - end - - # Methods for parsing streaming data - - def fmt_stream - return @fmt_stream.as(Array(Hash(String, JSON::Any))) if @fmt_stream - - fmt_stream = info["streamingData"]?.try &.["formats"]?.try &.as_a.map &.as_h || [] of Hash(String, JSON::Any) - fmt_stream.each do |fmt| - if s = (fmt["cipher"]? || fmt["signatureCipher"]?).try { |h| HTTP::Params.parse(h.as_s) } - s.each do |k, v| - fmt[k] = JSON::Any.new(v) - end - fmt["url"] = JSON::Any.new("#{fmt["url"]}#{DECRYPT_FUNCTION.decrypt_signature(fmt)}") - end - - fmt["url"] = JSON::Any.new("#{fmt["url"]}&host=#{URI.parse(fmt["url"].as_s).host}") - fmt["url"] = JSON::Any.new("#{fmt["url"]}®ion=#{self.info["region"]}") if self.info["region"]? - end - - fmt_stream.sort_by! { |f| f["width"]?.try &.as_i || 0 } - @fmt_stream = fmt_stream - return @fmt_stream.as(Array(Hash(String, JSON::Any))) - end - - def adaptive_fmts - return @adaptive_fmts.as(Array(Hash(String, JSON::Any))) if @adaptive_fmts - fmt_stream = info["streamingData"]?.try &.["adaptiveFormats"]?.try &.as_a.map &.as_h || [] of Hash(String, JSON::Any) - fmt_stream.each do |fmt| - if s = (fmt["cipher"]? || fmt["signatureCipher"]?).try { |h| HTTP::Params.parse(h.as_s) } - s.each do |k, v| - fmt[k] = JSON::Any.new(v) - end - fmt["url"] = JSON::Any.new("#{fmt["url"]}#{DECRYPT_FUNCTION.decrypt_signature(fmt)}") - end - - fmt["url"] = JSON::Any.new("#{fmt["url"]}&host=#{URI.parse(fmt["url"].as_s).host}") - fmt["url"] = JSON::Any.new("#{fmt["url"]}®ion=#{self.info["region"]}") if self.info["region"]? - end - - fmt_stream.sort_by! { |f| f["width"]?.try &.as_i || 0 } - @adaptive_fmts = fmt_stream - return @adaptive_fmts.as(Array(Hash(String, JSON::Any))) - end - - def video_streams - adaptive_fmts.select &.["mimeType"]?.try &.as_s.starts_with?("video") - end - - def audio_streams - adaptive_fmts.select &.["mimeType"]?.try &.as_s.starts_with?("audio") - end - - # Misc. methods - - def storyboards - storyboards = info.dig?("storyboards", "playerStoryboardSpecRenderer", "spec") - .try &.as_s.split("|") - - if !storyboards - if storyboard = info.dig?("storyboards", "playerLiveStoryboardSpecRenderer", "spec").try &.as_s - return [{ - url: storyboard.split("#")[0], - width: 106, - height: 60, - count: -1, - interval: 5000, - storyboard_width: 3, - storyboard_height: 3, - storyboard_count: -1, - }] - end - end - - items = [] of NamedTuple( - url: String, - width: Int32, - height: Int32, - count: Int32, - interval: Int32, - storyboard_width: Int32, - storyboard_height: Int32, - storyboard_count: Int32) - - return items if !storyboards - - url = URI.parse(storyboards.shift) - params = HTTP::Params.parse(url.query || "") - - storyboards.each_with_index do |sb, i| - width, height, count, storyboard_width, storyboard_height, interval, _, sigh = sb.split("#") - params["sigh"] = sigh - url.query = params.to_s - - width = width.to_i - height = height.to_i - count = count.to_i - interval = interval.to_i - storyboard_width = storyboard_width.to_i - storyboard_height = storyboard_height.to_i - storyboard_count = (count / (storyboard_width * storyboard_height)).ceil.to_i - - items << { - url: url.to_s.sub("$L", i).sub("$N", "M$M"), - width: width, - height: height, - count: count, - interval: interval, - storyboard_width: storyboard_width, - storyboard_height: storyboard_height, - storyboard_count: storyboard_count, - } - end - - items - end - - def paid - return (self.reason || "").includes? "requires payment" - end - - def premium - keywords.includes? "YouTube Red" - end - - def captions : Array(Invidious::Videos::Captions::Metadata) - if @captions.empty? && @info.has_key?("captions") - @captions = Invidious::Videos::Captions::Metadata.from_yt_json(info["captions"]) - end - - return @captions - end - - def hls_manifest_url : String? - info.dig?("streamingData", "hlsManifestUrl").try &.as_s - end - - def dash_manifest_url : String? - raw_dash_url = info.dig?("streamingData", "dashManifestUrl").try &.as_s - return nil if raw_dash_url.nil? - - # Use manifest v5 parameter to reduce file size - # See https://github.com/iv-org/invidious/issues/4186 - dash_url = URI.parse(raw_dash_url) - dash_query = dash_url.query || "" - - if dash_query.empty? - dash_url.path = "#{dash_url.path}/mpd_version/5" - else - dash_url.query = "#{dash_query}&mpd_version=5" - end - - return dash_url.to_s - end - - def genre_url : String? - info["genreUcid"]? ? "/channel/#{info["genreUcid"]}" : nil - end - - def is_vr : Bool? - return {"EQUIRECTANGULAR", "MESH"}.includes? self.projection_type - end - - def projection_type : String? - return info.dig?("streamingData", "adaptiveFormats", 0, "projectionType").try &.as_s - end - - def reason : String? - info["reason"]?.try &.as_s - end - - def music : Array(VideoMusic) - info["music"].as_a.map { |music_json| - VideoMusic.new( - music_json["song"].as_s, - music_json["album"].as_s, - music_json["artist"].as_s, - music_json["license"].as_s - ) - } - end - - # Macros defining getters/setters for various types of data - - private macro getset_string(name) - # Return {{name.stringify}} from `info` - def {{name.id.underscore}} : String - return info[{{name.stringify}}]?.try &.as_s || "" - end - - # Update {{name.stringify}} into `info` - def {{name.id.underscore}}=(value : String) - info[{{name.stringify}}] = JSON::Any.new(value) - end - - {% if flag?(:debug_macros) %} {{debug}} {% end %} - end - - private macro getset_string_array(name) - # Return {{name.stringify}} from `info` - def {{name.id.underscore}} : Array(String) - return info[{{name.stringify}}]?.try &.as_a.map &.as_s || [] of String - end - - # Update {{name.stringify}} into `info` - def {{name.id.underscore}}=(value : Array(String)) - info[{{name.stringify}}] = JSON::Any.new(value) - end - - {% if flag?(:debug_macros) %} {{debug}} {% end %} - end - - {% for op, type in {i32: Int32, i64: Int64} %} - private macro getset_{{op}}(name) - def \{{name.id.underscore}} : {{type}} - return info[\{{name.stringify}}]?.try &.as_i64.to_{{op}} || 0_{{op}} - end - - def \{{name.id.underscore}}=(value : Int) - info[\{{name.stringify}}] = JSON::Any.new(value.to_i64) - end - - \{% if flag?(:debug_macros) %} \{{debug}} \{% end %} - end - {% end %} - - private macro getset_bool(name) - # Return {{name.stringify}} from `info` - def {{name.id.underscore}} : Bool - return info[{{name.stringify}}]?.try &.as_bool || false - end - - # Update {{name.stringify}} into `info` - def {{name.id.underscore}}=(value : Bool) - info[{{name.stringify}}] = JSON::Any.new(value) - end - - {% if flag?(:debug_macros) %} {{debug}} {% end %} - end - - # Method definitions, using the macros above - - getset_string author - getset_string authorThumbnail - getset_string description - getset_string descriptionHtml - getset_string genre - getset_string genreUcid - getset_string license - getset_string shortDescription - getset_string subCountText - getset_string title - getset_string ucid - - getset_string_array allowedRegions - getset_string_array keywords - - getset_i32 lengthSeconds - getset_i64 likes - getset_i64 views - - getset_bool allowRatings - getset_bool authorVerified - getset_bool isFamilyFriendly - getset_bool isListed - getset_bool isUpcoming -end - -def get_video(id, refresh = true, region = nil, force_refresh = false) - if (video = Invidious::Database::Videos.select(id)) && !region - # If record was last updated over 10 minutes ago, or video has since premiered, - # refresh (expire param in response lasts for 6 hours) - if (refresh && - (Time.utc - video.updated > 10.minutes) || - (video.premiere_timestamp.try &.< Time.utc)) || - force_refresh || - video.schema_version != Video::SCHEMA_VERSION # cache control - begin - video = fetch_video(id, region) - Invidious::Database::Videos.update(video) - rescue ex - Invidious::Database::Videos.delete(id) - raise ex - end - end - else - video = fetch_video(id, region) - Invidious::Database::Videos.insert(video) if !region - end - - return video -rescue DB::Error - # Avoid common `DB::PoolRetryAttemptsExceeded` error and friends - # Note: All DB errors inherit from `DB::Error` - return fetch_video(id, region) -end - -def fetch_video(id, region) - info = extract_video_info(video_id: id) - - allowed_regions = info - .dig?("microformat", "playerMicroformatRenderer", "availableCountries") - .try &.as_a.map &.as_s || [] of String - - # Check for region-blocks - if info["reason"]?.try &.as_s.includes?("your country") - bypass_regions = PROXY_LIST.keys & allowed_regions - if !bypass_regions.empty? - region = bypass_regions[rand(bypass_regions.size)] - region_info = extract_video_info(video_id: id, proxy_region: region) - region_info["region"] = JSON::Any.new(region) if region - info = region_info if !region_info["reason"]? - end - end - - if reason = info["reason"]? - if reason == "Video unavailable" - raise NotFoundException.new(reason.as_s || "") - elsif !reason.as_s.starts_with? "Premieres" - # dont error when it's a premiere. - # we already parsed most of the data and display the premiere date - raise InfoException.new(reason.as_s || "") - end - end - - video = Video.new({ - id: id, - info: info, - updated: Time.utc, - }) - - return video -end - -def process_continuation(query, plid, id) - continuation = nil - if plid - if index = query["index"]?.try &.to_i? - continuation = index - else - continuation = id - end - continuation ||= 0 - end - - continuation -end - -def build_thumbnails(id) - return { - {host: HOST_URL, height: 720, width: 1280, name: "maxres", url: "maxres"}, - {host: HOST_URL, height: 720, width: 1280, name: "maxresdefault", url: "maxresdefault"}, - {host: HOST_URL, height: 480, width: 640, name: "sddefault", url: "sddefault"}, - {host: HOST_URL, height: 360, width: 480, name: "high", url: "hqdefault"}, - {host: HOST_URL, height: 180, width: 320, name: "medium", url: "mqdefault"}, - {host: HOST_URL, height: 90, width: 120, name: "default", url: "default"}, - {host: HOST_URL, height: 90, width: 120, name: "start", url: "1"}, - {host: HOST_URL, height: 90, width: 120, name: "middle", url: "2"}, - {host: HOST_URL, height: 90, width: 120, name: "end", url: "3"}, - } -end diff --git a/invidious/src/invidious/videos/caption.cr b/invidious/src/invidious/videos/caption.cr deleted file mode 100755 index 484e61d..0000000 --- a/invidious/src/invidious/videos/caption.cr +++ /dev/null @@ -1,223 +0,0 @@ -require "json" - -module Invidious::Videos - module Captions - struct Metadata - property name : String - property language_code : String - property base_url : String - - property auto_generated : Bool - - def initialize(@name, @language_code, @base_url, @auto_generated) - end - - # Parse the JSON structure from Youtube - def self.from_yt_json(container : JSON::Any) : Array(Captions::Metadata) - caption_tracks = container - .dig?("playerCaptionsTracklistRenderer", "captionTracks") - .try &.as_a - - captions_list = [] of Captions::Metadata - return captions_list if caption_tracks.nil? - - caption_tracks.each do |caption| - name = caption["name"]["simpleText"]? || caption["name"]["runs"][0]["text"] - name = name.to_s.split(" - ")[0] - - language_code = caption["languageCode"].to_s - base_url = caption["baseUrl"].to_s - - auto_generated = (caption["kind"]? == "asr") - - captions_list << Captions::Metadata.new(name, language_code, base_url, auto_generated) - end - - return captions_list - end - - def timedtext_to_vtt(timedtext : String, tlang = nil) : String - # In the future, we could just directly work with the url. This is more of a POC - cues = [] of XML::Node - tree = XML.parse(timedtext) - tree = tree.children.first - - tree.children.each do |item| - if item.name == "body" - item.children.each do |cue| - if cue.name == "p" && !(cue.children.size == 1 && cue.children[0].content == "\n") - cues << cue - end - end - break - end - end - - settings_field = { - "Kind" => "captions", - "Language" => "#{tlang || @language_code}", - } - - result = WebVTT.build(settings_field) do |vtt| - cues.each_with_index do |node, i| - start_time = node["t"].to_f.milliseconds - - duration = node["d"]?.try &.to_f.milliseconds - - duration ||= start_time - - if cues.size > i + 1 - end_time = cues[i + 1]["t"].to_f.milliseconds - else - end_time = start_time + duration - end - - text = String.build do |io| - node.children.each do |s| - io << s.content - end - end - - vtt.cue(start_time, end_time, text) - end - end - - return result - end - end - - # List of all caption languages available on Youtube. - LANGUAGES = { - "", - "English", - "English (auto-generated)", - "English (United Kingdom)", - "English (United States)", - "Afrikaans", - "Albanian", - "Amharic", - "Arabic", - "Armenian", - "Azerbaijani", - "Bangla", - "Basque", - "Belarusian", - "Bosnian", - "Bulgarian", - "Burmese", - "Cantonese (Hong Kong)", - "Catalan", - "Cebuano", - "Chinese", - "Chinese (China)", - "Chinese (Hong Kong)", - "Chinese (Simplified)", - "Chinese (Taiwan)", - "Chinese (Traditional)", - "Corsican", - "Croatian", - "Czech", - "Danish", - "Dutch", - "Dutch (auto-generated)", - "Esperanto", - "Estonian", - "Filipino", - "Finnish", - "French", - "French (auto-generated)", - "Galician", - "Georgian", - "German", - "German (auto-generated)", - "Greek", - "Gujarati", - "Haitian Creole", - "Hausa", - "Hawaiian", - "Hebrew", - "Hindi", - "Hmong", - "Hungarian", - "Icelandic", - "Igbo", - "Indonesian", - "Indonesian (auto-generated)", - "Interlingue", - "Irish", - "Italian", - "Italian (auto-generated)", - "Japanese", - "Japanese (auto-generated)", - "Javanese", - "Kannada", - "Kazakh", - "Khmer", - "Korean", - "Korean (auto-generated)", - "Kurdish", - "Kyrgyz", - "Lao", - "Latin", - "Latvian", - "Lithuanian", - "Luxembourgish", - "Macedonian", - "Malagasy", - "Malay", - "Malayalam", - "Maltese", - "Maori", - "Marathi", - "Mongolian", - "Nepali", - "Norwegian Bokmål", - "Nyanja", - "Pashto", - "Persian", - "Polish", - "Portuguese", - "Portuguese (auto-generated)", - "Portuguese (Brazil)", - "Punjabi", - "Romanian", - "Russian", - "Russian (auto-generated)", - "Samoan", - "Scottish Gaelic", - "Serbian", - "Shona", - "Sindhi", - "Sinhala", - "Slovak", - "Slovenian", - "Somali", - "Southern Sotho", - "Spanish", - "Spanish (auto-generated)", - "Spanish (Latin America)", - "Spanish (Mexico)", - "Spanish (Spain)", - "Sundanese", - "Swahili", - "Swedish", - "Tajik", - "Tamil", - "Telugu", - "Thai", - "Turkish", - "Turkish (auto-generated)", - "Ukrainian", - "Urdu", - "Uzbek", - "Vietnamese", - "Vietnamese (auto-generated)", - "Welsh", - "Western Frisian", - "Xhosa", - "Yiddish", - "Yoruba", - "Zulu", - } - end -end diff --git a/invidious/src/invidious/videos/clip.cr b/invidious/src/invidious/videos/clip.cr deleted file mode 100755 index 29c5718..0000000 --- a/invidious/src/invidious/videos/clip.cr +++ /dev/null @@ -1,22 +0,0 @@ -require "json" - -# returns start_time, end_time and clip_title -def parse_clip_parameters(params) : {Float64?, Float64?, String?} - decoded_protobuf = params.try { |i| URI.decode_www_form(i) } - .try { |i| Base64.decode(i) } - .try { |i| IO::Memory.new(i) } - .try { |i| Protodec::Any.parse(i) } - - start_time = decoded_protobuf - .try(&.["50:0:embedded"]["2:1:varint"].as_i64) - .try { |i| i/1000 } - - end_time = decoded_protobuf - .try(&.["50:0:embedded"]["3:2:varint"].as_i64) - .try { |i| i/1000 } - - clip_title = decoded_protobuf - .try(&.["50:0:embedded"]["4:3:string"].as_s) - - return start_time, end_time, clip_title -end diff --git a/invidious/src/invidious/videos/description.cr b/invidious/src/invidious/videos/description.cr deleted file mode 100755 index 542cb41..0000000 --- a/invidious/src/invidious/videos/description.cr +++ /dev/null @@ -1,64 +0,0 @@ -require "json" -require "uri" - -private def copy_string(str : String::Builder, iter : Iterator, count : Int) : Int - copied = 0 - while copied < count - cp = iter.next - break if cp.is_a?(Iterator::Stop) - - str << cp.chr - - # A codepoint from the SMP counts twice - copied += 1 if cp > 0xFFFF - copied += 1 - end - - return copied -end - -def parse_description(desc, video_id : String) : String? - return "" if desc.nil? - - content = desc["content"].as_s - return "" if content.empty? - - commands = desc["commandRuns"]?.try &.as_a - return content if commands.nil? - - # Not everything is stored in UTF-8 on youtube's side. The SMP codepoints - # (0x10000 and above) are encoded as UTF-16 surrogate pairs, which are - # automatically decoded by the JSON parser. It means that we need to count - # copied byte in a special manner, preventing the use of regular string copy. - iter = content.each_codepoint - - index = 0 - - return String.build do |str| - commands.each do |command| - cmd_start = command["startIndex"].as_i - cmd_length = command["length"].as_i - - # Copy the text chunk between this command and the previous if needed. - length = cmd_start - index - index += copy_string(str, iter, length) - - # We need to copy the command's text using the iterator - # and the special function defined above. - cmd_content = String.build(cmd_length) do |str2| - copy_string(str2, iter, cmd_length) - end - - link = cmd_content - if on_tap = command.dig?("onTap", "innertubeCommand") - link = parse_link_endpoint(on_tap, cmd_content, video_id) - end - str << link - index += cmd_length - end - - # Copy the end of the string (past the last command). - remaining_length = content.size - index - copy_string(str, iter, remaining_length) if remaining_length > 0 - end -end diff --git a/invidious/src/invidious/videos/formats.cr b/invidious/src/invidious/videos/formats.cr deleted file mode 100755 index e98e725..0000000 --- a/invidious/src/invidious/videos/formats.cr +++ /dev/null @@ -1,116 +0,0 @@ -module Invidious::Videos::Formats - def self.itag_to_metadata?(itag : JSON::Any) - return FORMATS[itag.to_s]? - end - - # See https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L380-#L476 - private FORMATS = { - "5" => {"ext" => "flv", "width" => 400, "height" => 240, "acodec" => "mp3", "abr" => 64, "vcodec" => "h263"}, - "6" => {"ext" => "flv", "width" => 450, "height" => 270, "acodec" => "mp3", "abr" => 64, "vcodec" => "h263"}, - "13" => {"ext" => "3gp", "acodec" => "aac", "vcodec" => "mp4v"}, - "17" => {"ext" => "3gp", "width" => 176, "height" => 144, "acodec" => "aac", "abr" => 24, "vcodec" => "mp4v"}, - "18" => {"ext" => "mp4", "width" => 640, "height" => 360, "acodec" => "aac", "abr" => 96, "vcodec" => "h264"}, - "22" => {"ext" => "mp4", "width" => 1280, "height" => 720, "acodec" => "aac", "abr" => 192, "vcodec" => "h264"}, - "34" => {"ext" => "flv", "width" => 640, "height" => 360, "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "35" => {"ext" => "flv", "width" => 854, "height" => 480, "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - - "36" => {"ext" => "3gp", "width" => 320, "acodec" => "aac", "vcodec" => "mp4v"}, - "37" => {"ext" => "mp4", "width" => 1920, "height" => 1080, "acodec" => "aac", "abr" => 192, "vcodec" => "h264"}, - "38" => {"ext" => "mp4", "width" => 4096, "height" => 3072, "acodec" => "aac", "abr" => 192, "vcodec" => "h264"}, - "43" => {"ext" => "webm", "width" => 640, "height" => 360, "acodec" => "vorbis", "abr" => 128, "vcodec" => "vp8"}, - "44" => {"ext" => "webm", "width" => 854, "height" => 480, "acodec" => "vorbis", "abr" => 128, "vcodec" => "vp8"}, - "45" => {"ext" => "webm", "width" => 1280, "height" => 720, "acodec" => "vorbis", "abr" => 192, "vcodec" => "vp8"}, - "46" => {"ext" => "webm", "width" => 1920, "height" => 1080, "acodec" => "vorbis", "abr" => 192, "vcodec" => "vp8"}, - "59" => {"ext" => "mp4", "width" => 854, "height" => 480, "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "78" => {"ext" => "mp4", "width" => 854, "height" => 480, "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - - # 3D videos - "82" => {"ext" => "mp4", "height" => 360, "format" => "3D", "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "83" => {"ext" => "mp4", "height" => 480, "format" => "3D", "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "84" => {"ext" => "mp4", "height" => 720, "format" => "3D", "acodec" => "aac", "abr" => 192, "vcodec" => "h264"}, - "85" => {"ext" => "mp4", "height" => 1080, "format" => "3D", "acodec" => "aac", "abr" => 192, "vcodec" => "h264"}, - "100" => {"ext" => "webm", "height" => 360, "format" => "3D", "acodec" => "vorbis", "abr" => 128, "vcodec" => "vp8"}, - "101" => {"ext" => "webm", "height" => 480, "format" => "3D", "acodec" => "vorbis", "abr" => 192, "vcodec" => "vp8"}, - "102" => {"ext" => "webm", "height" => 720, "format" => "3D", "acodec" => "vorbis", "abr" => 192, "vcodec" => "vp8"}, - - # Apple HTTP Live Streaming - "91" => {"ext" => "mp4", "height" => 144, "format" => "HLS", "acodec" => "aac", "abr" => 48, "vcodec" => "h264"}, - "92" => {"ext" => "mp4", "height" => 240, "format" => "HLS", "acodec" => "aac", "abr" => 48, "vcodec" => "h264"}, - "93" => {"ext" => "mp4", "height" => 360, "format" => "HLS", "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "94" => {"ext" => "mp4", "height" => 480, "format" => "HLS", "acodec" => "aac", "abr" => 128, "vcodec" => "h264"}, - "95" => {"ext" => "mp4", "height" => 720, "format" => "HLS", "acodec" => "aac", "abr" => 256, "vcodec" => "h264"}, - "96" => {"ext" => "mp4", "height" => 1080, "format" => "HLS", "acodec" => "aac", "abr" => 256, "vcodec" => "h264"}, - "132" => {"ext" => "mp4", "height" => 240, "format" => "HLS", "acodec" => "aac", "abr" => 48, "vcodec" => "h264"}, - "151" => {"ext" => "mp4", "height" => 72, "format" => "HLS", "acodec" => "aac", "abr" => 24, "vcodec" => "h264"}, - - # DASH mp4 video - "133" => {"ext" => "mp4", "height" => 240, "format" => "DASH video", "vcodec" => "h264"}, - "134" => {"ext" => "mp4", "height" => 360, "format" => "DASH video", "vcodec" => "h264"}, - "135" => {"ext" => "mp4", "height" => 480, "format" => "DASH video", "vcodec" => "h264"}, - "136" => {"ext" => "mp4", "height" => 720, "format" => "DASH video", "vcodec" => "h264"}, - "137" => {"ext" => "mp4", "height" => 1080, "format" => "DASH video", "vcodec" => "h264"}, - "138" => {"ext" => "mp4", "format" => "DASH video", "vcodec" => "h264"}, # Height can vary (https://github.com/ytdl-org/youtube-dl/issues/4559) - "160" => {"ext" => "mp4", "height" => 144, "format" => "DASH video", "vcodec" => "h264"}, - "212" => {"ext" => "mp4", "height" => 480, "format" => "DASH video", "vcodec" => "h264"}, - "264" => {"ext" => "mp4", "height" => 1440, "format" => "DASH video", "vcodec" => "h264"}, - "298" => {"ext" => "mp4", "height" => 720, "format" => "DASH video", "vcodec" => "h264", "fps" => 60}, - "299" => {"ext" => "mp4", "height" => 1080, "format" => "DASH video", "vcodec" => "h264", "fps" => 60}, - "266" => {"ext" => "mp4", "height" => 2160, "format" => "DASH video", "vcodec" => "h264"}, - - # Dash mp4 audio - "139" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "aac", "abr" => 48, "container" => "m4a_dash"}, - "140" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "aac", "abr" => 128, "container" => "m4a_dash"}, - "141" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "aac", "abr" => 256, "container" => "m4a_dash"}, - "256" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "aac", "container" => "m4a_dash"}, - "258" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "aac", "container" => "m4a_dash"}, - "325" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "dtse", "container" => "m4a_dash"}, - "328" => {"ext" => "m4a", "format" => "DASH audio", "acodec" => "ec-3", "container" => "m4a_dash"}, - - # Dash webm - "167" => {"ext" => "webm", "height" => 360, "width" => 640, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "168" => {"ext" => "webm", "height" => 480, "width" => 854, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "169" => {"ext" => "webm", "height" => 720, "width" => 1280, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "170" => {"ext" => "webm", "height" => 1080, "width" => 1920, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "218" => {"ext" => "webm", "height" => 480, "width" => 854, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "219" => {"ext" => "webm", "height" => 480, "width" => 854, "format" => "DASH video", "container" => "webm", "vcodec" => "vp8"}, - "278" => {"ext" => "webm", "height" => 144, "format" => "DASH video", "container" => "webm", "vcodec" => "vp9"}, - "242" => {"ext" => "webm", "height" => 240, "format" => "DASH video", "vcodec" => "vp9"}, - "243" => {"ext" => "webm", "height" => 360, "format" => "DASH video", "vcodec" => "vp9"}, - "244" => {"ext" => "webm", "height" => 480, "format" => "DASH video", "vcodec" => "vp9"}, - "245" => {"ext" => "webm", "height" => 480, "format" => "DASH video", "vcodec" => "vp9"}, - "246" => {"ext" => "webm", "height" => 480, "format" => "DASH video", "vcodec" => "vp9"}, - "247" => {"ext" => "webm", "height" => 720, "format" => "DASH video", "vcodec" => "vp9"}, - "248" => {"ext" => "webm", "height" => 1080, "format" => "DASH video", "vcodec" => "vp9"}, - "271" => {"ext" => "webm", "height" => 1440, "format" => "DASH video", "vcodec" => "vp9"}, - # itag 272 videos are either 3840x2160 (e.g. RtoitU2A-3E) or 7680x4320 (sLprVF6d7Ug) - "272" => {"ext" => "webm", "height" => 2160, "format" => "DASH video", "vcodec" => "vp9"}, - "302" => {"ext" => "webm", "height" => 720, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "303" => {"ext" => "webm", "height" => 1080, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "308" => {"ext" => "webm", "height" => 1440, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "313" => {"ext" => "webm", "height" => 2160, "format" => "DASH video", "vcodec" => "vp9"}, - "315" => {"ext" => "webm", "height" => 2160, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "330" => {"ext" => "webm", "height" => 144, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "331" => {"ext" => "webm", "height" => 240, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "332" => {"ext" => "webm", "height" => 360, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "333" => {"ext" => "webm", "height" => 480, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "334" => {"ext" => "webm", "height" => 720, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "335" => {"ext" => "webm", "height" => 1080, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "336" => {"ext" => "webm", "height" => 1440, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - "337" => {"ext" => "webm", "height" => 2160, "format" => "DASH video", "vcodec" => "vp9", "fps" => 60}, - - # Dash webm audio - "171" => {"ext" => "webm", "acodec" => "vorbis", "format" => "DASH audio", "abr" => 128}, - "172" => {"ext" => "webm", "acodec" => "vorbis", "format" => "DASH audio", "abr" => 256}, - - # Dash webm audio with opus inside - "249" => {"ext" => "webm", "format" => "DASH audio", "acodec" => "opus", "abr" => 50}, - "250" => {"ext" => "webm", "format" => "DASH audio", "acodec" => "opus", "abr" => 70}, - "251" => {"ext" => "webm", "format" => "DASH audio", "acodec" => "opus", "abr" => 160}, - - # av01 video only formats sometimes served with "unknown" codecs - "394" => {"ext" => "mp4", "height" => 144, "vcodec" => "av01.0.05M.08"}, - "395" => {"ext" => "mp4", "height" => 240, "vcodec" => "av01.0.05M.08"}, - "396" => {"ext" => "mp4", "height" => 360, "vcodec" => "av01.0.05M.08"}, - "397" => {"ext" => "mp4", "height" => 480, "vcodec" => "av01.0.05M.08"}, - } -end diff --git a/invidious/src/invidious/videos/music.cr b/invidious/src/invidious/videos/music.cr deleted file mode 100755 index 08d88a3..0000000 --- a/invidious/src/invidious/videos/music.cr +++ /dev/null @@ -1,13 +0,0 @@ -require "json" - -struct VideoMusic - include JSON::Serializable - - property song : String - property album : String - property artist : String - property license : String - - def initialize(@song : String, @album : String, @artist : String, @license : String) - end -end diff --git a/invidious/src/invidious/videos/parser.cr b/invidious/src/invidious/videos/parser.cr deleted file mode 100755 index 77520db..0000000 --- a/invidious/src/invidious/videos/parser.cr +++ /dev/null @@ -1,428 +0,0 @@ -require "json" - -# Use to parse both "compactVideoRenderer" and "endScreenVideoRenderer". -# The former is preferred as it has more videos in it. The second has -# the same 11 first entries as the compact rendered. -# -# TODO: "compactRadioRenderer" (Mix) and -# TODO: Use a proper struct/class instead of a hacky JSON object -def parse_related_video(related : JSON::Any) : Hash(String, JSON::Any)? - return nil if !related["videoId"]? - - # The compact renderer has video length in seconds, where the end - # screen rendered has a full text version ("42:40") - length = related["lengthInSeconds"]?.try &.as_i.to_s - length ||= related.dig?("lengthText", "simpleText").try do |box| - decode_length_seconds(box.as_s).to_s - end - - # Both have "short", so the "long" option shouldn't be required - channel_info = (related["shortBylineText"]? || related["longBylineText"]?) - .try &.dig?("runs", 0) - - author = channel_info.try &.dig?("text") - author_verified = has_verified_badge?(related["ownerBadges"]?).to_s - - ucid = channel_info.try { |ci| HelperExtractors.get_browse_id(ci) } - - # "4,088,033 views", only available on compact renderer - # and when video is not a livestream - view_count = related.dig?("viewCountText", "simpleText") - .try &.as_s.gsub(/\D/, "") - - short_view_count = related.try do |r| - HelperExtractors.get_short_view_count(r).to_s - end - - LOGGER.trace("parse_related_video: Found \"watchNextEndScreenRenderer\" container") - - # TODO: when refactoring video types, make a struct for related videos - # or reuse an existing type, if that fits. - return { - "id" => related["videoId"], - "title" => related["title"]["simpleText"], - "author" => author || JSON::Any.new(""), - "ucid" => JSON::Any.new(ucid || ""), - "length_seconds" => JSON::Any.new(length || "0"), - "view_count" => JSON::Any.new(view_count || "0"), - "short_view_count" => JSON::Any.new(short_view_count || "0"), - "author_verified" => JSON::Any.new(author_verified), - } -end - -def extract_video_info(video_id : String, proxy_region : String? = nil) - # Init client config for the API - client_config = YoutubeAPI::ClientConfig.new(proxy_region: proxy_region) - - # Fetch data from the player endpoint - player_response = YoutubeAPI.player(video_id: video_id, params: "", client_config: client_config) - - playability_status = player_response.dig?("playabilityStatus", "status").try &.as_s - - if playability_status != "OK" - subreason = player_response.dig?("playabilityStatus", "errorScreen", "playerErrorMessageRenderer", "subreason") - reason = subreason.try &.[]?("simpleText").try &.as_s - reason ||= subreason.try &.[]("runs").as_a.map(&.[]("text")).join("") - reason ||= player_response.dig("playabilityStatus", "reason").as_s - - # Stop here if video is not a scheduled livestream or - # for LOGIN_REQUIRED when videoDetails element is not found because retrying won't help - if !{"LIVE_STREAM_OFFLINE", "LOGIN_REQUIRED"}.any?(playability_status) || - playability_status == "LOGIN_REQUIRED" && !player_response.dig?("videoDetails") - return { - "version" => JSON::Any.new(Video::SCHEMA_VERSION.to_i64), - "reason" => JSON::Any.new(reason), - } - end - elsif video_id != player_response.dig("videoDetails", "videoId") - # YouTube may return a different video player response than expected. - # See: https://github.com/TeamNewPipe/NewPipe/issues/8713 - # Line to be reverted if one day we solve the video not available issue. - - # Although technically not a call to /videoplayback the fact that YouTube is returning the - # wrong video means that we should count it as a failure. - get_playback_statistic()["totalRequests"] += 1 - - return { - "version" => JSON::Any.new(Video::SCHEMA_VERSION.to_i64), - "reason" => JSON::Any.new("Can't load the video on this Invidious instance. YouTube is currently trying to block Invidious instances. Click here for more info about the issue."), - } - else - reason = nil - end - - # Don't fetch the next endpoint if the video is unavailable. - if {"OK", "LIVE_STREAM_OFFLINE", "LOGIN_REQUIRED"}.any?(playability_status) - next_response = YoutubeAPI.next({"videoId": video_id, "params": ""}) - player_response = player_response.merge(next_response) - end - - params = parse_video_info(video_id, player_response) - params["reason"] = JSON::Any.new(reason) if reason - - new_player_response = nil - - if reason.nil? - # Fetch the video streams using an Android client in order to get the - # decrypted URLs and maybe fix throttling issues (#2194). See the - # following issue for an explanation about decrypted URLs: - # https://github.com/TeamNewPipe/NewPipeExtractor/issues/562 - client_config.client_type = YoutubeAPI::ClientType::Android - new_player_response = try_fetch_streaming_data(video_id, client_config) - elsif !reason.includes?("your country") # Handled separately - # The Android embedded client could help here - client_config.client_type = YoutubeAPI::ClientType::AndroidScreenEmbed - new_player_response = try_fetch_streaming_data(video_id, client_config) - end - - # Last hope - if new_player_response.nil? - client_config.client_type = YoutubeAPI::ClientType::TvHtml5ScreenEmbed - new_player_response = try_fetch_streaming_data(video_id, client_config) - end - - # Replace player response and reset reason - if !new_player_response.nil? - # Preserve storyboard data before replacement - new_player_response["storyboards"] = player_response["storyboards"] if player_response["storyboards"]? - - player_response = new_player_response - params.delete("reason") - end - - {"captions", "playabilityStatus", "playerConfig", "storyboards", "streamingData"}.each do |f| - params[f] = player_response[f] if player_response[f]? - end - - # Data structure version, for cache control - params["version"] = JSON::Any.new(Video::SCHEMA_VERSION.to_i64) - - return params -end - -def try_fetch_streaming_data(id : String, client_config : YoutubeAPI::ClientConfig) : Hash(String, JSON::Any)? - LOGGER.debug("try_fetch_streaming_data: [#{id}] Using #{client_config.client_type} client.") - # 2AMBCgIQBg is a workaround for streaming URLs that returns a 403. - response = YoutubeAPI.player(video_id: id, params: "2AMBCgIQBg", client_config: client_config) - - playability_status = response["playabilityStatus"]["status"] - LOGGER.debug("try_fetch_streaming_data: [#{id}] Got playabilityStatus == #{playability_status}.") - - if id != response.dig("videoDetails", "videoId") - # YouTube may return a different video player response than expected. - # See: https://github.com/TeamNewPipe/NewPipe/issues/8713 - raise VideoNotAvailableException.new( - "The video returned by YouTube isn't the requested one. (#{client_config.client_type} client)" - ) - elsif playability_status == "OK" - return response - else - return nil - end -end - -def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any)) : Hash(String, JSON::Any) - # Top level elements - - main_results = player_response.dig?("contents", "twoColumnWatchNextResults") - - raise BrokenTubeException.new("twoColumnWatchNextResults") if !main_results - - # Primary results are not available on Music videos - # See: https://github.com/iv-org/invidious/pull/3238#issuecomment-1207193725 - if primary_results = main_results.dig?("results", "results", "contents") - video_primary_renderer = primary_results - .as_a.find(&.["videoPrimaryInfoRenderer"]?) - .try &.["videoPrimaryInfoRenderer"] - - video_secondary_renderer = primary_results - .as_a.find(&.["videoSecondaryInfoRenderer"]?) - .try &.["videoSecondaryInfoRenderer"] - - raise BrokenTubeException.new("videoPrimaryInfoRenderer") if !video_primary_renderer - raise BrokenTubeException.new("videoSecondaryInfoRenderer") if !video_secondary_renderer - end - - video_details = player_response.dig?("videoDetails") - microformat = player_response.dig?("microformat", "playerMicroformatRenderer") - - raise BrokenTubeException.new("videoDetails") if !video_details - raise BrokenTubeException.new("microformat") if !microformat - - # Basic video infos - - title = video_details["title"]?.try &.as_s - - # We have to try to extract viewCount from videoPrimaryInfoRenderer first, - # then from videoDetails, as the latter is "0" for livestreams (we want - # to get the amount of viewers watching). - views_txt = extract_text( - video_primary_renderer - .try &.dig?("viewCount", "videoViewCountRenderer", "viewCount") - ) - views_txt ||= video_details["viewCount"]?.try &.as_s || "" - views = views_txt.gsub(/\D/, "").to_i64? - - length_txt = (microformat["lengthSeconds"]? || video_details["lengthSeconds"]) - .try &.as_s.to_i64 - - published = microformat["publishDate"]? - .try { |t| Time.parse(t.as_s, "%Y-%m-%d", Time::Location::UTC) } || Time.utc - - premiere_timestamp = microformat.dig?("liveBroadcastDetails", "startTimestamp") - .try { |t| Time.parse_rfc3339(t.as_s) } - - live_now = microformat.dig?("liveBroadcastDetails", "isLiveNow") - .try &.as_bool || false - - # Extra video infos - - allowed_regions = microformat["availableCountries"]? - .try &.as_a.map &.as_s || [] of String - - allow_ratings = video_details["allowRatings"]?.try &.as_bool - family_friendly = microformat["isFamilySafe"].try &.as_bool - is_listed = video_details["isCrawlable"]?.try &.as_bool - is_upcoming = video_details["isUpcoming"]?.try &.as_bool - - keywords = video_details["keywords"]? - .try &.as_a.map &.as_s || [] of String - - # Related videos - - LOGGER.debug("extract_video_info: parsing related videos...") - - related = [] of JSON::Any - - # Parse "compactVideoRenderer" items (under secondary results) - secondary_results = main_results - .dig?("secondaryResults", "secondaryResults", "results") - secondary_results.try &.as_a.each do |element| - if item = element["compactVideoRenderer"]? - related_video = parse_related_video(item) - related << JSON::Any.new(related_video) if related_video - end - end - - # If nothing was found previously, fall back to end screen renderer - if related.empty? - # Container for "endScreenVideoRenderer" items - player_overlays = player_response.dig?( - "playerOverlays", "playerOverlayRenderer", - "endScreen", "watchNextEndScreenRenderer", "results" - ) - - player_overlays.try &.as_a.each do |element| - if item = element["endScreenVideoRenderer"]? - related_video = parse_related_video(item) - related << JSON::Any.new(related_video) if related_video - end - end - end - - # Likes - - toplevel_buttons = video_primary_renderer - .try &.dig?("videoActions", "menuRenderer", "topLevelButtons") - - if toplevel_buttons - likes_button = toplevel_buttons.try &.as_a - .find(&.dig?("toggleButtonRenderer", "defaultIcon", "iconType").=== "LIKE") - .try &.["toggleButtonRenderer"] - - # New format as of september 2022 - likes_button ||= toplevel_buttons.try &.as_a - .find(&.["segmentedLikeDislikeButtonRenderer"]?) - .try &.dig?( - "segmentedLikeDislikeButtonRenderer", - "likeButton", "toggleButtonRenderer" - ) - - if likes_button - # Note: The like count from `toggledText` is off by one, as it would - # represent the new like count in the event where the user clicks on "like". - likes_txt = (likes_button["defaultText"]? || likes_button["toggledText"]?) - .try &.dig?("accessibility", "accessibilityData", "label") - likes = likes_txt.as_s.gsub(/\D/, "").to_i64? if likes_txt - - LOGGER.trace("extract_video_info: Found \"likes\" button. Button text is \"#{likes_txt}\"") - LOGGER.debug("extract_video_info: Likes count is #{likes}") if likes - end - end - - # Description - - description = microformat.dig?("description", "simpleText").try &.as_s || "" - short_description = player_response.dig?("videoDetails", "shortDescription") - - # description_html = video_secondary_renderer.try &.dig?("description", "runs") - # .try &.as_a.try { |t| content_to_comment_html(t, video_id) } - - description_html = parse_description(video_secondary_renderer.try &.dig?("attributedDescription"), video_id) - - # Video metadata - - metadata = video_secondary_renderer - .try &.dig?("metadataRowContainer", "metadataRowContainerRenderer", "rows") - .try &.as_a - - genre = microformat["category"]? - genre_ucid = nil - license = nil - - metadata.try &.each do |row| - metadata_title = extract_text(row.dig?("metadataRowRenderer", "title")) - contents = row.dig?("metadataRowRenderer", "contents", 0) - - if metadata_title == "Category" - contents = contents.try &.dig?("runs", 0) - - genre = contents.try &.["text"]? - genre_ucid = contents.try &.dig?("navigationEndpoint", "browseEndpoint", "browseId") - elsif metadata_title == "License" - license = contents.try &.dig?("runs", 0, "text") - elsif metadata_title == "Licensed to YouTube by" - license = contents.try &.["simpleText"]? - end - end - - # Music section - - music_list = [] of VideoMusic - music_desclist = player_response.dig?( - "engagementPanels", 1, "engagementPanelSectionListRenderer", - "content", "structuredDescriptionContentRenderer", "items", 2, - "videoDescriptionMusicSectionRenderer", "carouselLockups" - ) - - music_desclist.try &.as_a.each do |music_desc| - artist = nil - album = nil - music_license = nil - - # Used when the video has multiple songs - if song_title = music_desc.dig?("carouselLockupRenderer", "videoLockup", "compactVideoRenderer", "title") - # "simpleText" for plain text / "runs" when song has a link - song = song_title["simpleText"]? || song_title.dig?("runs", 0, "text") - - # some videos can have empty tracks. See: https://www.youtube.com/watch?v=eBGIQ7ZuuiU - next if !song - end - - music_desc.dig?("carouselLockupRenderer", "infoRows").try &.as_a.each do |desc| - desc_title = extract_text(desc.dig?("infoRowRenderer", "title")) - if desc_title == "ARTIST" - artist = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) - elsif desc_title == "SONG" - song = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) - elsif desc_title == "ALBUM" - album = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) - elsif desc_title == "LICENSES" - music_license = extract_text(desc.dig?("infoRowRenderer", "expandedMetadata")) - end - end - music_list << VideoMusic.new(song.to_s, album.to_s, artist.to_s, music_license.to_s) - end - - # Author infos - - author = video_details["author"]?.try &.as_s - ucid = video_details["channelId"]?.try &.as_s - - if author_info = video_secondary_renderer.try &.dig?("owner", "videoOwnerRenderer") - author_thumbnail = author_info.dig?("thumbnail", "thumbnails", 0, "url") - author_verified = has_verified_badge?(author_info["badges"]?) - - subs_text = author_info["subscriberCountText"]? - .try { |t| t["simpleText"]? || t.dig?("runs", 0, "text") } - .try &.as_s.split(" ", 2)[0] - end - - # Return data - - if live_now - video_type = VideoType::Livestream - elsif !premiere_timestamp.nil? - video_type = VideoType::Scheduled - published = premiere_timestamp || Time.utc - else - video_type = VideoType::Video - end - - params = { - "videoType" => JSON::Any.new(video_type.to_s), - # Basic video infos - "title" => JSON::Any.new(title || ""), - "views" => JSON::Any.new(views || 0_i64), - "likes" => JSON::Any.new(likes || 0_i64), - "lengthSeconds" => JSON::Any.new(length_txt || 0_i64), - "published" => JSON::Any.new(published.to_rfc3339), - # Extra video infos - "allowedRegions" => JSON::Any.new(allowed_regions.map { |v| JSON::Any.new(v) }), - "allowRatings" => JSON::Any.new(allow_ratings || false), - "isFamilyFriendly" => JSON::Any.new(family_friendly || false), - "isListed" => JSON::Any.new(is_listed || false), - "isUpcoming" => JSON::Any.new(is_upcoming || false), - "keywords" => JSON::Any.new(keywords.map { |v| JSON::Any.new(v) }), - # Related videos - "relatedVideos" => JSON::Any.new(related), - # Description - "description" => JSON::Any.new(description || ""), - "descriptionHtml" => JSON::Any.new(description_html || "

    "), - "shortDescription" => JSON::Any.new(short_description.try &.as_s || nil), - # Video metadata - "genre" => JSON::Any.new(genre.try &.as_s || ""), - "genreUcid" => JSON::Any.new(genre_ucid.try &.as_s || ""), - "license" => JSON::Any.new(license.try &.as_s || ""), - # Music section - "music" => JSON.parse(music_list.to_json), - # Author infos - "author" => JSON::Any.new(author || ""), - "ucid" => JSON::Any.new(ucid || ""), - "authorThumbnail" => JSON::Any.new(author_thumbnail.try &.as_s || ""), - "authorVerified" => JSON::Any.new(author_verified || false), - "subCountText" => JSON::Any.new(subs_text || "-"), - } - - return params -end diff --git a/invidious/src/invidious/videos/regions.cr b/invidious/src/invidious/videos/regions.cr deleted file mode 100755 index 575f8c2..0000000 --- a/invidious/src/invidious/videos/regions.cr +++ /dev/null @@ -1,27 +0,0 @@ -# List of geographical regions that Youtube recognizes. -# This is used to determine if a video is either restricted to a list -# of allowed regions (= whitelisted) or if it can't be watched in -# a set of regions (= blacklisted). -REGIONS = { - "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", - "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", - "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", - "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", - "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", - "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", - "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", - "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", - "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", - "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", - "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", - "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", - "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", - "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", - "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", - "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", - "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", - "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", - "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", - "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", - "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", -} diff --git a/invidious/src/invidious/videos/transcript.cr b/invidious/src/invidious/videos/transcript.cr deleted file mode 100755 index dac00ee..0000000 --- a/invidious/src/invidious/videos/transcript.cr +++ /dev/null @@ -1,77 +0,0 @@ -module Invidious::Videos - # Namespace for methods primarily relating to Transcripts - module Transcript - record TranscriptLine, start_ms : Time::Span, end_ms : Time::Span, line : String - - def self.generate_param(video_id : String, language_code : String, auto_generated : Bool) : String - kind = auto_generated ? "asr" : "" - - object = { - "1:0:string" => video_id, - - "2:base64" => { - "1:string" => kind, - "2:string" => language_code, - "3:string" => "", - }, - - "3:varint" => 1_i64, - "5:string" => "engagement-panel-searchable-transcript-search-panel", - "6:varint" => 1_i64, - "7:varint" => 1_i64, - "8:varint" => 1_i64, - } - - params = object.try { |i| Protodec::Any.cast_json(i) } - .try { |i| Protodec::Any.from_json(i) } - .try { |i| Base64.urlsafe_encode(i) } - .try { |i| URI.encode_www_form(i) } - - return params - end - - def self.convert_transcripts_to_vtt(initial_data : Hash(String, JSON::Any), target_language : String) : String - # Convert into array of TranscriptLine - lines = self.parse(initial_data) - - settings_field = { - "Kind" => "captions", - "Language" => target_language, - } - - # Taken from Invidious::Videos::Captions::Metadata.timedtext_to_vtt() - vtt = WebVTT.build(settings_field) do |vtt| - lines.each do |line| - vtt.cue(line.start_ms, line.end_ms, line.line) - end - end - - return vtt - end - - private def self.parse(initial_data : Hash(String, JSON::Any)) - body = initial_data.dig("actions", 0, "updateEngagementPanelAction", "content", "transcriptRenderer", - "content", "transcriptSearchPanelRenderer", "body", "transcriptSegmentListRenderer", - "initialSegments").as_a - - lines = [] of TranscriptLine - body.each do |line| - # Transcript section headers. They are not apart of the captions and as such we can safely skip them. - if line.as_h.has_key?("transcriptSectionHeaderRenderer") - next - end - - line = line["transcriptSegmentRenderer"] - - start_ms = line["startMs"].as_s.to_i.millisecond - end_ms = line["endMs"].as_s.to_i.millisecond - - text = extract_text(line["snippet"]) || "" - - lines << TranscriptLine.new(start_ms, end_ms, text) - end - - return lines - end - end -end diff --git a/invidious/src/invidious/videos/video_preferences.cr b/invidious/src/invidious/videos/video_preferences.cr deleted file mode 100755 index 34cf7ff..0000000 --- a/invidious/src/invidious/videos/video_preferences.cr +++ /dev/null @@ -1,156 +0,0 @@ -struct VideoPreferences - include JSON::Serializable - - property annotations : Bool - property autoplay : Bool - property comments : Array(String) - property continue : Bool - property continue_autoplay : Bool - property controls : Bool - property listen : Bool - property local : Bool - property preferred_captions : Array(String) - property player_style : String - property quality : String - property quality_dash : String - property raw : Bool - property region : String? - property related_videos : Bool - property speed : Float32 | Float64 - property video_end : Float64 | Int32 - property video_loop : Bool - property extend_desc : Bool - property video_start : Float64 | Int32 - property volume : Int32 - property vr_mode : Bool - property save_player_pos : Bool -end - -def process_video_params(query, preferences) - annotations = query["iv_load_policy"]?.try &.to_i? - autoplay = query["autoplay"]?.try { |q| (q == "true" || q == "1").to_unsafe } - comments = query["comments"]?.try &.split(",").map(&.downcase) - continue = query["continue"]?.try { |q| (q == "true" || q == "1").to_unsafe } - continue_autoplay = query["continue_autoplay"]?.try { |q| (q == "true" || q == "1").to_unsafe } - listen = query["listen"]?.try { |q| (q == "true" || q == "1").to_unsafe } - local = query["local"]?.try { |q| (q == "true" || q == "1").to_unsafe } - player_style = query["player_style"]? - preferred_captions = query["subtitles"]?.try &.split(",").map(&.downcase) - quality = query["quality"]? - quality_dash = query["quality_dash"]? - region = query["region"]? - related_videos = query["related_videos"]?.try { |q| (q == "true" || q == "1").to_unsafe } - speed = query["speed"]?.try &.rchop("x").to_f? - video_loop = query["loop"]?.try { |q| (q == "true" || q == "1").to_unsafe } - extend_desc = query["extend_desc"]?.try { |q| (q == "true" || q == "1").to_unsafe } - volume = query["volume"]?.try &.to_i? - vr_mode = query["vr_mode"]?.try { |q| (q == "true" || q == "1").to_unsafe } - save_player_pos = query["save_player_pos"]?.try { |q| (q == "true" || q == "1").to_unsafe } - - if preferences - # region ||= preferences.region - annotations ||= preferences.annotations.to_unsafe - autoplay ||= preferences.autoplay.to_unsafe - comments ||= preferences.comments - continue ||= preferences.continue.to_unsafe - continue_autoplay ||= preferences.continue_autoplay.to_unsafe - listen ||= preferences.listen.to_unsafe - local ||= preferences.local.to_unsafe - player_style ||= preferences.player_style - preferred_captions ||= preferences.captions - quality ||= preferences.quality - quality_dash ||= preferences.quality_dash - related_videos ||= preferences.related_videos.to_unsafe - speed ||= preferences.speed - video_loop ||= preferences.video_loop.to_unsafe - extend_desc ||= preferences.extend_desc.to_unsafe - volume ||= preferences.volume - vr_mode ||= preferences.vr_mode.to_unsafe - save_player_pos ||= preferences.save_player_pos.to_unsafe - end - - annotations ||= CONFIG.default_user_preferences.annotations.to_unsafe - autoplay ||= CONFIG.default_user_preferences.autoplay.to_unsafe - comments ||= CONFIG.default_user_preferences.comments - continue ||= CONFIG.default_user_preferences.continue.to_unsafe - continue_autoplay ||= CONFIG.default_user_preferences.continue_autoplay.to_unsafe - listen ||= CONFIG.default_user_preferences.listen.to_unsafe - local ||= CONFIG.default_user_preferences.local.to_unsafe - player_style ||= CONFIG.default_user_preferences.player_style - preferred_captions ||= CONFIG.default_user_preferences.captions - quality ||= CONFIG.default_user_preferences.quality - quality_dash ||= CONFIG.default_user_preferences.quality_dash - related_videos ||= CONFIG.default_user_preferences.related_videos.to_unsafe - speed ||= CONFIG.default_user_preferences.speed - video_loop ||= CONFIG.default_user_preferences.video_loop.to_unsafe - extend_desc ||= CONFIG.default_user_preferences.extend_desc.to_unsafe - volume ||= CONFIG.default_user_preferences.volume - vr_mode ||= CONFIG.default_user_preferences.vr_mode.to_unsafe - save_player_pos ||= CONFIG.default_user_preferences.save_player_pos.to_unsafe - - annotations = annotations == 1 - autoplay = autoplay == 1 - continue = continue == 1 - continue_autoplay = continue_autoplay == 1 - listen = listen == 1 - local = local == 1 - related_videos = related_videos == 1 - video_loop = video_loop == 1 - extend_desc = extend_desc == 1 - vr_mode = vr_mode == 1 - save_player_pos = save_player_pos == 1 - - if CONFIG.disabled?("dash") && quality == "dash" - quality = "high" - end - - if CONFIG.disabled?("local") && local - local = false - end - - if start = query["t"]? || query["time_continue"]? || query["start"]? - video_start = decode_time(start) - end - video_start ||= 0 - - if query["end"]? - video_end = decode_time(query["end"]) - end - video_end ||= -1 - - raw = query["raw"]?.try &.to_i? - raw ||= 0 - raw = raw == 1 - - controls = query["controls"]?.try &.to_i? - controls ||= 1 - controls = controls >= 1 - - params = VideoPreferences.new({ - annotations: annotations, - autoplay: autoplay, - comments: comments, - continue: continue, - continue_autoplay: continue_autoplay, - controls: controls, - listen: listen, - local: local, - player_style: player_style, - preferred_captions: preferred_captions, - quality: quality, - quality_dash: quality_dash, - raw: raw, - region: region, - related_videos: related_videos, - speed: speed, - video_end: video_end, - video_loop: video_loop, - extend_desc: extend_desc, - video_start: video_start, - volume: volume, - vr_mode: vr_mode, - save_player_pos: save_player_pos, - }) - - return params -end diff --git a/invidious/src/invidious/views/add_playlist_items.ecr b/invidious/src/invidious/views/add_playlist_items.ecr deleted file mode 100755 index 6aea82a..0000000 --- a/invidious/src/invidious/views/add_playlist_items.ecr +++ /dev/null @@ -1,35 +0,0 @@ -<% content_for "header" do %> -<%= playlist.title %> - Invidious - -<% end %> - -
    -
    -
    -
    -
    - <%= translate(locale, "Editing playlist `x`", %|"#{HTML.escape(playlist.title)}"|) %> - -
    - value="<%= HTML.escape(query.text) %>"<% end %> - placeholder="<%= translate(locale, "Search for videos") %>"> - -
    -
    -
    -
    -
    -
    - - - - - -<%= rendered "components/items_paginated" %> diff --git a/invidious/src/invidious/views/channel.ecr b/invidious/src/invidious/views/channel.ecr deleted file mode 100755 index 09df106..0000000 --- a/invidious/src/invidious/views/channel.ecr +++ /dev/null @@ -1,54 +0,0 @@ -<%- - ucid = channel.ucid - author = HTML.escape(channel.author) - channel_profile_pic = URI.parse(channel.author_thumbnail).request_target - - relative_url = - case selected_tab - when .shorts? then "/channel/#{ucid}/shorts" - when .streams? then "/channel/#{ucid}/streams" - when .playlists? then "/channel/#{ucid}/playlists" - when .channels? then "/channel/#{ucid}/channels" - when .podcasts? then "/channel/#{ucid}/podcasts" - when .releases? then "/channel/#{ucid}/releases" - else - "/channel/#{ucid}" - end - - youtube_url = "https://www.youtube.com#{relative_url}" - redirect_url = Invidious::Frontend::Misc.redirect_url(env) - - page_nav_html = IV::Frontend::Pagination.nav_ctoken(locale, - base_url: relative_url, - ctoken: next_continuation - ) -%> - -<% content_for "header" do %> -<%- if selected_tab.videos? -%> - - - - - - - - - - - - -<%- end -%> - - -<%= author %> - Invidious -<% end %> - -<%= rendered "components/channel_info" %> - -
    -
    -
    - - -<%= rendered "components/items_paginated" %> diff --git a/invidious/src/invidious/views/community.ecr b/invidious/src/invidious/views/community.ecr deleted file mode 100755 index d2a305d..0000000 --- a/invidious/src/invidious/views/community.ecr +++ /dev/null @@ -1,46 +0,0 @@ -<%- - ucid = channel.ucid - author = HTML.escape(channel.author) - channel_profile_pic = URI.parse(channel.author_thumbnail).request_target - - relative_url = "/channel/#{ucid}/community" - youtube_url = "https://www.youtube.com#{relative_url}" - redirect_url = Invidious::Frontend::Misc.redirect_url(env) - - selected_tab = Invidious::Frontend::ChannelPage::TabsAvailable::Community --%> - -<% content_for "header" do %> - -<%= author %> - Invidious -<% end %> - -<%= rendered "components/channel_info" %> - -
    -
    -
    - -<% if error_message %> -
    -

    <%= error_message %>

    -
    -<% else %> -
    - <%= IV::Frontend::Comments.template_youtube(items.not_nil!, locale, thin_mode) %> -
    -<% end %> - - - diff --git a/invidious/src/invidious/views/components/channel_info.ecr b/invidious/src/invidious/views/components/channel_info.ecr deleted file mode 100755 index f4164f3..0000000 --- a/invidious/src/invidious/views/components/channel_info.ecr +++ /dev/null @@ -1,61 +0,0 @@ -<% if channel.banner %> -
    - " alt="" /> -
    - -
    -
    -
    -<% end %> - -
    -
    -
    - - <%= author %><% if !channel.verified.nil? && channel.verified %> <% end %> -
    -
    - -
    -
    - <% sub_count_text = number_to_short_text(channel.sub_count) %> - <%= rendered "components/subscribe_widget" %> -
    - - -
    -
    - -
    -

    <%= channel.description_html %>

    -
    - -
    -
    - - - - <%= Invidious::Frontend::ChannelPage.generate_tabs_links(locale, channel, selected_tab) %> -
    -
    -
    - <% sort_options.each do |sort| %> -
    - <% if sort_by == sort %> - <%= translate(locale, sort) %> - <% else %> - <%= translate(locale, sort) %> - <% end %> -
    - <% end %> -
    -
    -
    diff --git a/invidious/src/invidious/views/components/feed_menu.ecr b/invidious/src/invidious/views/components/feed_menu.ecr deleted file mode 100755 index 3dbeaf3..0000000 --- a/invidious/src/invidious/views/components/feed_menu.ecr +++ /dev/null @@ -1,11 +0,0 @@ -
    - <% feed_menu = env.get("preferences").as(Preferences).feed_menu.dup %> - <% if !env.get?("user") %> - <% feed_menu.reject! {|item| {"Subscriptions", "Playlists"}.includes? item} %> - <% end %> - <% feed_menu.each do |feed| %> - - <%= translate(locale, feed) %> - - <% end %> -
    diff --git a/invidious/src/invidious/views/components/item.ecr b/invidious/src/invidious/views/components/item.ecr deleted file mode 100755 index 6d227cf..0000000 --- a/invidious/src/invidious/views/components/item.ecr +++ /dev/null @@ -1,205 +0,0 @@ -<%- - thin_mode = env.get("preferences").as(Preferences).thin_mode - item_watched = !item.is_a?(SearchChannel | SearchHashtag | SearchPlaylist | InvidiousPlaylist | Category) && env.get?("user").try &.as(User).watched.index(item.id) != nil - author_verified = item.responds_to?(:author_verified) && item.author_verified --%> - -
    -
    - <% case item when %> - <% when SearchChannel %> - <% if !thin_mode %> - -
    - " alt="" /> -
    -
    - <%- else -%> -
    - <% end %> - - - - <% if !item.channel_handle.nil? %>

    <%= item.channel_handle %>

    <% end %> -

    <%= translate_count(locale, "generic_subscribers_count", item.subscriber_count, NumberFormatting::Separator) %>

    - <% if !item.auto_generated && item.channel_handle.nil? %>

    <%= translate_count(locale, "generic_videos_count", item.video_count, NumberFormatting::Separator) %>

    <% end %> -
    <%= item.description_html %>
    - <% when SearchHashtag %> - <% if !thin_mode %> - -
    -
    - <%- else -%> -
    - <% end %> - - - -
    - <%- if item.video_count != 0 -%> -

    <%= translate_count(locale, "generic_videos_count", item.video_count, NumberFormatting::Separator) %>

    - <%- end -%> -
    - -
    - <%- if item.channel_count != 0 -%> -

    <%= translate_count(locale, "generic_channels_count", item.channel_count, NumberFormatting::Separator) %>

    - <%- end -%> -
    - <% when SearchPlaylist, InvidiousPlaylist %> - <%- - if item.id.starts_with? "RD" - link_url = "/mix?list=#{item.id}&continuation=#{URI.parse(item.thumbnail || "/vi/-----------").request_target.split("/")[2]}" - else - link_url = "/playlist?list=#{item.id}" - end - -%> - -
    - <%- if !thin_mode %> - - " alt="" /> - - <%- else -%> -
    - <%- end -%> - -
    -

    <%= translate_count(locale, "generic_videos_count", item.video_count, NumberFormatting::Separator) %>

    -
    -
    - - - -
    -
    - <% if !item.ucid.to_s.empty? %> - -

    <%= HTML.escape(item.author) %> - <%- if author_verified %> <% end -%> -

    -
    - <% else %> -

    <%= HTML.escape(item.author) %> - <%- if author_verified %> <% end -%> -

    - <% end %> -
    -
    - <% when Category %> - <% else %> - <%- - # `endpoint_params` is used for the "video-context-buttons" component - if item.is_a?(PlaylistVideo) - link_url = "/watch?v=#{item.id}&list=#{item.plid}&index=#{item.index}" - endpoint_params = "?v=#{item.id}&list=#{item.plid}" - elsif item.is_a?(MixVideo) - link_url = "/watch?v=#{item.id}&list=#{item.rdid}" - endpoint_params = "?v=#{item.id}&list=#{item.rdid}" - else - link_url = "/watch?v=#{item.id}" - endpoint_params = "?v=#{item.id}" - end - -%> - -
    - <%- if !thin_mode -%> - - - - <% if item_watched %> -
    -
    - <% end %> -
    - <%- else -%> -
    - <%- end -%> - -
    - <%- if env.get? "show_watched" -%> -
    " method="post"> - "> - -
    - <%- end -%> - - <%- if plid_form = env.get?("add_playlist_items") -%> - <%- form_parameters = "action_add_video=1&video_id=#{item.id}&playlist_id=#{plid_form}&referer=#{env.get("current_page")}" -%> -
    - "> - -
    - <%- elsif item.is_a?(PlaylistVideo) && (plid_form = env.get?("remove_playlist_items")) -%> - <%- form_parameters = "action_remove_video=1&set_video_id=#{item.index}&playlist_id=#{plid_form}&referer=#{env.get("current_page")}" -%> -
    - "> - -
    - <%- end -%> -
    - -
    - <%- if item.responds_to?(:live_now) && item.live_now -%> -

     <%= translate(locale, "LIVE") %>

    - <%- elsif item.length_seconds != 0 -%> -

    <%= recode_length_seconds(item.length_seconds) %>

    - <%- end -%> -
    -
    - - - -
    -
    - <% if !item.ucid.to_s.empty? %> - -

    <%= HTML.escape(item.author) %> - <%- if author_verified %> <% end -%> -

    -
    - <% else %> -

    <%= HTML.escape(item.author) %> - <%- if author_verified %> <% end -%> -

    - <% end %> -
    - - <%= rendered "components/video-context-buttons" %> -
    - -
    -
    - <% if item.responds_to?(:premiere_timestamp) && item.premiere_timestamp.try &.> Time.utc %> -

    <%= translate(locale, "Premieres in `x`", recode_date((item.premiere_timestamp.as(Time) - Time.utc).ago, locale)) %>

    - <% elsif item.responds_to?(:published) && (Time.utc - item.published) > 1.minute %> -

    <%= translate(locale, "Shared `x` ago", recode_date(item.published, locale)) %>

    - <% end %> -
    - - <% if item.responds_to?(:views) && item.views %> -
    -

    <%= translate_count(locale, "generic_views_count", item.views || 0, NumberFormatting::Short) %>

    -
    - <% end %> -
    - <% end %> -
    -
    diff --git a/invidious/src/invidious/views/components/items_paginated.ecr b/invidious/src/invidious/views/components/items_paginated.ecr deleted file mode 100755 index 4534a0a..0000000 --- a/invidious/src/invidious/views/components/items_paginated.ecr +++ /dev/null @@ -1,11 +0,0 @@ -<%= page_nav_html %> - -
    - <%- items.each do |item| -%> - <%= rendered "components/item" %> - <%- end -%> -
    - -<%= page_nav_html %> - - diff --git a/invidious/src/invidious/views/components/player.ecr b/invidious/src/invidious/views/components/player.ecr deleted file mode 100755 index c3c02df..0000000 --- a/invidious/src/invidious/views/components/player.ecr +++ /dev/null @@ -1,80 +0,0 @@ - - - - diff --git a/invidious/src/invidious/views/components/player_sources.ecr b/invidious/src/invidious/views/components/player_sources.ecr deleted file mode 100755 index 9af3899..0000000 --- a/invidious/src/invidious/views/components/player_sources.ecr +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - -<% if params.annotations %> - - -<% end %> - -<% if params.listen || params.quality != "dash" %> - - -<% end %> - -<% if !params.listen && params.vr_mode %> - - -<% end %> diff --git a/invidious/src/invidious/views/components/search_box.ecr b/invidious/src/invidious/views/components/search_box.ecr deleted file mode 100755 index a03785d..0000000 --- a/invidious/src/invidious/views/components/search_box.ecr +++ /dev/null @@ -1,9 +0,0 @@ -
    -
    - autofocus<% end %> - name="q" placeholder="<%= translate(locale, "search") %>" - title="<%= translate(locale, "search") %>" - value="<%= env.get?("search").try {|x| HTML.escape(x.as(String)) } %>"> -
    -
    diff --git a/invidious/src/invidious/views/components/subscribe_widget.ecr b/invidious/src/invidious/views/components/subscribe_widget.ecr deleted file mode 100755 index 05e4e25..0000000 --- a/invidious/src/invidious/views/components/subscribe_widget.ecr +++ /dev/null @@ -1,36 +0,0 @@ -<% if user %> - <% if subscriptions.includes? ucid %> -
    " method="post"> - "> - -
    - <% else %> -
    " method="post"> - "> - -
    - <% end %> - - - -<% else %> - "> - <%= translate(locale, "Subscribe") %> | <%= sub_count_text %> - -<% end %> diff --git a/invidious/src/invidious/views/components/video-context-buttons.ecr b/invidious/src/invidious/views/components/video-context-buttons.ecr deleted file mode 100755 index 385ed6b..0000000 --- a/invidious/src/invidious/views/components/video-context-buttons.ecr +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file diff --git a/invidious/src/invidious/views/create_playlist.ecr b/invidious/src/invidious/views/create_playlist.ecr deleted file mode 100755 index 807244e..0000000 --- a/invidious/src/invidious/views/create_playlist.ecr +++ /dev/null @@ -1,39 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Create playlist") %> - Invidious -<% end %> - -
    -
    -
    -
    -
    -
    - <%= translate(locale, "Create playlist") %> - -
    - - "> -
    - -
    - - -
    - -
    - -
    - - -
    -
    -
    -
    -
    -
    diff --git a/invidious/src/invidious/views/delete_playlist.ecr b/invidious/src/invidious/views/delete_playlist.ecr deleted file mode 100755 index cd66b96..0000000 --- a/invidious/src/invidious/views/delete_playlist.ecr +++ /dev/null @@ -1,24 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Delete playlist") %> - Invidious -<% end %> - -
    -
    - <%= translate(locale, "Delete playlist `x`?", %|"#{HTML.escape(playlist.title)}"|) %> - -
    -
    - -
    - -
    - - -
    -
    diff --git a/invidious/src/invidious/views/edit_playlist.ecr b/invidious/src/invidious/views/edit_playlist.ecr deleted file mode 100755 index 34157c6..0000000 --- a/invidious/src/invidious/views/edit_playlist.ecr +++ /dev/null @@ -1,60 +0,0 @@ -<% title = HTML.escape(playlist.title) %> - -<% content_for "header" do %> -<%= title %> - Invidious - -<% end %> - -
    -
    - -
    - -
    -
    -

    -
    -
    - -
    -
    - - <%= HTML.escape(playlist.author) %> | - <%= translate_count(locale, "generic_videos_count", playlist.video_count) %> | - - -
    -
    - -
    - -
    - -
    - -
    -
    -
    - - -<%= rendered "components/items_paginated" %> diff --git a/invidious/src/invidious/views/embed.ecr b/invidious/src/invidious/views/embed.ecr deleted file mode 100755 index 1bf5cc3..0000000 --- a/invidious/src/invidious/views/embed.ecr +++ /dev/null @@ -1,37 +0,0 @@ - -"> - - - - - - <%= rendered "components/player_sources" %> - - - - - <%= HTML.escape(video.title) %> - Invidious - - - - - - -<%= rendered "components/player" %> - - - diff --git a/invidious/src/invidious/views/error.ecr b/invidious/src/invidious/views/error.ecr deleted file mode 100755 index 04eb74d..0000000 --- a/invidious/src/invidious/views/error.ecr +++ /dev/null @@ -1,8 +0,0 @@ -<% content_for "header" do %> -<%= "Error" %> - Invidious -<% end %> - -
    - <%= error_message %> - <%= next_steps %> -
    diff --git a/invidious/src/invidious/views/feeds/history.ecr b/invidious/src/invidious/views/feeds/history.ecr deleted file mode 100755 index bda4e1f..0000000 --- a/invidious/src/invidious/views/feeds/history.ecr +++ /dev/null @@ -1,59 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "History") %> - Invidious -<% end %> - -
    -
    -

    <%= translate_count(locale, "generic_videos_count", user.watched.size, NumberFormatting::HtmlSpan) %>

    -
    - - -
    - - - - -
    - <% watched.each do |item| %> -
    -
    -
    - - - - -
    -
    " method="post"> - "> - -
    -
    -
    -

    -
    -
    - <% end %> -
    - -<%= - IV::Frontend::Pagination.nav_numeric(locale, - base_url: base_url, - current_page: page, - show_next: (watched.size >= max_results) - ) -%> diff --git a/invidious/src/invidious/views/feeds/playlists.ecr b/invidious/src/invidious/views/feeds/playlists.ecr deleted file mode 100755 index 2a4b6ed..0000000 --- a/invidious/src/invidious/views/feeds/playlists.ecr +++ /dev/null @@ -1,43 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Playlists") %> - Invidious -<% end %> - -<%= rendered "components/feed_menu" %> - -
    -
    -

    <%= translate(locale, "user_created_playlists", %(#{items_created.size})) %>

    -
    - - -
    - -
    -<% items_created.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - -
    -
    -

    <%= translate(locale, "user_saved_playlists", %(#{items_saved.size})) %>

    -
    -
    - -
    -<% items_saved.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - - diff --git a/invidious/src/invidious/views/feeds/popular.ecr b/invidious/src/invidious/views/feeds/popular.ecr deleted file mode 100755 index 5fbe539..0000000 --- a/invidious/src/invidious/views/feeds/popular.ecr +++ /dev/null @@ -1,20 +0,0 @@ -<% content_for "header" do %> -"> - - <% if env.get("preferences").as(Preferences).default_home != "Popular" %> - <%= translate(locale, "Popular") %> - Invidious - <% else %> - Invidious - <% end %> - -<% end %> - -<%= rendered "components/feed_menu" %> - -
    -<% popular_videos.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - - diff --git a/invidious/src/invidious/views/feeds/subscriptions.ecr b/invidious/src/invidious/views/feeds/subscriptions.ecr deleted file mode 100755 index c36bd00..0000000 --- a/invidious/src/invidious/views/feeds/subscriptions.ecr +++ /dev/null @@ -1,74 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Subscriptions") %> - Invidious - -<% end %> - -<%= rendered "components/feed_menu" %> - - - -<% if CONFIG.enable_user_notifications %> - -
    - <%= translate_count(locale, "subscriptions_unseen_notifs_count", notifications.size) %> -
    - -<% if !notifications.empty? %> -
    -
    -
    -<% end %> - -
    -<% notifications.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - -<% end %> - -
    -
    -
    - - - - - -
    -<% videos.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - - - -<%= - IV::Frontend::Pagination.nav_numeric(locale, - base_url: base_url, - current_page: page, - show_next: ((videos.size + notifications.size) == max_results) - ) -%> diff --git a/invidious/src/invidious/views/feeds/trending.ecr b/invidious/src/invidious/views/feeds/trending.ecr deleted file mode 100755 index 7dc416c..0000000 --- a/invidious/src/invidious/views/feeds/trending.ecr +++ /dev/null @@ -1,49 +0,0 @@ -<% content_for "header" do %> -"> - - <% if env.get("preferences").as(Preferences).default_home != "Trending" %> - <%= translate(locale, "Trending") %> - Invidious - <% else %> - Invidious - <% end %> - -<% end %> - -<%= rendered "components/feed_menu" %> - -
    - -
    -
    - <% {"Default", "Music", "Gaming", "Movies"}.each do |option| %> -
    - <% if trending_type == option %> - <%= translate(locale, option) %> - <% else %> - - <%= translate(locale, option) %> - - <% end %> -
    - <% end %> -
    -
    -
    - -
    -
    -
    - -
    -<% trending.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    - - diff --git a/invidious/src/invidious/views/hashtag.ecr b/invidious/src/invidious/views/hashtag.ecr deleted file mode 100755 index 2000337..0000000 --- a/invidious/src/invidious/views/hashtag.ecr +++ /dev/null @@ -1,8 +0,0 @@ -<% content_for "header" do %> -<%= HTML.escape(hashtag) %> - Invidious -<% end %> - -
    - - -<%= rendered "components/items_paginated" %> diff --git a/invidious/src/invidious/views/licenses.ecr b/invidious/src/invidious/views/licenses.ecr deleted file mode 100755 index 667cfa3..0000000 --- a/invidious/src/invidious/views/licenses.ecr +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - -

    <%= translate(locale, "JavaScript license information") %>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - _helpers.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - handlers.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - community.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - embed.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - notifications.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - player.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - silvermine-videojs-quality-selector.min.js - - Expat - - <%= translate(locale, "source") %> -
    - sse.js - - Apache-2.0-only - - <%= translate(locale, "source") %> -
    - subscribe_widget.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - themes.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - videojs-contrib-quality-levels.js - - Apache-2.0-only - - <%= translate(locale, "source") %> -
    - videojs-http-source-selector.js - - Expat - - <%= translate(locale, "source") %> -
    - videojs-mobile-ui.js - - Expat - - <%= translate(locale, "source") %> -
    - videojs-markers.js - - Expat - - <%= translate(locale, "source") %> -
    - videojs-overlay.js - - Apache-2.0-only - - <%= translate(locale, "source") %> -
    - videojs-share.js - - Expat - - <%= translate(locale, "source") %> -
    - videojs-vtt-thumbnails.js - - Expat - - <%= translate(locale, "source") %> -
    - videojs-youtube-annotations.min.js - - GPL-3.0 - - <%= translate(locale, "source") %> -
    - videojs-vr.js - - Expat - - <%= translate(locale, "source") %> -
    - video.js - - Apache-2.0-only - - <%= translate(locale, "source") %> -
    - watch.js - - AGPL-3.0 - - <%= translate(locale, "source") %> -
    - - diff --git a/invidious/src/invidious/views/message.ecr b/invidious/src/invidious/views/message.ecr deleted file mode 100755 index 8c7bf61..0000000 --- a/invidious/src/invidious/views/message.ecr +++ /dev/null @@ -1,12 +0,0 @@ -<% content_for "header" do %> -"> - - Invidious - -<% end %> - -<%= rendered "components/feed_menu" %> - -

    - <%= message %> -

    diff --git a/invidious/src/invidious/views/mix.ecr b/invidious/src/invidious/views/mix.ecr deleted file mode 100755 index e55b00f..0000000 --- a/invidious/src/invidious/views/mix.ecr +++ /dev/null @@ -1,20 +0,0 @@ -<% content_for "header" do %> -<%= HTML.escape(mix.title) %> - Invidious -<% end %> - -
    -
    -

    <%= HTML.escape(mix.title) %>

    -
    -
    -

    - -

    -
    -
    - -
    -<% mix.videos.each do |item| %> - <%= rendered "components/item" %> -<% end %> -
    diff --git a/invidious/src/invidious/views/playlist.ecr b/invidious/src/invidious/views/playlist.ecr deleted file mode 100755 index 24ba437..0000000 --- a/invidious/src/invidious/views/playlist.ecr +++ /dev/null @@ -1,125 +0,0 @@ -<% title = HTML.escape(playlist.title) %> -<% author = HTML.escape(playlist.author) %> - -<% content_for "header" do %> -<%= title %> - Invidious - -<% end %> - -
    -

    <%= title %>

    - -
    - <%- if playlist.is_a?(InvidiousPlaylist) && playlist.author == user.try &.email -%> - - - - <%- else -%> -
    - <%- if IV::Database::Playlists.exists?(playlist.id) -%> - -  <%= translate(locale, "Subscribe") %> - - <%- else -%> - -  <%= translate(locale, "Unsubscribe") %> - - <%- end -%> -
    - <%- end -%> - - -
    -
    - -
    -
    - <% if playlist.is_a? InvidiousPlaylist %> - - <% if playlist.author == user.try &.email %> - <%= author %> | - <% else %> - <%= author %> | - <% end %> - <%= translate_count(locale, "generic_videos_count", playlist.video_count) %> | - <%= translate(locale, "Updated `x` ago", recode_date(playlist.updated, locale)) %> | - <% case playlist.as(InvidiousPlaylist).privacy when %> - <% when PlaylistPrivacy::Public %> - <%= translate(locale, "Public") %> - <% when PlaylistPrivacy::Unlisted %> - <%= translate(locale, "Unlisted") %> - <% when PlaylistPrivacy::Private %> - <%= translate(locale, "Private") %> - <% end %> - - <% else %> - - <% if !author.empty? %> - <%= author %> | - <% elsif !playlist.subtitle.nil? %> - <% subtitle = playlist.subtitle || "" %> - <%= HTML.escape(subtitle[0..subtitle.rindex(" • ") || subtitle.size]) %> | - <% end %> - <%= translate_count(locale, "generic_videos_count", playlist.video_count) %> | - <%= translate(locale, "Updated `x` ago", recode_date(playlist.updated, locale)) %> - - <% end %> - - <% if !playlist.is_a? InvidiousPlaylist %> - - <% end %> -
    -
    - -
    -
    <%= playlist.description_html %>
    -
    - -
    -
    -
    - -<% if playlist.is_a?(InvidiousPlaylist) && playlist.author == user.try &.email %> - - -<% end %> - - -<%= rendered "components/items_paginated" %> diff --git a/invidious/src/invidious/views/post.ecr b/invidious/src/invidious/views/post.ecr deleted file mode 100755 index fb03a44..0000000 --- a/invidious/src/invidious/views/post.ecr +++ /dev/null @@ -1,48 +0,0 @@ -<% content_for "header" do %> -Invidious -<% end %> - -
    -
    - <%= IV::Frontend::Comments.template_youtube(post_response.not_nil!, locale, thin_mode) %> -
    - - <% if nojs %> -
    - <% end %> -
    - -
    - <% if nojs %> - <%= comment_html %> - <% else %> - - <% end %> -
    -
    - - - - \ No newline at end of file diff --git a/invidious/src/invidious/views/privacy.ecr b/invidious/src/invidious/views/privacy.ecr deleted file mode 100755 index bc5ff40..0000000 --- a/invidious/src/invidious/views/privacy.ecr +++ /dev/null @@ -1,53 +0,0 @@ -<% content_for "header" do %> -Privacy Policy - Invidious -<% end %> - -
    -

    Privacy

    -

    This document concerns what data you provide to this website, the purpose of the data, how the data is stored, and how the data can be removed.

    - -

    Data you directly provide

    -

    Data that you provide to the website for the purpose of the site's operation (for example: an account name, account password, or channel subscription) will be stored in the website's database until the user decides to remove it. This data will not be intentionally shared with anyone or anything.

    -

    Information stored about a registered user is limited to:

    -
      -
    • a list of session tokens for remaining logged in across devices
    • -
    • the last time an account was updated (to provide accurate notifications)
    • -
    • a list of video IDs identifying notifications from a user's subscriptions
    • -
    • a list of channel UCIDs the user is subscribed to
    • -
    • a user ID (for persistent storage of subscriptions and preferences)
    • -
    • a json object containing user preferences
    • -
    • a hashed password
    • -
    • a randomly generated token for providing an RSS feed of a user's subscriptions
    • -
    • a list of video IDs identifying watched videos
    • -
    -

    Users can clear their watch history using the clear watch history page.

    - -

    Data you passively provide

    -

    When you request any resource from this website (for example: a page, a font, an image, or an API endpoint) information about the request may be logged.

    -

    Information about a request is limited to:

    -
      -
    • the time the request was made
    • -
    • the status code of the response
    • -
    • the method of the request
    • -
    • the requested URL
    • -
    • how long it took to complete the request.
    • -
    -

    No identifying information is logged, such as the visitor's cookie, user-agent, or IP address. Here are a couple lines to serve as an example:

    -
    2019-01-19 16:37:47 +00:00 200 GET /api/v1/comments/xrlETJYzH-c?format=html&hl=en-US 1345.88ms
    -2019-01-19 16:37:53 +00:00 200 GET /vi/r5P-f5arPXE/maxres.jpg 1085.41ms
    -2019-01-19 16:37:54 +00:00 200 GET /watch 7.04ms
    -

    This website does not store the visitor's user-agent or IP address and does not use fingerprinting, advertisements, or tracking of any form.

    -

    This website provides links to googlevideo.com to provide audio and video playback. googlevideo.com is owned by Google and is subject to their privacy policy.

    - -

    Data stored in your browser

    -

    This website uses browser cookies to authenticate registered users. This data consists of:

    -
      -
    • An account token to keep you logged into the website between visits, which is sent when any page is loaded while you are logged in
    • -
    -

    This website also provides an option to store site preferences, such as the theme or locale, without an account. Using this feature will store a cookie in the visitor's browser containing their preferences. This cookie is sent on every request and does not contain any identifying information.

    -

    You can remove this data from your browser by logging out of this website, or by using your browser's cookie-related controls to delete the data.

    - -

    Removal of data

    -

    To remove data stored in your browser, you can log out of the website, or you can use your browser's cookie-related controls to delete the data.

    -

    To remove data that has been stored in the website's database, you can use the delete my account page.

    -
    diff --git a/invidious/src/invidious/views/search.ecr b/invidious/src/invidious/views/search.ecr deleted file mode 100755 index b130021..0000000 --- a/invidious/src/invidious/views/search.ecr +++ /dev/null @@ -1,21 +0,0 @@ -<% content_for "header" do %> -<%= query.text.size > 30 ? HTML.escape(query.text[0,30].rstrip(".")) + "…" : HTML.escape(query.text) %> - Invidious - -<% end %> - - -<%= Invidious::Frontend::SearchFilters.generate(query.filters, query.text, query.page, locale) %> -
    - - -<%- if items.empty? -%> -
    -
    - <%= translate(locale, "search_message_no_results") %>

    - <%= translate(locale, "search_message_change_filters_or_query") %>

    - <%= translate(locale, "search_message_use_another_instance", redirect_url) %> -
    -
    -<%- else -%> - <%= rendered "components/items_paginated" %> -<%- end -%> diff --git a/invidious/src/invidious/views/search_homepage.ecr b/invidious/src/invidious/views/search_homepage.ecr deleted file mode 100755 index 2424a1c..0000000 --- a/invidious/src/invidious/views/search_homepage.ecr +++ /dev/null @@ -1,20 +0,0 @@ -<% content_for "header" do %> -"> - - Invidious - <%= translate(locale, "search") %> - - -<% end %> - -<%= rendered "components/feed_menu" %> - -
    - -
    - -
    -
    diff --git a/invidious/src/invidious/views/template.ecr b/invidious/src/invidious/views/template.ecr deleted file mode 100755 index 9904b4f..0000000 --- a/invidious/src/invidious/views/template.ecr +++ /dev/null @@ -1,177 +0,0 @@ -<% - locale = env.get("preferences").as(Preferences).locale - dark_mode = env.get("preferences").as(Preferences).dark_mode -%> - - - - - - - <%= yield_content "header" %> - - - - - - - - - - - - - - - - --theme"> - -
    -
    - - - <% if CONFIG.banner %> -
    -

    <%= CONFIG.banner %>

    -
    - <% end %> - - <%= content %> - - - -
    -
    - - - <% if env.get? "user" %> - - - <% if CONFIG.enable_user_notifications %> - - <% end %> - <% end %> - - - diff --git a/invidious/src/invidious/views/user/authorize_token.ecr b/invidious/src/invidious/views/user/authorize_token.ecr deleted file mode 100755 index 725f392..0000000 --- a/invidious/src/invidious/views/user/authorize_token.ecr +++ /dev/null @@ -1,78 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Token") %> - Invidious -<% end %> - -<% if env.get? "access_token" %> -
    -
    -

    - <%= translate(locale, "Token") %> -

    -
    - - -
    - -
    -

    - <%= env.get "access_token" %> -

    -
    -<% else %> -
    -
    - <% if callback_url %> - <%= translate(locale, "Authorize token for `x`?", "#{callback_url.scheme}://#{callback_url.host}") %> - <% else %> - <%= translate(locale, "Authorize token?") %> - <% end %> - -
    -
    -
      - <% scopes.each do |scope| %> -
    • <%= HTML.escape(scope) %>
    • - <% end %> -
    -
    -
    - -
    -
    - -
    - -
    - - <% scopes.each_with_index do |scope, i| %> - - <% end %> - <% if callback_url %> - - <% end %> - <% if expire %> - - <% end %> - - -
    -
    -<% end %> diff --git a/invidious/src/invidious/views/user/change_password.ecr b/invidious/src/invidious/views/user/change_password.ecr deleted file mode 100755 index 1b9eb82..0000000 --- a/invidious/src/invidious/views/user/change_password.ecr +++ /dev/null @@ -1,32 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Change password") %> - Invidious -<% end %> - -
    -
    -
    -
    -
    - <%= translate(locale, "Change password") %> - -
    - - "> - - - "> - - - "> - - - - -
    -
    -
    -
    -
    -
    diff --git a/invidious/src/invidious/views/user/clear_watch_history.ecr b/invidious/src/invidious/views/user/clear_watch_history.ecr deleted file mode 100755 index c9acbe4..0000000 --- a/invidious/src/invidious/views/user/clear_watch_history.ecr +++ /dev/null @@ -1,24 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Clear watch history") %> - Invidious -<% end %> - -
    -
    - <%= translate(locale, "Clear watch history?") %> - -
    -
    - -
    - -
    - - -
    -
    diff --git a/invidious/src/invidious/views/user/data_control.ecr b/invidious/src/invidious/views/user/data_control.ecr deleted file mode 100755 index 9ce42c9..0000000 --- a/invidious/src/invidious/views/user/data_control.ecr +++ /dev/null @@ -1,68 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Import and Export Data") %> - Invidious -<% end %> - -
    -
    -
    - <%= translate(locale, "Import") %> - -
    - - -
    - - - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - -
    - - <%= translate(locale, "Export") %> - - - - - - -
    -
    -
    diff --git a/invidious/src/invidious/views/user/delete_account.ecr b/invidious/src/invidious/views/user/delete_account.ecr deleted file mode 100755 index 67351bb..0000000 --- a/invidious/src/invidious/views/user/delete_account.ecr +++ /dev/null @@ -1,24 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Delete account") %> - Invidious -<% end %> - -
    -
    - <%= translate(locale, "Delete account?") %> - -
    -
    - -
    - -
    - - -
    -
    diff --git a/invidious/src/invidious/views/user/login.ecr b/invidious/src/invidious/views/user/login.ecr deleted file mode 100755 index 2b03d28..0000000 --- a/invidious/src/invidious/views/user/login.ecr +++ /dev/null @@ -1,77 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Log in") %> - Invidious -<% end %> - -
    -
    -
    -
    - <% case account_type when %> - <% else # "invidious" %> -
    -
    - <% if email %> - - <% else %> - - "> - <% end %> - - <% if password %> - - <% else %> - - "> - <% end %> - - <% if captcha %> - <% case captcha_type when %> - <% when "image" %> - <% captcha = captcha.not_nil! %> - - <% captcha[:tokens].each_with_index do |token, i| %> - - <% end %> - - - - <% else # "text" %> - <% captcha = captcha.not_nil! %> - <% captcha[:tokens].each_with_index do |token, i| %> - - <% end %> - - - "> - <% end %> - - - - <% case captcha_type when %> - <% when "image" %> - - <% else # "text" %> - - <% end %> - <% else %> - - <% end %> -
    -
    - <% end %> -
    -
    -
    -
    diff --git a/invidious/src/invidious/views/user/preferences.ecr b/invidious/src/invidious/views/user/preferences.ecr deleted file mode 100755 index 55349c5..0000000 --- a/invidious/src/invidious/views/user/preferences.ecr +++ /dev/null @@ -1,358 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Preferences") %> - Invidious -<% end %> - -
    -
    -
    - <%= translate(locale, "preferences_category_player") %> - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %> <% if CONFIG.disabled?("local") %>disabled<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - -
    - -
    - - -
    - - <% if !CONFIG.disabled?("dash") %> -
    - - -
    - <% end %> - -
    - - - <%= preferences.volume %> -
    - -
    - - <% preferences.comments.each_with_index do |comments, index| %> - - <% end %> -
    - -
    - - <% preferences.captions.each_with_index do |caption, index| %> - - <% end %> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - - <%= translate(locale, "preferences_category_visual") %> - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - checked<% end %>> -
    - - <% if env.get?("user") %> - <% feed_options = {"", "Popular", "Trending", "Subscriptions", "Playlists"} %> - <% else %> - <% feed_options = {"", "Popular", "Trending"} %> - <% end %> - -
    - - -
    - -
    - - <% (feed_options.size - 1).times do |index| %> - - <% end %> -
    - <% if env.get? "user" %> -
    - - checked<% end %>> -
    - <% end %> - - <%= translate(locale, "preferences_category_misc") %> - -
    - - checked<% end %>> -
    - - <% if env.get? "user" %> - <%= translate(locale, "preferences_category_subscription") %> - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - -
    - -
    - - -
    - -
    - <% if preferences.unseen_only %> - - <% else %> - - <% end %> - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - - <% if CONFIG.enable_user_notifications %> -
    - - checked<% end %>> -
    - - <% # Web notifications are only supported over HTTPS %> - <% if Kemal.config.ssl || CONFIG.https_only %> - - <% end %> - <% end %> - <% end %> - - <% if env.get?("user") && CONFIG.admins.includes? env.get?("user").as(Invidious::User).email %> - <%= translate(locale, "preferences_category_admin") %> - -
    - - -
    - -
    - - <% (feed_options.size - 1).times do |index| %> - - <% end %> -
    - -
    - - checked<% end %>> -
    - - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - -
    - - checked<% end %>> -
    - <% end %> - - <% if env.get? "user" %> - <%= translate(locale, "preferences_category_data") %> - - - - - - - - - - - - - - - - - <% end %> - -
    - -
    -
    -
    -
    diff --git a/invidious/src/invidious/views/user/subscription_manager.ecr b/invidious/src/invidious/views/user/subscription_manager.ecr deleted file mode 100755 index c9801f0..0000000 --- a/invidious/src/invidious/views/user/subscription_manager.ecr +++ /dev/null @@ -1,52 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Subscription manager") %> - Invidious -<% end %> - - - -<% subscriptions.each do |channel| %> -
    -
    - -
    -
    -

    -
    " method="post"> - "> - "> -
    -

    -
    -
    - - <% if subscriptions[-1].author != channel.author %> -
    - <% end %> -
    -<% end %> diff --git a/invidious/src/invidious/views/user/token_manager.ecr b/invidious/src/invidious/views/user/token_manager.ecr deleted file mode 100755 index a73fa04..0000000 --- a/invidious/src/invidious/views/user/token_manager.ecr +++ /dev/null @@ -1,44 +0,0 @@ -<% content_for "header" do %> -<%= translate(locale, "Token manager") %> - Invidious -<% end %> - -
    -
    -

    - <%= translate_count(locale, "tokens_count", tokens.size, NumberFormatting::HtmlSpan) %> -

    -
    -
    - -
    - -<% tokens.each do |token| %> -
    -
    -
    -

    - <%= token[:session] %> -

    -
    -
    -

    <%= translate(locale, "`x` ago", recode_date(token[:issued], locale)) %>

    -
    -
    -

    -
    " method="post"> - "> - "> -
    -

    -
    -
    - - <% if tokens[-1].try &.[:session]? != token[:session] %> -
    - <% end %> -
    -<% end %> diff --git a/invidious/src/invidious/views/watch.ecr b/invidious/src/invidious/views/watch.ecr deleted file mode 100755 index 7a1cf2c..0000000 --- a/invidious/src/invidious/views/watch.ecr +++ /dev/null @@ -1,374 +0,0 @@ -<% ucid = video.ucid %> -<% title = HTML.escape(video.title) %> -<% author = HTML.escape(video.author) %> - - -<% content_for "header" do %> - - -"> - - - - - - - - - - - - - - - - - - - - -<%= rendered "components/player_sources" %> -<%= title %> - Invidious - - - -<% end %> - - - -
    - <%= rendered "components/player" %> -
    - -
    -

    - <%= title %> - <% if params.listen %> - " href="/watch?<%= env.params.query %>&listen=0"> - - - <% else %> - " href="/watch?<%= env.params.query %>&listen=1"> - - - <% end %> -

    - - <% if !video.is_listed %> -

    - <%= translate(locale, "Unlisted") %> -

    - <% end %> - - <% if video.reason %> -

    - <%= video.reason %> -

    - <% elsif video.premiere_timestamp.try &.> Time.utc %> -

    - <%= video.premiere_timestamp.try { |t| translate(locale, "Premieres in `x`", recode_date((t - Time.utc).ago, locale)) } %> -

    - <% elsif video.live_now %> -

    - <%= video.premiere_timestamp.try { |t| translate(locale, "videoinfo_started_streaming_x_ago", recode_date((Time.utc - t).ago, locale)) } %> -

    - <% end %> -
    - -
    -
    -
    - - <%- - link_yt_watch = URI.new(scheme: "https", host: "www.youtube.com", path: "/watch", query: "v=#{video.id}") - link_yt_embed = URI.new(scheme: "https", host: "www.youtube.com", path: "/embed/#{video.id}") - - if !plid.nil? && !continuation.nil? - link_yt_param = URI::Params{"list" => [plid], "index" => [continuation.to_s]} - link_yt_watch = IV::HttpServer::Utils.add_params_to_url(link_yt_watch, link_yt_param) - link_yt_embed = IV::HttpServer::Utils.add_params_to_url(link_yt_embed, link_yt_param) - end - -%> - <%= translate(locale, "videoinfo_watch_on_youTube") %> - (<%= translate(locale, "videoinfo_youTube_embed_link") %>) - - -

    - <%- link_iv_other = IV::Frontend::Misc.redirect_url(env) -%> - <%= translate(locale, "Switch Invidious Instance") %> -

    - - - -

    - <% if params.annotations %> - - <%= translate(locale, "Hide annotations") %> - - <% else %> - - <%=translate(locale, "Show annotations")%> - - <% end %> -

    - - <% if user %> - <% playlists = Invidious::Database::Playlists.select_user_created_playlists(user.email) %> - <% if !playlists.empty? %> -
    -
    - - -
    - - "> - - - -
    - - - <% end %> - <% end %> - - <%= Invidious::Frontend::WatchPage.download_widget(locale, video, video_assets) %> - -

    <%= number_with_separator(video.views) %>

    -

    <%= number_with_separator(video.likes) %>

    - -

    <%= translate(locale, "Genre: ") %> - <% if !video.genre_url %> - <%= video.genre %> - <% else %> - <%= video.genre %> - <% end %> -

    - <% if video.license %> - <% if video.license.empty? %> -

    <%= translate(locale, "License: ") %><%= translate(locale, "Standard YouTube license") %>

    - <% else %> -

    <%= translate(locale, "License: ") %><%= video.license %>

    - <% end %> - <% end %> -

    <%= translate(locale, "Family friendly? ") %><%= translate_bool(locale, video.is_family_friendly) %>

    - - - - <% if video.allowed_regions.size != REGIONS.size %> -

    - <% if video.allowed_regions.size < REGIONS.size // 2 %> - <%= translate(locale, "Whitelisted regions: ") %><%= video.allowed_regions.join(", ") %> - <% else %> - <%= translate(locale, "Blacklisted regions: ") %><%= (REGIONS.to_a - video.allowed_regions).join(", ") %> - <% end %> -

    - <% end %> -
    -
    - -
    - -
    - - -
    -
    - <% sub_count_text = video.sub_count_text %> - <%= rendered "components/subscribe_widget" %> -
    -
    -
    - -
    -

    - <% if video.premiere_timestamp.try &.> Time.utc %> - <%= video.premiere_timestamp.try { |t| translate(locale, "Premieres `x`", t.to_s("%B %-d, %R UTC")) } %> - <% else %> - <%= translate(locale, "Shared `x`", video.published.to_s("%B %-d, %Y")) %> - <% end %> -

    - -
    - <% if video.description.size < 200 || params.extend_desc %> -
    <%= video.description_html %>
    - <% else %> - -
    <%= video.description_html %>
    - - <% end %> -
    - -
    - - <% if !video.music.empty? %> - - - -
    - <% video.music.each do |music| %> -
    -

    <%= translate(locale, "Song: ") %><%= music.song %>

    -

    <%= translate(locale, "Artist: ") %><%= music.artist %>

    -

    <%= translate(locale, "Album: ") %><%= music.album %>

    -
    - <% end %> -
    -
    - - <% end %> - -
    -
    - - <% if params.related_videos || plid %> -
    - <% if plid %> -
    - <% end %> - - <% if params.related_videos %> -
    - <% if !video.related_videos.empty? %> -
    style="display:none"<% end %>> -
    - - checked<% end %>> -
    -
    -
    - <% end %> - - <% video.related_videos.each do |rv| %> - <% if rv["id"]? %> -
    - -
    - <%- if !env.get("preferences").as(Preferences).thin_mode -%> - &listen=<%= params.listen %>"> - /mqdefault.jpg" alt="" /> - - <%- else -%> -
    - <%- end -%> - -
    - <%- if (length_seconds = rv["length_seconds"]?.try &.to_i?) && length_seconds != 0 -%> -

    <%= recode_length_seconds(length_seconds) %>

    - <%- end -%> -
    -
    - - - -
    -
    - <% if !rv["ucid"].empty? %> - "><%= rv["author"]? %><% if rv["author_verified"]? == "true" %> <% end %> - <% else %> - <%= rv["author"]? %><% if rv["author_verified"]? == "true" %> <% end %> - <% end %> -
    - -
    - <%= - views = rv["view_count"]?.try &.to_i? - views ||= rv["view_count_short"]?.try { |x| short_text_to_number(x) } - translate_count(locale, "generic_views_count", views || 0, NumberFormatting::Short) - %> -
    -
    - -
    - <% end %> - <% end %> -
    - <% end %> -
    - <% end %> -
    - - diff --git a/invidious/src/invidious/yt_backend/connection_pool.cr b/invidious/src/invidious/yt_backend/connection_pool.cr deleted file mode 100755 index 81cfb27..0000000 --- a/invidious/src/invidious/yt_backend/connection_pool.cr +++ /dev/null @@ -1,95 +0,0 @@ -def add_yt_headers(request) - request.headers.delete("User-Agent") if request.headers["User-Agent"] == "Crystal" - request.headers["User-Agent"] ||= "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" - - request.headers["Accept-Charset"] ||= "ISO-8859-1,utf-8;q=0.7,*;q=0.7" - request.headers["Accept"] ||= "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" - request.headers["Accept-Language"] ||= "en-us,en;q=0.5" - - # Preserve original cookies and add new YT consent cookie for EU servers - request.headers["Cookie"] = "#{request.headers["cookie"]?}; CONSENT=PENDING+#{Random.rand(100..999)}" - if !CONFIG.cookies.empty? - request.headers["Cookie"] = "#{(CONFIG.cookies.map { |c| "#{c.name}=#{c.value}" }).join("; ")}; #{request.headers["cookie"]?}" - end -end - -struct YoutubeConnectionPool - property! url : URI - property! capacity : Int32 - property! timeout : Float64 - property pool : DB::Pool(HTTP::Client) - - def initialize(url : URI, @capacity = 5, @timeout = 5.0) - @url = url - @pool = build_pool() - end - - def client(region = nil, &block) - if region - conn = make_client(url, region, force_resolve = true) - response = yield conn - else - conn = pool.checkout - begin - response = yield conn - rescue ex - conn.close - conn = HTTP::Client.new(url) - - conn.family = CONFIG.force_resolve - conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC - conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com" - response = yield conn - ensure - pool.release(conn) - end - end - - response - end - - private def build_pool - DB::Pool(HTTP::Client).new(initial_pool_size: 0, max_pool_size: capacity, max_idle_pool_size: capacity, checkout_timeout: timeout) do - conn = HTTP::Client.new(url) - conn.family = CONFIG.force_resolve - conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC - conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com" - conn - end - end -end - -def make_client(url : URI, region = nil, force_resolve : Bool = false) - client = HTTPClient.new(url, OpenSSL::SSL::Context::Client.insecure) - - # Some services do not support IPv6. - if force_resolve - client.family = CONFIG.force_resolve - end - - client.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com" - client.read_timeout = 10.seconds - client.connect_timeout = 10.seconds - - if region - PROXY_LIST[region]?.try &.sample(40).each do |proxy| - begin - proxy = HTTPProxy.new(proxy_host: proxy[:ip], proxy_port: proxy[:port]) - client.set_proxy(proxy) - break - rescue ex - end - end - end - - return client -end - -def make_client(url : URI, region = nil, force_resolve : Bool = false, &block) - client = make_client(url, region, force_resolve) - begin - yield client - ensure - client.close - end -end diff --git a/invidious/src/invidious/yt_backend/extractors.cr b/invidious/src/invidious/yt_backend/extractors.cr deleted file mode 100755 index 0e72957..0000000 --- a/invidious/src/invidious/yt_backend/extractors.cr +++ /dev/null @@ -1,901 +0,0 @@ -require "../helpers/serialized_yt_data" - -# This file contains helper methods to parse the Youtube API json data into -# neat little packages we can use - -# Tuple of Parsers/Extractors so we can easily cycle through them. -private ITEM_CONTAINER_EXTRACTOR = { - Extractors::YouTubeTabs, - Extractors::SearchResults, - Extractors::ContinuationContent, -} - -private ITEM_PARSERS = { - Parsers::RichItemRendererParser, - Parsers::VideoRendererParser, - Parsers::ChannelRendererParser, - Parsers::GridPlaylistRendererParser, - Parsers::PlaylistRendererParser, - Parsers::CategoryRendererParser, - Parsers::ReelItemRendererParser, - Parsers::ItemSectionRendererParser, - Parsers::ContinuationItemRendererParser, - Parsers::HashtagRendererParser, -} - -private alias InitialData = Hash(String, JSON::Any) - -record AuthorFallback, name : String, id : String - -# Namespace for logic relating to parsing InnerTube data into various datastructs. -# -# Each of the parsers in this namespace are accessed through the #process() method -# which validates the given data as applicable to itself. If it is applicable the given -# data is passed to the private `#parse()` method which returns a datastruct of the given -# type. Otherwise, nil is returned. -private module Parsers - # Parses a InnerTube videoRenderer into a SearchVideo. Returns nil when the given object isn't a videoRenderer - # - # A videoRenderer renders a video to click on within the YouTube and Invidious UI. It is **not** - # the watchable video itself. - # - # See specs for example. - # - # `videoRenderer`s can be found almost everywhere on YouTube. In categories, search results, channels, etc. - # - module VideoRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = (item["videoRenderer"]? || item["gridVideoRenderer"]?) - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - video_id = item_contents["videoId"].as_s - title = extract_text(item_contents["title"]?) || "" - - # Extract author information - if author_info = item_contents.dig?("ownerText", "runs", 0) - author = author_info["text"].as_s - author_id = HelperExtractors.get_browse_id(author_info) - elsif author_info = item_contents.dig?("shortBylineText", "runs", 0) - author = author_info["text"].as_s - author_id = HelperExtractors.get_browse_id(author_info) - else - author = author_fallback.name - author_id = author_fallback.id - end - - author_verified = has_verified_badge?(item_contents["ownerBadges"]?) - - # For live videos (and possibly recently premiered videos) there is no published information. - # Instead, in its place is the amount of people currently watching. This behavior should be replicated - # on Invidious once all features of livestreams are supported. On an unrelated note, defaulting to the current - # time for publishing isn't a good idea. - published = item_contents.dig?("publishedTimeText", "simpleText").try { |t| decode_date(t.as_s) } || Time.local - - # Typically views are stored under a "simpleText" in the "viewCountText". However, for - # livestreams and premiered it is stored under a "runs" array: [{"text":123}, {"text": "watching"}] - # When view count is disabled the "viewCountText" is not present on InnerTube data. - # TODO change default value to nil and typical encoding type to tuple storing type (watchers, views, etc) - # and count - view_count = item_contents.dig?("viewCountText", "simpleText").try &.as_s.gsub(/\D+/, "").to_i64? || 0_i64 - description_html = item_contents["descriptionSnippet"]?.try { |t| parse_content(t, video_id) } || "" - - # The length information generally exist in "lengthText". However, the info can sometimes - # be retrieved from "thumbnailOverlays" (e.g when the video is a "shorts" one). - if length_container = item_contents["lengthText"]? - length_seconds = decode_length_seconds(length_container["simpleText"].as_s) - elsif length_container = item_contents["thumbnailOverlays"]?.try &.as_a.find(&.["thumbnailOverlayTimeStatusRenderer"]?) - # This needs to only go down the `simpleText` path (if possible). If more situations came up that requires - # a specific pathway then we should add an argument to extract_text that'll make this possible - length_text = length_container.dig?("thumbnailOverlayTimeStatusRenderer", "text", "simpleText") - - if length_text - length_text = length_text.as_s - - if length_text == "SHORTS" - # Approximate length to one minute, as "shorts" generally don't exceed that length. - # TODO: Add some sort of metadata for the type of video (normal, live, premiere, shorts) - length_seconds = 60_i32 - else - length_seconds = decode_length_seconds(length_text) - end - else - length_seconds = 0 - end - else - length_seconds = 0 - end - - live_now = false - paid = false - premium = false - - premiere_timestamp = item_contents.dig?("upcomingEventData", "startTime").try { |t| Time.unix(t.as_s.to_i64) } - - item_contents["badges"]?.try &.as_a.each do |badge| - b = badge["metadataBadgeRenderer"] - case b["label"].as_s - when "LIVE NOW" - live_now = true - when "New", "4K", "CC" - # TODO - when "Premium" - # TODO: Potentially available as item_contents["topStandaloneBadge"]["metadataBadgeRenderer"] - premium = true - else nil # Ignore - end - end - - SearchVideo.new({ - title: title, - id: video_id, - author: author, - ucid: author_id, - published: published, - views: view_count, - description_html: description_html, - length_seconds: length_seconds, - live_now: live_now, - premium: premium, - premiere_timestamp: premiere_timestamp, - author_verified: author_verified, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses a InnerTube channelRenderer into a SearchChannel. Returns nil when the given object isn't a channelRenderer - # - # A channelRenderer renders a channel to click on within the YouTube and Invidious UI. It is **not** - # the channel page itself. - # - # See specs for example. - # - # `channelRenderer`s can be found almost everywhere on YouTube. In categories, search results, channels, etc. - # - module ChannelRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = (item["channelRenderer"]? || item["gridChannelRenderer"]?) - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - author = extract_text(item_contents["title"]) || author_fallback.name - author_id = item_contents["channelId"]?.try &.as_s || author_fallback.id - author_verified = has_verified_badge?(item_contents["ownerBadges"]?) - author_thumbnail = HelperExtractors.get_thumbnails(item_contents) - - # When public subscriber count is disabled, the subscriberCountText isn't sent by InnerTube. - # Always simpleText - # TODO change default value to nil - - subscriber_count = item_contents.dig?("subscriberCountText", "simpleText").try &.as_s - channel_handle = subscriber_count if (subscriber_count.try &.starts_with? "@") - - # Since youtube added channel handles, `VideoCountText` holds the number of - # subscribers and `subscriberCountText` holds the handle, except when the - # channel doesn't have a handle (e.g: some topic music channels). - # See https://github.com/iv-org/invidious/issues/3394#issuecomment-1321261688 - if !subscriber_count || !subscriber_count.includes? " subscriber" - subscriber_count = item_contents.dig?("videoCountText", "simpleText").try &.as_s - end - subscriber_count = subscriber_count - .try { |s| short_text_to_number(s.split(" ")[0]).to_i32 } || 0 - - # Auto-generated channels doesn't have videoCountText - # Taken from: https://github.com/iv-org/invidious/pull/2228#discussion_r717620922 - auto_generated = item_contents["videoCountText"]?.nil? - - video_count = HelperExtractors.get_video_count(item_contents) - description_html = item_contents["descriptionSnippet"]?.try { |t| parse_content(t) } || "" - - SearchChannel.new({ - author: author, - ucid: author_id, - author_thumbnail: author_thumbnail, - subscriber_count: subscriber_count, - video_count: video_count, - channel_handle: channel_handle, - description_html: description_html, - auto_generated: auto_generated, - author_verified: author_verified, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses an Innertube `hashtagTileRenderer` into a `SearchHashtag`. - # Returns `nil` when the given object is not a `hashtagTileRenderer`. - # - # A `hashtagTileRenderer` is a kind of search result. - # It can be found when searching for any hashtag (e.g "#hi" or "#shorts") - module HashtagRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["hashtagTileRenderer"]? - return self.parse(item_contents) - end - end - - private def self.parse(item_contents) - title = extract_text(item_contents["hashtag"]).not_nil! # E.g "#hi" - - # E.g "/hashtag/hi" - url = item_contents.dig?("onTapCommand", "commandMetadata", "webCommandMetadata", "url").try &.as_s - url ||= URI.encode_path("/hashtag/#{title.lchop('#')}") - - video_count_txt = extract_text(item_contents["hashtagVideoCount"]?) # E.g "203K videos" - channel_count_txt = extract_text(item_contents["hashtagChannelCount"]?) # E.g "81K channels" - - # Fallback for video/channel counts - if channel_count_txt.nil? || video_count_txt.nil? - # E.g: "203K videos • 81K channels" - info_text = extract_text(item_contents["hashtagInfoText"]?).try &.split(" • ") - - if info_text && info_text.size == 2 - video_count_txt ||= info_text[0] - channel_count_txt ||= info_text[1] - end - end - - return SearchHashtag.new({ - title: title, - url: url, - video_count: short_text_to_number(video_count_txt || ""), - channel_count: short_text_to_number(channel_count_txt || ""), - }) - rescue ex - LOGGER.debug("HashtagRendererParser: Failed to extract renderer.") - LOGGER.debug("HashtagRendererParser: Got exception: #{ex.message}") - return nil - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses a InnerTube gridPlaylistRenderer into a SearchPlaylist. Returns nil when the given object isn't a gridPlaylistRenderer - # - # A gridPlaylistRenderer renders a playlist, that is located in a grid, to click on within the YouTube and Invidious UI. - # It is **not** the playlist itself. - # - # See specs for example. - # - # `gridPlaylistRenderer`s can be found on the playlist-tabs of channels and expanded categories. - # - module GridPlaylistRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["gridPlaylistRenderer"]? - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - title = extract_text(item_contents["title"]) || "" - plid = item_contents["playlistId"]?.try &.as_s || "" - - author_verified = has_verified_badge?(item_contents["ownerBadges"]?) - - video_count = HelperExtractors.get_video_count(item_contents) - playlist_thumbnail = HelperExtractors.get_thumbnails(item_contents) - - SearchPlaylist.new({ - title: title, - id: plid, - author: author_fallback.name, - ucid: author_fallback.id, - video_count: video_count, - videos: [] of SearchPlaylistVideo, - thumbnail: playlist_thumbnail, - author_verified: author_verified, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses a InnerTube playlistRenderer into a SearchPlaylist. Returns nil when the given object isn't a playlistRenderer - # - # A playlistRenderer renders a playlist to click on within the YouTube and Invidious UI. It is **not** the playlist itself. - # - # See specs for example. - # - # `playlistRenderer`s can be found almost everywhere on YouTube. In categories, search results, recommended, etc. - # - module PlaylistRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["playlistRenderer"]? - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - title = extract_text(item_contents["title"]) || "" - plid = item_contents["playlistId"]?.try &.as_s || "" - - video_count = HelperExtractors.get_video_count(item_contents) - playlist_thumbnail = HelperExtractors.get_thumbnails_plural(item_contents) - - author_info = item_contents.dig?("shortBylineText", "runs", 0) - author = author_info.try &.["text"].as_s || author_fallback.name - author_id = author_info.try { |x| HelperExtractors.get_browse_id(x) } || author_fallback.id - author_verified = has_verified_badge?(item_contents["ownerBadges"]?) - - videos = item_contents["videos"]?.try &.as_a.map do |v| - v = v["childVideoRenderer"] - v_title = v.dig?("title", "simpleText").try &.as_s || "" - v_id = v["videoId"]?.try &.as_s || "" - v_length_seconds = v.dig?("lengthText", "simpleText").try { |t| decode_length_seconds(t.as_s) } || 0 - SearchPlaylistVideo.new({ - title: v_title, - id: v_id, - length_seconds: v_length_seconds, - }) - end || [] of SearchPlaylistVideo - - # TODO: item_contents["publishedTimeText"]? - - SearchPlaylist.new({ - title: title, - id: plid, - author: author, - ucid: author_id, - video_count: video_count, - videos: videos, - thumbnail: playlist_thumbnail, - author_verified: author_verified, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses a InnerTube shelfRenderer into a Category. Returns nil when the given object isn't a shelfRenderer - # - # A shelfRenderer renders divided sections on YouTube. IE "People also watched" in search results and - # the various organizational sections in the channel home page. A separate one (richShelfRenderer) is used - # for YouTube home. A shelfRenderer can also sometimes be expanded to show more content within it. - # - # See specs for example. - # - # `shelfRenderer`s can be found almost everywhere on YouTube. In categories, search results, channels, etc. - # - module CategoryRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["shelfRenderer"]? - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - title = extract_text(item_contents["title"]?) || "" - url = item_contents.dig?("endpoint", "commandMetadata", "webCommandMetadata", "url") - .try &.as_s - - # Sometimes a category can have badges. - badges = [] of Tuple(String, String) # (Badge style, label) - item_contents["badges"]?.try &.as_a.each do |badge| - badge = badge["metadataBadgeRenderer"] - badges << {badge["style"].as_s, badge["label"].as_s} - end - - # Category description - description_html = item_contents["subtitle"]?.try { |desc| parse_content(desc) } || "" - - # Content parsing - contents = [] of SearchItem - - # InnerTube recognizes some "special" categories, which are organized differently. - if special_category_container = item_contents["content"]? - if content_container = special_category_container["horizontalListRenderer"]? - elsif content_container = special_category_container["expandedShelfContentsRenderer"]? - elsif content_container = special_category_container["verticalListRenderer"]? - else - # Anything else, such as `horizontalMovieListRenderer` is currently unsupported. - return - end - else - # "Normal" category. - content_container = item_contents["contents"] - end - - content_container["items"]?.try &.as_a.each do |item| - result = parse_item(item, author_fallback.name, author_fallback.id) - contents << result if result.is_a?(SearchItem) - end - - Category.new({ - title: title, - contents: contents, - description_html: description_html, - url: url, - badges: badges, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses an InnerTube itemSectionRenderer into a SearchVideo. - # Returns nil when the given object isn't a ItemSectionRenderer - # - # A itemSectionRenderer seems to be a simple wrapper for a videoRenderer or a playlistRenderer, used - # by the result page for channel searches. It is located inside a continuationItems - # container.It is very similar to RichItemRendererParser - # - module ItemSectionRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item.dig?("itemSectionRenderer", "contents", 0) - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - child = VideoRendererParser.process(item_contents, author_fallback) - child ||= PlaylistRendererParser.process(item_contents, author_fallback) - - return child - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses an InnerTube richItemRenderer into a SearchVideo. - # Returns nil when the given object isn't a RichItemRenderer - # - # A richItemRenderer seems to be a simple wrapper for a videoRenderer, used - # by the result page for hashtags and for the podcast tab on channels. - # It is located inside a continuationItems container for hashtags. - # - module RichItemRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item.dig?("richItemRenderer", "content") - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - child = VideoRendererParser.process(item_contents, author_fallback) - child ||= ReelItemRendererParser.process(item_contents, author_fallback) - child ||= PlaylistRendererParser.process(item_contents, author_fallback) - return child - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses an InnerTube reelItemRenderer into a SearchVideo. - # Returns nil when the given object isn't a reelItemRenderer - # - # reelItemRenderer items are used in the new (2022) channel layout, - # in the "shorts" tab. - # - module ReelItemRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["reelItemRenderer"]? - return self.parse(item_contents, author_fallback) - end - end - - private def self.parse(item_contents, author_fallback) - video_id = item_contents["videoId"].as_s - - reel_player_overlay = item_contents.dig( - "navigationEndpoint", "reelWatchEndpoint", - "overlay", "reelPlayerOverlayRenderer" - ) - - if video_details_container = reel_player_overlay.dig?( - "reelPlayerHeaderSupportedRenderers", - "reelPlayerHeaderRenderer" - ) - # Author infos - - author = video_details_container - .dig?("channelTitleText", "runs", 0, "text") - .try &.as_s || author_fallback.name - - ucid = video_details_container - .dig?("channelNavigationEndpoint", "browseEndpoint", "browseId") - .try &.as_s || author_fallback.id - - # Title & publication date - - title = video_details_container.dig?("reelTitleText") - .try { |t| extract_text(t) } || "" - - published = video_details_container - .dig?("timestampText", "simpleText") - .try { |t| decode_date(t.as_s) } || Time.utc - - # View count - view_count_text = video_details_container.dig?("viewCountText", "simpleText") - else - author = author_fallback.name - ucid = author_fallback.id - published = Time.utc - title = item_contents.dig?("headline", "simpleText").try &.as_s || "" - end - # View count - - # View count used to be in the reelWatchEndpoint, but that changed? - view_count_text ||= item_contents.dig?("viewCountText", "simpleText") - - view_count = short_text_to_number(view_count_text.try &.as_s || "0") - - # Duration - - a11y_data = item_contents - .dig?("accessibility", "accessibilityData", "label") - .try &.as_s || "" - - regex_match = /- (?\d+ minutes? )?(?\d+ seconds?)+ -/.match(a11y_data) - - minutes = regex_match.try &.["min"]?.try &.to_i(strict: false) || 0 - seconds = regex_match.try &.["sec"]?.try &.to_i(strict: false) || 0 - - duration = (minutes*60 + seconds) - - SearchVideo.new({ - title: title, - id: video_id, - author: author, - ucid: ucid, - published: published, - views: view_count, - description_html: "", - length_seconds: duration, - live_now: false, - premium: false, - premiere_timestamp: Time.unix(0), - author_verified: false, - }) - end - - def self.parser_name - return {{@type.name}} - end - end - - # Parses an InnerTube continuationItemRenderer into a Continuation. - # Returns nil when the given object isn't a continuationItemRenderer. - # - # continuationItemRenderer contains various metadata ued to load more - # content (i.e when the user scrolls down). The interesting bit is the - # protobuf object known as the "continutation token". Previously, those - # were generated from sratch, but recent (as of 11/2022) Youtube changes - # are forcing us to extract them from replies. - # - module ContinuationItemRendererParser - def self.process(item : JSON::Any, author_fallback : AuthorFallback) - if item_contents = item["continuationItemRenderer"]? - return self.parse(item_contents) - end - end - - private def self.parse(item_contents) - token = item_contents - .dig?("continuationEndpoint", "continuationCommand", "token") - .try &.as_s - - return Continuation.new(token) if token - end - - def self.parser_name - return {{@type.name}} - end - end -end - -# The following are the extractors for extracting an array of items from -# the internal Youtube API's JSON response. The result is then packaged into -# a structure we can more easily use via the parsers above. Their internals are -# identical to the item parsers. - -# Namespace for logic relating to extracting InnerTube's initial response to items we can parse. -# -# Each of the extractors in this namespace are accessed through the #process() method -# which validates the given data as applicable to itself. If it is applicable the given -# data is passed to the private `#extract()` method which returns an array of -# parsable items. Otherwise, nil is returned. -# -# NOTE perhaps the result from here should be abstracted into a struct in order to -# get additional metadata regarding the container of the item(s). -private module Extractors - # Extracts items from the selected YouTube tab. - # - # YouTube tabs are typically stored under "twoColumnBrowseResultsRenderer" - # and is structured like this: - # - # "twoColumnBrowseResultsRenderer": { - # {"tabs": [ - # {"tabRenderer": { - # "endpoint": {...} - # "title": "Playlists", - # "selected": true, # Is nil unless tab is selected - # "content": {...}, - # ... - # }} - # ]} - # }] - # - module YouTubeTabs - def self.process(initial_data : InitialData) - if target = initial_data["twoColumnBrowseResultsRenderer"]? - self.extract(target) - end - end - - private def self.extract(target) - raw_items = [] of JSON::Any - content = extract_selected_tab(target["tabs"])["content"] - - if section_list_contents = content.dig?("sectionListRenderer", "contents") - raw_items = unpack_section_list(section_list_contents) - elsif rich_grid_contents = content.dig?("richGridRenderer", "contents") - raw_items = rich_grid_contents.as_a - end - - return raw_items - end - - private def self.unpack_section_list(contents) - raw_items = [] of JSON::Any - - contents.as_a.each do |item| - if item_section_content = item.dig?("itemSectionRenderer", "contents") - raw_items += self.unpack_item_section(item_section_content) - else - raw_items << item - end - end - - return raw_items - end - - private def self.unpack_item_section(contents) - raw_items = [] of JSON::Any - - contents.as_a.each do |item| - # Category extraction - if container = item.dig?("gridRenderer", "items") || item.dig?("items") - raw_items += container.as_a - else - raw_items << item - end - end - - return raw_items - end - - def self.extractor_name - return {{@type.name}} - end - end - - # Extracts items from the InnerTube response for search results - # - # Search results are typically stored under "twoColumnSearchResultsRenderer" - # and is structured like this: - # - # "twoColumnSearchResultsRenderer": { - # {"primaryContents": { - # {"sectionListRenderer": { - # "contents": [...], - # ..., - # "subMenu": {...}, - # "hideBottomSeparator": true, - # "targetId": "search-feed" - # }} - # }} - # } - # - module SearchResults - def self.process(initial_data : InitialData) - if target = initial_data["twoColumnSearchResultsRenderer"]? - self.extract(target) - end - end - - private def self.extract(target) - raw_items = [] of Array(JSON::Any) - - target.dig("primaryContents", "sectionListRenderer", "contents").as_a.each do |node| - if node = node["itemSectionRenderer"]? - raw_items << node["contents"].as_a - end - end - - return raw_items.flatten - end - - def self.extractor_name - return {{@type.name}} - end - end - - # Extracts continuation items from a InnerTube response - # - # Continuation items (on YouTube) are items which are appended to the - # end of the page for continuous scrolling. As such, in many cases, - # the items are lacking information such as author or category title, - # since the original results has already rendered them on the top of the page. - # - # The way they are structured is too varied to be accurately written down here. - # However, they all eventually lead to an array of parsable items after traversing - # through the JSON structure. - module ContinuationContent - def self.process(initial_data : InitialData) - if target = initial_data["continuationContents"]? - self.extract(target) - elsif target = initial_data["appendContinuationItemsAction"]? - self.extract(target) - elsif target = initial_data["reloadContinuationItemsCommand"]? - self.extract(target) - end - end - - private def self.extract(target) - content = target["continuationItems"]? - content ||= target.dig?("gridContinuation", "items") - content ||= target.dig?("richGridContinuation", "contents") - - return content.nil? ? [] of JSON::Any : content.as_a - end - - def self.extractor_name - return {{@type.name}} - end - end -end - -# Helper methods to aid in the parsing of InnerTube to data structs. -# -# Mostly used to extract out repeated structures to deal with code -# repetition. -module HelperExtractors - # Retrieves the amount of videos present within the given InnerTube data. - # - # Returns a 0 when it's unable to do so - def self.get_video_count(container : JSON::Any) : Int32 - if box = container["videoCountText"]? - if (extracted_text = extract_text(box)) && !extracted_text.includes? " subscriber" - return extracted_text.gsub(/\D/, "").to_i - else - return 0 - end - elsif box = container["videoCount"]? - return box.as_s.to_i - else - return 0 - end - end - - # Retrieves the amount of views/viewers a video has. - # Seems to be used on related videos only - # - # Returns "0" when unable to parse - def self.get_short_view_count(container : JSON::Any) : String - box = container["shortViewCountText"]? - return "0" if !box - - # Simpletext: "4M views" - # runs: {"text": "1.1K"},{"text":" watching"} - return box["simpleText"]?.try &.as_s.sub(" views", "") || - box.dig?("runs", 0, "text").try &.as_s || "0" - end - - # Retrieve lowest quality thumbnail from InnerTube data - # - # TODO allow configuration of image quality (-1 is highest) - # - # Raises when it's unable to parse from the given JSON data. - def self.get_thumbnails(container : JSON::Any) : String - return container.dig("thumbnail", "thumbnails", 0, "url").as_s - end - - # ditto - # - # YouTube sometimes sends the thumbnail as: - # {"thumbnails": [{"thumbnails": [{"url": "example.com"}, ...]}]} - def self.get_thumbnails_plural(container : JSON::Any) : String - return container.dig("thumbnails", 0, "thumbnails", 0, "url").as_s - end - - # Retrieves the ID required for querying the InnerTube browse endpoint. - # Returns an empty string when it's unable to do so - def self.get_browse_id(container) - return container.dig?("navigationEndpoint", "browseEndpoint", "browseId").try &.as_s || "" - end -end - -# Parses an item from Youtube's JSON response into a more usable structure. -# The end result can either be a SearchVideo, SearchPlaylist or SearchChannel. -def parse_item(item : JSON::Any, author_fallback : String? = "", author_id_fallback : String? = "") - # We "allow" nil values but secretly use empty strings instead. This is to save us the - # hassle of modifying every author_fallback and author_id_fallback arg usage - # which is more often than not nil. - author_fallback = AuthorFallback.new(author_fallback || "", author_id_fallback || "") - - # Cycles through all of the item parsers and attempt to parse the raw YT JSON data. - # Each parser automatically validates the data given to see if the data is - # applicable to itself. If not nil is returned and the next parser is attempted. - ITEM_PARSERS.each do |parser| - LOGGER.trace("parse_item: Attempting to parse item using \"#{parser.parser_name}\" (cycling...)") - - if result = parser.process(item, author_fallback) - LOGGER.debug("parse_item: Successfully parsed via #{parser.parser_name}") - return result - else - LOGGER.trace("parse_item: Parser \"#{parser.parser_name}\" does not apply. Cycling to the next one...") - end - end -end - -# Parses multiple items from YouTube's initial JSON response into a more usable structure. -# The end result is an array of SearchItem. -# -# This function yields the container so that items can be parsed separately. -# -def extract_items(initial_data : InitialData, &block) - if unpackaged_data = initial_data["contents"]?.try &.as_h - elsif unpackaged_data = initial_data["response"]?.try &.as_h - elsif unpackaged_data = initial_data.dig?("onResponseReceivedActions", 1).try &.as_h - elsif unpackaged_data = initial_data.dig?("onResponseReceivedActions", 0).try &.as_h - else - unpackaged_data = initial_data - end - - # This is identical to the parser cycling of parse_item(). - ITEM_CONTAINER_EXTRACTOR.each do |extractor| - LOGGER.trace("extract_items: Attempting to extract item container using \"#{extractor.extractor_name}\" (cycling...)") - - if container = extractor.process(unpackaged_data) - LOGGER.debug("extract_items: Successfully unpacked container with \"#{extractor.extractor_name}\"") - # Extract items in container - container.each { |item| yield item } - else - LOGGER.trace("extract_items: Extractor \"#{extractor.extractor_name}\" does not apply. Cycling to the next one...") - end - end -end - -# Wrapper using the block function above -def extract_items( - initial_data : InitialData, - author_fallback : String? = nil, - author_id_fallback : String? = nil -) : {Array(SearchItem), String?} - items = [] of SearchItem - continuation = nil - - extract_items(initial_data) do |item| - parsed = parse_item(item, author_fallback, author_id_fallback) - - case parsed - when .is_a?(Continuation) then continuation = parsed.token - when .is_a?(SearchItem) then items << parsed - end - end - - return items, continuation -end diff --git a/invidious/src/invidious/yt_backend/extractors_utils.cr b/invidious/src/invidious/yt_backend/extractors_utils.cr deleted file mode 100755 index 11d9595..0000000 --- a/invidious/src/invidious/yt_backend/extractors_utils.cr +++ /dev/null @@ -1,87 +0,0 @@ -# Extracts text from InnerTube response -# -# InnerTube can package text in three different formats -# "runs": [ -# {"text": "something"}, -# {"text": "cont"}, -# ... -# ] -# -# "SimpleText": "something" -# -# Or sometimes just none at all as with the data returned from -# category continuations. -# -# In order to facilitate calling this function with `#[]?`: -# A nil will be accepted. Of course, since nil cannot be parsed, -# another nil will be returned. -def extract_text(item : JSON::Any?) : String? - if item.nil? - return nil - end - - if text_container = item["simpleText"]? - return text_container.as_s - elsif text_container = item["runs"]? - return text_container.as_a.map(&.["text"].as_s).join("") - else - nil - end -end - -# Check if an "ownerBadges" or a "badges" element contains a verified badge. -# There is currently two known types of verified badges: -# -# "ownerBadges": [{ -# "metadataBadgeRenderer": { -# "icon": { "iconType": "CHECK_CIRCLE_THICK" }, -# "style": "BADGE_STYLE_TYPE_VERIFIED", -# "tooltip": "Verified", -# "accessibilityData": { "label": "Verified" } -# } -# }], -# -# "ownerBadges": [{ -# "metadataBadgeRenderer": { -# "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, -# "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", -# "tooltip": "Official Artist Channel", -# "accessibilityData": { "label": "Official Artist Channel" } -# } -# }], -# -def has_verified_badge?(badges : JSON::Any?) - return false if badges.nil? - - badges.as_a.each do |badge| - style = badge.dig("metadataBadgeRenderer", "style").as_s - - return true if style == "BADGE_STYLE_TYPE_VERIFIED" - return true if style == "BADGE_STYLE_TYPE_VERIFIED_ARTIST" - end - - return false -rescue ex - LOGGER.debug("Unable to parse owner badges. Got exception: #{ex.message}") - LOGGER.trace("Owner badges data: #{badges.to_json}") - - return false -end - -# This function extracts SearchVideo items from a Category. -# Categories are commonly returned in search results and trending pages. -def extract_category(category : Category) : Array(SearchVideo) - return category.contents.select(SearchVideo) -end - -# :ditto: -def extract_category(category : Category, &) - category.contents.select(SearchVideo).each do |item| - yield item - end -end - -def extract_selected_tab(tabs) - # Extract the selected tab from the array of tabs Youtube returns - return selected_target = tabs.as_a.select(&.["tabRenderer"]?.try &.["selected"]?.try &.as_bool)[0]["tabRenderer"] -end diff --git a/invidious/src/invidious/yt_backend/proxy.cr b/invidious/src/invidious/yt_backend/proxy.cr deleted file mode 100755 index 2d0fd4b..0000000 --- a/invidious/src/invidious/yt_backend/proxy.cr +++ /dev/null @@ -1,316 +0,0 @@ -# See https://github.com/crystal-lang/crystal/issues/2963 -class HTTPProxy - getter proxy_host : String - getter proxy_port : Int32 - getter options : Hash(Symbol, String) - getter tls : OpenSSL::SSL::Context::Client? - - def initialize(@proxy_host, @proxy_port = 80, @options = {} of Symbol => String) - end - - def open(host, port, tls = nil, connection_options = {} of Symbol => Float64 | Nil) - dns_timeout = connection_options.fetch(:dns_timeout, nil) - connect_timeout = connection_options.fetch(:connect_timeout, nil) - read_timeout = connection_options.fetch(:read_timeout, nil) - - socket = TCPSocket.new @proxy_host, @proxy_port, dns_timeout, connect_timeout - socket.read_timeout = read_timeout if read_timeout - socket.sync = true - - socket << "CONNECT #{host}:#{port} HTTP/1.1\r\n" - - if options[:user]? - credentials = Base64.strict_encode("#{options[:user]}:#{options[:password]}") - credentials = "#{credentials}\n".gsub(/\s/, "") - socket << "Proxy-Authorization: Basic #{credentials}\r\n" - end - - socket << "\r\n" - - resp = parse_response(socket) - - if resp[:code]? == 200 - {% if !flag?(:without_openssl) %} - if tls - tls_socket = OpenSSL::SSL::Socket::Client.new(socket, context: tls, sync_close: true, hostname: host) - socket = tls_socket - end - {% end %} - - return socket - else - socket.close - raise IO::Error.new(resp.inspect) - end - end - - private def parse_response(socket) - resp = {} of Symbol => Int32 | String | Hash(String, String) - - begin - version, code, reason = socket.gets.as(String).chomp.split(/ /, 3) - - headers = {} of String => String - - while (line = socket.gets.as(String)) && (line.chomp != "") - name, value = line.split(/:/, 2) - headers[name.strip] = value.strip - end - - resp[:version] = version - resp[:code] = code.to_i - resp[:reason] = reason - resp[:headers] = headers - rescue - end - - return resp - end -end - -class HTTPClient < HTTP::Client - def set_proxy(proxy : HTTPProxy) - begin - @io = proxy.open(host: @host, port: @port, tls: @tls, connection_options: proxy_connection_options) - rescue IO::Error - @io = nil - end - end - - def unset_proxy - @io = nil - end - - def proxy_connection_options - opts = {} of Symbol => Float64 | Nil - - opts[:dns_timeout] = @dns_timeout - opts[:connect_timeout] = @connect_timeout - opts[:read_timeout] = @read_timeout - - return opts - end -end - -def get_proxies(country_code = "US") - # return get_spys_proxies(country_code) - return get_nova_proxies(country_code) -end - -def filter_proxies(proxies) - proxies.select! do |proxy| - begin - client = HTTPClient.new(YT_URL) - client.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com" - client.read_timeout = 10.seconds - client.connect_timeout = 10.seconds - - proxy = HTTPProxy.new(proxy_host: proxy[:ip], proxy_port: proxy[:port]) - client.set_proxy(proxy) - - status_ok = client.head("/").status_code == 200 - client.close - status_ok - rescue ex - false - end - end - - return proxies -end - -def get_nova_proxies(country_code = "US") - country_code = country_code.downcase - client = HTTP::Client.new(URI.parse("https://www.proxynova.com")) - client.read_timeout = 10.seconds - client.connect_timeout = 10.seconds - - headers = HTTP::Headers.new - headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" - headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" - headers["Accept-Language"] = "Accept-Language: en-US,en;q=0.9" - headers["Host"] = "www.proxynova.com" - headers["Origin"] = "https://www.proxynova.com" - headers["Referer"] = "https://www.proxynova.com/proxy-server-list/country-#{country_code}/" - - response = client.get("/proxy-server-list/country-#{country_code}/", headers) - client.close - document = XML.parse_html(response.body) - - proxies = [] of {ip: String, port: Int32, score: Float64} - document.xpath_nodes(%q(//tr[@data-proxy-id])).each do |node| - ip = node.xpath_node(%q(.//td/abbr/script)).not_nil!.content - ip = ip.match(/document\.write\('(?[^']+)'.substr\(8\) \+ '(?[^']+)'/).not_nil! - ip = "#{ip["sub1"][8..-1]}#{ip["sub2"]}" - port = node.xpath_node(%q(.//td[2])).not_nil!.content.strip.to_i - - anchor = node.xpath_node(%q(.//td[4]/div)).not_nil! - speed = anchor["data-value"].to_f - latency = anchor["title"].to_f - uptime = node.xpath_node(%q(.//td[5]/span)).not_nil!.content.rchop("%").to_f - - # TODO: Tweak me - score = (uptime*4 + speed*2 + latency)/7 - proxies << {ip: ip, port: port, score: score} - end - - # proxies = proxies.sort_by { |proxy| proxy[:score] }.reverse - return proxies -end - -def get_spys_proxies(country_code = "US") - client = HTTP::Client.new(URI.parse("http://spys.one")) - client.read_timeout = 10.seconds - client.connect_timeout = 10.seconds - - headers = HTTP::Headers.new - headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" - headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" - headers["Accept-Language"] = "Accept-Language: en-US,en;q=0.9" - headers["Host"] = "spys.one" - headers["Origin"] = "http://spys.one" - headers["Referer"] = "http://spys.one/free-proxy-list/#{country_code}/" - headers["Content-Type"] = "application/x-www-form-urlencoded" - body = { - "xpp" => "5", - "xf1" => "0", - "xf2" => "0", - "xf4" => "0", - "xf5" => "1", - } - - response = client.post("/free-proxy-list/#{country_code}/", headers, form: body) - client.close - 20.times do - if response.status_code == 200 - break - end - response = client.post("/free-proxy-list/#{country_code}/", headers, form: body) - end - - response = XML.parse_html(response.body) - - mapping = response.xpath_node(%q(.//body/script)).not_nil!.content - mapping = mapping.match(/\}\('(?

    [^']+)',\d+,\d+,'(?[^']+)'/).not_nil! - p = mapping["p"].not_nil! - x = mapping["x"].not_nil! - mapping = decrypt_port(p, x) - - proxies = [] of {ip: String, port: Int32, score: Float64} - response = response.xpath_node(%q(//tr/td/table)).not_nil! - response.xpath_nodes(%q(.//tr)).each do |node| - if !node["onmouseover"]? - next - end - - ip = node.xpath_node(%q(.//td[1]/font[2])).to_s.match(/(?

    [^<]+)"\+(?[\d\D]+)\)$/).not_nil!["encrypted_port"] - - port = "" - encrypted_port.split("+").each do |number| - number = number.delete("()") - left_side, right_side = number.split("^") - result = mapping[left_side] ^ mapping[right_side] - port = "#{port}#{result}" - end - port = port.to_i - - latency = node.xpath_node(%q(.//td[6])).not_nil!.content.to_f - speed = node.xpath_node(%q(.//td[7]/font/table)).not_nil!["width"].to_f - uptime = node.xpath_node(%q(.//td[8]/font/acronym)).not_nil! - - # Skip proxies that are down - if uptime["title"].ends_with? "?" - next - end - - if md = uptime.content.match(/^\d+/) - uptime = md[0].to_f - else - next - end - - score = (uptime*4 + speed*2 + latency)/7 - - proxies << {ip: ip, port: port, score: score} - end - - proxies = proxies.sort_by!(&.[:score]).reverse! - return proxies -end - -def decrypt_port(p, x) - x = x.split("^") - s = {} of String => String - - 60.times do |i| - if x[i]?.try &.empty? - s[y_func(i)] = y_func(i) - else - s[y_func(i)] = x[i] - end - end - - x = s - p = p.gsub(/\b\w+\b/, x) - - p = p.split(";") - p = p.map(&.split("=")) - - mapping = {} of String => Int32 - p.each do |item| - if item == [""] - next - end - - key = item[0] - value = item[1] - value = value.split("^") - - if value.size == 1 - value = value[0].to_i - else - left_side = value[0].to_i? - left_side ||= mapping[value[0]] - right_side = value[1].to_i? - right_side ||= mapping[value[1]] - - value = left_side ^ right_side - end - - mapping[key] = value - end - - return mapping -end - -def y_func(c) - return (c < 60 ? "" : y_func((c/60).to_i)) + ((c = c % 60) > 35 ? ((c.to_u8 + 29).unsafe_chr) : c.to_s(36)) -end - -PROXY_LIST = { - "GB" => [{ip: "147.135.206.233", port: 3128}, {ip: "167.114.180.102", port: 8080}, {ip: "176.35.250.108", port: 8080}, {ip: "5.148.128.44", port: 80}, {ip: "62.7.85.234", port: 8080}, {ip: "88.150.135.10", port: 36624}], - "DE" => [{ip: "138.201.223.250", port: 31288}, {ip: "138.68.73.59", port: 32574}, {ip: "159.69.211.173", port: 3128}, {ip: "173.249.43.105", port: 3128}, {ip: "212.202.244.90", port: 8080}, {ip: "5.56.18.35", port: 38827}], - "FR" => [{ip: "137.74.254.242", port: 3128}, {ip: "151.80.143.155", port: 53281}, {ip: "178.33.150.97", port: 3128}, {ip: "37.187.2.31", port: 3128}, {ip: "5.135.164.72", port: 3128}, {ip: "5.39.91.73", port: 3128}, {ip: "51.38.162.2", port: 32231}, {ip: "51.38.217.121", port: 808}, {ip: "51.75.109.81", port: 3128}, {ip: "51.75.109.82", port: 3128}, {ip: "51.75.109.83", port: 3128}, {ip: "51.75.109.84", port: 3128}, {ip: "51.75.109.86", port: 3128}, {ip: "51.75.109.88", port: 3128}, {ip: "51.75.109.90", port: 3128}, {ip: "62.210.167.3", port: 3128}, {ip: "90.63.218.232", port: 8080}, {ip: "91.134.165.198", port: 9999}], - "IN" => [{ip: "1.186.151.206", port: 36253}, {ip: "1.186.63.130", port: 39142}, {ip: "103.105.40.1", port: 16538}, {ip: "103.105.40.153", port: 16538}, {ip: "103.106.148.203", port: 60227}, {ip: "103.106.148.207", port: 51451}, {ip: "103.12.246.12", port: 8080}, {ip: "103.14.235.109", port: 8080}, {ip: "103.14.235.26", port: 8080}, {ip: "103.198.172.4", port: 50820}, {ip: "103.205.112.1", port: 23500}, {ip: "103.209.64.19", port: 6666}, {ip: "103.211.76.5", port: 8080}, {ip: "103.216.82.19", port: 6666}, {ip: "103.216.82.190", port: 6666}, {ip: "103.216.82.209", port: 54806}, {ip: "103.216.82.214", port: 6666}, {ip: "103.216.82.37", port: 6666}, {ip: "103.216.82.44", port: 8080}, {ip: "103.216.82.50", port: 53281}, {ip: "103.22.173.230", port: 8080}, {ip: "103.224.38.2", port: 83}, {ip: "103.226.142.90", port: 41386}, {ip: "103.236.114.38", port: 49638}, {ip: "103.240.161.107", port: 6666}, {ip: "103.240.161.108", port: 6666}, {ip: "103.240.161.109", port: 6666}, {ip: "103.240.161.59", port: 48809}, {ip: "103.245.198.101", port: 8080}, {ip: "103.250.148.82", port: 6666}, {ip: "103.251.58.51", port: 61489}, {ip: "103.253.169.115", port: 32731}, {ip: "103.253.211.182", port: 8080}, {ip: "103.253.211.182", port: 80}, {ip: "103.255.234.169", port: 39847}, {ip: "103.42.161.118", port: 8080}, {ip: "103.42.162.30", port: 8080}, {ip: "103.42.162.50", port: 8080}, {ip: "103.42.162.58", port: 8080}, {ip: "103.46.233.12", port: 83}, {ip: "103.46.233.13", port: 83}, {ip: "103.46.233.16", port: 83}, {ip: "103.46.233.17", port: 83}, {ip: "103.46.233.21", port: 83}, {ip: "103.46.233.23", port: 83}, {ip: "103.46.233.29", port: 81}, {ip: "103.46.233.29", port: 83}, {ip: "103.46.233.50", port: 83}, {ip: "103.47.153.87", port: 8080}, {ip: "103.47.66.2", port: 39804}, {ip: "103.49.53.1", port: 81}, {ip: "103.52.220.1", port: 49068}, {ip: "103.56.228.166", port: 53281}, {ip: "103.56.30.128", port: 8080}, {ip: "103.65.193.17", port: 50862}, {ip: "103.65.195.1", port: 33960}, {ip: "103.69.220.14", port: 3128}, {ip: "103.70.128.84", port: 8080}, {ip: "103.70.128.86", port: 8080}, {ip: "103.70.131.74", port: 8080}, {ip: "103.70.146.250", port: 59563}, {ip: "103.72.216.194", port: 38345}, {ip: "103.75.161.38", port: 21776}, {ip: "103.76.253.155", port: 3128}, {ip: "103.87.104.137", port: 8080}, {ip: "110.235.198.3", port: 57660}, {ip: "114.69.229.161", port: 8080}, {ip: "117.196.231.201", port: 37769}, {ip: "117.211.166.214", port: 3128}, {ip: "117.240.175.51", port: 3128}, {ip: "117.240.210.155", port: 53281}, {ip: "117.240.59.115", port: 36127}, {ip: "117.242.154.73", port: 33889}, {ip: "117.244.15.243", port: 3128}, {ip: "119.235.54.3", port: 8080}, {ip: "120.138.117.102", port: 59308}, {ip: "123.108.200.185", port: 83}, {ip: "123.108.200.217", port: 82}, {ip: "123.176.43.218", port: 40524}, {ip: "125.21.43.82", port: 8080}, {ip: "125.62.192.225", port: 82}, {ip: "125.62.192.33", port: 84}, {ip: "125.62.194.1", port: 83}, {ip: "125.62.213.134", port: 82}, {ip: "125.62.213.18", port: 83}, {ip: "125.62.213.201", port: 84}, {ip: "125.62.213.242", port: 83}, {ip: "125.62.214.185", port: 84}, {ip: "139.5.26.27", port: 53281}, {ip: "14.102.67.101", port: 30337}, {ip: "14.142.122.134", port: 8080}, {ip: "150.129.114.194", port: 6666}, {ip: "150.129.151.62", port: 6666}, {ip: "150.129.171.115", port: 6666}, {ip: "150.129.201.30", port: 6666}, {ip: "157.119.207.38", port: 53281}, {ip: "175.100.185.151", port: 53281}, {ip: "182.18.177.114", port: 56173}, {ip: "182.73.194.170", port: 8080}, {ip: "182.74.85.230", port: 51214}, {ip: "183.82.116.56", port: 8080}, {ip: "183.82.32.56", port: 49551}, {ip: "183.87.14.229", port: 53281}, {ip: "183.87.14.250", port: 44915}, {ip: "202.134.160.168", port: 8080}, {ip: "202.134.166.1", port: 8080}, {ip: "202.134.180.50", port: 8080}, {ip: "202.62.84.210", port: 53281}, {ip: "203.192.193.225", port: 8080}, {ip: "203.192.195.14", port: 31062}, {ip: "203.192.217.11", port: 8080}, {ip: "223.196.83.182", port: 53281}, {ip: "27.116.20.169", port: 36630}, {ip: "27.116.20.209", port: 36630}, {ip: "27.116.51.21", port: 36033}, {ip: "43.224.8.114", port: 50333}, {ip: "43.224.8.116", port: 6666}, {ip: "43.224.8.124", port: 6666}, {ip: "43.224.8.86", port: 6666}, {ip: "43.225.20.73", port: 8080}, {ip: "43.225.23.26", port: 8080}, {ip: "43.230.196.98", port: 36569}, {ip: "43.240.5.225", port: 31777}, {ip: "43.241.28.248", port: 8080}, {ip: "43.242.209.201", port: 8080}, {ip: "43.246.139.82", port: 8080}, {ip: "43.248.73.86", port: 53281}, {ip: "43.251.170.145", port: 54059}, {ip: "45.112.57.230", port: 61222}, {ip: "45.115.171.30", port: 47949}, {ip: "45.121.29.254", port: 54858}, {ip: "45.123.26.146", port: 53281}, {ip: "45.125.61.193", port: 32804}, {ip: "45.125.61.209", port: 32804}, {ip: "45.127.121.194", port: 53281}, {ip: "45.250.226.14", port: 3128}, {ip: "45.250.226.38", port: 8080}, {ip: "45.250.226.47", port: 8080}, {ip: "45.250.226.55", port: 8080}, {ip: "49.249.251.86", port: 53281}], - "CN" => [{ip: "182.61.170.45", port: 3128}], - "RU" => [{ip: "109.106.139.225", port: 45689}, {ip: "109.161.48.228", port: 53281}, {ip: "109.167.224.198", port: 51919}, {ip: "109.172.57.250", port: 23500}, {ip: "109.194.2.126", port: 61822}, {ip: "109.195.150.128", port: 37564}, {ip: "109.201.96.171", port: 31773}, {ip: "109.201.97.204", port: 41258}, {ip: "109.201.97.235", port: 39125}, {ip: "109.206.140.74", port: 45991}, {ip: "109.206.148.31", port: 30797}, {ip: "109.69.75.5", port: 46347}, {ip: "109.71.181.170", port: 53983}, {ip: "109.74.132.190", port: 42663}, {ip: "109.74.143.45", port: 36529}, {ip: "109.75.140.158", port: 59916}, {ip: "109.95.84.114", port: 52125}, {ip: "130.255.12.24", port: 31004}, {ip: "134.19.147.72", port: 44812}, {ip: "134.90.181.7", port: 54353}, {ip: "145.255.6.171", port: 31252}, {ip: "146.120.227.3", port: 8080}, {ip: "149.255.112.194", port: 48968}, {ip: "158.46.127.222", port: 52574}, {ip: "158.46.43.144", port: 39120}, {ip: "158.58.130.185", port: 50016}, {ip: "158.58.132.12", port: 56962}, {ip: "158.58.133.106", port: 41258}, {ip: "158.58.133.13", port: 21213}, {ip: "176.101.0.47", port: 34471}, {ip: "176.101.89.226", port: 33470}, {ip: "176.106.12.65", port: 30120}, {ip: "176.107.80.110", port: 58901}, {ip: "176.110.121.9", port: 46322}, {ip: "176.110.121.90", port: 21776}, {ip: "176.111.97.18", port: 8080}, {ip: "176.112.106.230", port: 33996}, {ip: "176.112.110.40", port: 61142}, {ip: "176.113.116.70", port: 55589}, {ip: "176.113.27.192", port: 47337}, {ip: "176.115.197.118", port: 8080}, {ip: "176.117.255.182", port: 53100}, {ip: "176.120.200.69", port: 44331}, {ip: "176.124.123.93", port: 41258}, {ip: "176.192.124.98", port: 60787}, {ip: "176.192.5.238", port: 61227}, {ip: "176.192.8.206", port: 39422}, {ip: "176.193.15.94", port: 8080}, {ip: "176.196.195.170", port: 48129}, {ip: "176.196.198.154", port: 35252}, {ip: "176.196.238.234", port: 44648}, {ip: "176.196.239.46", port: 35656}, {ip: "176.196.246.6", port: 53281}, {ip: "176.196.84.138", port: 51336}, {ip: "176.197.145.246", port: 32649}, {ip: "176.197.99.142", port: 47278}, {ip: "176.215.1.108", port: 60339}, {ip: "176.215.170.147", port: 35604}, {ip: "176.56.23.14", port: 35340}, {ip: "176.62.185.54", port: 53883}, {ip: "176.74.13.110", port: 8080}, {ip: "178.130.29.226", port: 53295}, {ip: "178.170.254.178", port: 46788}, {ip: "178.213.13.136", port: 53281}, {ip: "178.218.104.8", port: 49707}, {ip: "178.219.183.163", port: 8080}, {ip: "178.237.180.34", port: 57307}, {ip: "178.57.101.212", port: 38020}, {ip: "178.57.101.235", port: 31309}, {ip: "178.64.190.133", port: 46688}, {ip: "178.75.1.111", port: 50411}, {ip: "178.75.27.131", port: 41879}, {ip: "185.13.35.178", port: 40654}, {ip: "185.15.189.67", port: 30215}, {ip: "185.175.119.137", port: 41258}, {ip: "185.18.111.194", port: 41258}, {ip: "185.19.176.237", port: 53281}, {ip: "185.190.40.115", port: 31747}, {ip: "185.216.195.134", port: 61287}, {ip: "185.22.172.94", port: 10010}, {ip: "185.22.172.94", port: 1448}, {ip: "185.22.174.65", port: 10010}, {ip: "185.22.174.65", port: 1448}, {ip: "185.23.64.100", port: 3130}, {ip: "185.23.82.39", port: 59248}, {ip: "185.233.94.105", port: 59288}, {ip: "185.233.94.146", port: 57736}, {ip: "185.3.68.54", port: 53500}, {ip: "185.32.120.177", port: 60724}, {ip: "185.34.20.164", port: 53700}, {ip: "185.34.23.43", port: 63238}, {ip: "185.51.60.141", port: 39935}, {ip: "185.61.92.228", port: 33060}, {ip: "185.61.93.67", port: 49107}, {ip: "185.7.233.66", port: 53504}, {ip: "185.72.225.10", port: 56285}, {ip: "185.75.5.158", port: 60819}, {ip: "185.9.86.186", port: 39345}, {ip: "188.133.136.10", port: 47113}, {ip: "188.168.75.254", port: 56899}, {ip: "188.170.41.6", port: 60332}, {ip: "188.187.189.142", port: 38264}, {ip: "188.234.151.103", port: 8080}, {ip: "188.235.11.88", port: 57143}, {ip: "188.235.137.196", port: 23500}, {ip: "188.244.175.2", port: 8080}, {ip: "188.255.82.136", port: 53281}, {ip: "188.43.4.117", port: 60577}, {ip: "188.68.95.166", port: 41258}, {ip: "188.92.242.180", port: 52048}, {ip: "188.93.242.213", port: 49774}, {ip: "192.162.193.243", port: 36910}, {ip: "192.162.214.11", port: 41258}, {ip: "193.106.170.133", port: 38591}, {ip: "193.232.113.244", port: 40412}, {ip: "193.232.234.130", port: 61932}, {ip: "193.242.177.105", port: 53281}, {ip: "193.242.178.50", port: 52376}, {ip: "193.242.178.90", port: 8080}, {ip: "193.33.101.152", port: 34611}, {ip: "194.114.128.149", port: 61213}, {ip: "194.135.15.146", port: 59328}, {ip: "194.135.216.178", port: 56805}, {ip: "194.135.75.74", port: 41258}, {ip: "194.146.201.67", port: 53281}, {ip: "194.186.18.46", port: 56408}, {ip: "194.186.20.62", port: 21231}, {ip: "194.190.171.214", port: 43960}, {ip: "194.9.27.82", port: 42720}, {ip: "195.133.232.58", port: 41733}, {ip: "195.14.114.116", port: 59530}, {ip: "195.14.114.24", port: 56897}, {ip: "195.158.250.97", port: 41582}, {ip: "195.16.48.142", port: 36083}, {ip: "195.191.183.169", port: 47238}, {ip: "195.206.45.112", port: 53281}, {ip: "195.208.172.70", port: 8080}, {ip: "195.209.141.67", port: 31927}, {ip: "195.209.176.2", port: 8080}, {ip: "195.210.144.166", port: 30088}, {ip: "195.211.160.88", port: 44464}, {ip: "195.218.144.182", port: 31705}, {ip: "195.46.168.147", port: 8080}, {ip: "195.9.188.78", port: 53281}, {ip: "195.9.209.10", port: 35242}, {ip: "195.9.223.246", port: 52098}, {ip: "195.9.237.66", port: 8080}, {ip: "195.9.91.66", port: 33199}, {ip: "195.91.132.20", port: 19600}, {ip: "195.98.183.82", port: 30953}, {ip: "212.104.82.246", port: 36495}, {ip: "212.119.229.18", port: 33852}, {ip: "212.13.97.122", port: 30466}, {ip: "212.19.21.19", port: 53264}, {ip: "212.19.5.157", port: 58442}, {ip: "212.19.8.223", port: 30281}, {ip: "212.19.8.239", port: 55602}, {ip: "212.192.202.207", port: 4550}, {ip: "212.22.80.224", port: 34822}, {ip: "212.26.247.178", port: 38418}, {ip: "212.33.228.161", port: 37971}, {ip: "212.33.243.83", port: 38605}, {ip: "212.34.53.126", port: 44369}, {ip: "212.5.107.81", port: 56481}, {ip: "212.7.230.7", port: 51405}, {ip: "212.77.138.161", port: 41258}, {ip: "213.108.221.201", port: 32800}, {ip: "213.109.7.135", port: 59918}, {ip: "213.128.9.204", port: 35549}, {ip: "213.134.196.12", port: 38723}, {ip: "213.168.37.86", port: 8080}, {ip: "213.187.118.184", port: 53281}, {ip: "213.21.23.98", port: 53281}, {ip: "213.210.67.166", port: 53281}, {ip: "213.234.0.242", port: 56503}, {ip: "213.247.192.131", port: 41258}, {ip: "213.251.226.208", port: 56900}, {ip: "213.33.155.80", port: 44387}, {ip: "213.33.199.194", port: 36411}, {ip: "213.33.224.82", port: 8080}, {ip: "213.59.153.19", port: 53281}, {ip: "217.10.45.103", port: 8080}, {ip: "217.107.197.39", port: 33628}, {ip: "217.116.60.66", port: 21231}, {ip: "217.195.87.58", port: 41258}, {ip: "217.197.239.54", port: 34463}, {ip: "217.74.161.42", port: 34175}, {ip: "217.8.84.76", port: 46378}, {ip: "31.131.67.14", port: 8080}, {ip: "31.132.127.142", port: 35432}, {ip: "31.132.218.252", port: 32423}, {ip: "31.173.17.118", port: 51317}, {ip: "31.193.124.70", port: 53281}, {ip: "31.210.211.147", port: 8080}, {ip: "31.220.183.217", port: 53281}, {ip: "31.29.212.82", port: 35066}, {ip: "31.42.254.24", port: 30912}, {ip: "31.47.189.14", port: 38473}, {ip: "37.113.129.98", port: 41665}, {ip: "37.192.103.164", port: 34835}, {ip: "37.192.194.50", port: 50165}, {ip: "37.192.99.151", port: 51417}, {ip: "37.205.83.91", port: 35888}, {ip: "37.233.85.155", port: 53281}, {ip: "37.235.167.66", port: 53281}, {ip: "37.235.65.2", port: 47816}, {ip: "37.235.67.178", port: 34450}, {ip: "37.9.134.133", port: 41262}, {ip: "46.150.174.90", port: 53281}, {ip: "46.151.156.198", port: 56013}, {ip: "46.16.226.10", port: 8080}, {ip: "46.163.131.55", port: 48306}, {ip: "46.173.191.51", port: 53281}, {ip: "46.174.222.61", port: 34977}, {ip: "46.180.96.79", port: 42319}, {ip: "46.181.151.79", port: 39386}, {ip: "46.21.74.130", port: 8080}, {ip: "46.227.162.98", port: 51558}, {ip: "46.229.187.169", port: 53281}, {ip: "46.229.67.198", port: 47437}, {ip: "46.243.179.221", port: 41598}, {ip: "46.254.217.54", port: 53281}, {ip: "46.32.68.188", port: 39707}, {ip: "46.39.224.112", port: 36765}, {ip: "46.63.162.171", port: 8080}, {ip: "46.73.33.253", port: 8080}, {ip: "5.128.32.12", port: 51959}, {ip: "5.129.155.3", port: 51390}, {ip: "5.129.16.27", port: 48935}, {ip: "5.141.81.65", port: 61853}, {ip: "5.16.15.234", port: 8080}, {ip: "5.167.51.235", port: 8080}, {ip: "5.167.96.238", port: 3128}, {ip: "5.19.165.235", port: 30793}, {ip: "5.35.93.157", port: 31773}, {ip: "5.59.137.90", port: 8888}, {ip: "5.8.207.160", port: 57192}, {ip: "62.122.97.66", port: 59143}, {ip: "62.148.151.253", port: 53570}, {ip: "62.152.85.158", port: 31156}, {ip: "62.165.54.153", port: 55522}, {ip: "62.173.140.14", port: 8080}, {ip: "62.173.155.206", port: 41258}, {ip: "62.182.206.19", port: 37715}, {ip: "62.213.14.166", port: 8080}, {ip: "62.76.123.224", port: 8080}, {ip: "77.221.220.133", port: 44331}, {ip: "77.232.153.248", port: 60950}, {ip: "77.233.10.37", port: 54210}, {ip: "77.244.27.109", port: 47554}, {ip: "77.37.142.203", port: 53281}, {ip: "77.39.29.29", port: 49243}, {ip: "77.75.6.34", port: 8080}, {ip: "77.87.102.7", port: 42601}, {ip: "77.94.121.212", port: 36896}, {ip: "77.94.121.51", port: 45293}, {ip: "78.110.154.177", port: 59888}, {ip: "78.140.201.226", port: 8090}, {ip: "78.153.4.122", port: 9001}, {ip: "78.156.225.170", port: 41258}, {ip: "78.156.243.146", port: 59730}, {ip: "78.29.14.201", port: 39001}, {ip: "78.81.24.112", port: 8080}, {ip: "78.85.36.203", port: 8080}, {ip: "79.104.219.125", port: 3128}, {ip: "79.104.55.134", port: 8080}, {ip: "79.137.181.170", port: 8080}, {ip: "79.173.124.194", port: 47832}, {ip: "79.173.124.207", port: 53281}, {ip: "79.174.186.168", port: 45710}, {ip: "79.175.51.13", port: 54853}, {ip: "79.175.57.77", port: 55477}, {ip: "80.234.107.118", port: 56952}, {ip: "80.237.6.1", port: 34880}, {ip: "80.243.14.182", port: 49320}, {ip: "80.251.48.215", port: 45157}, {ip: "80.254.121.66", port: 41055}, {ip: "80.254.125.236", port: 80}, {ip: "80.72.121.185", port: 52379}, {ip: "80.89.133.210", port: 3128}, {ip: "80.91.17.113", port: 41258}, {ip: "81.162.61.166", port: 40392}, {ip: "81.163.57.121", port: 41258}, {ip: "81.163.57.46", port: 41258}, {ip: "81.163.62.136", port: 41258}, {ip: "81.23.112.98", port: 55269}, {ip: "81.23.118.106", port: 60427}, {ip: "81.23.177.245", port: 8080}, {ip: "81.24.126.166", port: 8080}, {ip: "81.30.216.147", port: 41258}, {ip: "81.95.131.10", port: 44292}, {ip: "82.114.125.22", port: 8080}, {ip: "82.151.208.20", port: 8080}, {ip: "83.221.216.110", port: 47326}, {ip: "83.246.139.24", port: 8080}, {ip: "83.97.108.8", port: 41258}, {ip: "84.22.154.76", port: 8080}, {ip: "84.52.110.36", port: 38674}, {ip: "84.52.74.194", port: 8080}, {ip: "84.52.77.227", port: 41806}, {ip: "84.52.79.166", port: 43548}, {ip: "84.52.84.157", port: 44331}, {ip: "84.52.88.125", port: 32666}, {ip: "85.113.48.148", port: 8080}, {ip: "85.113.49.220", port: 8080}, {ip: "85.12.193.210", port: 58470}, {ip: "85.15.179.5", port: 8080}, {ip: "85.173.244.102", port: 53281}, {ip: "85.174.227.52", port: 59280}, {ip: "85.192.184.133", port: 8080}, {ip: "85.192.184.133", port: 80}, {ip: "85.21.240.193", port: 55820}, {ip: "85.21.63.219", port: 53281}, {ip: "85.235.190.18", port: 42494}, {ip: "85.237.56.193", port: 8080}, {ip: "85.91.119.6", port: 8080}, {ip: "86.102.116.30", port: 8080}, {ip: "86.110.30.146", port: 38109}, {ip: "87.117.3.129", port: 3128}, {ip: "87.225.108.195", port: 8080}, {ip: "87.228.103.111", port: 8080}, {ip: "87.228.103.43", port: 8080}, {ip: "87.229.143.10", port: 48872}, {ip: "87.249.205.103", port: 8080}, {ip: "87.249.21.193", port: 43079}, {ip: "87.255.13.217", port: 8080}, {ip: "88.147.159.167", port: 53281}, {ip: "88.200.225.32", port: 38583}, {ip: "88.204.59.177", port: 32666}, {ip: "88.84.209.69", port: 30819}, {ip: "88.87.72.72", port: 8080}, {ip: "88.87.79.20", port: 8080}, {ip: "88.87.91.163", port: 48513}, {ip: "88.87.93.20", port: 33277}, {ip: "89.109.12.82", port: 47972}, {ip: "89.109.21.43", port: 9090}, {ip: "89.109.239.183", port: 41041}, {ip: "89.109.54.137", port: 36469}, {ip: "89.17.37.218", port: 52957}, {ip: "89.189.130.103", port: 32626}, {ip: "89.189.159.214", port: 42530}, {ip: "89.189.174.121", port: 52636}, {ip: "89.23.18.29", port: 53281}, {ip: "89.249.251.21", port: 3128}, {ip: "89.250.149.114", port: 60981}, {ip: "89.250.17.209", port: 8080}, {ip: "89.250.19.173", port: 8080}, {ip: "90.150.87.172", port: 81}, {ip: "90.154.125.173", port: 33078}, {ip: "90.188.38.81", port: 60585}, {ip: "90.189.151.183", port: 32601}, {ip: "91.103.208.114", port: 57063}, {ip: "91.122.100.222", port: 44331}, {ip: "91.122.207.229", port: 8080}, {ip: "91.144.139.93", port: 3128}, {ip: "91.144.142.19", port: 44617}, {ip: "91.146.16.54", port: 57902}, {ip: "91.190.116.194", port: 38783}, {ip: "91.190.80.100", port: 31659}, {ip: "91.190.85.97", port: 34286}, {ip: "91.203.36.188", port: 8080}, {ip: "91.205.131.102", port: 8080}, {ip: "91.205.146.25", port: 37501}, {ip: "91.210.94.212", port: 52635}, {ip: "91.213.23.110", port: 8080}, {ip: "91.215.22.51", port: 53305}, {ip: "91.217.42.3", port: 8080}, {ip: "91.217.42.4", port: 8080}, {ip: "91.220.135.146", port: 41258}, {ip: "91.222.167.213", port: 38057}, {ip: "91.226.140.71", port: 33199}, {ip: "91.235.7.216", port: 59067}, {ip: "92.124.195.22", port: 3128}, {ip: "92.126.193.180", port: 8080}, {ip: "92.241.110.223", port: 53281}, {ip: "92.252.240.1", port: 53281}, {ip: "92.255.164.187", port: 3128}, {ip: "92.255.195.57", port: 53281}, {ip: "92.255.229.146", port: 55785}, {ip: "92.255.5.2", port: 41012}, {ip: "92.38.32.36", port: 56113}, {ip: "92.39.138.98", port: 31150}, {ip: "92.51.16.155", port: 46202}, {ip: "92.55.59.63", port: 33030}, {ip: "93.170.112.200", port: 47995}, {ip: "93.183.86.185", port: 53281}, {ip: "93.188.45.157", port: 8080}, {ip: "93.81.246.5", port: 53281}, {ip: "93.91.112.247", port: 41258}, {ip: "94.127.217.66", port: 40115}, {ip: "94.154.85.214", port: 8080}, {ip: "94.180.106.94", port: 32767}, {ip: "94.180.249.187", port: 38051}, {ip: "94.230.243.6", port: 8080}, {ip: "94.232.57.231", port: 51064}, {ip: "94.24.244.170", port: 48936}, {ip: "94.242.55.108", port: 10010}, {ip: "94.242.55.108", port: 1448}, {ip: "94.242.57.136", port: 10010}, {ip: "94.242.57.136", port: 1448}, {ip: "94.242.58.108", port: 10010}, {ip: "94.242.58.108", port: 1448}, {ip: "94.242.58.14", port: 10010}, {ip: "94.242.58.14", port: 1448}, {ip: "94.242.58.142", port: 10010}, {ip: "94.242.58.142", port: 1448}, {ip: "94.242.59.245", port: 10010}, {ip: "94.242.59.245", port: 1448}, {ip: "94.247.241.70", port: 53640}, {ip: "94.247.62.165", port: 33176}, {ip: "94.253.13.228", port: 54935}, {ip: "94.253.14.187", port: 55045}, {ip: "94.28.94.154", port: 46966}, {ip: "94.73.217.125", port: 40858}, {ip: "95.140.19.9", port: 8080}, {ip: "95.140.20.94", port: 33994}, {ip: "95.154.137.66", port: 41258}, {ip: "95.154.159.119", port: 44242}, {ip: "95.154.82.254", port: 52484}, {ip: "95.161.157.227", port: 43170}, {ip: "95.161.182.146", port: 33877}, {ip: "95.161.189.26", port: 61522}, {ip: "95.165.163.146", port: 8888}, {ip: "95.165.172.90", port: 60496}, {ip: "95.165.182.18", port: 38950}, {ip: "95.165.203.222", port: 33805}, {ip: "95.165.244.122", port: 58162}, {ip: "95.167.123.54", port: 58664}, {ip: "95.167.241.242", port: 49636}, {ip: "95.171.1.92", port: 35956}, {ip: "95.172.52.230", port: 35989}, {ip: "95.181.35.30", port: 40804}, {ip: "95.181.56.178", port: 39144}, {ip: "95.181.75.228", port: 53281}, {ip: "95.188.74.194", port: 57122}, {ip: "95.189.112.214", port: 35508}, {ip: "95.31.10.247", port: 30711}, {ip: "95.31.197.77", port: 41651}, {ip: "95.31.2.199", port: 33632}, {ip: "95.71.125.50", port: 49882}, {ip: "95.73.62.13", port: 32185}, {ip: "95.79.36.55", port: 44861}, {ip: "95.79.55.196", port: 53281}, {ip: "95.79.99.148", port: 3128}, {ip: "95.80.65.39", port: 43555}, {ip: "95.80.93.44", port: 41258}, {ip: "95.80.98.41", port: 8080}, {ip: "95.83.156.250", port: 58438}, {ip: "95.84.128.25", port: 33765}, {ip: "95.84.154.73", port: 57423}], - "CA" => [{ip: "144.217.161.149", port: 8080}, {ip: "24.37.9.6", port: 54154}, {ip: "54.39.138.144", port: 3128}, {ip: "54.39.138.145", port: 3128}, {ip: "54.39.138.151", port: 3128}, {ip: "54.39.138.152", port: 3128}, {ip: "54.39.138.153", port: 3128}, {ip: "54.39.138.154", port: 3128}, {ip: "54.39.138.155", port: 3128}, {ip: "54.39.138.156", port: 3128}, {ip: "54.39.138.157", port: 3128}, {ip: "54.39.53.104", port: 3128}, {ip: "66.70.167.113", port: 3128}, {ip: "66.70.167.116", port: 3128}, {ip: "66.70.167.117", port: 3128}, {ip: "66.70.167.119", port: 3128}, {ip: "66.70.167.120", port: 3128}, {ip: "66.70.167.125", port: 3128}, {ip: "66.70.188.148", port: 3128}, {ip: "70.35.213.229", port: 36127}, {ip: "70.65.233.174", port: 8080}, {ip: "72.139.24.66", port: 38861}, {ip: "74.15.191.160", port: 41564}], - "JP" => [{ip: "47.91.20.67", port: 8080}, {ip: "61.118.35.94", port: 55725}], - "IT" => [{ip: "109.70.201.97", port: 53517}, {ip: "176.31.82.212", port: 8080}, {ip: "185.132.228.118", port: 55583}, {ip: "185.49.58.88", port: 56006}, {ip: "185.94.89.179", port: 41258}, {ip: "213.203.134.10", port: 41258}, {ip: "217.61.172.12", port: 41369}, {ip: "46.232.143.126", port: 41258}, {ip: "46.232.143.253", port: 41258}, {ip: "93.67.154.125", port: 8080}, {ip: "93.67.154.125", port: 80}, {ip: "95.169.95.242", port: 53803}], - "TH" => [{ip: "1.10.184.166", port: 57330}, {ip: "1.10.186.100", port: 55011}, {ip: "1.10.186.209", port: 32431}, {ip: "1.10.186.245", port: 34360}, {ip: "1.10.186.93", port: 53711}, {ip: "1.10.187.118", port: 62000}, {ip: "1.10.187.34", port: 51635}, {ip: "1.10.187.43", port: 38715}, {ip: "1.10.188.181", port: 51093}, {ip: "1.10.188.83", port: 31940}, {ip: "1.10.188.95", port: 30593}, {ip: "1.10.189.58", port: 48564}, {ip: "1.179.157.237", port: 46178}, {ip: "1.179.164.213", port: 8080}, {ip: "1.179.198.37", port: 8080}, {ip: "1.20.100.99", port: 53794}, {ip: "1.20.101.221", port: 55707}, {ip: "1.20.101.254", port: 35394}, {ip: "1.20.101.80", port: 36234}, {ip: "1.20.102.133", port: 40296}, {ip: "1.20.103.13", port: 40544}, {ip: "1.20.103.56", port: 55422}, {ip: "1.20.96.234", port: 53142}, {ip: "1.20.97.54", port: 60122}, {ip: "1.20.99.63", port: 32123}, {ip: "101.108.92.20", port: 8080}, {ip: "101.109.143.71", port: 36127}, {ip: "101.51.141.110", port: 42860}, {ip: "101.51.141.60", port: 60417}, {ip: "103.246.17.237", port: 3128}, {ip: "110.164.73.131", port: 8080}, {ip: "110.164.87.80", port: 35844}, {ip: "110.77.134.106", port: 8080}, {ip: "113.53.29.92", port: 47297}, {ip: "113.53.83.192", port: 32780}, {ip: "113.53.83.195", port: 35686}, {ip: "113.53.91.214", port: 8080}, {ip: "115.87.27.0", port: 53276}, {ip: "118.172.211.3", port: 58535}, {ip: "118.172.211.40", port: 30430}, {ip: "118.174.196.174", port: 23500}, {ip: "118.174.196.203", port: 23500}, {ip: "118.174.220.107", port: 41222}, {ip: "118.174.220.110", port: 39025}, {ip: "118.174.220.115", port: 41011}, {ip: "118.174.220.118", port: 59556}, {ip: "118.174.220.136", port: 55041}, {ip: "118.174.220.163", port: 31561}, {ip: "118.174.220.168", port: 47455}, {ip: "118.174.220.231", port: 40924}, {ip: "118.174.220.238", port: 46326}, {ip: "118.174.234.13", port: 53084}, {ip: "118.174.234.26", port: 41926}, {ip: "118.174.234.32", port: 57403}, {ip: "118.174.234.59", port: 59149}, {ip: "118.174.234.68", port: 42626}, {ip: "118.174.234.83", port: 38006}, {ip: "118.175.207.104", port: 38959}, {ip: "118.175.244.111", port: 8080}, {ip: "118.175.93.207", port: 50738}, {ip: "122.154.38.53", port: 8080}, {ip: "122.154.59.6", port: 8080}, {ip: "122.154.72.102", port: 8080}, {ip: "122.155.222.98", port: 3128}, {ip: "124.121.22.121", port: 61699}, {ip: "125.24.156.16", port: 44321}, {ip: "125.25.165.105", port: 33850}, {ip: "125.25.165.111", port: 40808}, {ip: "125.25.165.42", port: 47221}, {ip: "125.25.201.14", port: 30100}, {ip: "125.26.99.135", port: 55637}, {ip: "125.26.99.141", port: 38537}, {ip: "125.26.99.148", port: 31818}, {ip: "134.236.247.137", port: 8080}, {ip: "159.192.98.224", port: 3128}, {ip: "171.100.2.154", port: 8080}, {ip: "171.100.9.126", port: 49163}, {ip: "180.180.156.116", port: 48431}, {ip: "180.180.156.46", port: 48507}, {ip: "180.180.156.87", port: 36628}, {ip: "180.180.218.204", port: 51565}, {ip: "180.180.8.34", port: 8080}, {ip: "182.52.238.125", port: 58861}, {ip: "182.52.74.73", port: 36286}, {ip: "182.52.74.76", port: 34084}, {ip: "182.52.74.77", port: 34825}, {ip: "182.52.74.78", port: 48708}, {ip: "182.52.90.45", port: 53799}, {ip: "182.53.206.155", port: 34307}, {ip: "182.53.206.43", port: 45330}, {ip: "182.53.206.49", port: 54228}, {ip: "183.88.212.141", port: 8080}, {ip: "183.88.212.184", port: 8080}, {ip: "183.88.213.85", port: 8080}, {ip: "183.88.214.47", port: 8080}, {ip: "184.82.128.211", port: 8080}, {ip: "202.183.201.13", port: 8081}, {ip: "202.29.20.151", port: 43083}, {ip: "203.150.172.151", port: 8080}, {ip: "27.131.157.94", port: 8080}, {ip: "27.145.100.22", port: 8080}, {ip: "27.145.100.243", port: 8080}, {ip: "49.231.196.114", port: 53281}, {ip: "58.97.72.83", port: 8080}, {ip: "61.19.145.66", port: 8080}], - "ES" => [{ip: "185.198.184.14", port: 48122}, {ip: "185.26.226.241", port: 36012}, {ip: "194.224.188.82", port: 3128}, {ip: "195.235.68.61", port: 3128}, {ip: "195.53.237.122", port: 3128}, {ip: "195.53.86.82", port: 3128}, {ip: "213.96.245.47", port: 8080}, {ip: "217.125.71.214", port: 33950}, {ip: "62.14.178.72", port: 53281}, {ip: "80.35.254.42", port: 53281}, {ip: "81.33.4.214", port: 61711}, {ip: "83.175.238.170", port: 53281}, {ip: "85.217.137.77", port: 3128}, {ip: "90.170.205.178", port: 33680}, {ip: "93.156.177.91", port: 53281}, {ip: "95.60.152.139", port: 37995}], - "AE" => [{ip: "178.32.5.90", port: 36159}], - "KR" => [{ip: "112.217.219.179", port: 3128}, {ip: "114.141.229.2", port: 58115}, {ip: "121.139.218.165", port: 31409}, {ip: "122.49.112.2", port: 38592}, {ip: "61.42.18.132", port: 53281}], - "BR" => [{ip: "128.201.97.157", port: 53281}, {ip: "128.201.97.158", port: 53281}, {ip: "131.0.246.157", port: 35252}, {ip: "131.161.26.90", port: 8080}, {ip: "131.72.143.100", port: 41396}, {ip: "138.0.24.66", port: 53281}, {ip: "138.121.130.50", port: 50600}, {ip: "138.121.155.127", port: 61932}, {ip: "138.121.32.133", port: 23492}, {ip: "138.185.176.63", port: 53281}, {ip: "138.204.233.190", port: 53281}, {ip: "138.204.233.242", port: 53281}, {ip: "138.219.71.74", port: 52688}, {ip: "138.36.107.24", port: 41184}, {ip: "138.94.115.166", port: 8080}, {ip: "143.0.188.161", port: 53281}, {ip: "143.202.218.135", port: 8080}, {ip: "143.208.2.42", port: 53281}, {ip: "143.208.79.223", port: 8080}, {ip: "143.255.52.102", port: 40687}, {ip: "143.255.52.116", port: 57856}, {ip: "143.255.52.117", port: 37279}, {ip: "144.217.22.128", port: 8080}, {ip: "168.0.8.225", port: 8080}, {ip: "168.0.8.55", port: 8080}, {ip: "168.121.139.54", port: 40056}, {ip: "168.181.168.23", port: 53281}, {ip: "168.181.170.198", port: 31935}, {ip: "168.232.198.25", port: 32009}, {ip: "168.232.198.35", port: 42267}, {ip: "168.232.207.145", port: 46342}, {ip: "170.0.104.107", port: 60337}, {ip: "170.0.112.2", port: 50359}, {ip: "170.0.112.229", port: 50359}, {ip: "170.238.118.107", port: 34314}, {ip: "170.239.144.9", port: 3128}, {ip: "170.247.29.138", port: 8080}, {ip: "170.81.237.36", port: 37124}, {ip: "170.84.51.74", port: 53281}, {ip: "170.84.60.222", port: 42981}, {ip: "177.10.202.67", port: 8080}, {ip: "177.101.60.86", port: 80}, {ip: "177.103.231.211", port: 55091}, {ip: "177.12.80.50", port: 50556}, {ip: "177.131.13.9", port: 20183}, {ip: "177.135.178.115", port: 42510}, {ip: "177.135.248.75", port: 20183}, {ip: "177.184.206.238", port: 39508}, {ip: "177.185.148.46", port: 58623}, {ip: "177.200.83.238", port: 8080}, {ip: "177.21.24.146", port: 666}, {ip: "177.220.188.120", port: 47556}, {ip: "177.220.188.213", port: 8080}, {ip: "177.222.229.243", port: 23500}, {ip: "177.234.161.42", port: 8080}, {ip: "177.36.11.241", port: 3128}, {ip: "177.36.12.193", port: 23500}, {ip: "177.37.199.175", port: 49608}, {ip: "177.39.187.70", port: 37315}, {ip: "177.44.175.199", port: 8080}, {ip: "177.46.148.126", port: 3128}, {ip: "177.46.148.142", port: 3128}, {ip: "177.47.194.98", port: 21231}, {ip: "177.5.98.58", port: 20183}, {ip: "177.52.55.19", port: 60901}, {ip: "177.54.200.66", port: 57526}, {ip: "177.55.255.74", port: 37147}, {ip: "177.67.217.94", port: 53281}, {ip: "177.73.248.6", port: 54381}, {ip: "177.73.4.234", port: 23500}, {ip: "177.75.143.211", port: 35955}, {ip: "177.75.161.206", port: 3128}, {ip: "177.75.86.49", port: 20183}, {ip: "177.8.216.106", port: 8080}, {ip: "177.8.216.114", port: 8080}, {ip: "177.8.37.247", port: 56052}, {ip: "177.84.216.17", port: 50569}, {ip: "177.85.200.254", port: 53095}, {ip: "177.87.169.1", port: 53281}, {ip: "179.107.97.178", port: 3128}, {ip: "179.109.144.25", port: 8080}, {ip: "179.109.193.137", port: 53281}, {ip: "179.189.125.206", port: 8080}, {ip: "179.97.30.46", port: 53100}, {ip: "186.192.195.220", port: 38983}, {ip: "186.193.11.226", port: 48999}, {ip: "186.193.26.106", port: 3128}, {ip: "186.208.220.248", port: 3128}, {ip: "186.209.243.142", port: 3128}, {ip: "186.209.243.233", port: 3128}, {ip: "186.211.106.227", port: 34334}, {ip: "186.211.160.178", port: 36756}, {ip: "186.215.133.170", port: 20183}, {ip: "186.216.81.21", port: 31773}, {ip: "186.219.214.13", port: 32708}, {ip: "186.224.94.6", port: 48957}, {ip: "186.225.97.246", port: 43082}, {ip: "186.226.171.163", port: 48698}, {ip: "186.226.179.2", port: 56089}, {ip: "186.226.234.67", port: 33834}, {ip: "186.228.147.58", port: 20183}, {ip: "186.233.97.163", port: 8888}, {ip: "186.248.170.82", port: 53281}, {ip: "186.249.213.101", port: 53482}, {ip: "186.249.213.65", port: 52018}, {ip: "186.250.213.225", port: 60774}, {ip: "186.250.96.70", port: 8080}, {ip: "186.250.96.77", port: 8080}, {ip: "187.1.43.246", port: 53396}, {ip: "187.108.36.250", port: 20183}, {ip: "187.108.38.10", port: 20183}, {ip: "187.109.36.251", port: 20183}, {ip: "187.109.40.9", port: 20183}, {ip: "187.109.56.101", port: 20183}, {ip: "187.111.90.89", port: 53281}, {ip: "187.115.10.50", port: 20183}, {ip: "187.19.62.7", port: 59010}, {ip: "187.33.79.61", port: 33469}, {ip: "187.35.158.150", port: 38872}, {ip: "187.44.1.167", port: 8080}, {ip: "187.45.127.87", port: 20183}, {ip: "187.45.156.109", port: 8080}, {ip: "187.5.218.215", port: 20183}, {ip: "187.58.65.225", port: 3128}, {ip: "187.63.111.37", port: 3128}, {ip: "187.72.166.10", port: 8080}, {ip: "187.73.68.14", port: 53281}, {ip: "187.84.177.6", port: 45903}, {ip: "187.84.191.170", port: 43936}, {ip: "187.87.204.210", port: 45597}, {ip: "187.87.39.247", port: 31793}, {ip: "189.1.16.162", port: 23500}, {ip: "189.113.124.162", port: 8080}, {ip: "189.124.195.185", port: 37318}, {ip: "189.3.196.18", port: 61595}, {ip: "189.37.33.59", port: 35532}, {ip: "189.7.49.66", port: 42700}, {ip: "189.90.194.35", port: 30843}, {ip: "189.90.248.75", port: 8080}, {ip: "189.91.231.43", port: 3128}, {ip: "191.239.243.156", port: 3128}, {ip: "191.240.154.246", port: 23500}, {ip: "191.240.156.154", port: 36127}, {ip: "191.240.99.142", port: 9090}, {ip: "191.241.226.230", port: 53281}, {ip: "191.241.228.74", port: 20183}, {ip: "191.241.228.78", port: 20183}, {ip: "191.241.33.238", port: 39188}, {ip: "191.241.36.170", port: 8080}, {ip: "191.241.36.218", port: 3128}, {ip: "191.242.182.132", port: 8081}, {ip: "191.243.221.130", port: 3128}, {ip: "191.255.207.231", port: 20183}, {ip: "191.36.192.196", port: 3128}, {ip: "191.36.244.230", port: 51377}, {ip: "191.5.0.79", port: 53281}, {ip: "191.6.228.6", port: 53281}, {ip: "191.7.193.18", port: 38133}, {ip: "191.7.20.134", port: 3128}, {ip: "192.140.91.173", port: 20183}, {ip: "200.150.86.138", port: 44677}, {ip: "200.155.36.185", port: 3128}, {ip: "200.155.36.188", port: 3128}, {ip: "200.155.39.41", port: 3128}, {ip: "200.174.158.26", port: 34112}, {ip: "200.187.177.105", port: 20183}, {ip: "200.187.87.138", port: 20183}, {ip: "200.192.252.201", port: 8080}, {ip: "200.192.255.102", port: 8080}, {ip: "200.203.144.2", port: 50262}, {ip: "200.229.238.42", port: 20183}, {ip: "200.233.134.85", port: 43172}, {ip: "200.233.136.177", port: 20183}, {ip: "200.241.44.3", port: 20183}, {ip: "200.255.122.170", port: 8080}, {ip: "200.255.122.174", port: 8080}, {ip: "201.12.21.57", port: 8080}, {ip: "201.131.224.21", port: 56200}, {ip: "201.182.223.16", port: 37492}, {ip: "201.20.89.126", port: 8080}, {ip: "201.22.95.10", port: 8080}, {ip: "201.57.167.34", port: 8080}, {ip: "201.59.200.246", port: 80}, {ip: "201.6.167.178", port: 3128}, {ip: "201.90.36.194", port: 3128}, {ip: "45.226.20.6", port: 8080}, {ip: "45.234.139.129", port: 20183}, {ip: "45.234.200.18", port: 53281}, {ip: "45.235.87.4", port: 51996}, {ip: "45.6.136.38", port: 53281}, {ip: "45.6.80.131", port: 52080}, {ip: "45.6.93.10", port: 8080}, {ip: "45.71.108.162", port: 53281}], - "PK" => [{ip: "103.18.243.154", port: 8080}, {ip: "110.36.218.126", port: 36651}, {ip: "110.36.234.210", port: 8080}, {ip: "110.39.162.74", port: 53281}, {ip: "110.39.174.58", port: 8080}, {ip: "111.68.108.34", port: 8080}, {ip: "125.209.116.182", port: 31653}, {ip: "125.209.78.21", port: 8080}, {ip: "125.209.82.78", port: 35087}, {ip: "180.92.156.150", port: 8080}, {ip: "202.142.158.114", port: 8080}, {ip: "202.147.173.10", port: 8080}, {ip: "202.147.173.10", port: 80}, {ip: "202.69.38.82", port: 8080}, {ip: "203.128.16.126", port: 59538}, {ip: "203.128.16.154", port: 33002}, {ip: "27.255.4.170", port: 8080}], - "ID" => [{ip: "101.128.68.113", port: 8080}, {ip: "101.255.116.113", port: 53281}, {ip: "101.255.120.170", port: 6969}, {ip: "101.255.121.74", port: 8080}, {ip: "101.255.124.242", port: 8080}, {ip: "101.255.124.242", port: 80}, {ip: "101.255.56.138", port: 53560}, {ip: "103.10.171.132", port: 41043}, {ip: "103.10.81.172", port: 80}, {ip: "103.108.158.3", port: 48196}, {ip: "103.111.219.159", port: 53281}, {ip: "103.111.54.26", port: 49781}, {ip: "103.111.54.74", port: 8080}, {ip: "103.19.110.177", port: 8080}, {ip: "103.2.146.66", port: 49089}, {ip: "103.206.168.177", port: 53281}, {ip: "103.206.253.58", port: 49573}, {ip: "103.21.92.254", port: 33929}, {ip: "103.226.49.83", port: 23500}, {ip: "103.227.147.142", port: 37581}, {ip: "103.23.101.58", port: 8080}, {ip: "103.24.107.2", port: 8181}, {ip: "103.245.19.222", port: 53281}, {ip: "103.247.122.38", port: 8080}, {ip: "103.247.218.166", port: 3128}, {ip: "103.248.219.26", port: 53634}, {ip: "103.253.2.165", port: 33543}, {ip: "103.253.2.168", port: 51229}, {ip: "103.253.2.174", port: 30827}, {ip: "103.28.114.134", port: 8080}, {ip: "103.28.220.73", port: 53281}, {ip: "103.30.246.47", port: 3128}, {ip: "103.31.45.169", port: 57655}, {ip: "103.41.122.14", port: 53281}, {ip: "103.75.101.97", port: 8080}, {ip: "103.76.17.151", port: 23500}, {ip: "103.76.50.181", port: 8080}, {ip: "103.76.50.181", port: 80}, {ip: "103.76.50.182", port: 8080}, {ip: "103.78.74.170", port: 3128}, {ip: "103.78.80.194", port: 33442}, {ip: "103.8.122.5", port: 53297}, {ip: "103.80.236.107", port: 53281}, {ip: "103.80.238.203", port: 53281}, {ip: "103.86.140.74", port: 59538}, {ip: "103.94.122.254", port: 8080}, {ip: "103.94.125.244", port: 41508}, {ip: "103.94.169.19", port: 8080}, {ip: "103.94.7.254", port: 53281}, {ip: "106.0.51.50", port: 17385}, {ip: "110.93.13.202", port: 34881}, {ip: "112.78.37.6", port: 54791}, {ip: "114.199.110.58", port: 55898}, {ip: "114.199.112.170", port: 23500}, {ip: "114.199.123.194", port: 8080}, {ip: "114.57.33.162", port: 46935}, {ip: "114.57.33.214", port: 8080}, {ip: "114.6.197.254", port: 8080}, {ip: "114.7.15.146", port: 8080}, {ip: "114.7.162.254", port: 53281}, {ip: "115.124.75.226", port: 53990}, {ip: "115.124.75.228", port: 3128}, {ip: "117.102.78.42", port: 8080}, {ip: "117.102.93.251", port: 8080}, {ip: "117.102.94.186", port: 8080}, {ip: "117.102.94.186", port: 80}, {ip: "117.103.2.249", port: 58276}, {ip: "117.54.13.174", port: 34190}, {ip: "117.74.124.129", port: 8088}, {ip: "118.97.100.83", port: 35220}, {ip: "118.97.191.162", port: 80}, {ip: "118.97.191.203", port: 8080}, {ip: "118.97.36.18", port: 8080}, {ip: "118.97.73.85", port: 53281}, {ip: "118.99.105.226", port: 8080}, {ip: "119.252.168.53", port: 53281}, {ip: "122.248.45.35", port: 53281}, {ip: "122.50.6.186", port: 8080}, {ip: "122.50.6.186", port: 80}, {ip: "123.231.226.114", port: 47562}, {ip: "123.255.202.83", port: 32523}, {ip: "124.158.164.195", port: 8080}, {ip: "124.81.99.30", port: 3128}, {ip: "137.59.162.10", port: 3128}, {ip: "139.0.29.20", port: 59532}, {ip: "139.255.123.194", port: 4550}, {ip: "139.255.16.171", port: 31773}, {ip: "139.255.17.2", port: 47421}, {ip: "139.255.19.162", port: 42371}, {ip: "139.255.7.81", port: 53281}, {ip: "139.255.91.115", port: 8080}, {ip: "139.255.92.26", port: 53281}, {ip: "158.140.181.140", port: 54041}, {ip: "160.202.40.20", port: 55655}, {ip: "175.103.42.147", port: 8080}, {ip: "180.178.98.198", port: 8080}, {ip: "180.250.101.146", port: 8080}, {ip: "182.23.107.212", port: 3128}, {ip: "182.23.2.101", port: 49833}, {ip: "182.23.7.226", port: 8080}, {ip: "182.253.209.203", port: 3128}, {ip: "183.91.66.210", port: 80}, {ip: "202.137.10.179", port: 57338}, {ip: "202.137.25.53", port: 3128}, {ip: "202.137.25.8", port: 8080}, {ip: "202.138.242.76", port: 4550}, {ip: "202.138.249.202", port: 43108}, {ip: "202.148.2.254", port: 8000}, {ip: "202.162.201.94", port: 53281}, {ip: "202.165.47.26", port: 8080}, {ip: "202.43.167.130", port: 8080}, {ip: "202.51.126.10", port: 53281}, {ip: "202.59.171.164", port: 58567}, {ip: "202.93.128.98", port: 3128}, {ip: "203.142.72.114", port: 808}, {ip: "203.153.117.65", port: 54144}, {ip: "203.189.89.1", port: 53281}, {ip: "203.77.239.18", port: 37002}, {ip: "203.99.123.25", port: 61502}, {ip: "220.247.168.163", port: 53281}, {ip: "220.247.173.154", port: 53281}, {ip: "220.247.174.206", port: 53445}, {ip: "222.124.131.211", port: 47343}, {ip: "222.124.173.146", port: 53281}, {ip: "222.124.2.131", port: 8080}, {ip: "222.124.2.186", port: 8080}, {ip: "222.124.215.187", port: 38913}, {ip: "222.124.221.179", port: 53281}, {ip: "223.25.101.242", port: 59504}, {ip: "223.25.97.62", port: 8080}, {ip: "223.25.99.38", port: 80}, {ip: "27.111.44.202", port: 80}, {ip: "27.111.47.3", port: 51144}, {ip: "36.37.124.234", port: 36179}, {ip: "36.37.124.235", port: 36179}, {ip: "36.37.81.135", port: 8080}, {ip: "36.37.89.98", port: 32323}, {ip: "36.66.217.179", port: 8080}, {ip: "36.66.98.6", port: 53281}, {ip: "36.67.143.183", port: 48746}, {ip: "36.67.206.187", port: 8080}, {ip: "36.67.32.87", port: 8080}, {ip: "36.67.93.220", port: 3128}, {ip: "36.67.93.220", port: 80}, {ip: "36.89.10.51", port: 34115}, {ip: "36.89.119.149", port: 8080}, {ip: "36.89.157.23", port: 37728}, {ip: "36.89.181.155", port: 60165}, {ip: "36.89.188.11", port: 39507}, {ip: "36.89.194.113", port: 37811}, {ip: "36.89.226.254", port: 8081}, {ip: "36.89.232.138", port: 23500}, {ip: "36.89.39.10", port: 3128}, {ip: "36.89.65.253", port: 60997}, {ip: "43.243.141.114", port: 8080}, {ip: "43.245.184.202", port: 41102}, {ip: "43.245.184.238", port: 80}, {ip: "66.96.233.225", port: 35053}, {ip: "66.96.237.253", port: 8080}], - "BD" => [{ip: "103.103.88.91", port: 8080}, {ip: "103.106.119.154", port: 8080}, {ip: "103.106.236.1", port: 8080}, {ip: "103.106.236.41", port: 8080}, {ip: "103.108.144.139", port: 53281}, {ip: "103.109.57.218", port: 8080}, {ip: "103.109.58.242", port: 8080}, {ip: "103.112.129.106", port: 31094}, {ip: "103.112.129.82", port: 53281}, {ip: "103.114.10.177", port: 8080}, {ip: "103.114.10.250", port: 8080}, {ip: "103.15.245.26", port: 8080}, {ip: "103.195.204.73", port: 21776}, {ip: "103.197.49.106", port: 49688}, {ip: "103.198.168.29", port: 21776}, {ip: "103.214.200.6", port: 59008}, {ip: "103.218.25.161", port: 8080}, {ip: "103.218.25.41", port: 8080}, {ip: "103.218.26.204", port: 8080}, {ip: "103.218.27.221", port: 8080}, {ip: "103.231.229.90", port: 53281}, {ip: "103.239.252.233", port: 8080}, {ip: "103.239.252.50", port: 8080}, {ip: "103.239.253.193", port: 8080}, {ip: "103.250.68.193", port: 51370}, {ip: "103.5.232.146", port: 8080}, {ip: "103.73.224.53", port: 23500}, {ip: "103.9.134.73", port: 65301}, {ip: "113.11.47.242", port: 40071}, {ip: "113.11.5.67", port: 40071}, {ip: "114.31.5.34", port: 52606}, {ip: "115.127.51.226", port: 42764}, {ip: "115.127.64.62", port: 39611}, {ip: "115.127.91.106", port: 8080}, {ip: "119.40.85.198", port: 36899}, {ip: "123.200.29.110", port: 23500}, {ip: "123.49.51.42", port: 55124}, {ip: "163.47.36.90", port: 3128}, {ip: "180.211.134.158", port: 23500}, {ip: "180.211.193.74", port: 40536}, {ip: "180.92.238.226", port: 53451}, {ip: "182.160.104.213", port: 8080}, {ip: "202.191.126.58", port: 23500}, {ip: "202.4.126.170", port: 8080}, {ip: "202.5.37.241", port: 33623}, {ip: "202.5.57.5", port: 61729}, {ip: "202.79.17.65", port: 60122}, {ip: "203.188.248.52", port: 23500}, {ip: "27.147.146.78", port: 52220}, {ip: "27.147.164.10", port: 52344}, {ip: "27.147.212.38", port: 53281}, {ip: "27.147.217.154", port: 43252}, {ip: "27.147.219.102", port: 49464}, {ip: "43.239.74.137", port: 8080}, {ip: "43.240.103.252", port: 8080}, {ip: "45.125.223.57", port: 8080}, {ip: "45.125.223.81", port: 8080}, {ip: "45.251.228.122", port: 41418}, {ip: "45.64.132.137", port: 8080}, {ip: "45.64.132.137", port: 80}, {ip: "61.247.186.137", port: 8080}], - "MX" => [{ip: "148.217.94.54", port: 3128}, {ip: "177.244.28.77", port: 53281}, {ip: "187.141.73.147", port: 53281}, {ip: "187.185.15.35", port: 53281}, {ip: "187.188.46.172", port: 53455}, {ip: "187.216.83.185", port: 8080}, {ip: "187.216.90.46", port: 53281}, {ip: "187.243.253.182", port: 33796}, {ip: "189.195.132.86", port: 43286}, {ip: "189.204.158.161", port: 8080}, {ip: "200.79.180.115", port: 8080}, {ip: "201.140.113.90", port: 37193}, {ip: "201.144.14.229", port: 53281}, {ip: "201.163.73.93", port: 53281}], - "PH" => [{ip: "103.86.187.242", port: 23500}, {ip: "122.54.101.69", port: 8080}, {ip: "122.54.65.150", port: 8080}, {ip: "125.5.20.134", port: 53281}, {ip: "146.88.77.51", port: 8080}, {ip: "182.18.200.92", port: 8080}, {ip: "219.90.87.91", port: 53281}, {ip: "58.69.12.210", port: 8080}], - "EG" => [{ip: "41.65.0.167", port: 8080}], - "VN" => [{ip: "1.55.240.156", port: 53281}, {ip: "101.99.23.136", port: 3128}, {ip: "103.15.51.160", port: 8080}, {ip: "113.161.128.169", port: 60427}, {ip: "113.161.161.143", port: 57967}, {ip: "113.161.173.10", port: 3128}, {ip: "113.161.35.108", port: 30028}, {ip: "113.164.79.177", port: 46281}, {ip: "113.190.235.50", port: 34619}, {ip: "115.78.160.247", port: 8080}, {ip: "117.2.155.29", port: 47228}, {ip: "117.2.17.26", port: 53281}, {ip: "117.2.22.41", port: 41973}, {ip: "117.4.145.16", port: 51487}, {ip: "118.69.219.185", port: 55184}, {ip: "118.69.61.212", port: 53281}, {ip: "118.70.116.227", port: 61651}, {ip: "118.70.219.124", port: 53281}, {ip: "221.121.12.238", port: 36077}, {ip: "27.2.7.59", port: 52148}], - "CD" => [{ip: "41.79.233.45", port: 8080}], - "TR" => [{ip: "151.80.65.175", port: 3128}, {ip: "176.235.186.242", port: 37043}, {ip: "178.250.92.18", port: 8080}, {ip: "185.203.170.92", port: 8080}, {ip: "185.203.170.94", port: 8080}, {ip: "185.203.170.95", port: 8080}, {ip: "185.51.36.152", port: 41258}, {ip: "195.137.223.50", port: 41336}, {ip: "195.155.98.70", port: 52598}, {ip: "212.156.146.22", port: 40080}, {ip: "213.14.31.122", port: 44621}, {ip: "31.145.137.139", port: 31871}, {ip: "31.145.138.129", port: 31871}, {ip: "31.145.138.146", port: 34159}, {ip: "31.145.187.172", port: 30636}, {ip: "78.188.4.124", port: 34514}, {ip: "88.248.23.216", port: 36426}, {ip: "93.182.72.36", port: 8080}, {ip: "95.0.194.241", port: 9090}], -} diff --git a/invidious/src/invidious/yt_backend/youtube_api.cr b/invidious/src/invidious/yt_backend/youtube_api.cr deleted file mode 100755 index 9e0631f..0000000 --- a/invidious/src/invidious/yt_backend/youtube_api.cr +++ /dev/null @@ -1,679 +0,0 @@ -# -# This file contains youtube API wrappers -# - -module YoutubeAPI - extend self - - private DEFAULT_API_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8" - - # For Android versions, see https://en.wikipedia.org/wiki/Android_version_history - private ANDROID_APP_VERSION = "19.09.36" - private ANDROID_USER_AGENT = "com.google.android.youtube/19.09.36 (Linux; U; Android 12; US) gzip" - private ANDROID_SDK_VERSION = 31_i64 - private ANDROID_VERSION = "12" - - # For Apple device names, see https://gist.github.com/adamawolf/3048717 - # For iOS versions, see https://en.wikipedia.org/wiki/IOS_version_history#Releases, - # then go to the dedicated article of the major version you want. - private IOS_APP_VERSION = "19.09.3" - private IOS_USER_AGENT = "com.google.ios.youtube/19.09.3 (iPhone14,5; U; CPU iOS 17_4 like Mac OS X;)" - private IOS_VERSION = "17.4.0.21E219" # Major.Minor.Patch.Build - - private WINDOWS_VERSION = "10.0" - - # Enumerate used to select one of the clients supported by the API - enum ClientType - Web - WebEmbeddedPlayer - WebMobile - WebScreenEmbed - - Android - AndroidEmbeddedPlayer - AndroidScreenEmbed - - IOS - IOSEmbedded - IOSMusic - - TvHtml5 - TvHtml5ScreenEmbed - end - - # List of hard-coded values used by the different clients - HARDCODED_CLIENTS = { - ClientType::Web => { - name: "WEB", - name_proto: "1", - version: "2.20240304.00.00", - api_key: DEFAULT_API_KEY, - screen: "WATCH_FULL_SCREEN", - os_name: "Windows", - os_version: WINDOWS_VERSION, - platform: "DESKTOP", - }, - ClientType::WebEmbeddedPlayer => { - name: "WEB_EMBEDDED_PLAYER", - name_proto: "56", - version: "1.20240303.00.00", - api_key: DEFAULT_API_KEY, - screen: "EMBED", - os_name: "Windows", - os_version: WINDOWS_VERSION, - platform: "DESKTOP", - }, - ClientType::WebMobile => { - name: "MWEB", - name_proto: "2", - version: "2.20240304.08.00", - api_key: DEFAULT_API_KEY, - os_name: "Android", - os_version: ANDROID_VERSION, - platform: "MOBILE", - }, - ClientType::WebScreenEmbed => { - name: "WEB", - name_proto: "1", - version: "2.20240304.00.00", - api_key: DEFAULT_API_KEY, - screen: "EMBED", - os_name: "Windows", - os_version: WINDOWS_VERSION, - platform: "DESKTOP", - }, - - # Android - - ClientType::Android => { - name: "ANDROID", - name_proto: "3", - version: ANDROID_APP_VERSION, - api_key: "AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w", - android_sdk_version: ANDROID_SDK_VERSION, - user_agent: ANDROID_USER_AGENT, - os_name: "Android", - os_version: ANDROID_VERSION, - platform: "MOBILE", - }, - ClientType::AndroidEmbeddedPlayer => { - name: "ANDROID_EMBEDDED_PLAYER", - name_proto: "55", - version: ANDROID_APP_VERSION, - api_key: "AIzaSyCjc_pVEDi4qsv5MtC2dMXzpIaDoRFLsxw", - }, - ClientType::AndroidScreenEmbed => { - name: "ANDROID", - name_proto: "3", - version: ANDROID_APP_VERSION, - api_key: DEFAULT_API_KEY, - screen: "EMBED", - android_sdk_version: ANDROID_SDK_VERSION, - user_agent: ANDROID_USER_AGENT, - os_name: "Android", - os_version: ANDROID_VERSION, - platform: "MOBILE", - }, - - # IOS - - ClientType::IOS => { - name: "IOS", - name_proto: "5", - version: IOS_APP_VERSION, - api_key: "AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc", - user_agent: IOS_USER_AGENT, - device_make: "Apple", - device_model: "iPhone14,5", - os_name: "iPhone", - os_version: IOS_VERSION, - platform: "MOBILE", - }, - ClientType::IOSEmbedded => { - name: "IOS_MESSAGES_EXTENSION", - name_proto: "66", - version: IOS_APP_VERSION, - api_key: DEFAULT_API_KEY, - user_agent: IOS_USER_AGENT, - device_make: "Apple", - device_model: "iPhone14,5", - os_name: "iPhone", - os_version: IOS_VERSION, - platform: "MOBILE", - }, - ClientType::IOSMusic => { - name: "IOS_MUSIC", - name_proto: "26", - version: "6.42", - api_key: "AIzaSyBAETezhkwP0ZWA02RsqT1zu78Fpt0bC_s", - user_agent: "com.google.ios.youtubemusic/6.42 (iPhone14,5; U; CPU iOS 17_4 like Mac OS X;)", - device_make: "Apple", - device_model: "iPhone14,5", - os_name: "iPhone", - os_version: IOS_VERSION, - platform: "MOBILE", - }, - - # TV app - - ClientType::TvHtml5 => { - name: "TVHTML5", - name_proto: "7", - version: "7.20240304.10.00", - api_key: DEFAULT_API_KEY, - }, - ClientType::TvHtml5ScreenEmbed => { - name: "TVHTML5_SIMPLY_EMBEDDED_PLAYER", - name_proto: "85", - version: "2.0", - api_key: DEFAULT_API_KEY, - screen: "EMBED", - }, - } - - #################################################################### - # struct ClientConfig - # - # Data structure used to pass a client configuration to the different - # API endpoints handlers. - # - # Use case examples: - # - # ``` - # # Get Norwegian search results - # conf_1 = ClientConfig.new(region: "NO") - # YoutubeAPI::search("Kollektivet", params: "", client_config: conf_1) - # - # # Use the Android client to request video streams URLs - # conf_2 = ClientConfig.new(client_type: ClientType::Android) - # YoutubeAPI::player(video_id: "dQw4w9WgXcQ", client_config: conf_2) - # - # # Proxy request through russian proxies - # conf_3 = ClientConfig.new(proxy_region: "RU") - # YoutubeAPI::next({video_id: "dQw4w9WgXcQ"}, client_config: conf_3) - # ``` - # - struct ClientConfig - # Type of client to emulate. - # See `enum ClientType` and `HARDCODED_CLIENTS`. - property client_type : ClientType - - # Region to provide to youtube, e.g to alter search results - # (this is passed as the `gl` parameter). - property region : String | Nil - - # ISO code of country where the proxy is located. - # Used in case of geo-restricted videos. - property proxy_region : String | Nil - - # Initialization function - def initialize( - *, - @client_type = ClientType::Web, - @region = "US", - @proxy_region = nil - ) - end - - # Getter functions that provides easy access to hardcoded clients - # parameters (name/version strings and related API key) - def name : String - HARDCODED_CLIENTS[@client_type][:name] - end - - def name_proto : String - HARDCODED_CLIENTS[@client_type][:name_proto] - end - - # :ditto: - def version : String - HARDCODED_CLIENTS[@client_type][:version] - end - - # :ditto: - def api_key : String - HARDCODED_CLIENTS[@client_type][:api_key] - end - - # :ditto: - def screen : String - HARDCODED_CLIENTS[@client_type][:screen]? || "" - end - - def android_sdk_version : Int64? - HARDCODED_CLIENTS[@client_type][:android_sdk_version]? - end - - def user_agent : String? - HARDCODED_CLIENTS[@client_type][:user_agent]? - end - - def os_name : String? - HARDCODED_CLIENTS[@client_type][:os_name]? - end - - def device_make : String? - HARDCODED_CLIENTS[@client_type][:device_make]? - end - - def device_model : String? - HARDCODED_CLIENTS[@client_type][:device_model]? - end - - def os_version : String? - HARDCODED_CLIENTS[@client_type][:os_version]? - end - - def platform : String? - HARDCODED_CLIENTS[@client_type][:platform]? - end - - # Convert to string, for logging purposes - def to_s - return { - client_type: self.name, - region: @region, - proxy_region: @proxy_region, - }.to_s - end - end - - # Default client config, used if nothing is passed - DEFAULT_CLIENT_CONFIG = ClientConfig.new - - #################################################################### - # make_context(client_config) - # - # Return, as a Hash, the "context" data required to request the - # youtube API endpoints. - # - private def make_context(client_config : ClientConfig | Nil) : Hash - # Use the default client config if nil is passed - client_config ||= DEFAULT_CLIENT_CONFIG - - client_context = { - "client" => { - "hl" => "en", - "gl" => client_config.region || "US", # Can't be empty! - "clientName" => client_config.name, - "clientVersion" => client_config.version, - } of String => String | Int64, - } - - # Add some more context if it exists in the client definitions - if !client_config.screen.empty? - client_context["client"]["clientScreen"] = client_config.screen - end - - if client_config.screen == "EMBED" - client_context["thirdParty"] = { - "embedUrl" => "https://www.youtube.com/embed/dQw4w9WgXcQ", - } of String => String | Int64 - end - - if android_sdk_version = client_config.android_sdk_version - client_context["client"]["androidSdkVersion"] = android_sdk_version - end - - if device_make = client_config.device_make - client_context["client"]["deviceMake"] = device_make - end - - if device_model = client_config.device_model - client_context["client"]["deviceModel"] = device_model - end - - if os_name = client_config.os_name - client_context["client"]["osName"] = os_name - end - - if os_version = client_config.os_version - client_context["client"]["osVersion"] = os_version - end - - if platform = client_config.platform - client_context["client"]["platform"] = platform - end - - return client_context - end - - #################################################################### - # browse(continuation, client_config?) - # browse(browse_id, params, client_config?) - # - # Requests the youtubei/v1/browse endpoint with the required headers - # and POST data in order to get a JSON reply in english that can - # be easily parsed. - # - # Both forms can take an optional ClientConfig parameter (see - # `struct ClientConfig` above for more details). - # - # The requested data can either be: - # - # - A continuation token (ctoken). Depending on this token's - # contents, the returned data can be playlist videos, channel - # community tab content, channel info, ... - # - # - A playlist ID (parameters MUST be an empty string) - # - def browse(continuation : String, client_config : ClientConfig | Nil = nil) - # JSON Request data, required by the API - data = { - "context" => self.make_context(client_config), - "continuation" => continuation, - } - - return self._post_json("/youtubei/v1/browse", data, client_config) - end - - # :ditto: - def browse( - browse_id : String, - *, # Force the following parameters to be passed by name - params : String, - client_config : ClientConfig | Nil = nil - ) - # JSON Request data, required by the API - data = { - "browseId" => browse_id, - "context" => self.make_context(client_config), - } - - # Append the additional parameters if those were provided - # (this is required for channel info, playlist and community, e.g) - if params != "" - data["params"] = params - end - - return self._post_json("/youtubei/v1/browse", data, client_config) - end - - #################################################################### - # next(continuation, client_config?) - # next(data, client_config?) - # - # Requests the youtubei/v1/next endpoint with the required headers - # and POST data in order to get a JSON reply in english that can - # be easily parsed. - # - # Both forms can take an optional ClientConfig parameter (see - # `struct ClientConfig` above for more details). - # - # The requested data can be: - # - # - A continuation token (ctoken). Depending on this token's - # contents, the returned data can be videos comments, - # their replies, ... In this case, the string must be passed - # directly to the function. E.g: - # - # ``` - # YoutubeAPI::next("ABCDEFGH_abcdefgh==") - # ``` - # - # - Arbitrary parameters, in Hash form. See examples below for - # known examples of arbitrary data that can be passed to YouTube: - # - # ``` - # # Get the videos related to a specific video ID - # YoutubeAPI::next({"videoId" => "dQw4w9WgXcQ"}) - # - # # Get a playlist video's details - # YoutubeAPI::next({ - # "videoId" => "9bZkp7q19f0", - # "playlistId" => "PL_oFlvgqkrjUVQwiiE3F3k3voF4tjXeP0", - # }) - # ``` - # - def next(continuation : String, *, client_config : ClientConfig | Nil = nil) - # JSON Request data, required by the API - data = { - "context" => self.make_context(client_config), - "continuation" => continuation, - } - - return self._post_json("/youtubei/v1/next", data, client_config) - end - - # :ditto: - def next(data : Hash, *, client_config : ClientConfig | Nil = nil) - # JSON Request data, required by the API - data2 = data.merge({ - "context" => self.make_context(client_config), - }) - - return self._post_json("/youtubei/v1/next", data2, client_config) - end - - # Allow a NamedTuple to be passed, too. - def next(data : NamedTuple, *, client_config : ClientConfig | Nil = nil) - return self.next(data.to_h, client_config: client_config) - end - - #################################################################### - # player(video_id, params, client_config?) - # - # Requests the youtubei/v1/player endpoint with the required headers - # and POST data in order to get a JSON reply. - # - # The requested data is a video ID (`v=` parameter), with some - # additional parameters, formatted as a base64 string. - # - # An optional ClientConfig parameter can be passed, too (see - # `struct ClientConfig` above for more details). - # - def player( - video_id : String, - *, # Force the following parameters to be passed by name - params : String, - client_config : ClientConfig | Nil = nil - ) - # JSON Request data, required by the API - data = { - "contentCheckOk" => true, - "videoId" => video_id, - "context" => self.make_context(client_config), - "racyCheckOk" => true, - "user" => { - "lockedSafetyMode" => false, - }, - "playbackContext" => { - "contentPlaybackContext" => { - "html5Preference": "HTML5_PREF_WANTS", - }, - }, - } - - # Append the additional parameters if those were provided - if params != "" - data["params"] = params - end - - return self._post_json("/youtubei/v1/player", data, client_config) - end - - #################################################################### - # resolve_url(url, client_config?) - # - # Requests the youtubei/v1/navigation/resolve_url endpoint with the - # required headers and POST data in order to get a JSON reply. - # - # An optional ClientConfig parameter can be passed, too (see - # `struct ClientConfig` above for more details). - # - # Output: - # - # ``` - # # Valid channel "brand URL" gives the related UCID and browse ID - # channel_a = YoutubeAPI.resolve_url("https://youtube.com/c/google") - # channel_a # => { - # "endpoint": { - # "browseEndpoint": { - # "params": "EgC4AQA%3D", - # "browseId":"UCK8sQmJBp8GCxrOtXWBpyEA" - # }, - # ... - # } - # } - # - # # Invalid URL returns throws an InfoException - # channel_b = YoutubeAPI.resolve_url("https://youtube.com/c/invalid") - # ``` - # - def resolve_url(url : String, client_config : ClientConfig | Nil = nil) - data = { - "context" => self.make_context(nil), - "url" => url, - } - - return self._post_json("/youtubei/v1/navigation/resolve_url", data, client_config) - end - - #################################################################### - # search(search_query, params, client_config?) - # - # Requests the youtubei/v1/search endpoint with the required headers - # and POST data in order to get a JSON reply. As the search results - # vary depending on the region, a region code can be specified in - # order to get non-US results. - # - # The requested data is a search string, with some additional - # parameters, formatted as a base64 string. - # - # An optional ClientConfig parameter can be passed, too (see - # `struct ClientConfig` above for more details). - # - def search( - search_query : String, - params : String, - client_config : ClientConfig | Nil = nil - ) - # JSON Request data, required by the API - data = { - "query" => search_query, - "context" => self.make_context(client_config), - "params" => params, - } - - return self._post_json("/youtubei/v1/search", data, client_config) - end - - #################################################################### - # get_transcript(params, client_config?) - # - # Requests the youtubei/v1/get_transcript endpoint with the required headers - # and POST data in order to get a JSON reply. - # - # The requested data is a specially encoded protobuf string that denotes the specific language requested. - # - # An optional ClientConfig parameter can be passed, too (see - # `struct ClientConfig` above for more details). - # - - def get_transcript( - params : String, - client_config : ClientConfig | Nil = nil - ) : Hash(String, JSON::Any) - data = { - "context" => self.make_context(client_config), - "params" => params, - } - - return self._post_json("/youtubei/v1/get_transcript", data, client_config) - end - - #################################################################### - # _post_json(endpoint, data, client_config?) - # - # Internal function that does the actual request to youtube servers - # and handles errors. - # - # The requested data is an endpoint (URL without the domain part) - # and the data as a Hash object. - # - def _post_json( - endpoint : String, - data : Hash, - client_config : ClientConfig | Nil - ) : Hash(String, JSON::Any) - # Use the default client config if nil is passed - client_config ||= DEFAULT_CLIENT_CONFIG - - # Query parameters - url = "#{endpoint}?key=#{client_config.api_key}&prettyPrint=false" - - headers = HTTP::Headers{ - "Content-Type" => "application/json; charset=UTF-8", - "Accept-Encoding" => "gzip, deflate", - "x-goog-api-format-version" => "2", - "x-youtube-client-name" => client_config.name_proto, - "x-youtube-client-version" => client_config.version, - } - - if user_agent = client_config.user_agent - headers["User-Agent"] = user_agent - end - - # Logging - LOGGER.debug("YoutubeAPI: Using endpoint: \"#{endpoint}\"") - LOGGER.trace("YoutubeAPI: ClientConfig: #{client_config}") - LOGGER.trace("YoutubeAPI: POST data: #{data}") - - # Send the POST request - body = YT_POOL.client(client_config.proxy_region) do |client| - client.post(url, headers: headers, body: data.to_json) do |response| - self._decompress(response.body_io, response.headers["Content-Encoding"]?) - end - end - - # Convert result to Hash - initial_data = JSON.parse(body).as_h - - # Error handling - if initial_data.has_key?("error") - code = initial_data["error"]["code"] - message = initial_data["error"]["message"].to_s.sub(/(\\n)+\^$/, "") - - # Logging - LOGGER.error("YoutubeAPI: Got error #{code} when requesting #{endpoint}") - LOGGER.error("YoutubeAPI: #{message}") - LOGGER.info("YoutubeAPI: POST data was: #{data}") - - raise InfoException.new("Could not extract JSON. Youtube API returned \ - error #{code} with message:
    \"#{message}\"") - end - - return initial_data - end - - #################################################################### - # _decompress(body_io, headers) - # - # Internal function that reads the Content-Encoding headers and - # decompresses the content accordingly. - # - # We decompress the body ourselves (when using HTTP::Client) because - # the auto-decompress feature is broken in the Crystal stdlib. - # - # Read more: - # - https://github.com/iv-org/invidious/issues/2612 - # - https://github.com/crystal-lang/crystal/issues/11354 - # - def _decompress(body_io : IO, encodings : String?) : String - if encodings - # Multiple encodings can be combined, and are listed in the order - # in which they were applied. E.g: "deflate, gzip" means that the - # content must be first "gunzipped", then "defated". - encodings.split(',').reverse.each do |enc| - case enc.strip(' ') - when "gzip" - body_io = Compress::Gzip::Reader.new(body_io, sync_close: true) - when "deflate" - body_io = Compress::Deflate::Reader.new(body_io, sync_close: true) - end - end - end - - return body_io.gets_to_end - end -end # End of module diff --git a/invidious/videojs-dependencies.yml b/invidious/videojs-dependencies.yml deleted file mode 100755 index e9ccc9d..0000000 --- a/invidious/videojs-dependencies.yml +++ /dev/null @@ -1,54 +0,0 @@ -# Due to a 'video append of' error (see #3011), we're stuck on 7.12.1. -video.js: - version: 7.12.1 - shasum: 1d12eeb1f52e3679e8e4c987d9b9eb37e2247fa2 - -videojs-contrib-quality-levels: - version: 2.1.0 - shasum: 046e9e21ed01043f512b83a1916001d552457083 - -videojs-http-source-selector: - version: 1.1.6 - shasum: 073aadbea0106ba6c98d6b611094dbf8554ffa1f - -videojs-markers: - version: 1.0.1 - shasum: d7f8d804253fd587813271f8db308a22b9f7df34 - -videojs-mobile-ui: - version: 0.6.1 - shasum: 0e146c4c481cbee0729cb5e162e558b455562cd0 - -videojs-overlay: - version: 2.1.4 - shasum: 5a103b25374dbb753eb87960d8360c2e8f39cc05 - -videojs-share: - version: 3.2.1 - shasum: 0a3024b981387b9d21c058c829760a72c14b8ceb - -videojs-vr: - version: 1.8.0 - shasum: 7f2f07f760d8a329c615acd316e49da6ee8edd34 - -videojs-vtt-thumbnails: - version: 0.0.13 - shasum: d1e7d47f4ed80bb52f5fc4f4bad4bfc871f5970f - -# We're using iv-org's fork of videojs-quality-selector, -# which isn't published on NPM, and doesn't have any -# easy way of fetching the compiled variant. -# -# silvermine-videojs-quality-selector: -# version: 1.1.2 -# shasum: 94033ff9ee52ba6da1263b97c9a74d5b3dfdf711 - - -# Ditto. Although this extension contains the complied variant in its git repo, -# it lacks any sort of versioning. As such, the script will ignore it. -# -# videojs-youtube-annotations: -# github: https://github.com/afrmtbl/videojs-youtube-annotations - - -

    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�i>C`|au&2pd8olW z7Xv$;-Q`B+uhVD>=9v0zC=*(_yWcny3Blcsnux-kwcQ^+G7ErlsA;;T&?>>*UnLFv zrFwt~PhcPW12wgQiunf#CMdFit7#Gh<@Xc1iu)9W`}wL9YVij&lGiby(J0Vkp~`iv zah6fi4^a~3QiJJQ!v?zt=CB_}!H+->haZ&nV*0sgQVrIL45gMTP3H~k9~1;;4E@W} zzCkQV{zVG=W?15fCyC)Tam80J@TFE~U_#k`RHXA-t}3g z>#&x>;FkTW>GOU2RemPA%kk>RB#(pKWzHK->ogBCrSgWvBzEl~0=4ko^XabbmTKQ; zdey3fr<0O}Z#_#XM~S)%66T_$g_yDw(|n51ZF}1xHpeirl@mkmCDGS|AKJsh!;LI0LH34FSM0Mf3jtx_H%1O@_wLTR!mTOE_5$8SHkHG`fq?(jJz1jcIf*)1g6eMc zS^_qR=%-+p;zC$$6|9yq=|CJJ=*g7RC80s8^bZlbA`QM|u^Dl8R{X-7i1G{%_kTV?BY!RQTElh9@DmKgQAyzx}ofmf0IYcjnp zoH@PiVod{5>09nPYv)ilmX^fT07?w*q93A&yjyiPr?|5rqG_69Gh%T>W5Ij5gN<#3 zWnyQIX)GKd;(6XMR6Q)z<-D2a_W>(Bj!2#}~E|03!I?+F4tC-{6?*2sO#cs_Je%U<92 zii{B{?Q3&H64EdGmw@-FBvWYyQYmNHeo<17Diz}VF5r-k=TwS5Ad|d~GIHyu z&N9Y~*2nweeqr5fC877nncVH!jCga6Yr0Gg_De8n6Kw$VE7iYd3IA0DYI7GtfU9Hf zm$fM(h~7U*P|wRNcDy=mY*mb*B9MuDDLkKlh{B`It%W>%E;;2YIdv;J{WDU~im#%@ zd!s(6>2l{^5&zNrSZt0YyLmtQ+v@x;=fa#kbaU_30j`BU8~WOoVC6{XY-=r7^w|)x zVN4+3z-P3!?5=2p?b;;|OG#m{GVg7vjJv^?Se=#;Ge*Cn!B5oH=zAXAqAlR*tO|h| z*10D$)%9TZ9BT#Zcz(%zYfP}8Td7uW*e4)tdDFLUc+|9Rdc-?z*>xk=y{5?1W&*q0 zB=(0L%>B5di%D{QQZ`v}|9Hgr5>n4cy>ZjYOIu_KG9;xKXH(CyI;QkgVm?SA_Eg%7 zj6RscW6&g8!e>tIpT{YP4wD4{!kpMp2>=LIMsFp1e0a9{gl1c0zpgU*hEBrTs*k%M z_*=7}T$KhV5|vz2djt^D%ZV#UUdJk5-&tAmsYi3F?I03$fr3%1hJQ$!1c7YZfM^2X zgqBe`o2DQ`^ljk zH8&MO&x#UE|F2WbtnV?j-&1AgjxP7T^~4T?&<9W7I$oYzbUgSCO~{$6(VcX*`(4xI zS}3W^)^mOzEmvMYxsaC5khC~(29b+Ga_BDiD;=b`oEmV@|1%2pm$m4GdZvKv=JQa7 z=Wy&2d~O(tV9tXuz~{5v5+8q14BW^rgD?mooGI!G3^x8KVy5Z{QHe}MuFv`FPU?N4{eCePouQB;Zi~uxj?RC5Ua#RI!>&W0bRje=~vAg?$GlS{BU^iDzPnXT zedP=OkZ)+_@+J0z1|(1Jf)weCQ+jht8n%4d`ooTJ0lnn2sCoa8qNh%bjBS^we)@h? zsu|f#cByh?J?Q-jS+MFTn$2vC*-pvtv~3v+`)e}_D&V+C+hw(Gi)cv-(nwbEtscPz z&w+x~MqaIN`Qd`wlkR+U;WV!|%D4Ey~2xnPLm|DYyo8#5Ca(6cm$^m_#L7t`^~F#_|e_;`dn z^Lc@lhy)W4DA~Roh}{+>s!)uFfuS?Xp%Vf%s^pmxXnEEQu) z`?KhrLeQ5zKG=oaoNZrt|3Yg|05DxRaIWIhn7%N^Pb{AHLs0<)2d`1QPYujuy!Q~of`VO8=EyuMMnM9w!oWZS0rkpQf#5vUB$t>{ak8pD&sq4gXZw~ zOB)9E`4vwvzYO*MMdh7EcNE17?mxp5=Ydzp;%f?T_t?{Kn}+GHmke^c`4`hk74S{#qsWsXbo%G}rNup5CYmY2G0?oD(>F0ic~^hf*?O14(R(ju78%&;=GHb_b&S5QuNcg6qX^jlM1mH5mtg#&J_^!V|Asetd5-e1HJ>|~^6nkUh<9ibs4ZZH>{wfRnJ#X~Y zkwnPw#C3hT+SS2Cb1)o^t-$P9+du>}nMwT!WDb|_d@u46#O0rReRKgr3a@DdV*Ldb ze`9!-i_MFvBe;(PY@c8h_tPa@CUp^{ zYFwfu)7C+~IE=x6+_MlJT>o{b)<$UvDNEe(z5r9;6BD>3x)jV(#TkY}MCH>xiz;;7 z6-X8myC4!Jj!eu-+MoRafU|$oKVIU9k=`RpZ_lZZy51tKHpp2VjWNBZN-pHQ$>e*& zW{Hh)A1Krm=?CK;L)|W?8+KVNU*5@*1*>6hMg0|+>m+(D0nn~`eHin$1N{Fq>wxagTk3yy!tUGE z2>8rDMp>=B4Az}_86P>fSM79{@9yh!J|42C++W}?$?KXv9UL7?v>O{B5|crvx5}MQdYE1RU$`H=x@W+C;&Tkw{CkrxVJ~1ZhL#<`%w!hLY z;f+>4ryMIJ#N;r7e@9D>_s<$;9_KTL)kegJsBoJ!w$lxvD$fRo;q@sbm9fvFvK5tp zYkvhY%o-%)Fh-TIY0u&cDaSdHP1Y1!&jFjDNRzyg3lt?tSyyUt{yzxI?Z6JSiuYTz4(e#?njOAimQ` z)W!#IgZT zuUqFgc8dSNTB-T_D4RE9Z2mgWI~pzdXLG*OL9aXUKZR@N-I4e};EJv%X*q3lVep@- zLj_sgyQn|I3>8(FA`)Rmq6k!3Ku3Loist-apUOZ$u@l6U5%?hrScS@Y;LI8x(+?r4 z`}8rYNhdVe)j5F7r$8o#sM0)0A*sAvI82IMl}_u-=E-xA2P*jC!=xRx1kVGrg(1IT z;u74V<0sL#)fk*rQ=XWQ%^Qq%Tzu#z%-$hH%oMI$hr44rR9CpHE?mORk$IugYO7u^ zba@eurZby6B^qtMKH>Pmt8Hn1uos`!>J#XZPWGPU`9xw~5d$~7_OG1ady!5@x>5ZS z8C^fy=QS`|b^mCgkTqKD9*{}m%|K@QQZ4VCfuW5VtVs%+Y+k2?!`faKq=XL~S(cg2 z5k|6!cutSRJZ1)2(|H*SkcAPrwyMiVA6SoYK>p3DNoElavan2gCsEbJRWc1nvP%`i zp^}?6@1b=Y^Le5%S7cB1BZ^iXWKJ0siZ~?b+7dR?R2o1jGGFMl$ME&3_L&gkpKH3F zoBti*TykAD{2K@8XG&*Jyc`*lyGhp^$*G~+N%q`kb`B&rdk&cw8F=G8k{xCNz85zb zVFmemf0RZMoKzV^NEp?@IFwX4#8ms4U&lMhty}0MYnVSq)$MMTSwaQHbz%r;(qOa{ zMw#jB_*e%M*C`RRLiLBjQ8YPOjYZK_??>Zy!t)27m+<+RR@aS>^FUtaFK+_@4r~oe z=dNY?{qKY%j*77*q+fNTQbhw}r_!#5dC1T!LxmH~JK0&=LO zV;ampzz>K@OB>-nYw-hqA|TkEmy_cUn4@oOZVCa;#EpPeE#SnZ-ycPCeKZ#dsPzF) zn%AAT{Xh4(@A=vwo0sL&?VjcZ>3X+HU0TKQ)JH*s2{0|0#;c zYuSKsr+DeUK32N6hO~&>3~BH%>$E{qL4k$2P@!85#3rSG;$|SEaoNP66X#tQmMgzZ zNztw&E0+D7-h!)sGe4;uSqzZY7Zn+(IZ>hZ-N3aYsXun8e8dq`}Z-k^N!}$fU)*xxbW36u5Qq6C zS4O5nA5+xlaS#;E;u)8e8LwRWQ@M0PhFsLJL}{hZ47Y@&yK_Q0NYp{6FfADfYnaPF z5O!t$754Q6Vo|@R=3x0wIDB~y#{Rvc%AcCw&L!4m!}oh5*pJ844I6Qcd}9BJ5-$}w zd*gtPCE~8Ta0=Du@jz7WZ6vu>ngK;!~hZna;1pAst3>b_?E|;o)R0oKQ01AtO#j2$xbDVI*fW^}6 zQVOd@FCYQd2{>W^61;!yssT9*%^EZP)-eFrMgO(-|Cj##SP@P{j`S{QB+LHEcyA_# zDE=PR;TB797s3FR$mwG1d4=oFgU9^ZCG~uR(o4OwFWV&*C{YAoSME`Z-IVjzQPWKI zU4A#cld$t5bGJW3^Pmk?XoGy-I#Fm~Ig?IdZx{c!Gd<#c_r?3d~Jw87@aQoa1`B8@G;5&i|%(;2aHi5<1s6TNUl@HkTC za-faZ<8C4U8;@hi&;uuBy|vMgKBop`g5G5+=JSm8K{j2Y2#Rhn3RVZ~hzin?bxcvK zJh;x+C@mUfRVxzSF?jo!T)!X}p7<_A2CNYhp*cA$lbNllDX49PFXn`WGq3U0xUI$* zq+(hFOYGPeiIGx>B7I$v#vxgP>TWLQKOZtcPfFfiq6!l{TCE+S!|lss4N)l)wGITE zWI2JLubj5~f5B&X8<$kJP2~9fHe@yJ@4gqo=S@67 z9D3J>=Wzxjd-4Mk)O~;&eMt;H0HgW8fBOJJ!dhpBu*7w?B#eyF@_Y~7r<{{|#D8P2tXuyX zrt!zvHtJ^ImOrxi6hR~!FReQ(;eG2ve1m>T=IIM@bR&}jaxjsjXt-u{7E&ek!j~VE zS7B@jlvfBMdn#yYro_GEK8X=+Oavb>%bBWZ?)WM*_884?-IARNgQbV~YOH6|X1y)M z%T2U#rwaL%p29m%()48r8NxCFpPx)onx^_Qft0!AiB@fKH>ZQnaT34tYlpreL%6Fw zmrBDGbKlug@*gYI26Z+hqPV@M-Rcp9i(_-To;?HT6ywIGS)BH0Yqr@*TrN1PTgw_O zuGE>KyD=5kxP8c{dw%Fi9tF(R^wg6oUj~q3PHic1!!!VErIhTXFMwWPTfZu#&bp`nXBvi9GV^#52@{zy4VkdaylZRC>F_8Kv2}#z8 z5T<-jOb(sjvWgh2f<_T15lK=yWbhFIh|M1moVr5uu1e6bobEAE%67w6-UkEDGp6Gy3NRWU}zIhr8)o?Jf-8 z2euIbTHC-S{5Rz+1}^L@#ln(1TMPj}|M$~}DC42{zZWrJdt_dlEEz*SQDrO*Ae}g1 zhzLmiRjjt_wtM{*{B~*9@mZ*L`6sCr2-3N>-WCBi1wq^_m2Vhe@${M@lNE%ea)u zxBws9qJy5{VqJ~9ca>2RfK6*1%!vmT5etNFv*MsBWpG|0=%M-ZH`DSQ$7a47i=_m1 zZLX=u8zcwUY6{P#+gyukIfVW31clbXiNYPNntLMbMRpt6KCIG%&B;_q8)rSU@^l$O zX0S%O(#6%S!46=%s@oJrR~(O8_niR92GEJn{+!-R@IC19zda2wwmlx&S538VjFPcZ zAf0r$5375S%jplWAlKcG>`wWkAaz4uJOrO{mOWs945g8vDfm3oB2KEHCfQOK;^GPH zAuwZkkJDVHTzyllDv!&K!@zx7 zO?!%{vIx%La!>|-;>v3JThuABKfs%?258fgTzkNhU=Qne+qu4ylk8ce*xhoGn3kc( zdW8cy1q=^e#2>W37w4OOc$;U27zOgw{80gbKvZT6wPc>zyW@hG!x>&M8;zYP zcxoJzOMJr!rI^E63Du=`-HSo z3U9`bk>-&3Wyz^+QUZ^x?e3!`{KQCa{j^I-u@(^^8=W&H`O)y#n$0`9@=_X`(kHRy<`zV~+ zV`4A$M5v$-2COLAz*d1_mTv(M%viuUpiRb(mRCefT^`o3Y`1Ao6EwvBTUiCIu<)~# zwqQw9n0ApO8@abswMp8+Vjg~)mgCmRZrZ^_8~w`S?Z(Njw%MDQcvIa$M@o5JUJnhO z*;C|f&5OA72j>&PvE7mL436}UG%g0iP4$-i=BhuYSVOxHm3AH9>PmG*x8v`E=Bs`t z{vJ7&SG^qg=>G6{GVE;U)Dd2cH};7AG~9D_ z@QEv_<6{ENf)=P+i=uj{#hX-4Niw!5j8c|!qDg8K4gme|+IRid;ok>I8zI1OB!w{G zP-DdqBPZ-mKHlTGE=b;E8lM%>-Fw>shsNUm{<6=<$6uIwB3l!NLyT`RRhE=MT2KRD z>^UlBqSW6>WO4dDQxH=5@aVBiSbDvmXfzhti{}g@j)yP+DlQ@Vc$8!XA$2j>Ol+G4 z*v20*>sRb0s36K0Ji&v1##uYj0p*)67B0u2{3&N8dS2AMFc-W%vT+7xU-G1mXHJ?Z z_AyK2>nD8Nw^No62v*{I*oVvlb_R)AgxO^84KdLSQ^~}pV-nXvjQx^Xp)mks8muap zmtDF@iBY3KX=Z^$%u2zpsj(He}oMM*qa)f`Xmk4NOAvy2S#Dd`%7q zLK%FXfYBBQyY;f({&*(fcaDOJ`ct#i1gO(yjrRc~=Q_UGtq&-G5e85|0**rfwdCdE z=5`549ftf%lJGBMfsFFw5}SLe{Vnc_^0 z0*M6I8FrxIY5ZP+#$#I@U}ad_@}2zuLU8e5^d4_JV#1rO9N*i=sy1Wz6*Ii(93qc*=YLu+%x>P*F*bo z3KQ%YqoJ!!2ak~IFooGq3XKe+?WgjHE7`md!$q{)qoVojfbDM*!;Am{D@o@+EhI53 z3|3_$LN^A9s`bdFb;#76p3iGQG{YG=VfG(WMJ;IQu~4y8)%W+G8jy0+t1NjA^rss@ zxrcbU@u=cC2=qyAK0sr0{{x zco@O^?_QK#%-QYvaey#OOGS#?fi25$Sav0K#NHLDSu%k{*RmC*7tD4~CxfO(ZSdS~ z`w>j?5e&31 zSgcMzTc{tZ>kUnE6wb>o;R57ua7i<4Rc+doOi=;ujjJ%+4Dhc8?_DD=9ieAfC<6JyaCm{_%;=ycafGV?>=qi-OTyH0qg) zBaAQ-P2iKP55QQ6=68yY5h4Nl6a2 z^(DG;n=KU~uV~(7Ssdv&n9s!A(lt-E3iG=;AIN8vLG8~Mp%Wz6W=jv_;K+s#_0OGyn#{-gk2(|3|~pPIRI1Ii)s9tshuGr?>S+OwG+lzow|HCmlhj zH_DAK;6tai>W34N?AfR_yY%4+2r-|c#k)q1;}K%xH_I)xWpDB^+k78 z9tOi_hjYE_h9Vavyq;&x=aPxE@$hL%U&9cHbwx=+-Y_SPKBSHX(yy!HAQjwTRpFcu zLNgyaFKL2Q)WC_3k(IAMTOP!a-RcgcBc0C1Yqg2E>d!>ykUYOnWkFdb*KeJ$ujSbU zo+6yBrtC1AR2lz2w!Q)=u5Q_y1Peg}!5sz&!NTAKcX!v|?(Tu$?l5R@cMBfeAvgs0 z;0}ZTC-;8$zW1vBs$ED;Q3IUbEvr|rUKL^=Pm}!`!;urQS7SUZf+Oc<(oys|qRp&! zW+J3-b+!EJ)~qL2)LN%D^{b0jC^D*{oziPk63$+Z0e;Gd^eTl+XuK@4H-yU;6k+C3 zJ2R3g>r3JdssFYdqs--FO7hPx6VWKTm|FPtcWNn6+s5k4`+s^!~#Ixb=JF zdzHU?oUBXcLj28yP|!NaWVI1!50dv{3J6WCkX>LTIsz(zNR?hYu%1l3Y!(w6`?|H0@vnHvU;PrhhOLJ(YW8!=4^JFr0_kT4 zg!}>HtM$mFIk+dOI&H##M3te{!!7a}b3WY+wIk&ej>8ocPIN~iJF35nJ-AqS=t46Lk~I$5Ob7VL5w^JOKg3MJK7^lSz~8Q z@>e{UcLKqv8?ApnsoX{#tQVIf6bsGAHThN^_e^q?E&9;TNkqAuan?ntzDbgip0cJo zK2Qi23BFbrX0hZO?=IEeLxa5l;)6?}WK?E~v65e`WV0dJwG?)%U-|maowut@AGf~c zg3)kN9M+ZK5g8YQF&pZbM&I2MPq_YX~5h#(~M~?G6?&Xfuc+q zZ}c)n$o<(7L$(U;d@mP7ny1F`-vF9;-@P?s0|3=RB?ZJ;Q2!Fq$ap?D^J9 z49rEEEX-Z{&Ifuk8a-#Fvs?A&(eJ7x&O@Q=R5qNbjMhbyO-pyvcl>j3gTRjCzuU3? zF52bJjD|wpf7e@F{%=#m2DktT%Jb#_0yn*Pxx0XJPQ~hCi@Iyib}pI}_XNZBoY4UH zRBZr_@ZDm8h;a(0El!-WDKdta&L^IlrsbA0mrUm#=zv^kuBzD_)tpN(6~4#c4^QeXp4n}*J4Bo0R`yq# z2`TTdOzx{U%G22*j(t0<)439W^|P*{H-;4ta5!>!L7j&hk418(tC9OqPZ^_*d70$V zbCcu8K5M<2;Mg&3$w(DPG8bI&Taw)obbj)!5hgB7(x~i1_g$|awLh)iE~$^wFnmG% zyr%tA-9h^fOdd!KK(HD$XecvgTYDlu-RwNO}Nkxt)b|%o%RZDnY#Dd`TM7F zrA#zqZ4X8%IIdO<212G)dZyW{^-ynp@*~>#MITAiTN4N`Ki;BSb2x0uM@|);@eOGc zqBfQOt`Xpq^;=3rMs3!@~as7Kn7T$`ITSxW;+lW&N zO__y#{;cgp5?iFO=4Vwf&l%0pMP{zu`=?PJS~=?z01YWA;>sdWcNiOmmD^r zYbM*Gt|6G`w4}4v&b5C!KV*-$wa8=uC&l?5pr#zdN}K_)HM`xwFpPB17Sr?LeNs6ZkrKyoJ&k-xmTds3MIt@$-Bkdu)z*_<8hx>n2Ya!3`qGuD(F4vjVuo0q@(%qU~&+ zp$p9{s0_hCn?-`g{-GrFp2}K#UGktGo@li(5;k4^Y!$_geGJl*>~ZOCccQ~Ser}G5(%X0&5UO%weEXn(*}3n@H})J9b7^}P*O(|DZi045x0vLY%?rQFOA@4dG^bvp zt=+d_2tjA;$)Vs>qIcSkAKj1^yTML!S|9j$^PG!HxcFY-t*rE{+kwfH zGq^;H^7C~AY$%mC$VygUJLU*1J;$H1)4>KS5zzkymB1lwAc8y@Xp?+h0NzL0eU7-h z?gS&wrAQ5~hQ!|lOMw2}wxnPGzbT538?3{TTaZZetg*=N26AL_rLwGy3*E>;OXgZ_ zNeKKlq7H0dsULWX=l8G=IO5&al+MgbNUEgd+DaA9(h_2e>sQnW^>@`byoSOQVaUq0pUIPA(1|uiarNJwuX>GUeM;M>L}WIbGM~Gf0GVI& z1f+Oib$T+2H&#)5SJEuCEo<_RMKRRzB4u!-+wift&s%Y)n@yOuuDyP}%V0DT&|t0E z7&LY$=b^!zY~ve!X8Ub3O7TiO&PQbzC@1vWs6VOkja~q6AGkH#cxp6aT-mvh zYR|%RksIES>-7k`Z@yL@f*LJ6bxBZk!F!dpCbc({1ffj^gu)~^VwL~}!qtB!4Q{AK zTI5ETqV5z^&j>T$6s9KX|HNrQwf7SyqUSntc&L|6Tjjnn)bQyZ9p)@d&(%?Teyf68 zn`1NjcWB|JvKH&~=ehaoCV=GuaauTM9rZF_Y%Fzh*&h);hJ$3&|CNZrZ+Jk?BkZL_ zJ)8e&hbx#Ccbb7B!#miG#1A4rkFdizZB4tNh;iN7#$Yi^D z#qQ2w1REdganmwGFzo*+VvPSjcXz;+hZ^}ER6z* z^$ZYDB>Wzi`!{$UKugJYmnUubAX}|y#~^-xCtjp9mP{Kx z<%P}tadsxRMlX4@rK1wK(Q}Y<2h*#LRqLC~o<@&L%?+-IBt1Usw9X70>G?X}RjJqW z@Ua-JF)?zxmkrN2`uen68t24lIBPpU3ml`Lq<5bvAm|b6JwgzpJ}~Lihs$Rw&U+>Z zx^FVqMZ)L?-R>WU#lOHyYdGrBNA|Q$@f;aP|Kq@5TKjxW8i6CXuK?XQ8G7yo7n}B3 zz%m$M&y`>c)t+j?N{rEBEKyc>TZ;T|dgU}3OTeBZg?SpO6xNt))|}lgBzKI*&4Y#M z3Ge3!ytes$3BR21s(@$5t0+)dr^H*m0UR{NIl8j+T z4foeSAH(L<-{k=>uwmvUgiVita7XfsPir{#s7v%MEhZg4=zhM*)lP5PU%X*JaNFUkod01x;}jYCEPz_X!HiMZ??_2D7pkLw0(flwW7>`G8Ge^P=ipYLA4ZFJ&3% zzLlE`Oki=w5pNCp%SkGT-!p~N<6G}5Sno3|qB|tC=QmzV_=~E>WDVcr-}}Iqc)||B zi^U@w$6tv72Xi#u1wqM0HGdy99~)1S?&n8UChfmmFX+VU&>C*v8H}=$(!xqmVerD^ zTRLeJhxek^G5t!riI@_txDxV$JaVbxnB?K_-UpZOVP22{TvX`vDM>#Am9 zrn^R^dP$&Fg%3xDL3tRPAL9Q`6nI`G32l-Bg^Pq7PmzK`RTdT_uQoH8FYR&1lHj-L zbc-}Xpw9hYsb49Jx5i8;X>=hU{W;~w%gV4Z{V?rk$7RoaIa}H|j{=dMly^z`!Ah#p zN~&`8Et?x8%wK1+;)^N7l=nYKZ~Y3ZB1C2KiYz^r14&94Fkqyv5MJJ*}R8S_h5x!QXtC?_lFNWuur zh4S*jZq^~p#!RLI|8&F|29bX(%wC~`gkHyvLa#jf?;wG;F z+~rFDI)^WwbWya?<+3JyDr+)VPslopH%5o>{T4?t6LQG4(YHfRpIG%<$F zhac2hVoZ)v)YpXgSz3TKy70@oDF;! zH!KoxJdr8S;geyMRO!AR(X-Z&q+H{jZwbBvbzurP-@K?DKLZ=%%s(EN(1j_h)I*OkdlmCEI9cw@Bkz01k5STX?_ckvf#$tm&26wmXo7ba&>@n*iqWpA8PsQ*6h3 zPquUzOxK&jq2`vJkUVJ4XiLZxwKve?99{+|dPHxDSLlz=-J4Y8{ZPF1MQdT0l<1K7LQT;!YJadZ9yNrm1g2H>KF=7e-5Nevv+LMQPm||NZH`%??{xP zY25yU5M@m^6HF@~(|12ysYZ71tF8U{eOK$wAZ!VuPJ1)4wJHI`Yj{=n@Rv`w=JNEjfh+dJq!1k z^k6>v2$r=29Y%o;N+o`&Viqw!MQ%E)_U@O3(tW~EHwWb?P)n+dhBwBm=q6drc4)TBM%QxMmDhvCEfs1e$t^b+=a6U?6`w6fU8o?6q^I{FfCNr3Wso8E}{-1fbeSj!V?9z8BoQQtic6iBnJz4QR}Gf32%D z@zPt(b?8yI^u`mNs3%Yo>)bv&bfSLf2kOB{eaFfI-*o2S;bbl$?|6HX zh_S>mkJzJalxcv$&(G;NOzZ7C(i$~CvxA;H+~r&bdR8(QNmw+v-S|!`G=%@`!ragl zI9R`s^YJ;y+C`I^^f>wzMv;a;48AH)-I3c)qY^3C`PsTUjlWa?`=r%mXdV)cVm?jK zvwDh%xf^xE^Um4ELBaKWISJO+B=&H->N&l_%oJzK4yY>uZLS7;w*H;dGp zi662e{WcWflhhR|@Fhtc@I;oW%GF_0WRuue6p8ulO{vt>%Mu$}t z7dA~0Hm{DUuOqiy0N!METg>!}F?lEM(Qr)m+toAV-Igx?@j>`uJ*~T!oXKy17D_Uc zQoTsh>){p4Gw@A=i6gOYSyJcEh}dly6zzB-9!O6<&!>ECuv)11M72t07+70Etg;}1 zj$WB&H8IicGMR3L&%$*y1^uYDckSzQ_{0`u$9ET7zz6VF344wtDK$B5Fdfq8FdAHu zB9{BXE&`;%Zr%~AW4d@N4On%-sNHtkUvQ#`hvS*QX>vJ$=xCx1PhvahiMT=ww#2}0 z3j&WJ=%y#tLS`4vN)Kg=a2x zG`t+U7!Iu=@&{61;}ahWN2#zuW(JX_Hxq5b8vVrGV4#!Z5b_Jz4e0!b#3H+8LH`-* z`>$gOI77sae@+Ly$wJ0FslhYyNp&RVVSv#zGlyH)V4Jweu1`X_5=E`-IVHF#vUvHz z(gS4Ml{vS)J#(;i`6fa#Yz|jo}7(cRXuk z8PY+2q4~2kXhgH!oa?kwr)SRPP%=FHZ#M{0IRSc~ce_|Um@*{1W-!+qHwyU_U)?aW zKuqwH+fLpz8m~7r`WSDf5Z>0uYm>tj z{x5IzPEicHe=1tPQE=SuHn}-Cc~?{hY80SWR25b7rE(ykl**J5$&nF>iz^m_t!V*@ z*@FC%k;MY$*g_UkWmPzfU86cz?5=U4Mb<6@Q_ZxjVwU*glnPAe!k=-)ZuDK=8Jgv* z0_Cd`k$TjHFp2QsVIk#IMI5{^+E18y93jk^W6>BDGHq(qV4NjmCMbu4_xR$t0En_#UPKN;`*nMnl41$ObIE7` zaYGvUA+E8@E5x))v)#=r#JK!Fr|^*?a@_e~9)14h(2h-(O{~_-X4o&&!_cOw|iVmdCRyLbGQrGesKe=hu+^oxVVSSiGfk2KGo&;eb>6cyF^> zt05jGHAd5((R~1YjED*OER8#EG*)X;uGttrE3IDJ>-X+*Z`7>jltOKsqb~+^WWL&C z%u}ezmQu6C7%-lY>G->Y1%tV<+b$P#erlAXv49e+#SUveQtFSIEMDAM!VfH!UgCvl zM?Lv^E2%7=oE>@M;5<{M&I~|NP zw%H-7(?uIBj-U?8;5z$mJT)07lO7_bxv`5clYuo*RFY8nmuDzCkacx@!)IAeB0fKL zBD++NXS)rXRDV}gL7}HC+BU~(@lKZvOZNkovN=djUoyTiGV?ds)uL>nfP>g3Nd={( zuX@^a6X*rg$Cn%Axxz^PB9#0!vMZe+(jEub-o-kZS4A;S)Ly6}zZb*u#|sRfHfKzU98>o7-)0n3~Qys!g0kdmBPrBT$D3Mh<(bKycdc)O{J-Mf>5 zm7*?bZ3|G5l0^1Yaz{(ZroeY`PHO}L6k}LqaS*rA!8Yl9kJq51O=7@w$geh6XrBKW z;`~2BFss>?W|T;PUOIwuR9s*4wS>qV@nx;iG@OL7T8U&7kn@&Rn?;kx5CT|+?&IDh z&{o?2J17aFkQm!5d1{dvAnE%qzh@bMIu4tR+#wjRjlH%Z#S=ZdJm-~e?b_xu1$Jz6CqVhG=l1axs~xE75>11i=qwa zwTS99kNOvXwNzqCEw-G2O7d^Wj1+Of4+G%4*(6Z$$FPwq3dXANR36yLW`tZPln+k8 za5F7{QvdZt<+-(|xuYEs;6p}5NK@Eoo2-f$QXH-wMCXIYf4TYp+x;vo61sNVQ1jDw zvslyc%e(>sKM8r z(XwCs(V5=YJ^U%6*R6>^&l3Ze>XTC6>~|I4RJgmf&@o5sVK%svNK?yyxk-(KddV1F z=Zey2cE+NEMF;=G1u#Lz**HCpSfeL>G`+6|^bh9f^~MTSPisA{#kw2e-!x_XZ5D|{Z!him3%jOrD={+({Uu?g<-*SnT;aIcl*yFV0 zn@{=~)($z+ARJE2dBQ*17#!3a4;;@PkIQ$TV}gu)L8QCahA{UHq-zQzGTW@fh=?)jHD6UIm|*I2a*I?6I96*`%2O42UzH(WwIN=~L_l?=14T{B?9u!%l7y*U>-WJm zjG=(yqAw8^+wpdiGow@CuRn^GdUDpzGB)N}2|A0RO4Fe_OCq_ANOvO=N+ovLF#8&B z4|l9aJ_>3fAsx8Bb)l1LASuv_$<2iq-J|~FxouJbN^YW{o26v15!9Lz5~|4x+}w?R zStFGAU`y8VhjwZndybO9JD|QAZEcr>Gfx}lKYIBkGNAd$P{MfwD$!F&&M?2@ruoCfT@y?G!Z!Tia zo^Cz2oLsC!0f1;boLz}7O;V{z9tKo)osZ4a=QrT{ys#4W0-abhT(kP5X;$e}4}Im4 ztx6_8VgRf{j(G@c_Igu#~ZqbXF-B6hb2wZ)EV}(zQ!4)nc$OKs?623>14GaJs}vc^ObPwq93QSn7oN_ea1Jc+5CNyykcL$a5;I;0{>B| z!CwL`I8$Zh6>|bwQCTx-I7+435+#!!L(0dLHzcSuHP@9TI zNc|a7Z2--nEuWCmZaA==j?dG%3;8!~=iI`57{2ymvtjrh zYMQ}F{+L}jX@JHlTmXyFFX{ZKeIFT=N&Rd>p(PU!POr9gMPg4oCzgs7e|P>-D_xRM zYl_der51h4$e1eXC1vQH^dfjU_lvAKVoQehWINVF3DI;a$Pat58&AVcfHmxqcz;Gh zpM4;_w(qAy&_VWd@4Im)$c>-r=MWiboJ#5FwHh>{LS#vc;~6-y*iMg~;|Ig?UG_8*A~QEyG|?e&voh(y;T z&wEAT-jTlRt@qVKaj7@?5dn+!aBUD+gxFqD?f@{6e^n5U^LlO0)FH}=iT!{;HViDn zLXxm;cXv4n2)DjiM@E$3x0hEqfRon^4TFzEcHxc8WI^`lB2pgX=4d|Dfa_{=U5(EcU-ziq%?@ zva~^_WgE*s(2|%wkeqFd&$SUQu<@b%`e6-6K##v8$>syMP-yPdFD_JyLt`?<>6_mq zWXH@Rr8ZP*h|H=OW#2d%K<2-V#0?Al^M`MKUN{Onn~2hdzvT@(P{aI)+G~N*tJX0i zRjwru9B&ik^Ca2c62h=DcR3wV*qR;rFa|FvogwATi0n9p#|$W%9b?EfIIvzEV}DFs z0-2=a((2!`F8_5n0cUm}cYo)})y$J(J?vl^+VPN|nCccS1b7-EABNF+O6g2a->hAA zTpy`E{+N{zI!CAB*MpDc5FS`#`PwGUZ-P|rcjfh*DiZaor2nhX5{Y190jhDze8Qy% z+hu?ebV5Ik(t&v5{wU&z&Tlj)JY?HPNh*UPMAg4bhKMa5SOX6>6yPt6A?yp-#|lHy z8V3jjA_#YN>>n^*f+AA6U0>G~jhZfp){H{fBVamBMBqZ|46eD^%U6FEhDKS3E%X-7 z9xf0xBQ2ib#cyH79xn>J*2aI+#LwXM{@SBSI|>lb`Vz!y%pdJv7si-eUfhA~^m@wu zeejNV1FPCmdsbG?Yw8AOdr=-p#1@ZEoLZ6_c7{KQcF^OIL_2Cfh3a^nfOx%(KQQrU`^B~yI7mHeB>S9qknXBZ-yU)(UsCX z&rL^D*=3P4*otU9=C0gsiW_=J7o8%;^6zDnyFRi6CG(5tu*H67#;9WZUL3qVtfmxk zxTxHeqtHfHa!MlTgzm&f;{z`uZ`sj-54N@K-}Qy8c9R zL;7NiEApgbYp4ePaH9)hocI7nrxBu;vMSM9XUaE-1;~1-cT`dMO$IL{Xe+qJv7eJ- zSC-u7klPgPXygqpqL^n3^RFR%COU1RNErwAhTfqWB5^DhB3T)SPvEY~5N222NQcDK zO;eL^c_sL+{rw9B_y#sJSlWPX$;wnSgS*rWqgBzBk0R;qnQOjxM!_2C=t6!kC0IQ1 zq|Qww4Xuuk9xO#9QHoVtL*3OF-;kefvqh^eo2?!1<*(RK9orJ(>kE3K=Fj6Ptk{aW zwEEze)9bP{Cyg1aG=4t_CChx3-&6MUyxpm-7TcsC3*^$8@^0JYF?3!)hpN{KMWO-0 zSW99?D7XKsjFCX0g(&bON~aUF7G*5=SsXtS3{`oLFSd?(Kh8QauKJ8$Bg%T;eGijv zI=uVQ5)GT=a#ZEr&*uWmg^g;QJfEPY7E)SHvRE-NIFglH?j5Z&9V)XDsL7%CD?(8mo_g^E;ZVnHPK}*uka8NB_-ihOdJS2>F0tWh0wzj8i%f zXfKctmEaEOwE>;tUw8TKy;6a{&R1!OFSjtZyQ5^p_UT()&J!trYciflD?`AN#w;8H zHiatSjAzQ84a2-nVKO-nxEsx8OXr$4W475;F_nW11x{{3m@VGYrBslCtx*rVDL>N) z%)wWgOdq(E>tc^5vmHt-W63J%5Fyrr6+})=``R>R@VQdYJA5>mjb2|4pctGlkOz)s zNlX>a${e5e{k5U%i!ausq&y5Z4$O7^L!)oSm8GqtWUAS~T^&Vmhn2kcfGKqi!l^sa z>5PunaIp6mnt44|v&4NdGYt6FOm$QTv0-7G?u?w<&4nx7t)GYW^&qMDt4UL1R{Z z8cuD)*wOJDvLP+rq2Frp4Qt3`X=;gfTq#Lu?C~G3LF(*4);vWbz-p5z{e?<}AXJ?& z_K>WEAfCI>=RLNkiV2ehlO0*nBW*KP%n*~;==m@=Uy09n)T!2w6_mBcpKh`UB&<#6 z#m!M(6I#$+59B_#Y^9s;kWH^Koz}|$>DdWracy*4uGbNrhm4v9uLYI7B%_Uh=I_wl za(qz_7D;T`4}hnm_mDHxWC_Er03|kI>MqMTOCmEDcp6HlEzt;vXTNhR^Z%iJefmi7 zZ`G*(1vsR8^7{6!xG(=JP12C}-YA2fgTG2h176BPL~AOv{0hEy>IQ~_&dUqN1E1el z3dX|=3SHV9&?mrto};RKPP=`uqIE{tY&d=ex^DC@AKrs2%E~ueL%KT45J)|O!-tob ztgxoKrh^^Ap5RnC50oxgbKL#|pUW<`!QuCcg<971C^RmTkS$zu+N|1qL&#Jvy{jCb z1;XWn;AA##aG!4>lg%2XscZ(e>!%NRf(=8_7B*hcVi&VEo<4{YfeXf}gGmBY^X;7^?Ug4U+3QGcYOum)goBh)bl8^wa<`aB8wQDu<1we)w4XpzUq zQB4J?>?@Hq2h?4wy{|uqak*kTS$n2^nO=Dl5{b!x=}ZyZ(~jPWa8n2LE`cJGH|$^2X6Pw-xpk>^&BrJ6=vt zf34vZ%ADx&uDJypVn->>!wqtLLsY(6Q=HloiGY&jb-rp7V(jv;=~M$lv2z9JQ0p^A z=tcv~RIt*+)M5H!Q_jpE$tl)^d<(&n$tI?_S>_$eDr@0NThRg=O4(^Ctv=)_>FhY& zRRKLs;*f~W4J8}mzL@k9Tk~DpysTDK8}I8gu7)+f?R2l0;->>fw%G=6r(3iblI1N; zAKn;J*0Zx`mJ@#WE)MjxlKXr3CQE`JYO_Dh*v2wu*&M33X%|JWjo$;3wpSVX0SGF6 zfY>?v_m6&ZN_WVKJI4w7NIRaJ!&;#XHsp<0*Dx1}KMemnT=`F`?k>)qH=qq@?!tIj zJ-V;r^BGqK#iX1I>rGw^%V#~h1NL=oa^8xH%%74%Sn;AFwNl1Q@%})pQMdT}$U6R& z9!6KzR@2}|PcbPELP;Q{1QN~^{;lFdf9bRVq6a9!c?~!KR;||jmY-w zR&UVXP!CR!?pK<#S44l2Rlt}Yi0bMYN5G|H(W#KdpIgeLN)W4ao-)UYyfPV?;@Uo1 z?ajz}!aLm=FV@S_aN7@-b;F`>N&8}D9ad3;k4BBNAPu-HaM$e2>yRu=ov1PU6WXql zBIfaa%nTWsY8LkHxgTZ&??agzF_CPOU9W1L4XeL#7_A_D8gFOHTj9Z<9m!N&t&BX` z8U6H`&eW>~i^mzSOgx6n_(J404igol5kC#vTAcP>XygI)l%hT&?V?vQo;f0YH*p+! zg1%bXJPmH&H=ki~Yx&v3X?<28>&N~n&G>SdEJsvo8aJQBFMQGITcv^6*w;5ofR1dH z5h?4y4DLJWIpK6Z^e?MH8t092II;+gfY6Q?QfplQ2{*Y#ui2l3b#v0bU-AI|cEU*T z76Ui0z3KP3HOmj7$pc2#7M2onT<0Pk9KS4vc0unvYaPZ#fa^qVFZv0ehS5n!TU>4y zS;^|U*p^VDiaAzsMNCYU4!=ch%K7+QxWGzSbylpl@>msS(r2wKlxiM7RvllW+?J}Q z1=T~9P)b+)@fT}?;$6n_g=ci};ScX7BwZsy^d%G?3l@bn%XN>0ti32%RzADjnw+=? zx6ZsrQ)Uy6x6Q8SU=BtgXv%l4&jDr!y<;0E=9ly}WgKusb2vG}uLL%*HON;wU0xd6 z>XofuG7UFB2BnS6mqCx_bUVtuMFhuK-dYkiYfTU0%kp{@+)C0x(`EwfB{_EF5^JwB=)0G1I^QhvfP1ka-r}M#6{r_TV@6oLl^gCE12r z4?2*=YZ{qBV>=s{XGZ`{s6+jdM`gt=S-<<|PH*l_{gHJ2Xu8iGc@oY9Ab>aAa0ng^FZ`iWixZVR6D_D%Gt5imIe9Wyz ziw%@%Y&mgI295su^J&Ou8xp{KVbyzM(jq zU6|bU8uSJ;QZiA8LpoMb>Kl4TmQl>GoR-UpYB*}TN<;8*bfZ4Kd?!pMbso6yIa%=j zg_=Ur&*^d+))TVg0Iepp#l+$n9joCu2-BUgU6AzrvUu!6=_S-u}}HZsL%*P;t3`A~*Z?95bG25g3&HujN^o0M%M3es7M%lr~ znLa9SWv6tn2Dj$2ik;||v?c6@nMCzGy0XGH1!2jY;BG=}@AE~5N_~c{hzTj^g%r$;YMeP}M+@!unz)+pc4Kwb9r9zo3^}ozZ>XcVPo! zB;tJ0YYDps`LAs#WVKUfpya1dUk69lGVa|eeIMapZ4Y?AaO}Rgfn&?36M&O%C0q&H zjP||-_;*bSN+rEYs*Kt$Wmf^#53D@*d8TQ}tBGRmri3^X(1$w~vwNOhnarMxpb;d^cfAKcG3F}Y(tJ4wCr{{ikA@}S zbN$3c*Cy1VA3Jlb?po?XkpE1l!w`v-#gXYj>4TKX_G+i)ORbyrmy8fBz5bQ+M7%8v z(=Z=-mhx7}mzCK!b^L81JEUs^k8Yg<2X1~pH=Y<5o}PI#R$nj%Zd=xWSJ2ps_5UD% ztkX01b!h~+Oq^)AoQCJcF=rL30m}t?dON;B*zMt1f+N3-|JoQmn$MOzIgzQHKV+AudY?T#OGDa)tQdn`uSFo`S6Ul?=u!-1~hbpRDXL5%j}2iKC+ZuqW#m9 z3uAVBchrQf!`(95c=lan%!GGWK?J-`i$-trCCA;B6m3eCiv8{uVFr&&(iTmXJ#>(U zh}%7yGGxMm?DYLWbjH?p*kuN%Z!*@vxczP(a>mOxOSrRJNvYjt`W(A+l#RFN1Fg7p zr_oD=-4N}4bY$*BJ`OKv2bhcx=MMeP5Jnr_&CN|D3Gcnx3(>#vw(bd<%JoS?z|AHo zT*2*EaAVre#wqB?3juC6z6hu_DClg+YL4*3Ori!y(&ADY$f|x(R{hFTXvzgnxwWw7 zVsP%o06W5qRri2ZC)Z1-8lgpt>6Ei9NcAvo_G>+G#g||u!}|rqR0(NYs1wt~RGO9) z)SB$(vT`k`bjxT&m&BwR{3DmXms(Oixe{75cuu*@gY*EsI(&;q{sA zF*+PyQOTK-fV9(wqX#R>k+g)j4^ZI{gX$O^S*$2IYE8#HyL%|#XkrJvT z@3MGwTbs&fim%7RbU%FyMM0wib0+Q}DFl_w_&2A@q43aZOP230wZ_vyO6tpj`oiNgFHy_Y_og5Q*yBt*W3v%5 zLMv|>*)uklf=-cu7)5#SvC*@Gxdc8;7Ej4h`xEl6ju50qUfG&`gK!rPr1AdUt407M zPXC+2;c?7mM z({TA7foY=kH`e`;iFlmjdc-SZlYJxex4(gCNI|^EZx%HNhK6~hbgT)0uNKn1GRn(^ zjSKgj028N)(OL!tW*yxhOLE0bU zVqLJ{w|$rz{}}OSOk!eLU0q^8BJp{VKjNQ+;4-xJt{BK`puRA1IP*;pH84|Lcjt~n zWon5@$9l59k2_eTb`hj6hp?gJ0;O{D;g#?nE_72`62&&?WJBB%z?Cnw5i78wki30u zB1<@|rEma5D1<3X?qnmN8Eq+`St72wB2>G}wU~x*>T*{X@8|r?JkuZjPOehsU?oP8ge3BKXV{*` zE10`^b7OrhjkshxnFn-eB~dz?pi@AjJTKMKnDjpLm4_x4?Qb=3XTbIW&ifXz_|kOA z$$iQB#`rQTqwK<@DVwabvk5;^bM@JL#i-;*HFW-keoQRXJjWkw-ec1Mrl;#!C zlHx1P_t`cj-TAXom+{#lx@?cXV0+}XILkhJ^Z(X{gcB5?i2Gzbh!Gwhj>lp;I`OReta%58o&j2-kAI#3@zDID zq69!2DHxT|-qBI0K#3VZOGtTKj}~e^ynhP_HqPH=G%dD!abSi8LZQ&{B^g=Sm(qz_ zpKRZIS{D}=5Dm?X?nDY8OXhI0%++zXOK53nIXF7nySn;p#_#*jy+Q9=^PZ_(AA_F9 zA9Kb z6-AY8C$H$VPbg;glV&8mvbVsT9rVV>|uX%t^v$C361uoz(L}p=!N0nBr7CcobKRiSzw<1 zTXBP8xo$)9?5iBO2l!g=XQgB&P0_PqwsNhGa5g&O#YXCQhK(`^uP+ZQ4^IsTb5COt zvm7SU38oRkZ>?IxD|<{edMXza80JgUxO!{ya4M&vw-=Oj=18=3II%UBv=8$^H6FXh zg{`gYiw($yozPCs=jU6Ln%Xbrb(D49_tl0oZypCCDeRZ=9>vhiHhz(h60MIU`oiMv z??)9iv!SiX+JnIZqJ{v%NwtcjhT`IC2wWDr{wOl{Ve`k}TeGh3d@|>bCgo*Vl*GjN zhE@{_US?um?#xp?3CwyVD6Y;w=f{z7rE%N5X>uR)1BKTFEnQgl8xW>kY>ZW!m=x!H z#|afwfpe&6k)2RzK_-5g;VnxUG8>hlz~Kl~Py@da7*~D!XT6v{xc`#rnrB!p_vx2C zhUIJ5>#9-4<&5=9rMyGD+s>QzcG#du8PC|ds+rc|_6w5dZyxSyQ~rSIq%eFNS3YXA zwi>h0d5VH~F;T~H%SuZd5*9Hcl>8$GZeK6g2pmUu5l4rHL6{=!-K}RF_8^gXO2f#P zUZK5nv`|UL$M|g~@tbizsZdf|wul9FN$C^OFn?dzqmd4eZ+IDLcG1;=YR9bF`Szim z$K#kA&*KeA!)!xhQWWf&*z3mn|IzgpFmbm}7if_}DK5nwio3fM_u}sE z?hd86ySux)6nBcVxVyV^fA3%J_uZR(37ciZX0s$S&zw1Po--AdmG+K~C$~%~9j_n| z2rE=Lpt6z{@WFX&{~R+CPkysIf_i*>%tbP`apDy#SqKRYJ=^W;TO^wqCR;32sPJ|= zB=>K2|1tMhz))sEkX(!lB$B#4Z{4;Bid0tD3>JTutJ^pJ1Pkx>MevZix^IO=m1~yv z`QD0$%~CUs?*a}(Sr{KLjTiQLf2X@%m1&19;3<&SPD=IO;tXYzs0TjwTVx0(=` z?WYw*I#p&xjGA0irH|0tZu>O_-Num{nI8{RwvOfEV9R-JKns0ZphXlbd@4S z%{T?2B8AZyz_xm#oyv)m@REh{p12})kfzvu%vT_SdWtS(tiG=FFDF`l(QXT41>367 zKo&hL`$8Ph8>)diQgwHt&gY39$iq{^o}_pG4z1?9^z8tj_mb&&geH5Pv_fm}JrWsr zwI%J8!M83TIi}5k4n&O+cf^memscu0g(U*28n@&L5XsHw||}s`GL9nh*dy zWRQ~yZ^)aW&a#T}QQN1^&_YoE;>kQPmU(q<1J~4O>eq+|VRedixEWC$h)UAYfw_G= zh-8ZR%;BbIxELOUW5D6@!dZF@rO-H0V4*QmV!bgYlFLlE=wG%hU}B8}YQw-SvDkcF z1gQJs;?q!kYi;VFMtCi{)-jCZcC`8R;-9Y3)a;g=59U}0e3YB7Pvsf>j~B z+zJ&G?dFS*lS#x%x$F}~opX<<|)udbfjA^(*lfMvU)s;Zc__L^=3;;^n`*Xe3&d|qB& z_S+-Ozv~D8t>`O-7qd?XzQArFJpUKMu&^R_aB&4=OKzDJoGyM)Zkff4{7BmZ!J}gI z2c^$@&DAVKNZnU7WqODZ|9)UtGk+#U^W7X6)!@V^HxiZGkeoI7E6FgY7Dnz`W;qIL zijBw0snf2FtxwH)6}b1rUUM7iJc65hAQVSsZ61%zqGfT22)_IL2u3uTZIFPJN&D0G z-5*zSlvp+CHq@LG ztEmbwZ#9kr{&>$;rqX1b{7gKo^TU1tP3YfkZkvYIas<>k9hFvxC!5j)nqoY(6;};) zeQP7Au+csR-Wt+b=UAo37zL`0wmx)=4an7Og!2uy4q26!d;O{&U2aRF?w$Ul(6n=W zX1UKc5ZSt_j@$XvxF3fo#j?8Fe{&sojWP{B)}uM%e1DU;lXJSh;$lQ)Z;8v|i#a?v z?k`EmX7k9%%Hm%aD4|iR563%7D4mkfzG03QKv2XZ5GS6I3$`Jq@Jl1Qu$FAHQAEMWma($pVlrnlFNGGD-^-O; zm$Q)M!!n0nO3#|QdK2UDd_+^_;}QcMs7|kS_}@P(pRcx!css*9%n$I)B+b}qj>R8; z?NaW3@x}O$pWeql;65CjnD{LzDT)6G_6#uU`w9!Y(Nbx<(KRgiHW%`vbmh8FzB=ds1h9xCh-8X z?8}8IWPJR|gKXbPzyY(>_k$0xXYZSxt-tYMW@ZLJo1nTn79s)P?n!m`{`Nq41TJUY z4deRyIxeTfuj=miG~4dCBvf+Q&Aq+5eBXy|GCy(Bvp<4`3R{PVAwfZ(6-pCo4Trk! zSl_3?i~zG4;LCI~`TqX8=CH8nF&<_P* z3_tN;c4sT?^g8$Hy7_ms?*MS82*P*>GNfWqz#tM|q!HgZF{?lW;u;$wtQwAV&7ahn zgcBGf7TFL!NHY4bxH6jcay-M~_jnGX?0<$r?lQ!1d`n{R-d3A&vCiK;WNaAXH&~2N z@1IQhF&9BelgSZEtB;I3Jp7%V6~{OrjuywIhR=ao5DeKWWL4JgCn@lou&6LHa$9Uo zBJyd(@<34|&Js%P?@Qyc6mB0H9ToJH_jC3or=x%~Xl*;UYS@MD_it|=PR5G?>bt^_ zxnI=-yymqGl4bQ51ME*zxqn9}I}XF74z0(y?*`Et`5yjoP?jb6 zHkHWci)d;pSbXvAKWFdm?Hqc!jq?f#mQdx9Zr@qG5z_K-8R}C59Qa`H*S@=9r_QX* z{9adCcvRD5?w`(*uaX_VyfRVwSdVaYG-wHgf1{B;vNe|R)$|ngxG#!s| z)f@=hiKk`H#MU?4`<2{Lstr4piQ0)Im_=^5)Pg7)K{QmjEtAE zAe;>r`JZnw~mjq!WZb&0#5LUklomhw~G0hsO_g z@=ZCrJ}6#h9^#VYbGjAo?c5?YN4c5C@h7>W@x_qUJaT0Gvr>gqfujFHPaoQ<0|ELJ95}_3!Bs09?U-B`0G5uXuc3TbOmEGr1Za)yXh0Fo5j~ z>(87fQ&|(cBk@<)*9L!c1hrZnf&kCw$(M&ykdU(SH{gT&S60&PcLuM3idb(j5H>mV zk0ZI`!6c*Cqn&63<{vQvZ(((HkR~}ZXY*(KzS$u*q#-BGO8Wd6stt8JcXGe3hz3Hz97 zgx<#a-72SNTt04RY}qIw9b0To&0U37>+hPH z$X`L$MmPJsR_h(Xo609&V53OQ)RBnBAk?@#(QnA3OpOTWt=e7wO!Q-_8X8u7T;eZu zztO6E+(`{Cs}bL53d|M6{z5pL2m_;oM7$&QnHHV_H;u>WO3BD+HF};RwLW5T06&On zci?-<_1O)g`%drl8MxkCYtyR+9t>v^5J=n9{r;J(`w?+9lCNjr(EGIg4S9vmwA#4UIx|^oPma(;eU?Xeyqqgb{eWGJdTM(Kxz!k?R zL6o{KKR8P$H{1W5?Junh&Uozz*fH%QB!8ixa!07;{su6ZLUlCp`A-C~*^X%H5n;nM zl@(g(f`6~SfTKg#yHBvy#W{kKv!WH!B!6UtwQzjXZ0bkG#ve#?_FU>vmUYr%tA%Op z?>|6Fu8DR#@>!^o(%atM8_&RyygW7oaxp&ZhEe^6j!+fP&{P_s{obg~SQDkzo|9Dk zq1I6qTV8XeSU{;1Iy7=hPkR?X={X1$A6?`&%Lv6-o#I<-30mu}F~L^9e>8{dsbN({ z=kP#$ajV@e=71_)e!D%yUE@@%qC#(e85O>&>i_D?2xDK3b+!{XWk$vK;_nr`+@j>9H3U{08wzz6 z$s%iRi8Y!0;tz#J|6S}DK;FNAIb3B!)V@ibr}Pwo%OAf5;eB;iV`4^+Y69m-tanUk zbON5bx)J$#=ed^FjZ77hqBSX3Z?@&i3Y**C_{}r6(HU<#eSz6$*RDt|ZG0a-Jw_^# z;#=wID!z={l1G4QB@qj09B+G}Rrs>dX4p@%$n4+A<>W%%UMXA_r1e7)2K&Rg5!d(q zMPn~&?^n?rPDfz_)xMGQz8`VOD*FYMTBEtF)STGJ{eL!%ap80Zr)xeT1k;&je}FqA zO%S=ilNuDmiE&xd)PZ(J5VQoA!`zLkuZ0@Dz!)7(>)ek?1H|Bs^XlPEKHjpOo_s$b z#vXhk4Wl3IPOrca*4p(p_JmH?F9P~r2(~ZvU9H-@Ladu@S}^bWS9%ltT~y#48;ol* zzww!%K&h$EEcW8sI>J7yt!x_`%K=hE9_fiA!vg^Va>Uh2Jo~tm9etA@zMhsHXQzkL zeZMHda6r1xzbeYu5;Pz})9!f%6dIr$Ms@9eyhRwQmXC1zq@JD{4)4r@S~;_1EM00X z+v6&34RMEGQZgcTh6_Qbpv?Yf=XMyxjnS%1hd4CO{-L5e$KZ^^HL5(<;u_=nh`%vs zkk7VcELIqrd2vgPiRWS0J_j3gm+BVTziLe8woF3CLVAHEJ% z#Wi@zqG7X&tJjau0C25Qn3ut}<5Gu+?BlU^|A1*dIalV|G$kZt6*;LJDt8k(3Pyau zk2HxQ3xbguCxkuxt=B6@uluWFFZ*+pWZBHU<)?5oFOMM2Y;VDV2~D$b$x9x;dX|i4}kq!W{nzMFX!C&d|tz)ip4SF%gN?t<>iJz^|R$Uxcda` zH~4X<>GM*Mld~yS{OvvI6Og4#zee7NpU^L;gLl+NP$WhK7Vj z%f`O0vmIf?oUcu-U9E^zGu5ENHheAhN5)SeZsYD(Q< zodU%=W?V62Fs!;V1ZrhqZW|5QsVWY7q%qp&;DkeaGUjK)<~oYqfMC8gPa4&`Jew`Z z;EK(iV(kuy#v(Vvcc;$AcwK^N`@C>#o#CpnSn}!n>z_s~Po!-&j%P6?@4>!-n)IQ$ z+0KmKZ=c+N-DT~%@9ZYp{6^>fSHGTUjh=2tfXp*WDdy(==+*^zf(^r)l?{V8-EKV{ zde!?X9SNTne&`=6G0hHGFW|4kx{Vn^xnQS=*Cd8VS_wBrDD2*FF!f}F>FlX2A5R4| z*-{=oKa|EW2s8P^wd;#&j0YjX#Sn~IG9ioUK7{D&t0Hb4derQ>NMTEscX&*jb?x$AaJCtZ2k3wY+bY%SzwFRnh*Q2C>qxkX=RNQ zOqI^zbc1s}g%;EPVaTL_KpZY%sG1N#i-WpU&ke79%*a$H8=v9y>o5hb={%vHh$;$R zb9<>xXtIa`%W`o5sg*A3?xe6HT3XLq7^VB=FOAoAuNlF505egELfPg>`&I`Aa zswyfz{(JtEjEqcSM@I$>Dw&>*O%%W@0(3hZ4jWwPZt-V;O(FOvvjEdkFjAo31pdtbv~iyec+hv*j_G=K6%-cQZ}onb zmX`LpztQ|R2kFM`KD{Fw2B=Ym)#nvG{$J=lh=#NX;fw4n4t_Ks&M$9v;OuH5@@mjaEv5n|2Nj#nXJzgVfoK}dtC zET4~NtgW>0{L&LY6TDt`KVGVS1WsS91A{N&%T4ooIKS(2E*pNaL1O8^(Ja;rOe`J!Z(a8dy=DdtMn zpqk6sZ{@`*j{C#V@>t|fQnFh%)`7*r-$V#ek7_G_S7yTa*qYqb)V6H&MRYx(pSiha zr~U-#upzXlsqNV43ldmbK5KwBjSM1VQ<-rTqhg9Ze*=mFhf4oBD&E#a`X${*zlP|q z!+dt39d88j@g9(cEWw#8accE!fEv5dDteMkHc3u;RcE0hdcb!cDxf!Ct)4OMP9El0 z1xRH0c&%b1L41zw8x9*O3VK~I;fFPiI#TFHfVj%DEs@n7J~6RjXh?+dQCMWfSI`K+ zt_&vzi%&da0z_ zrZz4!e?*`vkk;%mj{a zy&`=4o>{O%{M&l>K7jJ8?`~}Ie`#W3#NX@wDIOuw(FZ__wY$HMf`tWge<9EI`e9>p z9?e%>QW63zzjJ;+-P#faCb$sL2*Siq=3xC(Q_(}w1l_f&V!(o(r>7@zQk0C$%+m7m zzNx9|8y`zc%k#DNhd~szYTH%1Sn-#9C`6W z9DJCJx+YNd>9?)s8I$@rLGJQ(34<;U{#%Lz0}G0pNMl{9RuA53i(IN+_FECPTxDC{ ztg&Erp=R5v83k|uhI3hO|Hm{OH7mVIuiFD+41>0JV=eO0+p~0XEU!{l+GZR1-sYj0 zf;I8ir5z8uwNY>-e0*dh4NGWB6>S~~H;nqIAeCVsMd+72Hac*bdwJ>a>Ts%i%nGq% zKPAXe6Wyhizv)#C8`kkaI~pShi5xi@f7ct9_>mkhEVYkJwL>fpf3>3~%rHNs7?X&u zn3*gm>wq1cZ}0`?i&1bgqK)S1<&uGvUpzC|J;I}H?f2nzf4~j=-opdsd{3k#7}~R= zsdi{6SvxE1m(`l&uWWjGAFy9GH$*)XfuGo2e>8cZ9&SqdbwcA;y^|)3bH2>jrnEit z?JU|dd!CUM>%K#f`#w_bAo5I%)NdS|jtns(W}EzF5eqg!3#|yZ2*od5{Z(e2lC&Ur zd_13^JW`U_G_z_@pv)`~*ejknE|8xWO*Zfe#T=uNmFrj-PbsNvShBjPLs-^4HDku% z^LJy1I>(dJ3X49ov>_fxAXZT#nSQ^0W3ye|$0} z8|QJk_sQ}))Z}sb2;{jtZ00o2+UZTb;kl|L@4Ck#heYxhAVm7owbjwl@elpU$jF#2 z8tDCU|2B{b4mn^P!Iz2vg#>FD;^yPx2(BY&5aP#72*PM_Sld3x@go{j?x z&)uJoiecd3{;73>}Y<65++z(-4NJmGpr`7 zOMsEm(w_0Zd5?^b@6HrT{j*6Hpm*io3bR>Jzd(Zj^DlY5o&SpF7R~mIpFUVOI(=%! z^xksyH8>sEV1BRXXLz4kiRiv%i?8l@*rV$ldK@C7>z?Z0dr0lL{!{$U@l#s6^X_Az zQ8VQuJ*CSh{K%3$)%^|~$jZ&Ry$83=R$XShXU`HR5+`SP;$&9T-2<7JXlPIHj*#Uo zsask8`_E6cQyamU{I+qfPY!PFu-{>FUuOe%v|bi3E|=x9wuhoK_qIU#CQ$7hNpXIa zjo)n+RF*2$gV)mTII1@y#yq5ORWvt&JRDL^x6|r`8B)f%Tr!GGE`--)*EDRj`dohA z21_pnjUaaZot_h>wFE^%9cE~Ihhkz_Ktth&^Ps&#uM0Erw`pysjH1UcU;ExhKqqqg zw{#XLd1g~mxw=X{F)bmvWjxQ4Oo#M*gKi=S_1nbz!k@>(VN=RR^=l{+vpPsUuA^oW zvwsa+*4q773&3|l5oQ=%%7G?v{?3~~iZ808E?C|GW-P=!zejvscOAMyAQcnMf6jK_ zqHgnNWdXq#ha0?Uscv@CpMhP~rIiD9`*<|VdgaUAHSxG74)>Zi%tliprmwGo%PFDP ziwk(CH;moJpbIx5_!-Yt&4ZDt61XFO*Z67U17^ENeCim1-E(0x$J4EH5x!SiylL0i z>8?=3?d0qRbD$2tZ2YLOvNw0(yd)J>dTCXhqKcN3d2GlsHYa?Yi;)aoh{Z|?S~>Fk zNeNP;qE=o`OH1mt!sqWnO!tsOjuiVGp)gPV{U&y#MA^57%Dej#e-8(-F!_WwHYuHc zPu&NaImc6IK+Bf}%a=fvlvw0<)FqmT5Wvfb9v666eCN7`CEdjkM+#j*T5OnJT9qho zi(Xj3zr{v&(#P7z>I&NWn|hTV?6Nx}iBZkhL@M@Q0SmGIp68Uwx!Gkj;2m zHqAg1_*V=+{(d3lcx5bAddApzdEAM<*^QTbAGw*IpXd2_y?H%W?cNT;(9!eq$^a%2 zKoUxunNe&!O}e`6M6$cRKOG>45Aa+MlNcErdvE!?&+w1!IdB4dl=mAKb#{P;5m;jD zwN=~_5D>rtq!+NlXmegwcR-H;Sb^6_4;cfnsrYW2U^<>>tUA7L&iLN9)BNo@uicKH zLPJ6}JvUzP7prwY!moA!s`SIDcx>a@J2WCIEN)#8Gp9SfkNw_yXjdL9a`Ei!Z?d zmbv(-6vfy`9ut2yTPd25B5K*pkK4Vc2&vJOSTtsZ)IKw3y8UGZ6CA44L=}T7O8p9| z?A$tOX?M!oy<#S%gvpE&zoSvBec@K=Bm&bKiqx(EQV-au8O@X*sya;8sW2?Xpt2)Q}8#TwZe4>L6-VqI>->G*@eR@`34I}Qe4Js}m-_~Xunh}Yu&kO3Rg09O% zsYZ`WX;9?jv?Wy>&|zvN`Ugm3GZKVEMX?I^97yZv!X(o}BP2D-lTVLNH3(SyTv@*6T%0?7=u={`NALNHQKftP$mX-qD{g7_o z#6+a-+p+5I?(S=G^_4C>;fL}^;-_mEV2}Xxdp{}A;1CfV0nU?7tEDFh79%A+J-@N> zj(R8fpJECG{-$r1T<;J8bWA9Q&(ve`Ky>z-e`xZ$$+qnmLS2qG`@6pC?;fwN@Pw!U z+;G@q%U89v-;Yes@ZO^pCGZM6cAy-%qBIH)ibZY;{JA*s%VQbod}s7syG!`=n$Yb9 zo%q#?6Z=$R9gKhGp^b2IRmRqkZEBT&@}tWxE_lcTFwdu$8Zla%nFp*)lkUn@3|f6? zlTH?DjQc!jRI3MV`pB#nt$SS7piUQTd)#kKI&e>~9BK?_!;C9*yx0-Y(=Ti4ztb7e zA6?lSk>U%gXot46K+4NAR>ncG#Carq|Ll}>VE;q8Z)ET*`mt1M*|2E^OE8u^V?FD4 zX_b9ujido_bFxnN5jeC0y-^9HI^uBu0HfdGikLK#CN+-~yscMG#sm7Ja(T?uS@(v) z(|d*aw4jOu;uhcM7Fcs^7IPP|W7t^~Q&PwLYrcTKq zehodO#W!tsal?3jUNfWZis&ia86)eFMCnFSya5MLLf1g08^ms?jgY(Iq)yXA- zu+mnDY+6Byf{3!#uSG~55}JURycs=IDY!u}y5WyNv3}TAts`7?rs3)r-6tjn zUEOj0H7hIYeVIz_Dy{nz1Dx4R&Ug9r zZTIf%slW`-Yt7e`J+CT6+y9*X)?u*33nqWdZ zvwu`NNWa;iLf4eo8y9qP&|^cO+3S7AiFqh`j872vV~s-gi;1-Mh#bD=X5j^YKPovn z=5!-+ElJ3p>)Oy@;)!~*7iGE%t?AfvqgtiT$o@C#8twWd+Hw{BZW}y0baW0)wM`TA z&>Iuj1v;Javi6JK=^1QYc0>fxQ<57qrqJ5jkkQf7YIH?K4Sy}Ia2=|`Vx9h!f`HU# zgZ=)e@%bbMpjwVVAu~7bMI;_DsbvWI%5x272*asgIUSJxP0#KZkpKD?G;)i9U)aqM zy8a63;jn!;!Pl?nL)<4a0*78Wqni#4RQZ$ zIH40bORdD=|z{fQvi30oyA_G^Ju5+-*Hn;jU5>TY=6YIUru0m-RR2UxTpMkiceg@h$dA~ zUrB@@hm;PA|3wC}T@w}caMJ%12Jssn%v~*c?^Ng)U9lNrS0s!>Sy?9}4|_JbOq?x{ znB3*%DFdn~?@C67dZ*hrYIJ(jiJ1W_jmCtD@?`x+lkY0js(Q^X@KGlV`rRh*vL}l> z4f+uGCkwUv>z?XeX2|H&s#_L@(dmKAwJ&*;!=psJl&P;3TBO?^{d>wKIO#` z5mHnsrL?;V1t~$#OwZwtKS>7_&`!m|it*}N>>}L7j%cNesu_a1dX1jH#vjpgNV?j9 zYlE(CcfZf5x+VDcl0t=}VA0CzSCA&g#<4ty&oH9l3u(s)&QFs#jqRDG?U`vTPdA;E zB1^^2vCrfl^_N`a7S;U@IQ4RYhTJwX4|+kz>9DfCbgnUN4@dR6Z)&mC2%bucd|c72 z>zl{Yg=Y7%TDz)uHZ0EMCc3YB1n9V(ZU4-2M52)(>5mo5ab2J6`sDYXpk&{%+lQiMNy+Sq|6ZH8D4zDN%3E-12YA91+Cm4O4ULjE`j)7;Y_9IiqdeG35K;I z%0aS8CKisNzdbbdvj-`d+@YnO0d#$sZBhDM+@eUTBj#m_hI0sc%Gj}?%9yMWa1XN6 z8_c1(hDeDs0*;PD|Lc4gxOCk5OJ8rOOYNiEmKb}1*T#ar|>V+tC zM0pri$BEyGDz}pO>v0Kr+fuHi8sa5j^~+r&xl=mr*7|+_XLkp)U>u2do|rw{ea(H@ zEO)o4i*^3Krz4mjudg-DHHLRHi4|S8lqag|L(7HXpc*SmoO8|5!I$$slRFEVWO~!F zGGz{RwM}E&==n0`3Ux0;70ZQfBjdpIK-eqBS|zk^@^Q&iSGz10_psI!b+ci6j{PzR!^E#P=&+DBcSG44N@^< z(Ma?qWdAC?q$t`}^7tBMFdjLS;s|LtiQMLZGJQanKOt9KNfAC%;Fd;36|*R1rra=N zeVVUbS*%?twpNrsv=m%gj?vl>dfo9O>Xg4{(t5pR#p=(j3GDj4i&cH&pRr}|W_aqW z8ny890kYLfEBksUz4Ahm^&}TJ>l(e_K!_+D_MOAifvOg`@sC?34BfYwV7j*`TV0>{ z8~%<6mqWN9W667wB9zTe=M++W4KUTO&(49<}UMJJiqZ@$d#+cI){$10L{O7mbCptx z^b?GHXF2@>6Z$zJX{@xwMntJRH@7yO?Tn*x8758hcZoFv5VU#f^U-D2FhQ&lApz(!#)ncc9&^Qs``4TY?)n;yw5*CIETe@$T*%c$A%*f7knngJq~$Z#LcW|ErI%y4s3fUrRty=OS+G@TP43T^*Qm9ktT><4ZnPlNLqj)t zy48%W;2?5yFVLt5ObkYHsI6=o90)jg@hH@WJRe&`4H5`y$w!uSU~7kC2dPB>rQUvq zXty*t1{bc7_UzM|2<0t$F*DhyejQu3xj7>$tNU$o!L%Z9hR!%ajYTu7xxgvvGyTqh z0zFZFH4n9Gt(OKO}oB*a;vVm`wp^xdIPBL{ycc%)q-(|RsR zT_Ev@IVh5}-(w-4&;M*tW7+GIUcAPbemuE%y&cYKaeVONcRsR2d!6`R zT?Q4qZJxRwGEeBArsb`0j0tQ={0^REU~x-2&vM_L=wuP+=Je?Z$d`CRLtj9}NS0a3 zf}EM5rl|h;Q*lF3#F@JB&O>7^zrmc`+y?8%@~V`4D@viqmr5US;$aZK&*!azZfW5New-U&IK1Rt_TG3())=9r?$ zNU^uw^F4b`M8Hh|5#95@kJtYkp#Zrkf#pma>C#UO;D=-c)^t*-40HbjrCF|?8 zAH5R{tZ|F5Y*uTrPX{I2I-ZZpOuk=YbBZ{l72p+9UT_Rdb4wu9klUoQzVNUibsJ`wp2)y9Ua(fuNQjvy8i#n^RNz*c8uTBG9b#kr$6hN$va; zra^8exqP@9TpNJFfabQMW#6$d4NlJl;DPp+`y11XNo~lNC)C5Uz9{SU3hgGilSmx< zTF0J09)1sTWJ78+?v;^o3~`v>+k#0d)>PEZ3uaG?%Z$>!Tx15qW!IK%Eq&)*}uq67?vyCSk$iw`0)kf69p_)z^@}nSWNMAzmvl_`+TM4 z6pJMtlK0^VTZQnH__8(tkS++K!f~-lf-;e4%Hc^_S^Ce=gGc9BIqmJ)@9X-aP=kjv z*nb<%&0|MOsjG?ESu>Y-x2zs6dw?@_@KxngjNmeWPr|_CzvhVoI>!)+k%Mgay006f$Mvn&1Bd99 zr-b8qljGmo$np*%&weB_mE{{8zLXe`Kj3h_mNzlQH_+3|y1ysVSb>UV#g3)+IQlE| z7sML4&LCsC!f>a+JMf+98uo;eA_2vfBX}t=)#zZ3DAt8o^^VB$Ty$YBuwq0wz9U<7 z?~~*mMdT>oF-{~43zoUc{Y(MF^bD7uaG8+OY=F{&VEAZAuH!HK9ZaYBjBf)7`fz%ix92TVe)-aw%)ORLzyr-%Q0{{Y+GjA|M-ObAHMs) zPhGj9KF=%Bog;^^wv6}N7nmQQixjt`2j5*p>8@9{c>3myBYHugg+*TxkE+)V6ZjW@(*kw;*dW80?D#Fm-&qVp*+M2Zl z;m@wV*x@vLgfgY}!?Qc`CZvDk zywQwhnIb_W;()EW1h2G6FId>leJlaa$W;kL9(V_+)0#T>{k{Jz`a3r@L1+V3Yh7lN z3NLRFvUF!(inI_MLIfiZhiEs@!mSfYXRbMw%&{y=mW zcfFBx-BlK=rM#d+^>KVPWg zVx3;HD#)D{$P^YccBWR&V-s%FAdM6?azJ&4&m2yJ6UTO%Td*uaX;jc!7S{1kP`P8! zSR=JQBPn4u98QD~$BvkjY%`OO&RvlCNpe;ozaA*cE*tLgMO_g?d7f4&R7u2ngXk<@CP|sfS0{hB>ZbwXvwu zQQ0P=ULXJ0(TXnMGX_L2)BU!lF0z2n)b5yX&+908G2eNAbm-UxgZrK~S#?MF)3GN& z8~4mLB6jzilJj>_*?B2?DSt|BbBTY_T^;n=6Oz?_LrQ#N1P?@oS;3bWpG4Yi#me|O zcT=MfKung=(YX?O?MzHJo~^BO|Hxt0Gv>kSKba2N(eJZaoDlX5Q9?&cLe3mKllL{@nvIkdUTGHtxnn-O?~ng3 zUPJ*QS;A<4=kDo>ti>=J!V?#A`$Vkwd6Tdw7xKxDtU(U_P+#Ck{9;gn9No1{Q zQBnBPyn+7&EenIB?bIhBAc(m<53Mc))+&U_$_iP?vnvYnNkxS1C^%An>Js3x+nStt zkEzu@>MYP{_ZAg~*J`=Yqd%-m`Q^jb)o~dqJA7p-7ndD2_Ekd36`VeWUzSU`&~b4O zs$1htv7Y4SXyFgSpG8CDzn;qAdVwUDL>I?AnWjW;Pojb%jbvumKIXBk!_jt&B7H+x-D^G-1T*e#v^FUXnPz-&e-Tr-CC$lUsz?W{#$wnOrS}zwhrR>GHh|+%p)Lb08)>$zcP;Ave^~S*nqpo(c!pzge{Z zP`v*PA!ajmU$gD2uA3asaHr63Tor@udKXo7etf^$VPil9Xjb{Av zaU~>)czEJ+di21-U62~QG1|dhk?Z-B9$QHI&!hD(vg}^HyzO0F44$s{I5;`B_jkob z^oeLAnbJ;9N~kD}Kf27qU`I>Kt@FzA(CyV(gYQLA4)-Nr&k1Mpg@(i6iF}gTg9AF2 z+UHY4tZm$^b*9+HWFA3kJJy|8*|bTJoSaC9M$tfJ#{CKks%r}<3PagdHZ~&Q6qfDP zzgCQ=oS4jMYY7S4HaPBYoLdn8IlNL*ojkj~9wfUF`2!?d-vQsK5u7_K3`FLdcIP2W zrjrY%nPS7ta>Wli^MbmP2*az;g3}E-uOM~ty^o&IYP*NS#e6wp%3RcjVK%Xu>&H`ry2{*o9IoEbfWW`eP7MWkh5@Cx(an!QEH6rJUi5R^a-Ej3P1YWlfh zRv-@&3;q+K!7iKMD_mbjklOpJMMX-YHBRO3i}sr1Equn{5@6oN{9A)r)X2xb(1~u@J}H8z-;K1lw3cX_Ss7ZN1ui5C%;6|3#?(A-;Y;lX`if@B8E`EKVf? z&~xdiA@wIawZp^3b}c2zl=lJ4VwQKtN6T&X>(D%g+j(lSLi;phPsB$z#$-NU26``2OjhQMQnLJY+;Z{!!Wja z@|d}GoT84B?0zk-g(Y^ZB--$Cy0{#NWJok3649m(`vCbCi-2knsC^N=OQ%=#p!R3b>SRJ52iXBPWsvxT|se4h3E zUou<4>A%tvI>^EK2r({)4Dy14RvKLy^AB_;PrRG37Y6q) zP=86}bIKElMkq+=i2@4_Neb{dBt4|R2D=iFvON+`6G2Nz3>PXJ8(3ZYJd4WeVe|a? z^~B@-2HQ{y9m8T)ic(&JMrodalak`$Hy!GDiRO>$1Iy~K~N+Q3Rd8as3;BY0LO})AcGrJ=ejjnZrq{J1VHcI--<(_c|M1OH`=!b z*NEJOsF^Cf+#wdJ+s})8|J4F~Y=XZ9-Z){2n#;RPlg{QSIOWaW>oeRk@i6_l9EL1f zCwhJvij~xi6<>*woS&O-A}mXCr0GogMWUX7wm7>~^7MbO0Q^z^oT{kwZ|_r(F#uR~ zPX|bAFNxO{!{=w{AD^By!H3J)Iqz|85=X8&FGJG<@9}%p?f_E&q(2w z5Hk4M*!~c6ye*y=jA{?S2dfQ9ryL9bs0u%~#v*M?$%yi3HwN)I`ov{>y`WX|yfIXF zKf-nUo-xt$y$Hn_>`;!=l5sbO>~M@SrP%RFmby1HMBq@;{9Nug^3B*7!%9R0PAZw2^aWW)@9eaNv^j&_6k@vKcJm9c_AcECqRLWgqk)oAVbTcuCA1(x}Z!!*f1a5+LN3qG{YqItAsb|gbb~d8NAbR zySeJg&rwZz;D=JfOto~n$>MPC@W^cT?@vWBjcs`aMDiF+?@vQA=oMWrHVd?^$*d3S zeaqj&)g3Ri)haro6T{JKeXctDp@VYDD~dJeLgZ=0ygFjG=d{Y|r8u$eQwln-a1p}A zv}lZ-^zd)y+{sKPXZd}?*0;nrJD$sAbBJQY=9b-w&}xma==~vJGIx3h zWB$0`bfeUou`Eups;j~(S-)n!?iG6qcz7J7rtnNX?!Gy>MCRKtPnQz(nqlTDvWt6a zvLCbYrn&I`uF`2(2FQUn3W~Dt-6c^}wO`favzqRGlq$&@(tJE*;(@BK`x1c)9`e7+ z{69*DOL*4%?ey#$^d0_o!|g&j@L>YJ1M4EX&WX7_*Oazv1Vz=2KVEluNS)5LF@ghjs4yEhr_N%IHrkDMNP73r9-6~ z^~r|kHoHNP(>gjKxwTMzXsg$UPq)#L(T|N9uVV)?QlgZ8vt# z7OU;{p0Z<5k_A*u@Uhf`jP{cpXzFAB)|mYWAX&m`%6@x6a3DP1`Q$+1pOOMx;=mgW z`&O>jaA<>0t1ZW%S{Txfdi9GiTK;_y4Krvx{y zn2RJah!Un>kXlSXG~Z zW;nKcdivfct zg^I9TyDH0rx29IFhI5feq}= z07(j-zhioYqmyHMO4=zzZWf0VBgw)d-Z(d3Is%01vjEjZ7@dblG2`9TEWgt~^I9`! z)P^R+*=g2D^GlXKU~0?sghac{Sm1!lBtmc(DQbZOrxdb6iBTFm+(uDumMb|IRZ$Av zT9*yT_Y&tVsQS;)5~)k7%!@k>Bf9=50>Gf4-SqeSA9of!p=_v#^D23b1SpFE2aA6A zxkc8z#fKRXr+8&SVjdIafN^Ak$}nYV%s`6I;^d#_w(6o)$MjUWyo|rYc-v!(@b`OKp(kXc?FZTB9}-3yF3G`H@UxIGyLI)?fxbmRw21 zOdEdSfkh=rf_KA~;QY5>fFM7wAj!j?xp5voWK_fmSB8Z1fe?tl4gZiKrg9^PmX`-} zf8K5aY%xpIjEW5V8i(GV6{KL=s3rB~nt>T)9BNCp>dlbqVsq^%k^7P~jj2YbDXmTE^bWK{AyI7^+8qnV87}BL4@#LC2#q}$mNFGo z_(+L?#smy>#e{fq9WnIPPH*+5Bm4#0&S=)hwZ6f^A4^`F$W|(}Lk`bO70K0l=Xst$ zqA!cVRhKHBNdh{GaKe@x@~aCHQcd{#@9qBcsDnRMX2h;yigDC=#h!5+AL@5Sl5?3P zm>%Q9*v=v4sB`lTQ-t%xWh!y@9T`DlcpB>r{=&r!a@t#S$KBPfu#YZE>Gj=)M$A&QF-l5wd1@OGGT^Rj z{&)87s5K$Vp*l;6Nn}NZQX%5g0`=*@g09HA84o3x_5X+3f46^ovIGrz9$l68!Q~%c z+#K*a=Pj!0{-nHZd<4P*Jwtp(CokgC+MglEIKa_=0^)#kOK-#UIA|@~31Mopc5pVY z$#b=4`xD!Ac#@__H}{X4vb44r3%IAB`S`?MZlJnssyGKT=N~Ow^1%aa=}1=0?}cz| zs*Jf+`bxA1wa+?q{I7UbAA7o(m&|eK*~8a!G;xX!oJsOR79K>~o(Ra;$TDgYEU%9P zNGN!6(oVRLc?fmnG|1_+2y5Ptoj?vfrTs!@qR!Y-Qie;+UqZ++GNB2ARE8L9nX(nt zD3ORN{--8sVN+d_-#9K)e4IqovYbh;{=?;(q{5w#SLXV4gLBWoD3U2Pc}8WXU7bt+ zzyvh8Cbt!vrk-_eEG>F^ty+8NQij3w87T(s9{G-cdB(hT^_i*;1ua^SWEL#YxdxQZ)y+;NDO zVikxCIGR2B`0@B(*)PkgctC4w@4`i7<<;AU9W3CZ(yk91VPl`H{$x2Zk2}7|04uf5 zSKk}41AE)IRJnDCUd6AoDw@V8hfrX38=$rD4>j{O8kku~mz2h1D zm_3T9FIf>UtvVIZs?L|(2rtNmm5)psEW)2lV{DUwHG@|K_&DDJN2C&OKrbV&+V}VG z9&o43e3sFMhH_7=qx3xB>@P2aO>KxAgkT*QXxzhCQ24nd;L?@QAk8ScPX#cx1WtR2 z?UaIMz7VmwXfaw+4(z|v{{N?={HjL?hN34SV@8sFA58(II(`8F*)FZ^D+fjRIRL_R z8@?*N*)lL<+05yDk8Wzaw$n4_t9LW)Th!S1OO`ahiy^TtU%ue%PFPu?e|bbQ2%byh zgo;9zb9_2PFRssDVqd6!^kiV zDJg5VckK1qx?@aD%=_7GdJoWWblQU~&kKM$jcIh7vgY~? zCCW)z!oIVFV#lb=#V04psaSl;tK&K;!!DtqA!p{y9Pj^*{3sgd!w~dzWtZm)Q9r)` zP0y{mR*`AHx)TxJh(fmz<;K-sJ3oLWjzew5X4}6o159#NSyJbYiBFAI`<@F3pr-tA zh}5sKC0U~|jPv^jB89}?(VT}ZfxmNs5NUC0jj*s)Fsz{o!rmCX5FC8Z*hoP~O+rQ# zJhHJ-2_3zb-iZAaX#M`}{GrzEMQWKuqkkUfxm;t!s4{jj;4s3gMxzsPUdF0Muj&8y z=Dww>-XuAn++1H?iPZF`+Z_k=ba2Qzo=nV;i&o|OmBT}EK~B)e2bS32WX@?;PL<#f zd2`--=gOm%*JHK_5?dz1Qd@DNOChRh2JYK$u(#0+9By$vxwGRFyrWmc??-ngT=0q! z5qtude<)wXCiHdOaBtTPr6+g?`^QP7$9a0M`h`p8`sSqWD3m}ON`lSJSY~q5`ZJ@JJIYmF8W3YR}3hss*-)g=%dG7I%IAKYaeK7qH<=z<8QG18IHx zSAH6wth7t(dPX0gUNSnKgPK%%Kc$`$FnPX{m{e~XJ-o;q*sK{`43g*W9$<`jzJzLS zs?~S549wBnGTn!#(`a@79Vu_-^xkDd)Ow8xr~iaJ%znf0fY&y{4CK`_Jc)9*q>o)D6 zLZ>|$oAUhxC`DE0h$`czC~S!N^FtZ}q(zJyB}Cv+jrJXBCg)O!EMQL;EBY44f=6#G z%F6po<~5w~G9^eOl~hAYODhVyG=#j3@mP(CslrDoh9`0>N*{TnUn>RqNabU}%!)jr-yTtaO^d%8h?4)$Q<|sZ{?l z-W97zs{G?{EQPCL+wYtSzOCs!91(eFCjFI&yZ73DGpaljgRV)_zG+=bP=$0?_!bU+ zJlFcNxU4L7Mgcm^gm*oN@x{~B%$zazC#HO3N=c=qp~VZ2<1HdHL(8w))$ws)rl?%T z(3EkJHnU%?CxpL!+V9x<2x*?-lxL!GW(=%MubAy?$dnA96ohp!2V;5|V}eR+VJ9Hs zj>A8>_Ld(Zlaas5A{^|4Dl-IizM`K%OO}SFZN}n{**;`$d7j(3-Y<}ydQpW0@p_p7 z7AwW76rK=bIhT+?NkOS-N24fxa%~Z1JRcLUD<|tiTRJ3FQfZs3O_K3{^{BvfFJex;M>3krnU*t1*SP>uB?jBjYPaoIq z9(lXh1b+G38_9hk5)<9ERS)9u&+dN_OY=S_J6Pm5xVeu`@kNu}_!Z9|{A#;)uw8!X zxHC;aR4N~XlPsWM2GzcXOUaoe{NdH*k=@s zfVgTpI#`VuHf*RcYJLufimznAm)OhmX|7h9(%fTo7*Wz&)hv zkM4GlxXF(g|1z=pL6<&@fZoXtP#3eie5@dWkbx^8eo`8TxPifR0Q%W%hEF5ICUoa zkpJ5Xxbj_YuRh`$zZF=d01HL1nv1OSq(1_Kb^*3qLc7#}id=RAYc4O(^3oD1ns)mi zGC1S+g1Qg>)2U3|2hewXO-Oy{;*xjDjJ5FEu|9d11_09g5 zJwzNrT~q-+AZOTZ`tNmj9<77jcU zvKqsC)v(L-MO(5+$IVq_+ek@Vu z2>}Z*?I_dPtxSiSysb8yqW`8p*0|r=EL3k!nctF5o?>lyr# z{0!iuE6NZu3dQw|CV4{VKuC+HIBKxg{;$bS)PViXm3`C&uf*Af_t|noApDrBgTd#Q zBvCP>JXQmR69y_LwFYz=4Op^9X#bU8>ZZi~MuP@(`Lkv6)W#)7zbX8_LSNnYn16U7 zTyBax^cvUAGE>k}+jR&11<}LakPIsJCVu>ClRcIg>rEeJGk&$>$?a41c!~`;zHiq zlddVpv7ong>hhuJ@T$e^8=` zF`1e9F)~q_n^O{7kztXhDSmX4T2xe(oYW)_5mcqP$sr)APEBi_pP<~JC_gVLC{Hp_ zNIS=lFtfrY=-u}%Qii0#ReE}kM@o2?q0@Wu=%Q5!_;#Z+XhTEPEWe%qb?71%o@Zjz zgZnw*9OBPAs`>YlQq{D!o!Hn|MEc0=>S>@p+p<3LCY z&kG7vVq(>QI7opf?}T%>bHzXPBQrUkNQ_kwb5B1? z6J)~^e0sb+J>6dKt`|#pyhe<;>fdM|Gzo}YJ*o1ToLv|WUi1v}Vs^sLUiO?fXER)% z6WH_RhtYB)I-V%u9`4H8yRd^O3cOM7g7V2M58lW6sft~@)G)j<65fTaX$c6C?A81-p8mnn@W>#Jh`)O_a+|^JoYk^xs@`nDiy@o6 zyEDS^V7uCrC6lg>g3_0itYU9A#Kt1{1rv>m#)8+Q6(W2gLfJGkoKS-Vy)*S^JX-lk zgkZ67eq6rtC{z-Vm%a?18^RfKzg?;~BsZ1IJeX;{Eg&UTjMJ5N)JDPkd(JY?rl6@V z>gbIZ*~rSWu<%n+UQkq$k`j8vN~;}#+!He6{4AEnu77bEtF#;zMh?;Ff)1>ei^$Pc zh|*sC{5*7Y474?vy2oaMf|plb@;g{-3joXrshz-$$!tAD`hqTps;)Qm%Z+!|%gs-C z-%rF#CN77}-d>HHo3hgK^P-N5z`QsyjaBgy+l%6+-0ZYA9i}>}(yDWPr#H60l_UuX zjWeshfj!$eERArp%e?mn!UX_!{qn@H(;&<*Q}Xg1(~=hK)6&FCZ87t@^h25+B+JS? zDJiUqS_&dxf`~j`s~9<)!Y8V*PAojlZLsrlyRw@WUVBuTn{|vqVH_`!kbQQDtd_ImrZbqhW`SAq!LJ0_%KPE^9H{I`eyu1u< zI!zrnf=7HwL8RBb9~xQRAF&i&vlyHYq5B@Q8LvQsF8bzP?M^dI*Pg1o3w9qKDK2o0 zw@%=1!eKb=&FF*KtBp_VC{#qT)v@#m2MNiA4*Cod5gDcAR8Dx7QStx0{N!(QNDD3$ZuyBjqa{I<5Xv1h>~sxuSb zrHPHErrGfKJI|d3?W^ng?r;wYF26^dVeL>TuUi5stf5-18Rct}&0&An``L2M?{%C7 zd$&cl1zOF3(M^ohX0ULvNcFW^;Be{(Hn#El+Mb?42vu(GH*Ia`n>&Gni=eeW_}1Xl@Tc7C*qn!ljBpYgo1^!) zDK}4)vy-5?Y3S5+Zfsiu7N0L}Ew6QU%UnKp7nAOX6ZFpqx}SLO{;FnXC&jJKA#FiA z7N?#iWv6+KjtNCkNK_|n6xFG#CnY5(1?8qM1I%if>wtHvRaj~GHUJ@^Z;xV(cCMu2 zI=#*F0cpgiiu1UY_P2%Bybf$FNMl3&OGrWH&1`+TWZV|!p z|0->_d*^NWn2mPZKi|B5i6*!iMEu~k$JpicxpD_l#~wMMK(Wjpw+cfr_6~@xoECea zWvzED&3Yem#?`UjIcqXgK(NhuGN8FXhQ3=!jJLaBQ3*$i)Ckq6BqpTzCPxp=*2G4? zw7jZkY1zl)iGzDMY5kjHX+_W0&_6pl;9RrG?&{B%ChO(FvVH2BBblQ_3n1`1n2X2F z;rhe?$!5LxrwG3PVr{%m0v3iJ(XV6ur<6DJ{3!$Fd;kt@K)P_v5zQp11cm;Aosf*a z8k|^!1}j7)vidKA-#$PD-*e}DJ8JAJq!%fEK$;8yvc9xL>ZLk;y!Iw*!^elpv$eL+ zb2R@%NG(_z?i(fN;8U<1IDkfbGNEDe~o$I9SI6!Q`y z3KXSfX^xm);FGj`#jHFxghS9Ww7NqF1+9mJ*Ul}r%qR;}Y2ykyKE^IAHw?L$Kq{lw zG_yD>EUnE3a?GPtE5|3Pxt)e#J8>=wvt=RN$$cX&(sX2~cATvN0R;v-D6lOtF|Ub} z|1*XDzgJj-ZCjRIW`8^feh_^40k0F$w-i{yZv7{6-G=vT&q1FDNZ*e4>!(1uq3F`b zXK9dUN627bTe3?Y!-q~z5`Z9|K*X{kW2i6t&R*qO?H?JdJ0C5@Hecw-Cv>)!K6v|W z0O3w+8M5A##9N+RV{QI@HCd#_(j2qaGB0EmS?2A6G-DaLr%;=*V8|wi@f|MndBiCJ zd9V3yiz7cdM~hj7`3*DqHPC) z9+?JJAIK1&_^mVXr!d8Kl0+}9d;n%26s!7lc_M{hff;JgFzEYrV$1ICaZq$IjsgKR zGP~(oCdStBNkDTj^~VPCTPLr*v%{aiBVXiH$-PJ~+&o)$PFg^c!Ee>|EW`6NX?3D* zp_AMQA0Gtv&wm5QwEx`YKvA$1vHSH|;>s9o=jK{>>35yswYAvRRub1ofs+&29HpS} zb^_LWyf^;OE5*S<+nF^k3C$sjO6z=}1f1GnmDJt^aSyy#V!xYSSGp@=ONba<00|z zl6Oi6h&_rE|&2buRN%2g}P$zFDBRc<6eD zhT-o#kO$o3LlX<=>4$Q4{U5en36-H-UtX)kd2GsnRKH2YYfDN z*vaDY{AukA=B%~E2xhn5J8F_S(`b&MsQ>Dm!|l}3!@{1E>U_j`Lb?fKvX`{8~4c=Km+%pXJ-nh#m^ zt%LXK@u6RJCn~ue7N2gSg(fB1KN3F5h0TqVj&N$$n(midYyS1M$mM0UAeHFhVese} zY-2M!HUR+(AD@}GHzPPi-u1QM_Hn2JvEaq_@5!&?9cvvwOUJ!-BW-Vi866?1$Ersc z*u{;`DOnfh5Rlb?7>R6(lGIoo1W41!;(@hF$2S~MC;#B8cuP@ej5oIcKegzad6LEl zWcnp1OY+Lvk{_Zdf$GuR0>7}XEqP3`@cZ|qpIR$|qRR9mrTe&CaeuPB4<%))ztiTY z`Q@QYjd4*@p5|2KrH7T-jE-`bmYfyjc10%@eQDzoJ3hzHFE$KG3o{uFD>E;<%xO1_ zsfyA+vE&{eD<`DwOo^)_18NL&t2FMKjU^T#!&yvaR!}Wz3WL`w4uj}oyAK6?(+N|@ zGou?-zFiRzB;XML-%mhwX=`P)9NgPc^1qias(?@5m7LGmzt^yw@8izH&=YrdireGv zAwKi-M*L)ohcBIvmpn*n$51wlv+qRre*5RN%%=O`*}JLqn&;qBCb{&w|FI{7^CedN zBLTDHqi|5yXLN?dU-E4s;!smr$K!q<1J??}#}iU3ZRC-SaC|i!gmb0>N^c%Xkenrn2d;! zlFWLgG^i2a3|%`CH5J4#A% za%u`PVXp%Vj2C`xvPg+K6CBbVIPR%2NtUAZlP3X3a74p6cHJ%Z2)#vNLtc2^jtWe8 z8YR7DVOLZ7L6D9HcH6PpNfASFfFn75Ok9klxjZYNf9~$16jc`m4HWRfMV;ps9)D`D z$~eo=JKy^&socve&&rv|^4cFdNJv%_lXm(Uk}GncreFO>5*-5_uEu( zmB2?5#JzvdGx~$#7mv68&3iGhT*LCq-WTb0-_iceVrjl^NG9(?Xhm0iM(;=As?Jx~ zn^!VUAELmuIT|MVti!vW%(K;&u=i6{2fOzl{WcmyS;{{+8-SIPILY;{#+dEN=}V2$ zldal6BqP^FK2p642-ZbE3Yq7U6JorG@I?i_$=;%G@oZu>gI94Zac=2xM}t4yrrKHt zOH2XO}0YjI`l2u=Jm?k$sRDMp2iT0#S3i9`Z5L*W|r7D|`9y{U^4@%H+&cyZTj zGkGmlQQEChaFT;iY+?+ipT6bY_vKuP9h~}&521yNMTzDU_v?M`ktPOY}D~^tgmy*-g2i;X@INV?l1A?ffBsT3t z7NEe=O0%N;((t-BhlvahaR)E#KzB4HWtQ0mE&*?EcFB?Fy#rN6r5Oo%Ns`2Q?Sw?v z*i>b4AAM@kLcBeUMg^5+VHF$D+M)PR-mJU-h`k@6!@vOft!Ur-!Y@W=rrn=$AUCx@ zs}!dQ|IgFhE z!RKHyN1Z#Kc(aw>)XJ$VdnM5AmPsd0cHpXHAtn1T%>@K_frp;c(;2RKCy|I*o+})Qzem^X_svp%_Sh_ zE6&gV_DW!XI$93rBsaCd(toriLnfwUXmo@I@nXX?<(fJ1V85a%hKb!WI`zl-slu%jb zl@%mqE$E27ikVlL7j?CT#`Q`$)Q?fnn&-5&W#+{}z=WT+Cd3H8?Q1#Q99+Z#=2WfpwNcCiJyu94>xcV}IyDa{8 z+=t6uli5g(j*Mnvq@NN<3QH1FlNJI4z1_dv*FS)Nu#~law%qc&6KApBc2`411RHwx z6~!Dz1m{dFL^h0V2^eIaE?{dabO+Nb<1uc57v77GWE?qI(PS{K0nMle&6onbL$PYq z9>JOIOC|j7De?1@2M6~KVv-2cKo5~E6v4;*1$dPNa&kOcTJ~v&!#p@R2g^%aR;JP2 z={OFywsSsRj;{P(-qX+EdN2uwFbVnyaVSM|-wIj3Rm~umDe1?KKq*sAJ-_D0xDh+M z^v*8??Y<)3#D6{*c72|I_Rk$DLwJxMTM-zV9gzw5HDlqsCvI=6VghdUM~@{OyiReq zZP3C3VbDq1mr<&= zT`pnq*a`N-T>E>Sh<{Mpeb+?qEHcp^>;@+XMyvB-zq&ld3pmIjo zkDa?zRM~;TxC8|$F%#P2ojMMu@1Z}SNsUa{f6A|mn~SnPi_+>oN1%KW`9Fo?Kj)|D zLkR@y}d0^A=Wh=R534 zkO_z52l8RmfI?iBz`+1V)cIQPwoH1+dPgYe>4Kfpsmjj7h4E&aGflHb=p2QbkwP7h z^jMf3{Fsn34ZJ*3DZD}I{2yZfG_+i@q(Dq{JT%#x)Y-XYbj6HRSxFTLbBxJ&w*wZ_ zDBLZtvoEset35rmmK&@~!qB4LQghy#Ydq3D}{QX3j@*gr9lBjN%2 zzVl40JL)~1z1H&Y4;tusl%iwM^cJwEDd$T3i~u+`IB;U8o}t_jvV`f~S)kqg0eS1}ymEN_ z(>H)-3Q3OsuU0S&uFnKjV3$MX>neGFV}t<9yUkqvfKoPtRyBu?Er(Jr37tDSBo5Jt zoY*9AwEH&r2gGkp>pJ!FPuZ|U5k$~)arfutTH6Z~iN9h5oUXpt8=JR3`_WOCl;t6s zMwnIyO#uBE zQDtZTdw3E!gmn{(1KOhMH#Eh1+iCtgCf;{;Gn@49+|{u=brTq?_{;8*84+W9N1;k_ zvsAik;FL5rg%t&fZ6~rp9^|Qbt-Xn{SXI%w+wH#3>~EXCuexsg2d52ek1=r>z%W!I zPIola#07b+6$x{9U_q*p{eu_VA^jd8-qFeBOk-n}<@D_#jT3njRGi{fDZYmMuZi6M z^R64~s|oUqA-3@WPh$HSHJ$A}yyUoh=`;Mq{jVT=-a{W=mj=!ya?HnD(pq?sK28&^6 zR_fS&Rmm!~zV8rC)moCke4~hgexdv@v-&tFZ^G~jm^>Mnyhtf@Ea(1|dm6SfHKU)k zKK5Yh7?TRR8FJ<-*w2*7Ktp_DMj?Ak^r``&cZ{|$Ew0?d2Cxc!Yq<|w~sOez6X^k2)THx!NlW|NXt_BA*uD}y_ zuvAzgdJ5DdB@3f3zn|RQN$hX?X9qyp#o03sICu06qr>053NDaQ`FzaY3RAvr*wuBtGZwePw4g6?~J-n~6K z?!2=4dVG?u=eA?~GNhC1xCJpULz1BM$jEcgl|O6Cz~B;p@`BIgXaQ7k1r;6XNehxy z+Mkv|LAtrE#(qJA@={}M6jV0Fd3DKcFZwGh#aP)-5W6UwIj&n|cx$Z;-}hNZ>{C)Fz?DFcp`+0J$>zQm`*}9+*BR(Nc+(ed=)meLP&N)6qqcV&-xo`a0{WwZ3O#r<6ak)id{3^0 zGX*LhfOe=vXVQQeygV0pIf<|Y57rNPi?5RQLmW+}IIqnW#_x4dd9+kQb3Q41StbN!r@-3;P^7?A<7A{sAlh?wpoNcy3YK-P^N2u5=OyC-=$eBWcz*ae^Jc0b5$Y=Besyl)Ge?jFiT-R{5?HuefRzYfA z|7`w6Nlm7w()EoH>~WOSDRl}chYvWF4zPp|uy6_}Z44-H44_QFdns4VQ zzJDw_Q_9?NzoL7!a^9_H@P?h4NpgocF~iL8WAlo3#j`q2bwWM5Oamr-#mpwt=wOuH{4%4k&^hiQ3X6)$b7Z`XguOd;u!u28Oa~YMCBxNb zVs3#|TxFk9w(^Cl{FQ>nytt&nKjMrFAX7=HNuDzY>Vl6*c{RQx{VP8xab7FxyRgcDP6Y#sQ{Wk8a%Vv-9J%u(Rn}C z+dd;kAQ^y@9|bXs>G}!@1rbOv^$baG`u2~nlaH_cUglOrY#fL_OELiD4r zQsjiC9}_NPtu6AsJgJ_pclhQf*0vb*whFxv&4$`vgH{DGI_zq1?C)#P$XHeG?AKGO>+40D&GY*{nB)j(PjW1;?w+3s{R$@ULAHhKaX{A;f>J(Z z9AgczfD=ip2spaKG-euS!rEp6C)4#!pu3>RT#w~$&$mnb*36%D>3jOQ^9mfssi|I( z$Dyi+S>4zzQnsJU8r)*iXvxx%5S1qUmt!>- zm%b_Vwy&TtYdQQELr(9%7d-wi1?6{z_Uwxx@DW(+>T}EU%Zuf(GdjiV(vWQPH3h)2 z_eQ3;^rrjxUFOjEn)gfZXYH50k7Cf_A;&L!+v3vvPbsOMaw(m#^{)B{7XY(wQ5qr= zFgrX7+q~VP=yW~e*t}mMD1$2EMz;6Yf{JrAx)RvGx*)ZCgL13T>+jZ4u+eJ{52jEo z3 z%3J9+CRCOiEOmK6uP*l2n1m)u)Wc=2;e{{2<`1HDj>312Mt;jDAR@!sR)Lq-_ei3H zA>!(l5D7_Q2u~AkZ+75v;SYAP-9P%sJX>zd%1mFV@i0dvYvlK61q&aH{+5XvzJS;{ zg9AXeOhE2yr}mYL=CAQh$apc~kRFkcjR;BW!IB0&1@-BX2s2|YI4Mw%Km_HOuf{oW z&NaA|TA@0e&ER>llzcb>Jp2R#|0I@~ZE$orHIpsD+zg1c1F1X&%C-hcECei)2Qzvj zdcHy+9|vY+Ha(21Ttk*li8d*PcIQvGr>)DKkw6sFXZp=o$d8@-OJ=qkre+(T@X%}3 zqm#6}de5-I1ELe`7cA_~f#D}>?6hE@onF{b=N}g)i>*0$jMFi2)@W;gnt0jSa?Hqe z4e_sRJx?jBbPO6z^GRDJ1C*7NxjTmWabkk1lRVHCaf{BWS-!5wT?VP4pn>;G{f@4*#( zY(Y@a*cx3i&P1m(N<>>9mT)IE!&E*pVfh_!s{njvaAuE{GOKGzQ4q0q28CY_6ci}O zr|I1ON2ke``&Y-~D+bx-XUNDSzro4GkgnOw1xe8*--`xVOzG=5@7VnoWjrFk$&EWm zs>c;0GteD!L^QeRxdUq5cYQ^p2mk2S`z=?mQ~%9b2Jdtd3T zf3jG|mg-o-oTrH@qJTLETnT7MTzQcSy{vpC-kEAx<_E)7GBgckwMSo}8Nm%1C7@X$ zYG|Z}f=E?dD#OTJ#(r37*TyKvim8YksT(QROc9&fhaiWqz-F$&`_JHotN3lZzfDnP zKsQT3Gmb#9mWM!1*Kv%F_u7F17@bBM#Q0+L86|_e+@9&Z%3kN)_k$)HVW8wjnEY0R zJ~=1($J7YVG?-@&%#8rjmh7)&k}TPWC(jmxpVW+&jVX;DG#bq4GEgSYPym-!N(Ymv z`BVK2Bo>IGlK9P~cD+MM6KQqfsvKiQ_v`6t`;@3>>@TRRY4YKheh5fSoC9E^%>J3* zjBc19*-+k3q@ro0BF1mV4ajBl`S37e7^o3^6i|uH>`d&gs29jA$i4|W3SW7=V_Q5O zU*_DqZWn!r8kf8E%&xfDZN1`qep|AzAS>W^txy}*5?`&|9o?T&-5x&I))D9|Yv;5CBF&7<@!-+#6 zv?k*&ijlh9SYQfd+t!7}T+YJ{51}ddGs5Zj&I-To(Cs0)5+$P)D@aPyeP_T@l_;H&z?jup#A-^+SY@^&^2)@En7h@IEhpmyJ* z=F}5_y=SG>8l(8yZ2#Pkzk_H?>T>F^AaWYY28m=2N4T~n7qWl@ATWOhK7SOid;%7D z&s+n~U%~6_O|%O~t>=sRSs!Ls9yI(DFE*DePsoWz7qz!XTQh{);}>w0JJ>CvBLI%X z0xPu|u0?;zl_evVuJq5xGIelwydfMMyenCp=O9wosr3_%gJ0s*9NBEOpHyYP{}+g!A8a_(|W zet8A(*t39+NKT&cp%4K>YElRjE+rGNA(1liOFmbGG%@e)R&@U`dUO?|wVfPBP8W6K z1MC@MXZzS+uEwwT#G~uInSX2aEFB2?7(47Jzj&CImK^1j6r|paBCG%z;^XwfR_lbK z1tbfcm(sHH++6dN-0kF6kMne`&IcJlaj_ZhR!`5mMkX~uW2cLoTVWRh$+V0$h&Y8& ziLnymZ3o6=l<<+^ilTys%$+)yI)~F?>I`nXtW?Fx&=zTgellcNqUic$n3e=3DKB88 z)(&il+%O4sdzjyw#*IUnM8qT!CsBI1Y5a2M`?n#4?A^2D?@Y5l%&d+I>pBt@ixoMr zk_Q8y0ApWDQiAGWW}kRMmul;7*-CcM*nu)PWv_v1hdwzjMXP7vY3Dx%;y$Op4&MoX z2&Z%+)&m)i*DYvfL;}Y5De*>_(Kk6Utc7IXr_8xp$_jqQE zFqB2=vWfIywKAHPB3hw=I#@=*Y)LF_rG?p>X2(1YL8=eI`9U)f^FLVtl}JP)D)xw; zTltrz9N3g#_2Y?`LZX0UzYvC!rI#6p2?A~rhc)>L+?Bx(8AdA|z;!af8zV^+NqK`} ze?r#3>8p4UAa@+BxE3LI6{L0)!`lnd*_J9G{RQ=d&_o7AADuPV1WhI1FXS67tgv&1 zI{Lux%ydr2Gs4w{YJ<&(NZjSlNSX2^WPK&Wm}eeD!m5(5nTKF4IWTsjL_ojO^9!;m zPKVZ6tdth?O;QdtTz?*;-a<+?zbC6JsK`Y%;SxKh@h{{|FB=jOtP%kvLSZZl-w&1~ z+*Xzt5L;cZHQv~kw(Wzx@vpD$K$eu@l5_F-7W(Ev5C=5^pvnp*Bou715S3sy3e47O z`rr8YV6E;s2~RmmPq{ZY;&>&07TG~`1Jm~E9J+3!`S%`leUd{%Re?#)Mdglh7gdyH zG6DxUQq{T@#b7X5S6%Mdkzq!%{lMKai0)B%d#%=32-Qkg0_5RGi z`)>oi{}G$MNgxiF*RZp?1~(t%Mfg1K`Y+qFpWmu@+(r{2JhEb-Diai_`qDL&vr^b?%GLMg$XoHDbb>yf0^JP+;C^MRC7|Zw<39PVR zXw7iViC+!oo?0Y~Py`GyEjIA5Rq6ojna=6D!=R}`Z+e+@kGtOP4^M3XH9a~F`C|&Q zJwLfMAJ#<}XD@=xj4ojK9Tz%=gYe$&&!+d6IPeEIZd!qZ(@6Q!-in!g#07(d$#DFHp8cn5{P0tDnb%H%)R^ucdpW25I-S=~K7h#DWl zkkR{Ql9(o%t1@muO6AM%$HN=j)`om^616ghQE5xqC2Qlx(T6>4pe)T%KY^sW;ur%7pzK-yIi|BfB661BE%IRkT543IwCvc#Y6oqQ zT-Vs{2||(CmVxaW2KY^=$xSgaY68a27>)Pd|30K>^*@I%8<{A_Ch15586*Iw8GP|Q zS?`Dc5<*Y?2LGB!l#PB7YYbjRDkTY@`>@ifiY@dr!X<(|P50DG z-G(R_vV(QT_YMzMIzzSI+{-n@5cO10)-mKSdaiH|t`QEdcQ>t5c?eF#OQ!fA_)TE1 z97K=K17jlyli)!8$(0XtHAJYI1FNE^WHvQ6N8x2m;kAF{*N_cO=$H*`e=;rsHKKU? z8Y9(l?ch8#JAkGtUJPWpo?TqrIJimf6LR7p^c2c!Eas1l1cy6-ssE0of9BB&`*Hkz z2`y}W{Ybl>+$AZiZ4VYUeWE88bqw#geT65_thqdk0ZS>T)j43}gWBnFVrrUoMbN?%fB-gX53Y*V2ICj|0hco{_QB6 z-|%Xv`zapixo2*6FnnCtV);HcOLshSlWn}>#b5e90V#K%$+^r;X79&*j4qmA<7>V* zy~X)M*)W961U#>_e^!vqX{M%LQ9MwySG31bh=T8OCyFA>dkS^<%VkQ#0jFg z4m29{5mbmy4ytp4vJ?eTV4mFHC~EsA=aWF9-N8I2hBmG7eX4G2%0ShTZN86}d|xXd zUSq-F&#TZ7x^rlf^H@`0qp`0Ld3W*o zuroQ(Kl9<0@{_3KpCFLVXhkn@LVD@H`MN?Qo2ss%b8NT$K}rUX8n18kMB+co-uz;p z%1=<5j8T?DxaadR?A00T?um4CEcmOPy9Xbif)sg9htI5|5X{4EcYnLDO1Rbt7<|IR zBHee7!va4!HP0<0zWANjyB;ojBd^#tDX2)0tG)OLr$tJ0hyzbM9$1E=sJ12ouyp6U zDrUA8o*5r56%7pPVsvB4w2^sob2L&W`Ks*&B z#m8yL>gc0@5743}HvNBWy#-JmQMV-wf#B}$?(XgooS?y7gS)%C6Wj^z5Zv9}-7UDo zbl$x0&HPh;)rEU6-SnlXKI^Q#_S$J;cmy)_8LgmO|`Og^~ z<&<$e;QujoVIQF$*gslS)Yee2u-{uxRBzl!N^VlrniVlI!TcILQD~;-aOg$x!xeAu z?~L2Sx!_P4D>mS>+ddD*OHdvIii>s}9Dpf-&VZ3BF7Erw|9_Ov?)PT!y0?WQ^noP! zK@Xtu_1qsf;T6qo2>FEaLQm<=k0nl6@S&&kQNW^xSHc>|uESNc8=5 z#Gx{iJx|RAaDBA0nps?&7TM^BiI&LM{hYJpu+@-}P0M7e#FPkzgecngt#jQnu-|yz zxdP1-x$1ypVm-<{5milHsATwoPmC1C5Fz9T5?-t;l>hr1lL)@^h)Kt56 z@y3I`aq3mp1b!86gP8U;D)mkjcK(g%TlfFYXh!wj}18tq2< z!ry-F;?lPd)hD~t?JGDkw>wMtfr+)XjnULhBHI;jPj(0gPDYIVUpq+pSNS@V zHC>mb=DN>qYy^CPA^$+L<@TcVh|!JnWp}^Bl)VPRuHI|ZB`&8Yx<=!lZbHOs^kGGQF2}In{-Vh-yky#g|&zt9$ z;T#^Pw>Z|Uj?5D;9xUN(M4}SNFT?4)3at*W$X(Cp0+2v~O*pqzILf*6AM_AIhc+Esh@0 z`8p%qmdKI#Y|@!3;Dz!GW*}iY87zY2t8$SBa}j~VQJrc@``GM_x z$On1wq8u|vfjsU!wIU9!nNaD<_x*KtCZ6uY1@6tAkG#NZ(se!IFjo*5J>LL6Z>WbG z^6m{-TQhaOOl>=Y9ly4E*#9aHgzs4#49Rjv@Z zBc8!gjCT^6t)c2D4h_e7VY@Z%S1X#4i4~!dKls+`^S!J2m1t--d6q_~znU(M6pVOr zo6k!u=X6KQaWtC^5XDUz>9kWsMI4aRTNf(u($EEsTzFP{;ZmA>`CngpRA?zg)Npy-t&Yy2Aq-cdauO%iN zN_8A3#-C6sNs2u!CBc?}EX_hBtwkmsDN!IwdIAxHJ8c zE<}nmEd$|%L#j36Cox|zBc3-S34AY@lYpPKlr?9gAge?cHWErAK^CVKX7U}XH}XAw zrT?F0^YQvp3vzQIH~k58Yy*bXUB?c_#;gf;4h`n;*u5#~yl0+V9>}^f;%9-W5M^~Z zIXyTQ!^Uh}7VR-Ot^4$zHFxf>cIlMV`7pw!k~10Yl2Htav99J4s}+#R!%?cCi+pbp zJY>>yGT1Eb+Xz=|$%kG>irczDpV|X=58|h9fM9sWHtlkHv-<#lis_nk9S9C z*HdX|M2BP=ephC?V==Q$d%8W3?_Ccx-FOPr(yX8HjA24Nc|nhGw~0 z(*&JK48s_IgP1ksF&y`4GY7Tit8*1V+Y3SAgwWVw{qEj@>WP8skuMF%4EyUUwsR&_ z8cRwnfbi4;*E2VRfa!_LCmGf4-2$c?Q{~3nx_5Odn%l+*W9$26ogeDvu6Ju9i%5ac zOMAU?Oh4ML+dT+ChNeaG8fzP1PH*4jBm^%mu69<|-)p;}wFPuRO3DCjZ76$3()qqX zeMHUxZ5=2l2a@3t=-@U;VuEb&m#6K+9bq9cuKE-@liMm&%SSwuxkU^P+qJRDRnhrN zf!@vc60TVf|Bzy%`K9KWdABJ1wZ|VeYf~u`a_1}FX%9xJ=7KKa#e={)H4yWg*gAffiqg_Qhd^%m}HA0W58RVtS4^z^Q(nsQH6}&*zX1r46Jh@Vi1Enx;nfX#zeS`bU9 z(=po^otjerwVfWd2#w^fJqHi>hkyy`Mha>JolKC{CTq7vBu0iJ=y!Nz-ZRy z!M(IF_B<)T^XG+o?Q2QfE0_B#Gw}brDWAHWdsx(q%TVubU#U;$Vu@jv0ISW9ph^zV zNDjbKWhxE>iK6knvlRTES4H&&e>&(7YQc?ByFjKoMXbR|Kx=;qh011oYJu;q=cMoY zM9~jG$yr=_dl>XyKpg*)zh}yZN3d9eGvM1pij#vEL0e^)fUG}8v z5$J=u$Ci&P;Rh%YlwBj~^a6r+3uEmcCW&-#!{{%ja$FG3P!Ot6f5M0kZ`{<~U0@tU5|L8-#hH%V-GP_}&cISolkWSNRPY1UWhy2M! zaFIaYmlg9PHTXaXdgetw=Eh@`^vtxjv9GB$35upCwGP>~=ERFNkbmO(vwd+Kb`*x( z0*@bYHoe0Ik39<2MjVA@I2A_x09V`CH#i7^i;HXZ2HbFvEQU{t+F5wlPA(MPBjH45 zm;pdJt&1c1^hB@_rrDRQ%)hQ!{=Eaqb_xo;US5A6@4DC4BBfPIl-fK6+i+J)H|K{R zbRaEOJp+nU_Re|jGStS%GaiAiN0&^mk6HOu4>b#uqDiSg3yM8BZ7Pqr?cZQt9|+8* zfC}dYf zG)u1Utn zHl5{b!OTHo^63#+Vl#Us;Bi;6gs~?r_r}vJKNPq;U#an@ z)=%&?7*0!03kuGV)Phm*2}CMblFWgd+8K$587YebiFzGXu9SB#dS{%FP}rk-+igL#1lddpO5?aU$f!^sxPfroKeZV6{bKTp3Ea1ydxA z7MVCE=xa0)$+CYKk!0_e5Y%0(*j`sG1D`&qTY`vQE2!EGA!Q7Oy#?$7Y}_K^MIxjE z6$2EsH1Mwy&Qz$98JZlv7_5{r~-*jP8lLeJUT+MJOO2^TfrCe0mYtRSuag&(IQM*YDl}2GF-a(EVp9Lo=(f zzXlI(z$yEHOFEI(Uw-n5mwV^vJgf`o>A?^~wXTEY-LB~IrvMs?sCOt71krUc22W1) zUfvQnrp|fDr^$LtQpcMXUT(;I#Wg`xa&o5bitPTr5>H@WSfwMFzfsbBd1Ew1PHz5k zb*j^Qh}+|i4iYiDuxLQU=E8@=W?j_Y9zHlY84Z0QE~z1-AAN;RJ8gWlkZ+dt8?|P0 zU{+g9jmer1i@L4;b)EHM@>Ra+t-vTPE|qq3;#?H`n;=AHurV7_*L} z(z5hK%;c&2s?Wv;NpT&2(vp(!lxJ^7h8alc%hQtXzNAnXvpC9ssXrpG<6}+*78Og~ zn3Sw;-|ss^<=F~QG9PgQY76rHef4@8Z+zg@{|Pf5B1xrD@~KFmz620y?1h#Jqg0|2 z=I0V>Kb)?O>1&pVbV3vHRAP59pk#44=%>@}b+dPBa#-2Xh_U4&XM20Q#DGdOX;Sh5 zTMsdcG#hca1X)j5AqPpBTo?^${%TZdj2Kcr(tx?uHjp^ zv4Fq_ zaJ)P;;`zycaL(GCGi`rVws4_4xpjH;mIa#io_ThDpnasm^Cx?H<~gW7OW_17jPQuZ z6SAPMRq*Ei+%Kj|VAA=)x1c=sHmig2`1ll`tJ$|(A(CLrr!&#@mCL6&mUY8B^XhzW z_QHo@{j#J0Ro?Z%{$5y6U9e5zRqvf2I(>!C%Y@;!q_e+8ic~2G)WTd*b*$`BVv$H}qb9V?Wk>6ic|6MQ_+_kO78h_yVo87GJD%LB6zZ zyI=p;>c6LV|5o*{6QeyQ>UUtvG=y{QL)wWDSjVpH1*JCTI?c@si$KPjzfAj{ecZP` zL%lv7>YlIKLJDl6FfKqIFQ#`1+c}rf(2i&@3@QqlhK(4ex7|DJ?>%|{9GI$~;AuCA zEDb0#SrSthh?h41UkAsb$-`d&orLH_z&7M)iF)S}nbg(iH#bYYy_KGyktOH8(;wdhlqUANgh zaaNagwnjHoPyynYw5k(o{*y<-NR$>ny3%@UMnq==w8_@CxbuUlvGH}Ky)`=_A$tEH zIWhaEPBx8zK$g0mobf<}wZkp#N<&fb?+gf<@<&DGro?>bwX)6m@j?1mYMKpkHC_0B z(U)$0`1xBjTJl0&l>?&Hm`hwoaYV9(m1cbASi-?cp-BZfX?a?IGB;V(I5BypU!m$V zo!qeDL%W#igig<0`j|#`+BcU=2$%?t__(B@U6XV&3e10T*iF9|fFVSrp8V3(R?<@m zsonpzG|s!$6`+X%UVc4YUw8{;BN9S*qd|DXdFZfdMPo~|wIh8KQwjybuJQ#^XdW`* zP>FeBXs!OED#lXh(glcl%L4X@FbFaOqBJ;`eB^O31JYHTZ$5q!Q8;%-k9%D|Ks0Og zLGA7Bfvqt3^wbhqx3p>%SbU7!-04wKQG(A~r2mmF&V2)#Tx}6s0uMUm>8_mZ&)*4F z1zWzoLh|Ev`Pfc}BLagl3tltdp8VMZyl&Vj1)eiha=dy@6bS5I<~%e1*vG1H5=?)L zfXRD3u$$Qm9=u%$FnBF~8=^$yc7CUo_g)X!J3*RypR`l#zb#7q$LPX&WZU(uxx!~LCOZAlL7 zW8R*wVCvbsj3GivN=5It%-wwZ@5?wslIv` zf$%g^@)SX4*a0{|`8|(RF$9j1&m79Y$HiO(ZyJI(_om5g(~T4xwj{pIOQ7J6q}C%| ziW)8vORSIsDscOoST1X%shr_v(luQsb5`M3SPec$ifY-c(fsr|Y(naMXnS!eCow2z z5k;;7)iz>koeGjnWHeUbcpqx9;+m=B3<<32 z_>NbFn(|AcHWxzU&%C*F3oaQ0C3tkzM&Ol*kt43EY8w?@DVeJ?wG}Llv;sX5H}$Wi zBtD0mQBC!x*Q41$#{qB^A4>!U}em?WgNhlqcx*J%A6 zrh0NFCEqCTYkZ`Zpk5Q-Fn&*`K&LP5#c)l#7?;xeVfGo72p0BFMf9=ngeKhe^CzzX zzi?E+9mM2dU9ylnb~c53k%|g2mmS0!FJ1;EWyUd_u_&09D#qLmr#haN@@UZF&({hp zO^E|XmiBshL&?t-MrwcpLnXFs1Qnh}^r{v|VFPmlo1=#4_kR~Eyduq*;X4|-976nx zR4_CAjj^Nu?qsg3o^P=kER0NgJcB(lRoCMr_%^?w!2S6kHJ!=e3r+HAY-fxasPWDI zNMNkExVS;B1{ED0o|pA*e>i|J2f;b2=9)uB`oeY`&V=m>{g3(4O;XP1@R|y zC9L+lVq!{flU7LL@zRMD%r>hHm?-#7Qe3a>&O3g_bS%jMI0Xi}f9dC$`Se$SQlNcm zB$mMLEfKQ8_vY)6;Bx?Kj@M+F0)Sz2keTh*+?0Z^0S~x(_HXso+|IYiWU}1+j*ogP1udSs|hh}rg130l||`;FgQyB!k$aeG#$#S5}(-QP;*UAy%;iPM&U zrxEe;dNuUX?R`;Q`_!YivHFGkdS%Z)_j+U5{>0OZ*DtemX=nuiuj3Fa*KKvqO3-~7 z%FIiz{sYfgx7&iL(&afJnOzu+@r>U784APuFYzMawZD-JlZ5*tVDcC8qEdR(e|}FC z@TIYuO9)etC21^d16qW3HFI&`BUm*s$6lJEmoZx*v;ivgU= zVe+-a?4dl_Me<41ER0wLO+FhSdWkSY2|&RBtcJEAN+xAIdo=3WNJ^{5kG%e{#_f!xffKmlvKHeb`VNI78yV!zG(oC?3{(} z?)%YD04kPbo*Y1BLUmX}bSLa178K4_O)BO` zb~YCren`g#()qVkRtV zGBjo?@FHIj1A)#Uk7pxg@%U^FAx9lrPuw+&A7xd>pxq7pU)m%6Uirhc#Ezb~DntXVpCom8Q1mrF*1Fg3<$3yPdsE4<@|LjI5 zp)JIv*2g5%swbwaj=x0Ue_xna($x93@^bNgaURHO=yKR>NZuD?{N}tUGMy8k`JF*s zZl0T8Y+|Q!SJ94>LbhMeQkevBmO|sC!~`XIfX9?CSsO}=2+Wz1*SWb9d_%pJ*3j$* zf{R`C{rD732{rkzn%wCBpeR{IShq()?MO8-?)z|lQMt4XH3hq9Hc0%xF!{VIQ>zll zJ4r$HvQ7mAgH|3sZzBiKAO(+LMXwmc6UHC597Xk7cd9WDgE!hF2Vbm_Dt&LYIka*udd+G#XF&RYzxC}Hj zbYSel{Jf&NI_J}S5H#v?m+vR+lb9{^uHFS?z5T(=8&?VW zA5^OTN3njF)Z9Gr>Zx`0ne`mhZM}FOBG<+?V%l?eG=V%H=Z)fo4XEAI|QmW&W_$L zbgP_t7bbnGTpk>Y&csuFiTpH3r5KMqUs{$orWSbrzSx|R4G%DI%{-^wZs9P~~DC)z9w*3sVY3Aq`>OB&xF>HNQ!j0CWcExufxtcgBx+ z!85P%qF;IdJ2PT%edxdv`t#bldLN{B?~Dy-Uo^8>ZVI!2#uCdCoj9Z=iQGkkZ1ETjJtU^!zvPa5kVi zmu)zv(XVB!v^Rzin!>`%RnBwb<&~8sN3%PlRh8uu`GNs-NHa@SOhkldWrZAoo?4S1 zs6U$6mFml~E7u-ty^laSzAvc!>5REghW~D34G4^+$_p=C}YWN&pZCNUw&M z%M1^fkYjYD=n|{SnoSH0xI?|soKS5nY@Z4JpU!12mt~~X<93_ zB_Zm#;m}_?)@-JaW)|;TA@@V;NvuXbi6pWGLHGz(q%dKyycNMRV*lxi=?P6TL9$Gw z)-+KVN&;DayjVkiko>H{d^!`Zq2d`u?re-?C3dt{gfN<1SO9^vjSk1zFDOGHMO+`Y zfVbuMe^_HQ2xmH;ChX+I#>~t-KR<8xce|%&52z?}zdZyPkd%xJ4qvC!$!w1~3O@b> zz@q-4&DqlD-Qlh zN0Z(LD-~v-`_p-%fr+@RrsLg)wQ(645y}=>FqW2<`2hL>1PT@SfJ|=3u;^&-o%iCx zLVY$I$i9&}ld&2NI%8vFBuva9;4l~P`D@L#gkCn4m6b^;DJbaZ1Ix8WnhoYNu>`Nw zODX>&g0ePrY)G%IO?{EV9NN5Sf{1&(oE5+lzC;v@g9M0_qrA@(K$ZRsjl{NbUrTdR z3Umxz10?Egj*;v7L_M?Rnw`?tYoctb^Kg7ZGPCtQjkUSU{$)>h(r0<7R*)}mr@Bjj zteSV_rj5b!^HM-kz)NPWvZTS4Kd<8!dB|39_b#g>^U8zcWahP?LWRgX&|p_2mK{p_ zvW`L6xvV~R$-~3_{V+8XnC!XYa!w+5w7Gxp`yST(lW%*XicOTxelxThw-1yK2=VFhta%`Wj_Ub(li-aZBD<9XY*xH7r-Br3z8*MnvNjW??+1C4N|!qAn`Ln zRbegs?6>T|E_yU7986V8V7wi|)e!JT`&JS|p^Pq4h!&y=Gno4z&ghn}(pmsxPu6e6 zwU^H(OMpEw%MAn&cEpiplg8H-sqQALZuyNpQZVXl$d^FCCMCleWM?)HBMCgjf?*SS z(W#feCg+eEWcMk$MG-AKgJ%%wH3<7)p$i`eyw7}nH9|nF6~Mres-S^OPUTfX&PziV zP7@6XgI7nw#tFdMR!FNx^dTTvJgBy|sr?tm{e*IH5ydj(4a#e3f@^LxX^Ez<5)Iuu z+l}Zd=LNka0RQ8Oa(eNtri4?NKsU(kHTUm5>G%|3a4cbu?k2d$6B06A9f?3>K`0Mb z%@rCT%+7OamD<+TwAChqg-$sfn?uTZ#?H(e=hcq%KH$HW+H#FHWxY~u)dZeKdoJtv z2Jyp7u5=tB(bHpOWN4LDtV`?uau`uycW}8 zy*eu36XAl zQ8X5*k(0%GXa8R?NAFJ#^<{4`+Gw@GA}|qZ zii5xx0~}Cqhy1}Hmun3AU0Z{8{vRN}XH-G9`y7vB+OUUCCHapjH&R4#%U1GG7`n$3oxnysBfpKd)3Wd_KeYeQ(j%d|tn@+j_|# zEKIG~U4R}`yVhUWcII9q#&UTSq@n_uopZ0z6W$I$PbN(J`*Z@jZ>YZ2jiR>b&CB50 zv+%QJ`Z>soKh}NkkU!>gL9p)jue2p1LCO87t=k?V;ceSwsCL^mx~RCO1~_vo7a?k^wa*p)aBJTbiH&%-+4k;4yr^ z^cR3SHTY*Ai+F`AhcdG-%5L5S?^Do`kP~NT&cb{Ec>A=_4Lkz{5VW7l-4JbqIs7t;<%wDO z=v%|Kc+za*NCvtHmh@b?U;4Oen^FXwwnGy6-*NvyO0DatgV|_SY)Xe;6-SqUb%s*oElS^jI z9~Fe8>pH@{4S2kYJ9aYw={a4^!~nZUfke?8$9p}a2DjX zI6(#v{1_Q6BXV^9YLR|GR+L=B(h;PpX;LA}XfW`*k*o+kvB`sf9Nwo_0OdcbfbWJbmVaO3bqLw5|miQKt0!KExjdiwG49Pg2E~UqtHTymEsl)TJ&h<+7&f^_+X}!&r z5jfb;)YPfJRHY;M#FGs;$#0KPadF2Ar4xrICf+9rh_(=j0I?_b1SQYy1JWSx9k5$L{hS`-O9VTSku_-3_Qr<1zbh0=DyXx9v&-R{WK_r zFXujbz*egTx1U1w>`q^foV@H}9SPTu&hH^JKaL&cec!&82z~^x68iS6#C8_%?UiIc z*W@g^=6(>qmc85#p>(I$L2%(-6srFWzDr~(Mv4xNB9zM%$y17rzZl@os?{^CKU?zBZTC1#sv z>oRNZE4BI`!dtZ^QJ+@}L~hkJY1wfigH6N3*k8lOiRtzbUx7%6 zZS4{EsCtI$Y37D%m$O^KRFwl1soR``et)c+l)U7^~->36`^m$luG`g&#s0rVhu`iJuCCt z!M<;80bfvo@ok;|+Qo5bYy}+=aGT?2*%NRCAd7~eTHp;-WxZPPd&Gnc0(RNe)M*DZfP8xA1e)I+4m;ARN5-yatA+gfV^1e4iylZ)i=43F0i)&eyHrqAGl@J zg0iB0$iK_2sOc(3S3<+RLm>5aHayN? zqUwSCRs5HxdS_xl{scf`kh(}x)iKTDY8>Ec6JVufsmZu2gT^yq)Q;5S)my?V)@77u zmumSe;Gt=OipX(Fa<SX?HrUjGll2i$G*!RS)J9%_6`j1zad}V6099K&DaEV7l-r zWN_jnQ^kHaXOfB0vRCceb8nOp~Z&e2he!oqb*PpeDH8C zsGKs)qi|47qvNS6!!<BE{|<@&A+XGsks%vPX$rc{0xW=Y$q9GN>y zEby3CxJU{;*fTNB4)#xw;`NKd=f#K|=na9#4U379DEpp}o*q76i2assCcM2ufbsR~ zS4Qo6AS^pQJ@s9>I(U5mQKCscU#<-VgG7My`Mdy8*43Q^04R;s3?ZK?f5sdlwOpCz z(+$KO0}F#uHwpkMKsMicUG)K`!fd^IHIXd?fg&W~+}VBq(9qoa`Z&PZn0`$NdYqT& z{`il-_%*hs-5YjnjT5qq!1EDfXtPcH)e``&uEYn#KNg?eI6^Vrb~#2%UAgZsK-{!V zTmm#GNq@|-dkNH)*SR{F4^`lP-%**=_8kS9*E_r+#&SO)>M1>@>M6gURcpB3TPokJG7ATW+zwON@v4E0ZN*Sh*v; zz0=PRzbz+$eZxnU$&HI6?SE8h+bh;NV}G`rT`%p$jloa*Bmju#w9nl~2eOB>Pkj2V zbo6e|*7W|Wa}wHJGJd4&M`8+$mR898Z5Scnf=B=w7d8^9sKMPC!|s)jg0d-rN{OsN zZwr=$L_|Lh$#lqTKK!F_`JGt#olv=xWVORkt_$$!qiQiwYs*6fc+w@%-Y@>d{)^_A zDT`SEG;u$A$0}svexUqC2-;2<)@2yhp@^6t>nf9=X%t~!U2DCxW?dL}B1MheAR5M` z2Y_AjHB*Wt0A4}xYL!UzYAZqTq7WSW^_qeEUy5G4){zc7W69`o_Uj7<5%~u2uQQb= zN3kEz1cQ@8JQ>A6NuuI~$s-34lfXrjfOoLq$+=O5gekU%tRfv=1klVQ2KN#|9wEDh zf}`;Ju(4t?=qv5QP{^i-RNE5uorf^5n^N`JoMW5vf-`cuk|k#txQNfYWw0O+v@rj7%D$?V)EHGUkf5Xa{ixXRllC9Y z0w%NqfTLMk=eIv^_|KCDxMxPn1_1X=A|P*DN>HC@9{h7fC)K5()52;1=QYTleGrbJ zI%=Zi4BYf6$?JSmmH{0@QL85th{Sf>)y!_lIFK%PcfS7p{{b)6FES=n$iEfm z1N%z8_*S(N*@=L5Md1xTLOOR!Mr&!gQO@i8ISx%iruK0 zs2GBQBV8i<(iM1MZ zbh_h~PM0=WC#aO-(6Tysij7gqWC*z1d`f zW#vUM{9;ZzfN_An4m^Dv*ZN*Hn*4V~MBOLq&}OUnYa1u`!=#+n=U-^a&%ew-fVbO! z&x_Z!Ia2%BR@1)KcMZ&kn=gswx}G6j74#B&1p+yrlAJ@|%c7G<1@q@4U4)Nsgq5GG zQ+d8m5#FD!h>f=1vJ(T%)V%Mu75vY@*E>Pcku5ORJ~3Yfk&62h-K3ho=&5lCt?MDE zcMMVUQ;Sfw`o8w$)QD!%x&A)d^Zb2{GSiE2aw{k@%Wen3X}wM&<{MxLdOjz{Zzkxf zxm&287-4+8b8N-cZG*MlY=(%Vee`tSyB*Sg**1!4zs6|8eW)|@#CKjhTW%_ekEVw- z=k|?`{Cps`z2iGL-SA;>zIV7>G@9J-=>>cXx}G5Fm%Y#OT)smuje9W*MQwJSK*ad? z(&Ew;TdsrneDO~C_90D3c>iF3WI$Mc8zB{;K;|g^MY?+2WF`q(Hj)FWGJ;56nN^Lq z22o0bNWuiGAc_Y=7F%H&?+@Z2ONFV1pTI(>(c7%3#vG zH*1ClZ#tAW57toxoheBw8FCega{i-lM3*^~+Wt!h6C$8Q9WM|Zf8`9SK@NgkDS&ek z!n}+W;EP*99ZIY-M#hG|9#3cUAE+;8wwjgd{gMfV=p+X7NJKIWE!P4GT!7>Y9`rSi zL{Jy&M->n~#u80WfEIOOYKb$6*bym9AwigM6~OU08RV6|dtn<*8>!LGgwis>(vXmY z78H_@EEAf93Cg>0fIqh&BVQ^Al`@LrUtse)liVikYN|B)(?>_|CnvGkk2*!YNEyo2 zMn&Qe722bw^SI-X8cFP)Tn1-dAX(d-*EH6e9LMD?uK+^*;LmBKHR9!!<-IFRnVD4@ zoL_6p4MqL{60u!bm00NUI{$C?!Nr=^a*Yop`av6&W?OnhUDkK?MJ3JJ$oqq}72xN; zI2PyTmq#}{hL-;{#xImF#iymo>FRP@!O*VMRfb1Zh%BO2Q40F0Z+-vZKahP zQz?~l-_@29GCKbu9u@W4=u1RaQqoTYoo9}JPCZtW^u!r2blzByQ7$y z$Gt7!9CdNV=9vq^*(HrQfYTy~8E9f^nQLXk@F$Mbxbh3~nKMY4Gse^4XVMyGu$*g; z;R|N4hVqjPmA=hLDWma>1PRX@r8xB;%SEvbG4Yt96&MW}#>rx_n?~WV^7Qx>&gP-R zna_KO6=4vI1WHs&DxYQF()nS<%@1O}O?#&S&V;hEvcNG(xiluwB4uf7YdS#pw%+)Y z3<&h_45AB*iyTk&Q;?uaXl0d^2Y`OnKQNH@U8_Lm#}8c3hjU`U3x_mFFz7V? z238+wf{aW|kP8T8|H}=Yo&q7{-h#RwKHn7pjWsoKO-&pL2?-kQZp^@MKf5aUQ6(=* zCz_4fkdu)qDl3Z^8t%GoUfnLGv6#RB0q^;GYa%+WT3l+X`@~8Py+3g+1Qg4~CMD zs?aTf{poG_cb$Z6`P?MIe!hKu-E0vDWVjWl9oFAf&b1E?lvWHIMf=f1-`f`yRu*)B zS3M{>9x(r^@|lQfCQ$zL<=#t^PB%;}zle z%Ov5ut)z!w0~nOCgf=Fbwy3g)Pyha~X1J!p>=Om|>I^B%}e7lai>c z7l5nbk!V^hrtl`gljk221ZX0${m7Cv5V4P+;7@HczWRjg?|e{d zVnmS~Oq{fdqZeywOlAo71rp3&-&sUM$>Om%qYSPAmdO^r6D|!WCnZ)gvv-Bt?dQ|6 zW2FBn+yd`H+0BS#Q3%(u=r^J-QNm1=XqhJ94LZgDh~xQyZ+LVWc)sErW`@|_(<4f` z-1f;-M2G2}N!g@=^P-Zq%g{fIz6~*3avVWwmq*9-ikl=B1v#0{RlKYXJ=hH`U18X&+`9oMq z8jRcoknAcR~h!;y-VlB(JJs@JuI13}1Nr)q@;U+c(R!uJR}dW?9f-^y2s$&6Wf6tf?_!Mk^n84S4Kch$R^-fgp>KvfmTHpQKxYqu%!LR#Xm7dyV zaoBi<-|n$7_%XFs+VO%qaP%Q_Sw^Vo{6^49`HPy%Bk=d$mZI-ID}wF^Y|d7o1SK2q zP9Cb3e<+tlpK#k;Papy1gv-<4SIYC&J9uZzpNiM=u)&x-!(H3@8`!+TM_J!>oRq!u zB41pyYo14q9()%^thRW$mf*~O?euSKTEyKVdS+QYSA#gb_*|)IQeJU$yHE9$dAi7R zu5!DVgziQ2Xa2lA+<3*;etUs*;r9)jO@N`187;LbHM`B$v0iNqec70*+xttc>v_e> z;C)Sc<-63sKuB=&kww|Qwcgi;Xx+ZB-golKpK0D?-!L#)%RyU4;i%MZf+UMmFPDUT_V}=L*>Od!*r=)$$pO_q4M`tasR@pg48KG)birVd zTAnEBQohP*Esjwb`w%i=R(D)l9@!wgk<_@N;rMl0v^}s^l2=!4&R6fhv^{i6y%%p( zRIdy+=|C>G+-r`~aHuFZ#qZ|B?^jjkx8(ZYB*=YFvdJ&DYb5>RQBtah%`7CY5>;VS_dnX(jIQhW0Q@s}Xs4qnEN11lVFp0a*kRT1 zu-L5LPMQHYtIkc6;1=^Rj>VoJaSkJ~(;WU5v(j|4SCvkyDdlcpMK*&cXJ)UM#qu02 zBs#Mjh(2*n;^|#j}Lz42nGVXz^mDyg4Z;Hf*VHIP!~8_DOVvBgKu5 z%PI*y{;S&A)r^Mk8L}Z-vd76dh7-(DxXd99_SEBzdMar>SMUvIb`tzquzuD6owG5*>K*<<*5X!j`%2&scMDfB8!FS3N zMuD4A=~!`uy~78AsN=&EWX;-DN-L{{JHDErZ$sxNXrEcXxMpcZ$2al;ZC0 z?(XivrFijD+}$be?oNQ0e(#=n-#u@J8OVemWSFch*?Vn*mvFaX2Q|lAQp({=RiAsj zI{lY?8{`hJ{m=+5>V(|*&F7s^cWPI@3)gvxj6K*5*ZIr(dE1CHLdB_oo5Txj2Q{ak zS-Y(rwBFE5`7LVBvoa5z?p*pOMt5oMzdnl7EIwC8XA8FP1$n%%6}cXV5(8q1krX+3 zdAzQ!R(TgK_a+4She1Dix2AXy-CwKhkt5}`i;uqY-NM1qRx*@!6lJe<&~e$Wi}xRX zS9e$+{B?wMGj<|J(DQ0D^?51x)88is`LfyZz@9z>L=ZP3Ho7*}CiQ9s^?eum(+;_q zw%YpfiTx!vhc3uR(Slf1;En8&NV-BQ00{jcvA;$v zoDt-Ce-)wE^BduEIpV9|D@(l+G1SvVh}5UQ=hIb!R*!$%<4K5Kfl!<9d%i(6g^@Hu znI-tEr66BS`tyzxMVx~1{xd6uQvS#Y>|Pd^1CiR%go*kXMAti*liL#+3rptA49h^# z&IlzOS$}aPOcDw%Rv3e5Je%y|+vi<5=|Bmm3Fi=sMHICVUr~k|j;0)$8ufH(S65It zB7bGgn!J&WpxGI>nnr8NTDYLPrUN;5Yqkbx<$8?H%uW%qbP!Qp!@jh+EhxFzTUL%s z+2D85T1TGk>MMiZFCjUF4aG5f?vy;Wv31BS)0&aewzl}!j_Xzj*IuZ7v*DP^{HRL>rS*o`@;lpAcCpVEmwOP_=GQ829GiUf$mB27HVrFGdgbOkSe~~3r zvSWP^2%|~GQ#K?c&Q`kNaPrCH5lXgTHEAlv&dTSm%Er<{#q{I__Owwr;emUKmb%af9mhPWjrd^^|K z)8qXH^fiL(KTti-9dU$54ox5O^q5y`qk<09pLWm(S8J7ituf(pwH#eO1+~O2&fCoH z@f+uHBo>$bFIYTp+Ya#4gi6>&{Q1t#rzZx9O;34U4__45BbFUJoPJeC{NQkN+0_at zF&<}fhJza!{UK-M#B?TiSII;m&`)!si*9z=jYAIW1^1I zkcD>Nb39i4&l$^@ri`Ai8wMS@Si*yyr&-Fa+WH0Q3*?|f(O zL*?v{6kG3wzPkU$RpjcQeRH1@YIb=s;Qz4^Faccv%-2F9B(qs13)gPej-yLeWsRjAxjWaqW%VjddV5-c-1TZ>O}^RL@_XqF1*~^c7M@d=DGi-K;9XRKu zbWrh+oY@N%7uR`FnK^%07-x;H#z3Q)jZRBdVC;d7PWP`+H^{V_NqURP4mM3w%trSO zZ_T<&3X2PG=cS((2UV(|N2UheT;!6atX8*RbJ&M0%z`;OE}Hd@H@YAL&g^B(xN#Yj z6>9Va587l320+TC*O8l;34uhScC#&_T3I;6A|*VrS0 z!pWES6)^TE6Nest2(id=Q~Q_2^!_T4l3=YqK7;$f#ZwO#8gzcG$Cwp;D3*$rHHwvd z2-GLy8m)DdC>Vg0#a^Dm>q3P)Z^3F}OLsHG!|N(ND<0?z&orVSI;Pwal zeTm}KsmEi`c9k5WpkQ6+3pJXBjg`k48Yz;=1XcgTamt3_rOAfK{}d;E%juCw>_H~| ze4tqBdF}ciQ3Tf8QwQGDIaxHFf9wLI6=KUNV_)EfdPPPY-ndR|B45d^PoSr$Ln zcV6f{cy4$6ranKu62D(3o+){ki**nfHt||rINrVy^R2k;a2=HE(RlwA*`cKNI_j)! zn;AWP>R7$D$A8euUj4W+F#tA3EZ6Tq2TC=j@DZY<_cY9~}zoSugbd{Hlq8Ro~%=XtP{fV*4Gdls60G$W%2mW%P7H zg5f()MA%7FmT&-3)8T~i?fuDwPFHA6Fj@2&m+CJo{z3d-Y76yYqbH!e98bhoUqEFS z#+rU<@A$lT)^2$A!gMGY!P)(M?=-}H({E*Ruwcz=XT5wPH%BH`GeQO}T7yaw8#S0o zHC6^oq*zgQt-{k8R0O-{GJQAuPMzy;y1(FuUk+km9(5jI``R&iYRDb!>(7x~(5?@G zlSY8DMw}2buoTH~UDPO5I+60|fg1S!3e=*MH?&&NgbjM6%wZHr7;*JsYGlH9NF$pT zF@-)qkn3}xgbjc@ZGR~ig+|AGZG~ZjvC8C6>dmLX;h4zhNy5CtZZO^?D~rqfrhBVR z6)P=Hbg3j>0c{k-6bjjaa>^daQt(wAvV#oXm3qPiW$v59LXpTwu!J-i7>wi7pK&)9 zAtL)Wq~qa0AwQgja%7_S*PYc?VuSa$y`@&>khh0HH|2oW$BX{wg&X-C{=C#mbR2ft ztfW23Bpzd&8!O$18l_u&dtu`c%@lIuqM)Z z0uj7-Y&vObvJwwmr(Bn2k@NRW2 z2f*uzVnSXga-+?(+&>D$UY$6I%e#-Q(ZJN2d|pGgRKr9m>>$|Qj%jL!nV6>W&D@*` z7uQC+yDYP-?_vKiBc;16@__zsWU|^=!M-lHbU(gD$!L0p?GE*n;Ks%a`tJ0|q9 z2?|O#yixQr;QSR2Y2ZJ>u`L`gN+(5{Qlv@8YS}Vi`5-S_-)QSAPcFU#)PW`OH+-Lt&}8H6DalNgT3v^hMN5tpVs?7A_+vq-qze-=pX$&^RR_& zOh4=F8;$^fyPn^q1nzP)xxU+#9OiXm6m%(ECUx$2zXSqJ5=H~=P!FUWoS*ygfzNFb z)ZY@oy}b)7A(`G^sonE`D=v;o-X;i=JXzvH4*#VQo|Sz#d0WW)j1uelJ&mof;kweh zYB#)O1(-kFfA48ldq4ERD6lKPPfqD-;;P#G)pQUYQhVh#{|{@fe$~HZB&>Xll0Uxh zutxMW-5e?*#cwvd0DtABcwFRKoyHL#5%pzhQkUzV=h`>AJm#m&D<~>*^=4tUE$nV@ zHuaEY3U=15Ys_yR_TvCmxG#$n;#os!FTEuQxag-!33 z$#zZZD-Pb5YifMR13es6^avHSXkI#uZVH4H0k~?iXo$2>T$Aud^9R|--~ORLI6a)p z8bVSOHgda5Y7cCWUpC zz&aNx>B098c}2avh*u<&M8yggB?wm}?YCw_!6S(59RCLOaE3_oJLLN{AqPy|$Gg+j zGIBx?xFg|0!PoaUG(rT8XgrWk_EIkO9nxwn0qHC%usKO>lXUCyd&TQy+!Nuhe@O$|exVq+5S%oV-uMM3} zev;HsquYLMb@6X^>`wQtkurrhnz|M7!BnA%|fo$}>H!_)%1(RdJ4Wb2~S&X%xP9Ye$Lv#hW!`kYgu#z3#{l=HyUETfUC zHTpc)nT-uzJ3DC_q?K^E{khQ9j@T_WWe+FxMr(Mp7<3!cOL0LXUXAGz6s4Zb zRLN_*Qtdv_Q6bMZ+3F)mG)XG=_=4p$sa5LbOa&(ejN>7n2K8^i{;?Ze!baJ)HoKP;apUC! zGzLMt(oIgBE$@rgZ@beHa8J_+O=#aOs0gO_f%Fs)TH)8gV)Tpsf^)--QKVZ%!J=n% zY_oEHTE54?Mw3?0M{Dw)?wd&W&XB46O%}&iLZlzv5(leT(bFDkujz4Xtv)M2MeM&! z5A}P|ai>j$>OC6@8$RC`em{j0_FS4zJMgW(%g{3ecUbHE=6l1;sU2GWtZMSi9_}BD z@t0>`$;H+;-c zO14lMVTY<1x??Y6z&I@9pEu!+z1?o9+>Yg`lS87--&gzHIb6{;?rb2}SG+r!M*{;( z2jd2h6V{qC>Xha%mbka-d@=X=*rRLf)^%CN=d7S11=Y-?Is9*jWo4|Cyjjhu zrs2A7G<|-F5Qt86iN;jO$G)oih@Hw zTGWQZZOxYMjH}7-D#murKk)Xn8zcRaq{owdwOVdeM@>@2Nf4jw(&Q;WW2NcJjIO#> zRi!1ZBhII?YC}Y0Lvd-@zPzv`zj16bHI++QrzI`95wT{xj?CjbrCdg>+2MI9gMRAd zSPhtF9aC9heRkumx2)_Lh~T7R>V%n^V>UXw!O}Oyfapm;R8v+aU&g9S z2D`@x+#I%fljjK@7PF4RYj7HaZbx+NL3;`FnDIwn+C+XqZ|cbjMY+7iLS`ihZ(?pL zo3c3Eh(K31P39K7{>$^7CQmC?mY%IJ%jAIDU67p%*VW0&7N5<Q$&lGUS02ohB$SRs@c_BHRGaNiHQWC7H_TuYVuj;5w9EWO8 zP=V{_A+_j6s95xsa2hG&&d@&`V|vS5lWXQ>t(1SI(6ph@1Xx5)O*jJ5P}6xN#fMo3 za1>&76Ete6bpgXQ3&nA%0AR$I+bz&i?PSl#f9t2(4y~Wc0nc>!2JfK?4!|fx2VaHB zvn}P1Q_g6E&m zK!+XRbYCg8z{cWTkC3D5Jv6)tdF4it|L@kNdA}EQ&Ze8H&#dG|DH4}~|G;4kqwR0U z3`C2by%!}sUZ3%)RUgMO-c|FXiEgB+&-+aJR=zgx)*O#)Z=U7deeswSwMoVJ zfaS5DDOc>?w*-=i#Qha*5RyZ~ENqHW#jL?RAvo1S7!ucp%|%2N;zF5ZJcN z@6^6sU;054uUi2ikKOs4_`GR!Tf!k%}X}XkcfHM`~ z_0|J8WMGkSuGADWX@3m4eZ|3H5u7C`Z>ZNjNQ`@eAl~jN2g-?)ii5>|`aGA#n( z)rNw5oM3<##Xy!Cd2MKn&Jc@V5IS4)XKO3&EBGs0p#$;ycc|^dxdM^**X_$WXyNG~ z&yM?HpP4TUXs}R~U|wyZ*O86`s78_GeUYiMFtCWEJUp3SKEHGc`dvTV4-ao32PmO_ z^dWY>_Qb}C*hy2j);Cl;UGMdF$6>pvv@z73s`<#IQCG7%^qPIa zVY@CTvkH~Y_+$9IeLPFhgBKpltjY8Q?_b(9uBYVWLzN#6&O584@~ z=?tw7`KaXc<<1jLlO+{Q&!11^v(l&5?++M8M@Y%pGblmxPmV@Z@YswNn_XrTneBni zxF_r(hV9vv+5Uu^TSN8@H*<0RHF zG+;Dm6}4QMnQTer@u(d=r#7M}XKc16&4p>^>?y^FjdZbhn}p5NRTtEEPFX^MNI7b3 zI+ba(P?tYF>v!hmr$y;-S+zH5hiI$a5{wH-j^sR>J#)i(Fpq^p_m0D@t@2>a7O5Pr z;4+-esn3?zj+3n6W7LexCJnbto^Ybb+QYG~M*%FM0%lQbXF)V*hHinz49-+VWu$~{ zA0(?vkxE4)M5{y@HHwqyRmL@FN}~f_yx{-wvwxH)IN(Pb^p^R1ubg_%J^U$>pX9}k zaKp!9kMhTw7DkVIT=23(;?o*qbUcTu`#zQ%wSV#BNWn|Tph!Z$VtF?xYwCI%B(&ZH zvU}C}DsAQ%Rtx zU2PnWyu}fCKk@&{`-t7R@*Bio=HqdKR^)tiY-rE(xZ=3`n56PwzE4!T;vIslqMOGD}6CeGn-a7IG%cnrNBFs2moZ z!-pxi4|Zij6S!ZMg*7OWW`4)dn+i4BHzI(7=M<&CB@lyrcgoWzTEOfd^jh} zKjn5U?r&S0AW!GFj}6eONk=axb6IgKkt_9(YYYL!$t(WN2k}(61l%uYnqb7<^icSO;|Khu@e@(DLyww{5`*=^@Cmf4XKoTr2LX!#y1`d9Gef?*6 z7`uT7Ot|L@&{yKw6MFmPFs4=Ni%>pU9~fn%SV?FU00tHlFkcxJ3qwiqr+}r0gba)< z5t2SBf-W(-RJsok8JUPmszRQ0oFq3{fuXrDhQm>XbKjwT-(h+04X>LA3*Ze;0u0U8 zTTvt8KQ%hdH>qn}6*<2nRoVCi)Ed8I;eni<&!)OYv$s3j^{#@4#lN6vOY(a^QI)m3 za*q)+KDV$`|B&B5D0&YUwB7g+_!obteV@3`imBJ#YtS~X*EWufilSz+hiPbl6_*+| zj*6$`vWH=9xX~^)iTpKW{A-|a={S*Iy<(Bi)tj8J8?}2gwAZlDw9$}D%7jga1xNn) zLGs?494Z7iZ!=Q1RHAgLm|Gi%%U6J0Qo-mvRHu7r`lWo!N%RXU$inFj$Tb3};ij;~ zkw%%!R6c+T6yp@+t;b$xkkc-W>WRq_M=1c6@LlZQhwZZ zp!L1+*zdWghBJ82?$hc4Twi;ncHMHO)d7?Iuz&9cq35r7d#*3`P7WhI7QBHYQumO4 zwp@)0Iw!ad6E$2uo7^f2P+f`Bzfcn;2NZ|(p)+C-*#UOX(XE*Tia+j^1blYze|O9; z;eT_SgVXO?5__4&U&!?nzsP#)`iP+J3c&YwnjeDp$UFc2EM?&N3GaW?4}Q6_T?9_V zTXb;}I(Xoav+DLDhvd67)=;PSTz^8kwRXM^t{VicNd1(DWbfJ^W&^T>HVKz{+!7GA zbXOn7p%-#LQgv)>W=_x&Awt<)<~)BIcts57*}1y@+I1D`Jvr|+@^C&I`u=FQsu(L8 z#K!+1 z@;Fs=)So2!4Ac}nXh}3+0V*(5P5DJpni#i^3v8f0NJ{4hII~cs7Wo)Ovu|~rfMwlT zo4whp-Py{BLXF{~=zgI73H2B#D~t+Uk5sPryeS5 zogvvBc?$~{rt|3*Ahm^p&vgOlaHl><(*s3Y;yQ!o&dVAq+WON=cF-#gXC!GFdX-!C z5vSP~`-im_5}Ks2V&NuidQtK5gTQ-sF0P=J6^NQ89?%zP>Nx7xkWtiS9IrG*?|P#KtQDX{mP?77o0B-HH0*~BuPygPcRJC zWKKGZMj(jt-*igvr^^X^Q)c$BKvJ<}m67I5b!#f>!6YGjn3$o#WLDDrF|&D|HWNXg zv8L7ETzM998P2Eex>eClS?o4k=qYNMIc(7na%!tusl7LT4_&`I<7*|VX=MufcW23^ z2|+e+3T}w3QkNHvlR3M2TsTf`K14Tcle|JODE4+?aPp?73i}$OF4rt8l{+QfwJBXA z8KG0!SD{>-Myo72nlzr;{kft{qdb;Ivu};zjA-4C6{jDkTP9k&P_!roV5bKDFQoB2 zVLO0kR(l2dU|f7czW4}}cuX^EcR%?#=f6Y(GXj)uc9=(muc6@zK0~_%uN)6sTRo3m zZwKtlCztvi>bRTE7KpV!hpIR5>XSbczyAmT~c_zxvCJJmwmX&>GJ80%lU?`_|whZ z<@ods*j^guqX?aFoJVw0FOq?tzr7#7(VJ!yci#QXs}zJ|tt-{L zm^T6-=tP|VJ#S1#9q70b)7Fn3$%OgQlzbxFczavH1Si+l?dF!b3(r3C@{rCy7Ra5R zXPVGbKRq0u-#u(`bnI9B zeIe_!G9fZbIRkU6>@sqS<|1pZSS1Q(>-9VfXsD<`A+zC~Ch@nRrIc{8fw0KHuc4k# zlyozQcG_Rin6Wu}KaR1^i4d$5o8rdCVCGGjRwcm|FuXfODiE(>B)5oEGt@A| zT0ek-Kqvg|Ar>1lmEI(XHz?G7!qD<+>>z(KvH=z8zS5CWIxuk2n;Rqw28QTuLsDeQX)e$mlQ^w#wR-k)iC`1x*JdzXS8J zF)n4j&Jf0&0;BOmi`6zG;xtUXiptI2*RfhqV|;P5DLUqXUS;)$g54xi70BPw)Ks#! z$My2U1O?!Mi+C}McyjXc1XwYcDYSUioat?C5XL5ZAdu;`j(hWZ?MEXFF>p9VBvLXN z-U5rzt(7QJCe5Hv8c(ZG*KO7XhYD%;conk%^7nBPOOLxqHms$sL*0|}_)v!_$7 zBpLm)JKC?qNtyIYx#!i* zmEyv@(AZEG3K^5m;x&hHs32eFI}5>OHeu+YLd8F>+0;&x!+56IU<}kgj3W?{wH27P z28RmEQV~mzT+CsuMg$E&<1Bg?BVz5=I1T9TvYas-Yj_*GK^ZsmO~_JqR7i86!Fp#A z)XE3RmVLY7aI7$e!$@M=N5hSl=Eci`i((lP1vOVoW#0K_@(T4{uOcRbM zTpr%-h`8y(mmNFcuc%E#9#e-`Xo$mKpB0x6Xgo#1!pCPsp|+1ibLwV(!e+yx@wd43 z=D%%AYoo1`gzL5^J5C8HiqNinK9<8nal?eb!(ns#wQbN0AM;;Z-`TlI4?8ZRd!7dV zJf3r;waz?W=Z)UW>W$RzjcT{~d2{0)t8cx?z{5@~A`dYsWC5o?V*I`Vwc`>2Wevzj<#|b9BAH68pMk3=6uSBk?CV-oBQ% zY6mn#g(Lr6^?HDYYb7@Hvm@lT2Zr|VlmNyR6DEi9^n|aM>pljamV0)3_oSLvy*>Bq z=aD%6=K1=zrfd+u5B&PUeY3lq*X7m}L+nE!@TZqt3Y&1{#F59cb@jO6Y1`E`aF2DC zkJT6?enF#lC1i&a*&_uX&#a2W=;x2rJOtnG?_C|A9u+RvyG8-f$WHEmoz`*MIr}L(3qR?@0EhKR-l`52elze@k zi9jAAdl-+pK}+(0A-h5W69|zeOp$eS!hET|9ntR!zAl6b1_mcZmR4YTll7T; z`aq&>6U!f=%La;=c7fNg`ldPU}n>ea3-TNO~OGRmEB8lez$s4vnt&afiX zt!x29#?i}Zss{R?Nnonz7;Bx*vfSV<>u9*Mis}ssuT?6%)2Dj3ahHX~%i=~~8wUv5 zzoJ%7;1UuoHB(HcJHeQyOw(qgyBgXInhfcgn@2wnXArQE% z8cR5^fT)UcWlM!RUaIWFbODH=WyuH0mwhWzE>g8BkVKmgfJEtr4Vj%AH#9P~=G#*} zWbryBn=4~}`)^^S-3?pKi`7I+)GdUSw-(7nmrNUlWvw}}V|YNP8OzD;2RfKh341=3 zHC0*Lt}oCW*3W!yte}V_hs|7Oc%VwxWZpz-!Ux$jq{1Sc77n^8uk|Zlqmq^Zk3IUN zKN$y`KR2qMO1YyxvZcv6GdokVnG7oiw8py>Ea5=9h7mVtDOs&*q*)m?dlJQsC&Pjp zwRpy2!(oXjo2ts|TnSbRq9;Y-jAwqAvgB!ixa6V?dgU?olCsHC`zN_`&j;ZDf|uZT zt&uH{to6LB2JbU7O}h^HrLvfsHTNV9e&z=6Y0TS#7s{|Vf02VGE$yBoiY*TJ+4vMB z(7n_?{sO<@p=Dvf>BtWne($*TXCM`( zMK%rZs`y}~CReWg!8$dvrB&;!1oVaLjhYWKbC*lr>t39#fLn-?zpr#BI04eJ^S79d zUI+VTXW*V**W(8vsGg~>uE%@i9SK^AK+ttoq-ZA+yq9$NeM59ul8g9P(AaAua&mM*%MWiTphA0WYhxRjf z|JljNA1*|YK--n57|A2Oq55gy2c2^P%cTd6B*iW49}t)E!#4?-s}Hw)*krQD<^SGG z?b__NeGcaRr99-e(HIKp7?j}Pf8DgF7?fyoonkOo%>0u&JIavD6=G$Q617aP68eI6 zxlA18K-_G^q>bsXjp1K0NF@G@B+hjE2Zu>?=PZbC2K&1-$ter!?aUXBTbLRwc-@w) zZvm_yLZl!DQN9uQ;wpc&XTq1tX0m2N z_pZy+poad*547oL&YKUlVmn&;cp@*=QOwH>QhgpNX$ zkuB_N=}@e^nRwY8I@vr5MzIvxeBlfT#pZWnHBg8EE?cyx!DNcpPqXK7f?G*~G|6EFot|u0P;-(FA3q z;~t<;J=JWrm=$}^rCp0ugT=2|O?WmegIK*7KY0kmi4Qeu;&0Ht06oW`$q(X-fZ13@ zi*JBgKLkF6V^=73Iz;DourSdu)ygsfnArgR1hZbtdPBDKryy-RMFvf1+R9qX%%%LY z$&NV+z+C_^9vvJdNty!feY%0pO#6XP9ts``fEcqHZa`HeQj&Ee$hOMihLX}*##&)T zVe)s;%wCbohWe=9ZAYAoDQA5BBqfW}jO?!bfZgQW@Yct4j$1J3yct5W*=DFlqF=S7NCh=~;%9D*ywEI@KWIT6Te;UhkFG;{hh?NFcsxIT)ZyuY| zl56HO^}al{1iT#-0(_g~5#cuzuA!*k&y6v`%)BK194tJH*^ok7i z(`%scApxiP1{uosIV_jc1E*yVRg7EMc;zr7_AfA*u)N^zwL3;t=sF)+fYH4HxLqf| z@{A4n_wsJTp^nBSWE(64+TZJN_wV~tX7>^E;rUyRm(Pd!=%sM`M@6PbaA3@Be0;HS z(4KIQ=~8b`rt38(I#QR>M0^B;z&-y{LHhQCH|n~5K6Y;vJ9DOEedbNXclp)N#PMla zS}@tJ>zbARotyyn&tr0PBLAu8km<~>Bj(%IEu+n#zxqDFc(l40wkQ70&J6}($Be9q zA8b1VTl<7weUE>cJ*oacZ^wN(Q~Kzg@Jq;QywhTPRUmb^gfr-Q3EaN@mKAZ9!IXlb zmlL}7aLnlo7lXWE_&!an?esxwVJ}=hfEWzDnffQ{#}@m`HOL18PEK5Hsd)lIO_1ey zKbQFp;16ti*X@}@p!bylw;9h`pLlT`Uvvx+MS<3d+}0F78_D$ZRb|&H*V{cJ;^VSq zZU1K$Ku2fcxr*+G1~8fKhx%R<+>hk^&E&hIfa02!ux%)a=ZmMU$auJN*@Nk%u;*Ed z79v7+y+i}%taL>D`9=}3xfC>3T2a`aHR@VBP}3YV zZ0Ei)htM&w5`nH)b#tM$%!Nyu0sNhzz+V##_phS{ z21`)TH4;Lf!<(&Fvp|hc^L5jXl1K#uE3@-BoLzxQ{qQ)P#&GX%u_T>GBpq%iauGH5 zuC`ktk9M8Lt-Qie#0Oh`nUhNabuEqBw%WCi0T~(i3hB;6xA6%93Vt~ElJ|Vze6>U^ zx*?)J#hJ8lf62@6O{- z7gTRZMF3XJY~Uuyjb<}Zm9bL&+uKIOxWYpjp#k7$?X*O}QEM(ABAezX|@?v1Z z8NOYGtohEC^DvH8?>fan^=LQz=Wz61v3Bwg)k9Y1MiMEZ-b|$t+ZF}4q5QB=uKuqa z{_5XHb3gzA{mRsDr!(Hvo-A@m5CD1elK(}dTwVPVLzT>u5@IRER#Ot@E!JSYmH6fBte{UgFG$|ai6}iboo=xR&2EbY_1_*i zuQtFaga1H(Me+@Z84a@-(esId)%(fnJg?!r44eqW)H>4 zpy`@Qbo0RNI6;Q0eMv#B4zL)mr0(*%DpRM~1*a5XqBFZ(s*e5fM!&agaB$vD-6n95 z0&UNn+jbistk6oc@*W)QM=8Jh9`y2-?{d5bZvY1-fw6-*=6TZ?YgeAnX7`DIi`0(m zu`*r(E+N167I@e5p-{OTGJLTsL0iN7mMa4tlj&I)DG@<@yAEColj~F!;~!apFw(ZORww&E$Y{+`slc zyHQ`RXqj!cT=%J5xC}^r)~(Ul`5MfgNY{zJ_8x>IOEfzyVU*9xFB^bo>Usv69TliJ zp0mFA1Q@M;jCV2JlC>31fC~#V8eK+Z>=QB@_gP`9O{dkr{Qk3Q0XE&Oe2RIU+JQ6I zN-V-@P4aLjg^D9>IBA`!PG|q)ckuFF*@E7Xj}mR3k9)c1LpH?H{a&@K#&fYVr_lQ@ zeND?5oAVlj{pSr#tJa@`pxtES!-*`3(&&O>4H>JX&BXYuEDl-uGB0cLY^w5PH2e^O zLM)*l8YK0Sko*3a4I@26RW(r(2Qd?MY+o1Y(0~uv$Kbv!P!NW2FaxA%#mGpKhi4%S zEMMBigXF73s1`|*MqrT;sAhx{6G>>3Q7AzuLeXn23U&bT0$r3Cfrfon_+1nJbg?#u zK|Gv7S~AdqrlkrRZNH9$LOQM|fgnJb_rsqJ_+Ik-A_Kyg-79L+!gRDx-6CnzuPfvS z15`E*;&L;*rI~$k5aSe~VN!|wmN076@}}Qf4NT2A%H2gV;yv+6*9UD}?T^6WnMdZAn z#!9skdJ!gYC+pW?5s0&=w}bXZE_pLA^StMa6tLIK{l%6QSMN_ZiOb0mB0w9vmjl)f zMnD`}VD%s152MIY(_TvkX5LS&=c3u;nTnR<2Pgz6a&JE`m||5cWjc+D)a(S%g0}2~ z_xvYnV5(9okJV-)J)@o*b(0%1o8HrN!j_Zq7cvkPDE{PyMG|Cn2Uo0yO&JX}C?70N zniZ<$N_qWN#KN4TfZn7t(+SJ&Q`+Qds>L;dJDshghBFI52Y3hcPdJ5WcRTWh#T>Cy zw&M3U&7Ew~MCA^R#-7Y&ljgCVth0pmGB&O7_!IS9yeIwO%00+TP^lIb;q8Mb#dWM8SrVZd>P;;=^at|dy@4Arratm7(NK4rn5 zSW(dIW6&(F)g-_}q-udmlZ_DMi~2Ar`~3e=oA6xT@)Q0Gj8(|;WA+0Kzw*4|>3a~v zamw6ekDm!xVs$>sGhXNdU@!=coDhHR=gAeWoRyB89n9rLOc(@21N)lx9oj|)?6hz@ zZ|K^qf6h3JD%~6SW(mpF&3P=933Gez<2FlTt z!XWo_)0&^p&Bq$J#i)!kJ3d~T$U-s)FOTyh*YLYXz~a{>_Z-otAa$9{ym)MM(}ZILP*xES1fxZb@Y^Y?m8*JF-;e$heY{*mr{;e{&PL$f;+^CaM_C7(2` zkhLt9MB;ezRes|E+Y7ot+3_Cr?W+5*^vmD@=YGwmZ!T?9t1^EBWv!mM)7~j(7ZG#t zFr?X_{_7=1Mvw4hw@>TK-73BRXJ@J&b4>d?5Io?wXUsSwiD#j7AU*Rs!^h9eE)%Aq zynD8t*o+g4&8C}E{(PUJ5lWKOcHFgAVK&hDXq#75?eT~zOkwhM+o6X?@L;Jz1ZE5W zj>x_Wfb&7!bH~`S`p2n_P^~VeaCzLTpUgz$ ztBloH&65)jhndJ4bH-6=t8dMdlC^Yc*R{H+Th;|=r)sFxYoOi{8fzH^V0Azc+X}Qy zZ5`+gN%6yz)ERo9Sdl0(od^-iH$z6^V4&#rQ`+towy2{c4O|#Oi*A(uPZA1k#loK4 z!Y`B`{zcNIs(2jI6z%>Lc8znO{&-1RtwPYIA1z14K8XF0TZd&C25|QJ(}@Dpo)=+A zXQV_E9cV;^(1LAfV1Cl}TF>rACZZ>iQ1j_X*;XN@eGl&$zz&g7n5RNKNnXqj+UQ`n zdWH!{I#KWyq&9NGk~h*lEm@+fQpBJthjnSgl(OYn8gV3GbrK(--iws&!^#h3Crip) z5zpqHCM$CHJAbq!h{w72=0`<^bv>VndA#sWOk0f8tmT{krJ%*Ww> z*GQ0riuyPb&r#=jptFS%)NF!m+6+{|6aV|#Ab-4=oo3Rsnz)sr(cj5Z>ccnxYTn4< zKq7ZH%-U$d4dr1ooSFM`B8w#!vk5MfQy{0vZti5BCQ3*_6=&urt)O1XY>yR`98~=7 zZFb1|);syrul&QI@V#|ykL15$Ts$3i}ztdwD_WXDs`Dj#so0d%~>8B`g#ZpWM{C8bZEHc9+An%JqfQ(#3D- z2Cc%Ci=u_IgPXsqnpc9;3oXN0zfQo^egVZl!ijO)Z^3wDre=M5J??d!lRm2J*iGLV z!)v>HR}?%(zq{o1$}zJwT$5?}`^i*dkA<>rk~=n1| zaKy4fX3rfom3^no$7aO-m5*X?KJ|p~GqfD?_kGN3)$3~ml(v_@HduCVA(i|wG%HtT zyGF=+30SN<+u-g$dzh8n{gTGahY&-kVxOt6H8w5Uq z`J!yMKpS{&UnNY(Kn9VCY%@B33QlakVefee8?Hb8J^%e0x=ciK=j{j!_V+2*a6b~a zWYI?6zV1@seNQNOI7I7u8&jVoHAopu6xX0PM2_YPnHF;W&tEdF7Ymf_HU1z>;r1-o zx&9Rs14%+UTE==nKRUf@5Lu~@YuuTb=IE#jKXoAnFw#q{9d#zzL0cpZ!=Awo_V7`RwN zP0AHLrDJEM&m4wjrC^!1nG5B1YNT5A{2CMetofNd^T&E5q^cOHHeOd3UdPc*6ub(M z4poG3FLi?b&G5kb+0P&?v8pBU4H8{>BZ8!dWFHNYFOD!}Hpsw1lrC-iOfLqH(^|DD zT)4$L9A&%wTXjR>@)>J(8pl**xqrWZjB1f6mCCLbedZrsRclSyzE2z2 z4-HY63asD-sqm6?jF|OU))o1;Sa;X4u@W9%T@Og_yQtzv7&&{ zjSP>8YGh=sl(?w?tXpzaRBg;4nk47}YEnxBf3f9CJ#MXDfY{m6)=a$-{OPiTsID%R z6=HUhDs|eco2pgfN@DnE+=#SI_^K)By#$y)m65F)o&`w#tNyAp=r%r@${QFOdiOc) zFZ|>=D4GW>o*w6IkSgX@B@^cbWR2;Y2Wf?2IsFrLIUNz2)Y ziL2lKw>RTdbr6c{$`fmDD+!O3f*Zq-I?<7YU{f%aYEX;2T!ab_f5kae97V&AAXkL3i#O z|CE#4yv`*C(cVxMxxS89W05d#}CL`*`0?u2;xM_BeLKC)p=OVcEL|ikl4oc>Q_^f9b({niTBIgV{`I z-bM#~%QCvFC=~Eil}aBIPj3gZ{XGml8P^U-)6Se^Gr5*5vF(u9$oPz;>zk^+<>sb)g{Mx&#rwnPF@Uq_t84b(~Rq}ZzbN}8<3P)cI@EM!ci-WXonAq>J zRBI2AAAJnitu`G_Tdv}pNjAZeaGL)2NocFNtkws)gsrbB&A<8oX2a!lg&S=4R&igH z64<{XcVqUkFt;28wo_f$pso3R_SozxH^?)51_M_v;rjmQ84V4|~-RWh5KNWHf ztJ|@d`Dw#-O&znh(6@Qnw%!60m^uJ{xE@g7Xb}|f)a^AebG&9+d;D-8y>*ZNFbCri zwN>(YvLi?mXAIXTFU<)~i1lciq2&B6bl{o!TImNH_g^$zfFu0q57Z#*2i3;eZyFUU z36%V4p{c>qzP>ILtk|JP~S7uB&> zc!Wx&y-}>Pul4k^)1**-zK<2XI2v!eE){-i>Bm?Vq?ZViXay2#win zS6|&KzSYFmI554uLS5d2P!DUQs5wozB=Z&sR8GWX%Pb0=u2+`GZ+*{nLo>PzFfa)t zC^e$GmAyX9Hpxn>72r>Iy0NTqpZ`!a?!~vJ6tg!mp7eBXzoQB0SK;%pmfOJwaDY|9 zpVDWFnxaH^ZfFXcqT1Y$=cCyZ4B2Pdc++JmVCOo;KNk>D>zH$xANTt@Kiw9&q$=n% z{*+!1gFWVUQQ@D6Vw#kYSoh4jlnoi8LMJjv9bQ_I=mGAfAT?k(-m#_2y z`#`tnDOQsSBXj$Q*j8N@c9StGYWs(rgr8FY$7S9prq1CXW~oQrhdyC7ZT-WXIO)wN zH1>l2;t6oy^*_duUR+c~1AcbXcr0K^RkaV+Iw(7C??VguB8liD#5dm%df9*zn~y$% zJcLaDoWn8l-@t{!`7@(1e|q>E`tyFX*7Cq%eEl8h1@~^gaz~@E{1{Zu|8BS#7w2{D zWW5s!my+xAJA$YiU_Df0+x-CN5ZL_NhMQ0zAlyrrncZ(p51ZJtAEeY+ac5Q1RgQ)3p~<2XSExvLDF-}T&oHI_|Dn6zrV!aLwSB;DGvJmBuJCiWe5!o z8*4n0h4=FM!15_I+_)yyC+^Mo;Q;{5;E6G7pRC=z5Hu(D{SACYNvk^{c5z=f-+F5w zU-AOUt~#(f-TMum`;SIsv*5MAvY4Me$CTSBp=%3+(DPpuVB&s9^t28`1zr5q$L`>I+qwJSZ`H`c;S^Nn`R^`N$)=daEJAWAYs7dpTcd zijpN%^2DzVXXy&Y8L=f3y;@uW0-&%v3u}AkXqp3dVc|ID3EhNMituHO5`dc+v5Q5F z$rCaG9%QfAe)(`|A|_5H^QIW3KrTu4El(A)d)^i= z=yR7;GcmkBEOd#R0K;r9;&- zs3mjg)r%&YHZv7She`kFXPmsL((AawnrucNx`=Q$iXmRA$hhk@81*!a3ZKnE z+(q0NPyXWF*yXNe7~+{}@O<+zg&y@`;}b-Kp}l@T6m7 z87Bl&7dsgyFCA|@H2bzjeeuhTCxAfloo|lbYGk-g(Qf$L~*G(f^)GK{`?a)u(i;hx~Rp z(B?$O)2AjknNA`4>i08#$M$VXo8kvnK8IX8sJz!xtd?(dgUtM6^9wZET}SXNIbFYX zHGyNgatVL;v=J&d0|EzhSy&zBVD=r}6L|RpOt1E%fs8LXfn)x8?}_qA`o1}$(MoJ) zC(2pxXIS9Qy?hbX^h~wX-}}Mea64|Gf*03JwYHRzp6_@{?O$bQhLSaEI$4d5Jb?QC z*$F?-S?&7-5xF+a@BWPWwx1D#g{sTF!GU8Q#Ox-0RQrV9zk4aB(pz5v_3mBfcd^o^ zuUmKyf=~m*fu+n^PIttG?iZ*u-;_4MVO zx1FWi{JiTKxatd1)%Ca7-518IzoTFF`WaERi5N2@l`j2z&wb0y2Y0DPn3Fz0@>b43 zrEv6{#$yE{Y+v;WawF;IMhZ|` zLP!My;+KIbmLD0M&}G_!N%#xN8b8TP&E4=2Lu3C=e=tS|a@Z0Fb81SCDaFWGsp06R zMe@0!M?^*q8NpM~{UY|`zcKl~3D~_S7z#`O$=m)2KeTwh_i{%;xZV;|2mKWPeMsrR z{)odKE4aQI>8qC8F(>z2n>@#a&PuxKbX+eC%s7E?3e3)R8oxQCi_|_lr-uN@d5G12 z*l_R*Sk^sPgU{7tx~V;K@JwUr1eUb^DZjxA5FU<3jG?IIN*P&xix3SlM8OmNd3R>D zQh`Ms4&68tqEXeuO^ccP8?{IdSt>YYx5ac8gJ5e~YewEpt5I{F9vL!oie8peRYjwa zjuor=18E3r)tfW%dz?%BOB-0O*Zu|K$!RkDmkhFs)aG_Jxih2;kBmUYArVAbB=9Lg zu4vfInFF6GG&J;dy&fmHCqnb5IP*8sN_0F<>rZO+=J1fqwOiwl_Xi>x zSkiySJWsh01ey*BGmal~JaomylB?tsRMq?ppoX5o$3yU@TRx(5wMA8q_WW#zPPpst zAl_3(HcliQ#=9fUZZ=O!eRCvnpK>effiKH#Wrc$w3pQ8e`Q#j8w1##Ydw&|Ry}`j$!PQ2baa<}~O|-Vh3pNJ#ca!lI z13b+KI1?^GkkLx)CSKDXV42{}^rGb1w)G(br+Ckg zum(n}mK zu~8;e2hYja5(X*|0q2fLsp*MJIkRvrFadY)YR1R2U8)3{N_wN^ig3%F#!UQ+%w~tb z^-5-m|EmR1;!uk2F-4|klu|OLAiDcxfZ0?rtnk%px>ur}k%6dvkk#JT!WquZ+){~K z3h8*HY_0m{cqQb`PiLkkfciDue74R&pz0~j@{hEr4hr4O1T?&SDn{lOX|c9oMuVlC zTrlSGpPFd)KT=XZsTnf2zQSRBX8R;D$?pYCT{ z5@w4fQV>_kMJrW_|D0iW{A&pD5Z10WL^Bx#?kpMvP|?#v79yj?st56~2S-3OBi5;s z5atMRWB-^}Ru%yXO$DWrx=#i%%~MWAl3W0PAWgy2JMcpO2Hn4gV-3s~`B* z`qJ`7+Pp}-^E4`+rCXPJHpb;-J*KLutTz}z+&6rb)R!T7lE&rEcgD5?LeCac^CXWk z#%JYnp}l^ZGSxajEBd1}WF7U}+SQPIr4HXVO_6K7iFKTs9~*=m4S^{Wk)JC0-zsX4 z+(I&AB+_DdklX$bNm6=jKVq|DS)M~-H{6g7V-)E73qym)dcewC|0R*#McA(tZ1(q5 z9H{Rc_VRU;-TzVh3Y*yQZS*zkZR-omMyeWOk}5HF2g|kNeKSo~`^{%K<#prxOI=%D z-{1*phx&sT!7qAk6T#eIx`AlviywcB`;iyleFt{kHbK{ClHN5PvfT^Zcnw!@kj8VG zOEZbe_7$lo%!ZfIO+g=|LP}n{?S=?~h=Vo1o6P?Lr?=kOK0Yyg6l#I-@3^J`EoK{! zH}OL{(i2754rz6-FxSoNTf_JFv~Ml+Cq`(D8$PKo69MtvJIWc>3JYQa-d( zom2n7AQ}ON^w5`V-uHEw?`Fgu#1}1}s=q(s)&B|6AurUnhSn)6nJrU-%GPPh6ZIv; zqq~iVds2V>$?~{;JyoVv2W6mHEdyal#oHDJDvfeXzSb~*PcUSDIKU^0ASZqhB?QgPg4?Kk7i{p}}#l#vyV2@Pf7|YBw8>~MA>QvJR z^BaziOy@f=`Mw~Q`m@v2As9(WOJZQ)DU11%kI2gQ4@sbt5Xpj)ILr?eEuN#qQYNw` zazDn%SXWSX1;TdDk#zQv_}DU40+Lm=E68Rvsft?zD>o8c#}N)PKVCK*tA=A|qaSgR zW(V%zUnvH_5j};^wSW?+1$!-Lr<6cF-igmJsEeI^2}HgTif$qqiNCSAD;o5Ly+~H# z3x@~Vc^9Z#PggXQedPm6u|r}ac8=yOJ}~P4!VFal7ps;gS4Aa97A=66tWH6rM~1Xf z61BJ!fH(gHO$Uzc73AgR`SyyFOBTeS%rncS0yRO#q=5kO7N<_D(^t0LCPbI~50fUIul|18h zL7a>PJn2>x)OFW?5i}VMrhfSM9nSf%nhYwK561&I6dfeRT*=W=WO{Fuj3;I|nz-}q z)O2;`Z4}qbG;9Yg8CO^<`QWfSi9jQ<%lrMN4MyCnb-3e)8rDE-WU1sttYZ#ON5%s(aw<&EXHwV4mWO>I!hFA_csc^6#Y{0@$-$g7sy|J65#x(I=S%( zQu`-aLe-ko>!?gb@dR!|2LM=RZLOt{Y;eE@C+hoP&+!*zVW-1WPPtFCSH1PJi4V;7q%FcxTX z@bEYZt?%ckx*uws8s1F&@aP1HzSApSo#yQyzqPZ&B303uE0Q)^i^>kGl?ctur`f3eEaB)Qk&8%2FkU_9sTHGeon?;GwJ+ zcB7+mFSSFJ%T+GbD>SOYYLscagz_IAK5d^6M06Xl2KqbiLi9?-7*(@Tnr0F;zl=4) zO=d!kW|vh)s>+hS>{_#vsbR@A!o-Y*DH#ov{W6+a23S=UQBoyr2*f@yVY!ZS&hV|u zJ=>QzoJV)1jn9$2OgIi~n|*iz@Vel`yj+t0{Z1t*!vsUSU;g*xjK zszSr?<507Q@>XTm7#K7E9l>dt69KFh-NMXET`5=aF;9?_R*2X1PusU8%iE1CQH81}AHAqT#T6S%svWykO%9R+{WuEI7pO&s zzD&oss5v7wvG9zjr8pc07J9``CmBrT?p2Y%T=58AFqJD^ zsa@hyvrQ1!%bR0m@W@`nX1G?KUp0{nMhjhfooLKyj~|C9RyS;littLunuq= zuIPDx2IPZBeUNm#f{n)f4QG$Ro~QJ=zdR{^hd!gEx84fW-*1@xITuc^-$7%z7usK) zNaej*R}_NZ%iZz9!z6wP9kBtk8ubZM+jjO8DW+<>{rzSyNVnD4?5kFU#9|-!V+dKF z#q(1jdQYEjO*l<4lr*!j$#EC~lCDeUnqoJ*=PL_v*)dx%^=&(*y#snT_`}aH`W81C zpMjef6n!|S`6oXRZjJ=w!BhTmKj-zj+T=c@lB$G>lrKuAFDgbZ%3lt#cf6GWsoEXb z{Fl9sIZ4DE%b+0vdBMztRiknf$NrvU9q{%aofxs36jdzdhnBO-B(L1(cK`K~g2;6r3?7 zx9V0Z{DEy-39gnKL0ouv4YrA~+BG|4kZx0cuZ6Gv(Pv*@XavMrRP=%YVG%JAL-<4$ zUh85!5Lx13gg51UbzC2I-~_sCOXrs_CP>(dxYTwW*d~NhCb&ACF!ccROhAT=4dGS^ zYp;TPfnCCUObk{1S9)!|lWA6Y$wDqookqoCH*<`PV$K5XKJ)pS^)xLD^h?#-vP>0} zXxZ=y{C@7ur6cZsS&&0e+2%&vxIU~JyJ8vR+mgvHWs$XvgH4_v30##oo~#{-LM9>f z#IIzD=7)@3V)Qob{%KPg(%UvaNu4;6W79{BnQ^cv7Vj!^Z3a5i7GeP zSbyLJQ&PA?A# zn1~DA?UF&kn4jQ=5w24IBkhrRN1#qdidG7i{7K!Lm#;1MsgR%B;*=XtVbor^C$HD$Ne_{JY*G3IgT%yHX@tWqm)FKXTn+%AySb{W6m6JR*Af33jq66iD*VEnrv7q9jO=NHaq(dI7#r0?Dd`SMea zyMIiGlY7`v1U?Pcbc;=n{=Cui3h!b#XEnWLa!!5wJs*?mbr^c^oBi)ROI%vp9=Uw% z+sG`%ly=KCnY_pA$aWR?Qos>Qj`vpUhk&Htzk&l;yDpe1K7-kuuZg5=TLun$b;mcn zqA@%Su9jfHFoEczzt2L|JiJ7o2t@z>86*Fb^AtKl-~cdx1tV#{6ZCPtkNoCr#%;Z$ z*JTmhkNmvxu_mw>4$NA4!DiC5X0$sBKIAkGR?*YyaUnfs!`-H3BntAWowN?vbf!51)>shNI;DgfmvdV$EO z-x6Z3$ZoYlbuUh4v$0;)5}v>U>SMjGQmg_UTqXZ=Y;L1UWNX6lwQ|u9pI~ zuN4}FD~p_Es&lzNK457=kYejn%WjJ&D}g8blIIj5B%BJB7%h6iy3e-G2oPrUN6JuD z8qK^~zK8-1G!r{uOtXe3UBr~rKTL^FT@=4uhCsw#f4ERgu<2?kxl__uo_bDM(G=O= zR@W~brq0huSUM=x!i-)J1_G z5rbWpAbPYM?PTiUuN(x`g$pf?v#=SmM^=x}ipft+QPRQe~1hYvOrh?X`h&Fa` zXtM6Js{^yY1qPwIH*DQSvpjqeaOmA{YAs@7}qo1vNbAP-`e_1f2A;9yK$7*V{j z+?@;1kMb+Oyso9c-DU`?7Lu#n&Ub+|R7L7AF;y_1nWLh9kUoC{%q-2+=Ip?kS3Cg{PDn>}^`OS0)$uJlkbP<1LdqNZt z$tZb3m~@+*Z;!tQ(S)+n(Wd>Cg{U~$iq!D(^VP(}D8IKlheE=o(D3PrusBp9V$VQI zjZjk6_rHrgfPatKXrx&__f%p=u${=<^Q7&&%&BrFSFap3C`}lLZH_f0Nu($<6tD@U zXvIK176HmML}@iJrfI2-(>W3ti$k;PS3D~!BG+V4ya09MESVEmqg=fj%;wxp^|m|a z=G@~wlkkT3QB}haMX(27HQ2CpLSeJjf;Fo}sFDk?ik95)1>8S((c%Oym65#q{?BCX-EE;t zSn9ToVqE7{fNBhd)#S)u?wf%0-m&=jxq!l1+fIY6cg&rgh1L2Ee$0tMQOPwtmQAdB z(-ud44zKjypt^?OExF{r`4JPeBcuO&0Ma|_IN z$o3tC#w+~3l`Z?GguM}H+;5oP#oB1t`9<#&Ij{yCNT%H6n!HVZv)a65`}{On>pErj zr}F}h0L8DTB-miu<@COiz(4nns8oB&Bjqlqo)OP8^|6!N^6WL@PySRIyKiRHxy?9U zi{$ff#g*r&`n%<5LceEuX5R~ojfcORt&TfWSuHR8ZE>9giFz~;VFJ3#(?+2iIF$p% zPik)3PA6PA-|m9i&d;H)3=9?Rkz+2q$*U>s14`*ZNvl7gND;m#i_z=b#omeb1|Q8s?78v^3h(Zi%Y!1>K{-h8xc;g zth6$LW zEl0dHiEC|>fw$C|T5rL8xiV5u=)Hyed7nk9aOOI5Q((9z;1;#}ZGz(EX)*3{iNfS@ zf`zy@k8L~V2Au#+9LSCy$BC;8>d!DVqODF_G2ZmsU9zRH(|&ihFA5 zCN+*tfE|rdzYrrWrPDgHknnZ8kDK3x?$c5ouh*!T6rD)SnzxY>0r*4E$Vs#sEQn^G(?W&14 zsYNwIr#22i*;XKo4)}$pEE2PJMawn@-IAC?X;vX}l_Yy;@)k+jHwBL(AZl&J`shaQ zJ4a(Q{J@KFi|(w0T%=hcOB;`o!urwYl!pVYTjcm{Qzi{hLZ>qeh)q!uQpcI zZ+ZxSO&=l4uC9>{q@%|C+VUyVOdy8?Lz`XCbg~wG3shLIK+eFO+_pj=U z9%D9V@W9*^ZDcgL8WRnNC81pMr*v}MM)I`EVOp*fE@$5v>WtZvcta;NbJm@v@U6P= zohAuXZ0z7UB4tlcM&@AX)D6*=4ZyEaag!daT9ZE+wTBaFx7Z5a?B<0q*^^NNr@hAT z;x+iK;Bak{Fnt^GnnsgZe!xi1rdZnou;(oT13rt6iEDbt|vtsJLZ-y>_ZRKLWzk6~WGFY&3=pxA0> zjPYDZ@j0cBaqWqas5AU%#SJ*wg;BZW9|WUJQrLO|Z#R`y@R$y2uoavL(sQVFykOE4 z@CfGht6}$8G}C#inO?j8g1lO-ay@RQ<8A-T@vr!b&!(aNls0~IZfW(iqP2I8YU8zF zMSG2E_ceVC|Ay&XHN!YW+U@gBg^i?NV)vIRMaT!Vz~Vc;Vj*nw8mMdQ`}Vml=QT;v zM>x;!!7l^Oe!BLW?;2LfMCrYB9^5u@+Os--{Qe_Fu-OW)V{)y>!;-{1v*~TD;kIL} z_YK8r(<|l=QL5FMS2m2#Mu{Kz>pu87?T=t{I{OQ+%YA_8bA9fdzzy1jI0?JMrrpZD zUvEeLz13kr>WUr-z~jLM8#&;2Mb~1PwU(5UJxtZ-=GyDu{I(nK%-MnvXPRpshHtic zPVQLsC5qdTA|Q?htT3Y8?6BqU>zF6742Fs85u6V*d@rmMxNET_wE$~2^s==n84aN%T# z&6AQLgMpm$ViQSxU%qtxZlHq+@p0wZah0H6tsB5oZ5OMP`mALl<|+1o7j|d>;&3CR zV;{swc!OVw2!9+{3ivw{pG#5qhUjrzC}9y6{}nri!Vle~@?GYNLlCBz7|O~BbJyom zf==b1KgUOxklFy!CZ04PEcBZW){&z3EIl$MW?AIOJnH$kc(#Q|He;l)7F4k_6cgo) zkQx=yeFf;Iv`ZlJBaPZGK~o$W5TI{r_Ujqpa(nn3G#u~ZD^z)%?1Kr$<-nl2Dj=G{ z!C-4D;Emnj_00o`1h*HIVB7jKB78 zN9duUk|7~72nZ>t0(2p);h-s@=d6JD`v8b=TiEg80!<(X7ebxxt3Kepn;s71R@S^u z{|{Xn%1;2H+nZYlMURS5HsU!!U@4iZ-h5gkUQsbD*UfFOvW%%jfHM#mL`=p5Un~)% z7N3_A7LP|fpiUJ-XsJ7uRK)n58pk}CD03lDv~bX$!KcQ#w*FMt}Rpq z8iCv8W(v$%QlkEV$JT*eb7d+P3;aNlk25(R=*mHnv5G?n6XZRalHXnNHA$(9j2_S(41;c#^NpNVJ$tpD^MgeL;eSqc27){vL-~LCGOQI*uO8C^7Ls z6NLNhiMlfcDKJ!{NXyVZA?K6vi3PKfqd$rvcF7mSC&%E0BFEdwVH|qQm=!)@4=B$%_hCkSxvEO~wupID=hD%t^m$ zA^}^pTjOc*UoAijRGgX$j>PvZ2bm1~C?@^hDUx@*_njF7fc`7|jREXrKqA?;<^KiIQ znuo~1BP0O(<7%K~WG;s3A$}+bJw2PJslF`!5RCG4UX%Hd&LcY7A1VC8sf6@zEz*e7 z5hvzg_#7Wq^4^};ycx~xS6#W)`S0{lLguB9+Ka52Zl5d4r{pO{%ti6gfovK<+Etns)J%u$v7@5nVt9XG6c|!#=CUZ-5HrZN@?m!(uScrY?Bv963u%g+J zTc;bDBm<4B3J=s1rUZ$;s5j(XVLci@bTj{F0i+5UGWw7u3X`=FtC=l8$E2l%vKEb% zqZg&Xm>xAdOqLtRKa2D4k`%6tv77A16Y4tgpz)OmqYJp1V*C#+db+G!@ryF+tYHm! zM$l;{EZsVy(5Uo}{RN>%V1fS1>ca73J~_!nRr>Z=K>G>qg5FS>whM5u)S$p>hk?W1 zGr6siMZNh>GJ`8C&+NoWryT_lu!xp&%HMNkVPJL?ILEl;lHt`pHPf+&bUT%mZ$4*b z?U7Yzw0OdS(y25yExG?CtJLkDcjak{z4;wk$9prs^#C?T5Ii^SlH8UvHhFOvmpO~$=YWlzvN!e+NWlQ>w=i*+2PmQZ@9{3m*C{~ znmX61@CNX6(tc;ITJs4-2Aoid-yzpoaC2Jy2{b;eP>B)vU>^KTKg+Hd27h^PBGY z>O0+8U$f=rEAv@rYI^-ER1ASZiPxFSxbCm?N0)tdO^%qGB#weYP(+j>g#g=+O#=yM zUuIQz5@r*moLW=D6x^FIRz`OkRlv+cqWT3@DJU&TR8EcyLWgG6uVv(9`VNr)#>i6h z%}PsnLMer(I(~!d>iH8Yj99jCNU-ZhCt*%UqD+>`K*mhevI`y}mn z2}JqLe=LAJ3BQ)-?bgFX}?)KI(- zDDpE(BA?ZW_2&h(?noxFqF7i0kQ}8x12IzGC9eU-B$C6#ISg(84i$??{<|6_p1L3< z_9y}ha0r`;ij6tz;)18QZ`(-=qKTqHKbMm#VJn!;RJA!vYe-n)tW!`*A52(hxfl)H zAtb~vX!pUYKYk6NiIXN_hcyX;l8%CY#}uyiWUr(1j;i>+t2rv0amka@5k8V;Mov98 zOt~lVcJxhHx>iPpku_e^mJBc!v5GMYERS?$w$5)pp>ubG2v$ZXZkTkZu2!VXaSlK^ zXpy|u=q3v&#!BfjwsqK3rhymZku9^iltxj&;Vc@bPdOqOueh*akQVxok*x2BZ^yxu zI3tjFX4b;NsorYqUnK(x>Zr;-CRD56s*2hRq2pFVH7TUalMA>;RB(%FZ=l$cF-56G znQ>ICb|Fq|nBE_YMZ+|hP|0QB6W~KW$;Zo>LeB8WSP*CHu2_Q25Hz~{P55MVe0m^$ zD?*!yV{KF(DNIify_h(s@WcN?8r{nIUCO$`&W!xY(0QyqmDH_b07Yz=t*}dp;$At- zneBPn)LNE;T8#HR8HNfyOhK>SAqPDY8y?;yJRkiD#Ky;jU90wZLd&(}IjvC&Xe}t! z=znv`UFprP8H`*%$u??TYs9%+n|7+D;I076Ak_&IJP8!F8O&=0vK^lu&YNo>GC7wM zwn{{);YaCEi&EfB51U#R2fX`gXlPsv3BO%Rzk58svp26!K=k}lZf>`m0_Qt%!X-^j zcim?$^O)&UJA>UhirdFOc6?@bCL^`%Nq~fYzJA>}#oI%|;s2TU7my59tk?YNxTnIl z7ar`e8?yA?hfmgi&bB6%Q|kPDbv13U$D_HaK3e- z|3*@1z7D|8;T_E)l1^LnfRsbZwWq&-GV)*GM~5rd8y+H^`B|i|x}*#eS(L3hg{|aV zbDXyguk|dZ&jrNtc9vS53rU*XuP{I#Qebg z9CzLF;^42xkV>ig!0sRTX}i~}@TpOs^T}>IXK1+9&v$tbuMBv@Ch8+$4fyM~a<^7u z_TX~t5ukAWTbhxuYhc^2*>c@4n74hi)a-#B|L!H_DW9c`q(gG&_pp--oUqXbq$30Y zE3-wo24p{l=dRU;(^kk$rVKcTxvqB%Y;gO?=$3~z*8_Fcsxo`~H7h&z7Ztt$8jwxf za9V3fWn!o)&QyMF9xxq7Jv}Qy)Y=$IwVJk|cPAoNhFXXVbQqywy!NpmJMw`XBpY#s z2EIhY$QA)|<0*e<+X(p}WB?&IU%DPX0EkJ5n^Qw@g)a@@;>#iu;L*{x`c5W(n*v3O zYx9$q<3D4Ys$rO$PV3xij%#;uUK79yWUE3T-YoUbcJ`9dnvUU09_WyR0_sFEt9w znu@=Fn}lNRiH*Tmc7(dZ{eiLeIaYcDqrBJYi)!NLMvNQZDRjWNwnrdGbC~?tSI(Ko z9!dq|frLBKrljx-)6Z!;L;11ZsEYGbbu>aEEdhi*Pq`p%!pSwsxpF&NL+`rW(OKJL z`pmH2!_%CgvFfVL!*k~4JQ^Vq~b{o3rlb_leLdoe}@T2M&TFdjlFH)FXYxKn;SyE(* ze@I~i<*0kC>hd({9WC7yqVMb53Swz9uYI<5YG6=7gN_CtAZcA`Zq(y^*9HirT;o!! zmLDEdunNx!xNh)2>m(B=LyXhn^ONLM5fT&N$w37erUCc95g&KE|JsZi=9QL)&(F_y zd#wdne3&USeK`+7*+6o1YES>OW&r5Wdg}aeby<(*nj|nfnBnx2Yk{#f@gdqGx^VVC zs~`Rqnqcoptj;0rHNT`s{@A%+kF@oR0?NzB2efAb5>|_NF@CurZElhGJ%y*tpwdN))^g2OUanCWFIZxH@y64nH$~7Oj&`tph zj{Op}&=zn_xm&leIu}&bySKu3&nYxpB;WuGD9_!^&D(i}9y8Ubw7+5^cj8#$wJw~5#Z$C)4K_Rfz>Z%N1alNn{E(#qrUq3C1%~B&hRfR z!x!J)Z9fu##Ue7kM}W-rv>oIkq5h7H{UxA(^g!5bqzgq_)Bf}|q^U=@;ruP_&pNo? z@B&u;PT%73!cFtEdos#zQH#wpRIRxcgy9UsF;I?niFFV(Ekk;9f zX?2@zI$=pc)f|;ofPY0ZMa><6z1(WHdyuS_q^=;U!zH=wg}H~NlBPGD)PZLTTY|bJ zH+Xi1fs-v~DFw@`O7x_7^e5DlB#3}!e_{sVGMw|MJ*p9 zo#-gYD7iv$mDyBPh0wR>oOpL?wFR^$h{p%v8;)6RQ!ITi(_8cq`Ui@Dz}_fDGI};* zi!?Y7NL#TKu6az{H3_GAF1YV_5Cbi4DpStYl-%AzAc2_#ZPK&1l6V{zM=Be-z6WsS zQauS=Mh#m(?lrGBtg}Igp5KY!K+irLJf1O%ibu;f?@h=P+k+oC{bS;MJiS!>;Cx1j zU5=oPOx}M3j|hV5Tn?SVjTt!{F#l}WM1AEMp9PnTJH_IEiyJ459;JO!Vk|{>t;IKqWl2Na`e@wm? z6@X!zWgsjX=hz-WF31}cu}#73v=eZ{Vqfa?XOM0}zU~dvBi!WaFDHWIZSd!oA6-dP z*HJdp26S=2$%10E5{FQ~k`82D@l>Q4pbAUMx$2`Pw3;|t2nTW-h@5yOshqH=N()5r zy>Jg#qOi(7Gt8Fo(A8Y2bMuE+{6hLwPaYvVzay7aI4zrCC9aZbMvDZ6nEgY8I7%a) z6f_zyYbH|+l^+y>nhrUVP({NeRLJ4!O@q+W^F-*ADc}){f}lj>Dd5>mg9t_G-}!up z6A%zhgN#jA7l+375c zqdKv5?n+BvSLywUIR|`VHdf$eDiLOc8Z<*&l%^p!u0w<$8uU=>i0@KTYq`SMtEdUI zCZdiZuK)8xlDoHZ!DRN3wZaW|VWlRnRX7Nj^B+So^K6*tji>>`0b_h4u9Y`F2>0oU z73D`4amB~bY5Wo+7Ac3SA}6kjkZ)MGv9qW*-hRdRo|+bLjP!c0p5gM%ZiW74b?O6pI+ve6YmuFIUZLCl z*Oc>i(Zzgat?S;Q%H@FITc6GRdN6r3S9gC_wMDruK;$e+=$QYhOt%g+3Zt90e8n-B znPaT;s;*F_t=x0UnKZsC=YMAX%e*OpzbY`Oyq=CWOV((^716mwEsZ_2w~`!@jfS1G zIc>Yc3e!}Pnx!=2v{H<1&ShkTzCSfSO2?$nIF5{*4K20rpFvaej8xiW*ciGZsTtz( zGJBdfTV~XiP6hoj9ZPwEu{r0!BNe78W&+VL&EGLnPF~QB2($LlBj&CW1x3}5AHu0W zgyVMm3DG<7`UgJAT$ErO-EFyhjf~QgGsP=At6_INaQI$YQF=mC(!k2xP@|KaQOsnD zwF!sM?-Fhos7G9X`sawb!N5q6NMayvrhrXlf(l=dD;kTW5rA!{A_VmWjhKo#u;tAj zsUF?RG@y&Q?L;EtM#wD~M<9|hPX3@%2%gOEO*ZUFu9PCd3Nid5X7?wbJtTi2q);uS zP<5bSZivj%mey4>NPIydjZ_-H;3b*)Qbv-aL=%{k^6_kE8s=d{9z zNjV-E6i1(v3KsrrQR4A=ZKN=I=>aV={82+?eE)CSr)t3E7;Z$5XGaU~;g@ATN-?Cd zia*V|wf!#r_s>8fe*RlJyV$fcWbBR(eCwy@c=@*UoX^6(TzX$ltETLip}p0Vi@+-j zB?5jVW3-zoiy?&rErSi;+R>U{h~L8cEJ}f1p8XjV4QB1Zgwa9Jaj;KDpTUsE244U% zgMtWy_@6bTN0gEI=u`HR+0-omv+QA1QF3_do_j+{@f*_XHvR?|%ze@cEBV)i9~U^c zU##MsJO3DHT567N+|yEFDc0xUtq~-f6_3ZjMsXjh%{J^mXfZhuXF$zBEj5ZWta;G5 zoKEDg5+u{jol&-&r{H~iMmFmQrhI`#RBJ34gR>Jdj~XnmCY5Wo6eSe%&-UF7Y)>f| z#LH1z)e^PY$*Ci3G;bG>llS%<-)mp^>?u-NG<5QR(o zYcgM=rL8US$P)`2+kN*-`Ar)+7HaqHUsZN?c0A;e*B8I}Y(~@FdM1f5z`Nf2o-l(- ziLGA~dEYxcx4U~@ySj4QO}<$JALD<$TX}kMVI@eRbg{h!RuuRy_WOHB|KW1`Qj-lP z#e`X5j`(|i#1*WDsvX(DAj!y&JfDw8b-vwvetx$~nkLphIJ`we8RW|lQIH8;S#*dH zK?*kVF0v{8#zWMqK zhU(UeDf%v;kBXa>_#cj?*9WBh6;jG+Jx6P$)Zn!{aRQq7M5l|L;cP(SRsis;`&7@7 z>~_C-<|g*)8+IKDIu&%uY;O;=^!+Fod+aII`jfbpf zE>E>gyV7qRJcl`J8JZh157_25N%T{+3^ep)#SDFIHh)c(Kzl-KYsoKDF!Hz}v7na_N=8aKSjS{?K zE!if7(dfv8rD%C+-6DLJ{q&e4H0MGE^VdtjJ^ zy1Zg*O3MfHP8%!tE$Kw2KV%jm(D)QON&esXv*Lt4AM-ljNM65mF1Gv1{((fl*=0gf z_$3$Jw_ODa3Rsl~CvMa&(s2ac=7OV2E*%~FOM2l4(fH$y24;0eeg-uCJu+wXr_h&@ z3Jt%tX!1`XJ+FXUy^e``<+aX`O)npfY2PRwI&D0(aqbX3DNJZ=|HSH9(KIH*#hs>V zGP_*Luw2S$85%#iwgscN|`l>uSZFmN;(Y$uV)~Z z0JS-Ik?B&L!i4)JSm6lL`<&>bh7l z3pfH5@_(+j3s)}+?;qjPSZ{nzKnwi@JYa|W2I`Y1PeAc&LEyE+@0Bi9XJ^jPKZUqZ z;3CV*%8)<)NbEJgT-jDuSKnIcdTniEli=#)>iVl6S6TrGYcZD(R5J7Lo{!ZTx3lu_ zu+Y0`uDwxFQSbLU{Jf0?JIQ~p)EsvPNk&D!QOZucQ+=xw_<5p>`~I&Y#yGWgF zJ)NM*wyl}l>cD)%4)2KMXC*1%*Gmi!xjaN>BX3)Aas=X-}kE z#&AIvCT><_J%JDVkjU43B5IRAq@-l=%&WkBevh=;#4~iXRjJD4b@I}FLFHOb>G+Rx z{zHjL-kux5IG+MbhohR>?`H%xkCJ9Owl9?-OP-NJucw*=SD(ydn_18O^aW*DrFA!0 z6B3hJJsXm(W;I9MGX0a7Ex!ZfuH=szUK{~GdxCTFXvI?Fh-uHqq|9~O#_?u_-0*JZ zW&ZWbONYI#(KiJz?e_xXK!Q^H;|4#V(bM9WG?-B!8?dm?x$K*}C1GY|cu~W-;vPC$ z{+LnCm07$sefAdPi$_J8gfGdHL2tGEd70xD#fmIJZSm%i-LEw{hT2M3OY(_*$8amnEwZUda2B;5?e~06%8&P2>CTrU#Q`YKdg&6|A9i+=7ZC8cIaM zrD4$xtn2ihmtAaSen@33Wot=i8wv3&D`_(RUWo1mq6C)f$1LS3nYrqI;A^ToN zW85Cvh;J|D$JoKbn595+%qL8kiP3eCsSu{q&&6XDp9Ntfhd7@eF+-9n=Xs_++&cV8u6}A;+u!v+>x9OhAgPt3P~&$xbn&aFAN3$|1hu z19xH{8x7H(idwRUdF>y_8XKZcF14CVW3p*QU#=)>oEt&KrHXwCEsLZ#Rp#X*EeTpV z%U5rPm>-YJKb1->`fB0Pp=EqZ_5*`c%W)GGA;yP3G8(V5!!I?~TNH^vml>TsjH<&( z<}F_GC`uVWf-JZEJI(mSrqq#);S7pRc506Zl5*`hqiR_K_9uWC-`R3zswJ45AHL$0 zz4W=AW6eR#QHy{s(COqR*NiJ$`)#rx)BKZJB)Dr&dz8>$m!_RcGWIzFTXMBI=We;c z_Tek_!LHG#igUlW%-i@D^H!P|JIDxKMFT|wB`FTs2j^e43?}wcQRz9)XNYN6Yp=fLf-- zV=DkbfhFzs$I0;pV)Tst=F^~SLT_*Hhw78pd$VkM?@VH#@wMjfUmnrWBt4SF6ZOC3 z<D zGOsi3%GEdZ-Riy@%i`HyAB-!#0W1Fbt=^}m65O9wN?SAsJha0x&cq}~$>N}Wg&Kfht!_s?v47nbfr-F;*V-FiM$y(6h%IHYCkO;c_; zfvH>To4MqK3#dDaQ5&_L#St6HdFSVn0)2xoFGI^e;xzmJ@zukkF7Z5K)5CsaarVh! z{jRVcxruq;6r0iO$uHku7gQ8r3LbVU_a|ZsI`_zIB*wLzcJ-DNw;Q${ zQD@?qS@eF|Z#jKlR((N$9pLt5`hrBgOW%ICLv4Rj#D3K`CPHGW`Te$}>NQW3#}V3Q7%Hu~4Fz)9So6ll_fT|oCrVp7Q+CUR)bb4bPjk-3-z+Kb zjx)nl_twR--7Q1WPP(p$`=43>6*c9)te-4=eEG97 z!oG%Ao3@+yf9z5+#fXCx`9|*jZ)0+hQ@^OFjWaWI=LPd5rDsEOx+QPja|VWN*Hy=v zR{kf%xcAJp_USXHj7L*5BRC7b zPWDv@=dwH6zpX9qc$@p-uVFgr(^BVaFIZ)kwjO_6&et*4VU7}Ld$fa&ZE9+|3REm^ z_yy0JMWez8!apoFY58I(l|RCy=^`$7kO?gP83&m0x6TR3X`VLmfbkmlEkUXDU{LFKMk9_MDC4kta9<|Gz|23 zo2s1eLf51WTSeJ^E_bKn|IFgE^9(FMM4?055~Cv}$GKRE!yB?zt6G5)w?QgMq=X!wW+^UgyGdajv(;=OdT0j-?v1F`J4puS)DypaxQDP!4; z84S-HHFqZl$}f*A2JlKU2})*pWziIEFndWz5GIhdVBzG#GtmpC(si7#@Bs>s-pv*i9)5 zQlx%$=wO>EQyZDe=^_$q*7DScCJ31G3NO9={o`Zj?ccHVtgO}c`nI-AfFa%Y=eYtO zZdOk!rSD?ORkOgA{5kQs(znSO9Qx}oL@)o2@$ltMypi-xoyZem$QtYL-X{s{d64!$ zy1x%J^*?@sY{3XI=?SEk#fwfzfFsCPT`M<~Z9}*Av4-IS{^$oBo$gYkP*xGfoD;&SP4HFaygV)U%@aQlR5o;kFL#F4 zV4okcuHZfy?kD6|L^dRv$pxwwdQxf4C)uV33cD@4vwD*iUe{jy+5*baCu<4ETFK89 zJk>dBNa}45o45;h{bMU7#0|Ub@oRpyH+y?vgG&U-J#dypsFGQX+jp} z=b|J!M0(ASDj87oCL(5>2dG^t8fKMTb1;?q7_AjiFw*eDRAavhlH}=V$fXk3PlbMd88N%W&HsyR#6ciguZB)sUrz09{D7dCfNcj`OGY3S437~b!?|8?^mwU8p_s0=Wj)c7#(GdL9OnKH6e~vC>|iUuyM6|EO1is zRqsRc?auCE86R1O7TK9A$c@cnP*Oxt*ZnmX&p=A(i&VVAmN3ddsvAwz<4XMWFPZDf zH>`O=O`s62DEGujaG6BpOS`Sub8MRyVwCIxyhN3EG6YoNF#18}g>`L1-s*|;>%U7v zPUs(NGPUv^W9OSDJ*gk6odb(l&2T*1A%eAdpom8hbZJM(mVd6AH=lRpbLj5kiB>7? zFZ*gWPtLcmR@#jXMUD3(1aki@+Q&lny%e1*~`d zY{AU#{`Ly|9l+44w{O>*r=%F9r3+uK23)vxyTM=>54TefY6=Pi0X0uLO^;Twq1f2i z{(pKOT^v3k{V}`d{|hFS4#&phP{&YE1q@zD3YPbDDvvI;nVmI@QHgv+(>Nv-1UZA#~oX@h~4@`M-#{=LbBlT;I zCcjI@nv1T{*sl5p|0xx{1F^xs#m%*3A3ntv$ASNbzx0CXN}~O#AGqpn1RXU>MVY2@Is2)wRjY5^k5m#HR zqdf9!^8}lA#8ByGNQBrR>tv0Lh7WpEvuaA34)guXUk{$1W8lZg@o~$t3RihQKRO_H zCg&T5kGGgum)kNhFkzCjFNEY(eRFiQ@IzghVD%$-F$Fq59EI zs&p>6ZXQ5=e)v7)ajQf_{X3dxOj}jlbqWr$Y_V+_Q0aEGUE`)kHahIQbsY;~*YFWM z)O>C-_6!sXb?B@k2O?4_9!){`@US&<6!Rzh#PAg|oKi6YR2^hFIbk|}dKB3ZcQnkn zs2MVhI$=Cic`{3@uZ?1Cv@=>cXc%h2a|D<*LKvv>Xo8L$r{B!U&M1o)BIPR4BVjDXpFQfgMpG(cB4D-xmm}$lqpWL(Y0YN`-%?xfI_t_+yhbjb z!KGt8rOU?V4@cR@r?!yQwH6f~WTxYw!(JLOjE;_vP%DixaSI-=QqWaoEy0{X_ zOdNc+=bb#}os3KdRh~6yzt>VG+J}-c@w&~>znc#(Q>5<0n5Uzc4}H_8xw#!t;%>)| zL(M6>(e3X%+9F4N$~!BYBx7S31({%oj*pYkTvQw;rl`{Ot9s@K|94irs#S4EO)ncs zq>q3Mr7Msj-H|~TRcI3xMc97Rpk8|&{~07S6|p!;Yh7#OWy4Af!b3^MI$a0VMIB*- zsY9@uO{A_xupBiqaMNc^XPT6>PYjRsPHFZA4EB)|7f$Jxaxq{Mp|7kdj$r(*qGsnR*wnt78_Ld=qV!D}ZhONixkPVrYYQn>}Tv*~dR znRJBxqKp7{gyDFQm^!|Ui9x>woce6}Axiod;pXCq)U2|iVmwj3rffF1 z>HW&A6{{(Kb`J?9kHkV-0OmhOx3lpcr? zkd|8*A)OXJM$C;Y97^ooZs^(;(=B*KlfhD;bQMEe)Z~^M1o=zlgB1w&Am%CZJwTx< zxYeh6?2V9b$Nlqisqp7zN09uK4o~sTNMY&zv02f{cb*yd>#QBoJB-AFYo^5f*C_eh zW>2PcdY&9z+#?N5^+cZQ^b9r%^vEylu9n^d z@#}b`d|)H2&f`zXcoTQf;$Oz-_T;aSg9D24Q=Zeb+z;3>F<=}n#{c{&nyrS9hMo8X zrp^3C*beIAiTWi?ASEL=tS;w@^}A7clZ#CiTaB!@1Cx*Ld{IRwg+z_xj6pNzSw`!k zp?1jiUv@!V-QssGSlGnG_Eohq>RJeIG5%`lm_*0k)-9UqM(_0@ma#C?NlD_Q&^1P5 z6;$7)#IL`RY&mpNT%FN-BkFR3Z*CkBex)$r7)5pFO}&E#4sG12jh;qSA#(3%wKL|IX7Jw?-D0)n|R zJ6^rKIl>xK>kW$Xc8h2U+(a;MyiFKK`X1DPvk?t@DO|>hQ%=sZ_$!J$`FLg|4*a-vu`;3}<6R#AwWhmb%yedGa#EjQ`qC#hnRHTo<#11v+k(bvZfo6Vd?F7lk9le+P5g$d)w}ulGtO*PE+<5&7;cO zHPH)-6VdS%YZ`iAz7vFiI4-Q#h+5Up^h!BEnkGFE^WxoWvWv$baBwBre-@u%+>ZG% z(flYH5SM)v(}yVEfUwpm&NvWW(s~a;J^#l0emP{X1vPwU1B%Tn!_K#&2`NeCgS*0O z?W$Qn`wWWkJzeF-x5+eRPaF-PO$?#Q6je`JOcQph6j+Hdb~4z>Y#fnCv4$73AFQMV#$OA(|8?)6qukOwk=+F>xsKvtpqsIftG}N?y=;u$U)YT>- zmAKb%eF7+uPCBvm!@|Y2a&*K1R~R)V0VoQ0XTMt4JUaeNN*sZODA523-`U&i1FNft zW@nS3g$54~E5mc?RaI5NP_*IU;ZKG4r!1W(lMWaqRm1yA8CiaTN@JQtiOxzb=$wlHRMBtZm9b4_*&zDM-@euRS8&|zY~9U;{0 zRwMV!Xg%&I+44}8(lBsp6i4d4i!`l{P_YVDu?v^71>wgbv)&D zJmcN3r>>uuukX~0QeY2*EkXvbm5K}=hEq2hbs+?x0We9qe|{-fz1%5H`twDVCkA(S z%R@{fUpxZdhon5F;XhoJ^z|1yOMU@8d*|TbbeV*l983UO!yWrz3o9p}4ZNh&cq6*j z{+v6j-?e=M=+N)|&e#LNeE6c4mf551{wQ4di?1$zymVjdLjk+dtb<>Zl^OBEDKTY0 zOq|*#v~wR97J&fe=hfd4mScDj1(&?&Fo7FEqt(!W73i(wII~+sPzlm2anuv)&_jUa`J&bIu2W*X8jkvHwFKEBB)AV%ohB-(^+e z11;INW61rf9Lc%=gF2DaoycZk;G=JU2Avx4@c%jPN-ZIB3JOjdjz%;T=WRb__T2?( zoaOI&eW-R0217OiM7=s`)m@$s^Q|zam6Ae$b0naeDKPv}C5QR-ms$q_>O@Xl`nx7FokZ zX)p`jQT(!n+RIl#_~W($?@YVI>nl(vDw`C|gPv2}ADJ;D)R+H!xN+f^y4E6Ec?cA} zug@Y3UeE^TpBkM;wAFOv7`d+X0Oo(K`U5dpFdqI)E+KI%y6^I+W@8u4me3jNk8aE@ z2@0*I08*IKo|frybl+d2sx6A}M-fo&7Yu*H2#;S`(VFgx##Q2e&@41Xs8c}6F~UjE zMsJlv=`g|084XX)*2PknO!$Q(G3uC`oLPWdu7)zv`bWNAx3@^UzbLn$kxv~d3?}lp zS-v#Pv@S%kI2@e!MhSTN+8n4*zYHAI1RUG^<8SfFIS>WxI$eZ(HPkRU)Hub~^^H5< z!NI|`CA-4GuTQ1H!(1s5*r)e(OQX3-;>SH~Y^z+F^?Zx(xfjKsTJG1%Xujkm`1f&3 z=0XwB@bT-!dg<_$RVF^qhiY$T=t3*sQyHtWrx=@rxY#UfwFQulwjYJ6Sjj}sgq}`| zQhnEsB+aG1RKGEN?#mxYp{fRF=2EjPi*ki*U~!R!*kV3NSK7`~vwIg7V&+T})$ zP>|=+m*?ow(^06y@5gN<`vAi%HF^ZjE+g!Gm=FtOCKe%D%PLr-Izp>7%FvF;E_^3L zoGe{@XN!HOjNhISVH$>{=iez^FS6=SSl@O2Ei|GhCi>rlq#qI<9XyO%y zBjRDlJ92?a1uqy=3yet+W3UyXfCPe0zBW>r5m>Zbpjj5wgT*@{VZo5Vq#G;@AunyQ z76NoH{*l-uk$;CB{tV3gpK+HcEE7{Tt-NWyUEE~L0&{vv-_uFp(BT^$s}d~h5^1C< z%Q1}qUN-F4Cjae01F3Xv^M+kiSJhGrcCQhpAdJbHAKlA?t!#h3w`i`kr~xr;yE{pK zC=xFv8NK{7Mx8d&^WYaQ=TY-KkeOj3O9=mSTm|$5IjOkyW{5(0BygizHBoxSA&T$7 zOv3Ov^N44(Xr-fQbtXvpYUpX&37Vz&?v(QS{+<8R?0Seuc=Yr}p6RJ))9hsp6yA$u z1kpcb2obqZ4b)I~W?`(L*Vu@s9}TCFHlhFi%W!!(<9TU%2w`?iq~j9B*@KAb@{vf*ZweAxiWoaXCWv>2{ z*NT6PmN#B?`askT=c0L$WdRy6Vh)on4~G#z5)^_>xg(y{%fGT0jsGlDr7K=#4cpn` zM}AAh>vZ~6Rkyljdi2@!FwyjA#sWr34e)wJsmeuIXu;P;XeBzV=DIb5mb(I~HV)P> zP^N5fst3;O7F)7(RI+qGG9n5xVn+i(if}S44yhG5Wq}_YA^$$WU+;Z7;~s=2Y)U95 zTCg^A6zp9v>}{~o+hC2i;ihjRpS}J3LPa3Z`;sxxbBEJ^?(t%iJK;D5wV(%i3qScO zzZj8rHCd>AIf5nzVhapg5QeR*jnYEE#>vh!PJx8QPVI$(J*&+$t1ae*K^*TWgvCzW z;vtrffROCA2+2^OM}?whVEC28YUwOB9g0%e2Da)s{W!*r1k@Y}uVzSZLK?Ebv$*-ojZ)CZhVY{Xe@HZK^8aD>87|9Ta@Q8RPUf1`MSvjVArFf<-g*OKIh5+Shu&N9Xd@G zE@OqqX@m*x--{o+g+L74e>}$4|Lgw$?FsO24Gw%H{O@7p4G$v!d(6E3$3OkYSw%IF`)+zBM}9e$E2!EdKZS|MS%#HSg!=2R6-l zzv&LhwNxRlUd@^6KDX>v?k#p69wjBEA@3wW z%Vpi%j}GHau=L!1=G|32$iNz4VvT)z|0oK?YVG z(Pi#a4i+1cqHw?>&Q7m|OoldwlH}Pl-d!4SKKehcUm~QzoYuSLK?hK&m6a7JY(4Q# zGUJ4djEwYt`UH`r!F3j<^ziT)2mqk2s;1^dLW+X}Q(j(v{dE$pG*0DL^rWG%wl-lP zHXko;AtMvSAa8ALkx@|e4GbVhMn?WTesznO44}D}k5Avm@uyv{lD0My{+#jpd;rM2 zyuEwDiyOy32Vw{TST{KBq^72>0u2`s@c6r{hzU2T&(X@^!n+y!f&04~fct-ft(7kS zSoCat{uS80xMSMPp`im{7a#e-z{JEvORzR;T%^7L?qs{m za^%{YMSMa+aaR{LN!%03ik23lp+xGByXWn0tBD^zh=Uql3x9vAk1vlD0lpWPkXZ8) zw*b4Krl)VdhuMLci zgx+hIojA8JU>icMf{kwwWB{H2=Jk93CGJ2SjRWDr#)&FD42Ol_-?EBO^IE z81yL_7Ai6dN^x`ZR~}wN4T!du7D7~i$mXUsS%Tugz`&wCXk5QeXygX7Ol^9~39%h0f!%7%;7ADyH z09@1uD#wAz4@BL7QIHLoA`tUhjJSv}20N!34VK5SWx$vKiU?v@@6VUid3kxoy6k`n zQ&3R+Y85hea9{(~h)^h}M7^T-qc1@GTKi^Y9G z+N25jva%w@!w4U5z$B3^uJsQ$Ha6B@YUZd#9v{0qe}C`Z>j~y77qzxN^X~$ZV~X+s z#Ph(#goMB$K@kxi@?cPtwBTm!K=cE5SRqPH|OIE7Ozs5qX_^z}UIK{24oz{WP> zwp#+U3M$E0c>VqTWVEzH0|Vi!YU$;OcyWV>g;U$@3bSfGwus3U6&1cN_JR~3NPr*) zhBMGari>{Z#1MwRQ$T^YBC*S~wzC7at!<+16uGcZET1xnnB1X?p{}MD-P4j369X2? zmkSD#{(Evlmo-LuxFOfdz%L*$$TW;>5eWI~yDaU#j*NkU@#{H5^AeUUo;fcW7>Kxe z6R7RWT!~{IlRcWse9dKFO#~u-WEq1s%#op2nYx=zxOO|v$C<}kkYIS-!*Fg8|;x~Wh^b}O@r>d!J@=< zugtpN0uw)8=(+cvxf3w^6(B|X?b|nVL5ejHLAw7;fjA31kes1m&gylO=frL7kZXI~ zGKsN{clG_m8K?$<>qNkM&35iew5xx5i64W?5p=lb5O}*m%OE8cI9N{$2MJuYB_)u-Dt zL0W&Eg&_li3wXL)M>@2=ghx=P^Gsie>clNPyu?&&>(d7mUP5(7dUvth{;rsgN?*f93r3>(``MGPduu%*<$k zdmC5)s>O?sKgPr#D%>+4RTU_ zKJ@9646u@(YyM`g)}Y2IJ^>D!-;HBk(s~&G1bjIi9m18s8yAyq{~Uy2Z%z>iIyN?O zWwrjZXBJ*wvu@u$=(0yl*vh-R^Xak^*Xq^SGxO&7K5o`~r&!usp`O>>0AUmnAq@g$ zIebDwTOwO`aqrDQl!o`==H@1pnHhCT@&s$;)kXqwPaqs|37W~sKn{E)z}_-<-C3Up z2Ya_qCXAWwK3l4qPrNG!o{yb_V`h1Izy0v?c!QOdH5h0}_V%pE7UE!|rmnzM@BO{K zTf`7BC|ZrM!LYrLeU4X=HJJMxsjRkk+-*Jvs>X9ABqqkjtu?#6EKzT8BRBSXq74XE zgoK_y%x-y3uSon}NHv=*$c?2go!_ofsP(9WY`7ReQd^zS(cy+?pUn z16RJgD+>Y^C?H)u z{fSdM7)HP$nK`0H_pg0=_xxj#CM)pRiJ+#dhkkcKB1lCA9Yj#`MuP!7CNVK`(|S@c zi2w}?O95<71XEQVG@<}8mc(({vhfp$a?NhwUU>xt!&6dH_E#Q>5C#JYmw}rb2i!6^ z!0-a?V0iBRz0v9s70x42S&IlFFL28}`wg@A0BNUnV_V;`X?J{>jeGB?#J``Tjj#WaSl-e!b}+d?~l9 zfDjy9+@Y(J?c;f4x3$p>j`y#Q>2YWzS$|KBjrD`FVV(H+crd3;>XXjX$F1hl=SQna z`ep&d@S=-%CLN(bf{k_}!R$Nbj4LRh>Ad=tce%WJAE}zfy;h!OO3)*S(RX@!1D8C( zw6#7Z+JNxw!XVRIly7pb%nS^uj{a$cRdhT$+ey&+R6QbT6nT9$1*0o4fp4c)zJ%mITKW-4p-|^49;nhzA@6 z4$+pzn-4)@2~Ezkb=i|Ka-Hgxkx@>ypbx=;CBTQuOHP2!vVW$fzhS zBO~^}`b=24y`y7j{~BI>|ACCnJ4$Ss?&x#iiZhTG>($cgzQApqf7!=rMIQ;WRNQr}q zNJ;y_K(w?(^!fPQgx$4cK?~#@nwki}r66#g2-=x?PwYr#w1XRlvGrp0=pyb zLEby_6BHDL0)hwN?Bd6lJW_Y3I((ggh!AGk@aIj$Y2fp4b1Qs&2v% zP!PVezb_9+G6p8*3_$7jli z_@7MpK4FB5W%h?(>;(b$7&E=!t^we4&Q0$k%c7BfN1^?job04D`#)3$S=JyBUO^fN z^nP=Ie*Ev&<9JHCx}M)YfUTo1sUJ3IA70IPn}93@z)%Bhy8;NqayozN?aa*~59e+V zsIuAjPnNdEvbOJ155Z(5LZsvz3bJN9|Lh4{lP*7Ea9|c}*dpNp>}F&RdK}O)P)ho| zCBc|D7_b*^iCfSGMt{eCYhR2N%SZjWzd70fIipu=5u^iVYH+ME^NoazEE?$%&Lx-2 z*)zfBgLJ?nz|iP4y3=m8x-Gjcj$IGlN5*y9;LzoaIqC>O;9iZ_!MwJ>zzLEkY3u{?AhxXSO5VP zWmFPAYFM!(o;8TcZ{EDIiJ~22ix2F&DF+;^=W4>uTsRM(gd{S{)DOMq{;Zxf-%uVN z?VaE$JdojOw8u`WN6dgl0L1}}6cdwgc1*T{0{{1;f>JV&y?H#luu$6FP1AEZ$TJWC zl1OlxPa06aus>+*))fJ$^RP8P0KXuJ#yG8Vvp{0v;|IVKagvl1A|n9c{OWwkjt*2p zd==8Eb^Uw*DeLICQpJ^lyMozSuOE$fZ;`>SMn>H!H&5#HHh{+sjNm@=dkmcEdiyyK zypKRH)qVa)Oo5__kOZTJLcq*3+WS9IqOZ?60qy5>eOQ_bjBK`>;=b+%JL6G<(6_!{ zR0IY0L6%rC!4+L!i?;x%ap^q;< zLeW6p>AnBe-x8;rcjXXkX0;D9H#WcgCJO=x0UyVey8KlChw=ZqHTwjeYTf9V7+Fip z5;6)vs5lLqfdqy~8+6MDU+$QJkx}8h>9c1MPo=Jq^Yin8nGOQLHvRQ0gNA$1uN=ES zdo}famW}3M`rYLkZcsG*IuHQy!naVM0s$`e_Q8PEs;gt)UoZ5mzh1p5cr^~n38Udz z*x|`ZMO|GYc%rYmnyrU^2VSI-Som`07(LQM~z&!p(uUGp4==w9G zL<>f)>3i3Zzd@T2Ms{`#>6@jgKfp@4$OHXPXOt|}v+_F3z=#}Z40^b`I1Zz|{i(`B zrUJKpP%`rhX?+ z+{ox?AEjGoNR58|I!Nfgy4uPjt#dkll7lV-ZhRVq(1^AltE)-J$H!n7+<%`=;gtN} zAI_B z|3^E$@~ze502TM~iW}RmW3KHyALq@027!o#MEX4|EiLR{tql~aZmZJ12H#jX6$Q{2 zPsQU2N?8G=?q%UTG?U>o$hDmd4SL(D3}dq@8S~C zzm~24dfHjIALvX#WLgHvY9Q(Ps7gJ^xvY*t7()z;mk}D05;8mH_-BG|7S5aCfoN6hS{A~sYG$VK zfFfiJUB;T99LTyL{J}o~%-x8)X=-Zvm2d<;_LocEt`pE+ftts>!T`!WG}$x2m~U)s z1fxR9+gk{{@%(UEq@G8@=fI%hFbBdYAwda17QhN*G&G797R9SK^)K%SKij!Nz5ol( z&80Z@R#U@*yK!!WdGHFr_U=JIXM=x5cfr*gu&FW`8Cft;7JyU_^oi-Sf9h)f9ezfo z+B!O*y9c8Bjq2d-2^8{m;S3lGkl=u+beV!7;tp2W`UE%;hy=oU*l;;!87OvxpcBC( z;)Cc9iUQTt)W9XNL*Jbt{KCS_^R@sK4ghTdJorHO#o1YLZ7r5jo!-HN$F+by7zN_u z;&7P?P!Yf%-B;xhl=byVff|BGK@kh=mP*Q>EG#T+oii3#H&6kAb|z-2=%ve z5nsM&V_{*zc?(c+LCT@yxBT5wCSfqpS>VVU(7MHDJ6yQN5Wt^<1%?FZcQj1QFuj@x z5Cwop0s5eMTZEfZ7kco(hiW(d7 z0W2Gyn23O)0f~r|_8{|LWwJh@tc(%NE(hSDQDflyH)=2ts_N>9%~nAtyi_Rx<`39x zO#L=@NbC3eaS}qpFp%?jl2wpP89YuU{rYp1Vrj_GhAg;CWQ$!8rA@LQms~scK|ly0?=}iLt>QbRBZEhbaWH|_uuVxAUE;+`E$JRsnC$6 z=13BcE~W5*U z;3->-4zbPTKZyNzb2NaWq{c-rH#az()G{?q1gsF$KmouBm6kS>^!a@dm9td|jCmkx zQ=sQ_VI$ZU0a%ZLe?T*WGCVZ$!6n<~r@v64V~11DK*)L_N)>nRS zfT{vAC_v1t{}{jEtcn5!ECB8nLqY%~1w7CDrr7}E(M5mUP7i5Za$eWASIrM6SovWpFxV`HnaZ2GX!AjQ=zKn zTyup>>+9=3Pp(L?NkJ#h%*>q7IC5mb03QcRhddrKu<^C&V)?*B5Yb`-p2A=tFBfj6 zo|LndN@5&a1B!wHIvM-$c>z-f5fRb6eHoB#teQFYT=J+KaWYI4IMD>+^o3JB7|z0Z zE;GSa9e_r;@UTD(_ip17rVc2eU^D2bue(H9Z@)OUg0=#JK1mW#)Z)zk3_><*V*XEd zc7|eMdKv;BCod%U_&`2&>ZrG&*E|>uGmu;XfB;zPG*AOc*cY=Fx2=4Cg?sf)it-a5G&bRKA3wVxN)h{4*1GiigKwIJA5MXU5 zn*e_j&(2n%Mh_t-A>rMZ1WNeJ!v%P-0U!bb15v#^K%%w{Kxx7mP=JFJ5|CjL z$;q@S?*G@_yi+BM0!SSM*j#8eocKr}ZGwO8^YU5dcyx57QXTxFM*;1B(zkRVe`tN5 z4p_)WWi*f-1K}O`3LbzAb#-l8YPZgp4=gC40@N@t2^)KRQbxv+(hx8+qwT=1eZ>L< z34>O?1qlc+3JDUBxj*}SHa9nQuk`5v3=Z^o&p=0JW~PCm;hR@c{{FDfP72(n_;>$B zSOBBCa=g;+)@LU64t0OA2@fD8pe{2oF%bk+16ZNI*jQkgFTi`ZwtfV2Jiyj~0viBC zc3^vDGbR9Q0J!fJULxSI_m^7SM~1AMAl3og4&Fr7LIY5h0NjzM0@5pgL6VQg#?;^` z0GB#6NoZ&g0EO$-z1G^(1N%%(PGTtm-z75#@{CxnC#^MR?q}EwLJz&F=;0DbfvLly+TtNIqDU9a-f6mJ_A2%FQZ2u zlykI5UU+>~S8S0=?RlmHr>al2%%u^~+HJ*XWkxMLgw<+Wg1)vTzU*3n(tH%Nwmueu z9dGdAq1nVF81aL(F;Y@90msd`8PBEstE8~6+WRi7T|}iGci?972hQhrCzjupqCJP=r-{q5x66hl5& zPL-RLSL7?(noL}NUrM0f;!I^_PQ`dUmP<^NSut!ca6Fb+{6`BA_|cpYnk)xVYQ2>& z9=W^M6q~mK@z8pX!H$n8GZ%h^PbGMSxf7dHEqGnu+DE$Gv2P-A*7ae49~nqNG|byu)**hlGk3h!4Q^GXtT^g&D<&g z>can9*%pfQE>oKUs@u0Z&G;Q6dD7Sm(NgMHO(hcNVY=GGQ9-S}_lAq6Ws+v?;iV9y zR1j9oK76*xU*TLs9Q7Qt81>e918wt-Y-SHy@_(eg7UQ$wEG@i0p-! z;m2W|Y=`5yr8a)o1G@V&Q~R}QZZkjCD#FbV7?r*du%kz9s2L(!^>7VH@3qcNpt@3v zysz>JEK&ASJ#8H{(EWfA2qFNr9T5mLfu{uD1ab3W+CIR*};AH*8OzS5Z5 z>++1kL+GupCELmnUto{qbmJWAA+@E^TOCVaN%cQ7y8J@5TSBT#q4?2edY{ z@oii>zq@(6>*gA?6!H?Ew_63vZjJaQx8!ucX z+TWvG8SI`QxuFBks~ud9q3G}T0iT0YN`G(HfrmohyA$PL-g30VZu{SkcHF@Jzh94^ z(}eGZ_<+=9!pLXBsPkF%@mD!SXI7y|Q?rii^7Uo-?5y(NnaNsD1S!aifD+((^!C5H zt?kLbNF?LImF5AC`5GLN+o%z?GAI$#oo(zv!EOt(&=8$;>vwp`p(Zw=n;COW7)@)A z*m3i|A2nY1N@4zXD}ZRvg=es;M+s&2DZ8m|vu%c4laAHiKe6JF`bttrf%2k2#G;$` zYSrECfNtJxO6~eKdFl7U70-``!)Bry_XoV|TY{zE{7Y`!hmT$C#{+kV?d(UcC|CT) zD1^6%nb(u{gk7#z{6Fpp@5$c%F;BNrV1e#BUFK7O-P$p=NTKpMlYmRo|GdH@2fY>l znPW)4-Le3+ot!!+xj>N#BA%9q2NZzFDm7-wHA6Z~&)Wv1F#!FFtI^0Dc?$|=kQD^c z8E4B=J@;2!UpoMa4n6iWCU?Sv8qi^`0fatmX7jKBJq0fU)bsiP8Pts~E<8Zw6?9FHNn{D4ZZ+W5Wda0sud#AK8VT_i&*Xpr1g=)vtF(%k4K|q&8`9moY&BDql`c zPB%|4ub(cdKv-j7kas-`>V8H>%aJu}D=R=$n$@}k$P7R!)O=DJ@BVT6Nz=ixXo;4! z>^Q}*@;SJoJu)w8DmAQaIN%9LIXQNF;*mafRcF|f5V=O(V4rWaUn=tXN}07E=f6Zq zrSp8y0WKk?^}&G?nn!4Qq!Ny4;M4W3n*FN#(^iA!UGmjhs59Yj0{g`5E zbCd$S%;B}3&K_+a?1Y}~W9=JkPNg3aQ9>3;R32;cocOta7_ACklIBt^bEv)8n%SV= zsg!w^1C{9y5w>J!fLiYUvGt3L3`AHr>7hNKRV5`ajJbi13?L?FvB?Q=AHZ?|&E);% zj0s!Ik1SA300aYQdceNmuvmrw89Ju8v~<{#^W5xgiHe3!I)ski9N;2jA7(&xiI3#B zR3{GT-4lEQf{VGSsi`e2MH=)U0Q$VE+5uWIIXTipX)&>ry)i)V0dPX${wVO7q;#?& z$@9>6`2t|!ea}?i3lDuun^OBR+XOePGPzdbeAsoM(E?-dy7qDYZrT210EVy?Z02C@ zBNr6=`4fo4<~x8{U%pD%z6Fq4&70fZZF#%t{cLZ zRhDir51o&tAVqp)fAPLHZ5s2Lh3R5u;E3=cHmCD-om=MkiqO5o1pMKh(qS#Q+3TB| zTBlF?N6qbp1!t~d{57f0LrKi9Aw@kPxI;d?_C}9{*a0+}GxAQa)DbUn7HXs@rlm78Lh$)mf( zq<3Ju!NbGP&(C8M5M%>})JLEd@Lut8acMa@zF=T$h1mi?$+)ob@Y=`6(S24A-x_IY zc>*{Dj06nw@qq$MeFgOv#GgEQDiFBJe*J3e?)C$CJE-m_Qa2WhB7k-VESyrg7SwAW z&tJcoy1KicIm*$|$l6*Cpnuuf+2MCAzG@2v^mc!LzlDuW766-oFN%s98)~i|AD0Ke z1T?0Kii*n{8`*?9K*Wa%q3=C;4EvbN%e*S*h z+1Xq_>h0&j*9H3GvdYSi+1Uh8PU0y2R)Zz>MiIDwA|)pF0N^5UHvlHp8%SUUh3e?! zRqBF!Uo36o)8k!7XXnC|o0}Wo z*x1-u6=ijxy>G@R1JN@|8}Hln^JGCG6q1k0`sh zpYnI$)9dNI6A;tKk-X*ju|JMkth>Gt{Ye$LNIP_wuF9>w^38 zGTCGP$E~MzqQ{S~Lh85-jP^3>G#Sq-G5X^(`}Swx9oFASy500S_9xcBnwq}a98hVS zcMKYyRBFrUbn2gs>nobU?N7;UoxeF7QOgP%e5tl+JfL59L(;ZZY&e4=ahHZg(9UNQ zay!ON*yh_y!DbesZy-X_&K-rl7~e4*nw6^dlL-Eq`vYs&+TQ-DI6K=1>|sDP8X6kr z$rs!y^VikZ&f6#T_e+4q`}XbIuB%%uw5YXp#ckZxJUq`KV)J3s<0HarAnXRe0KnlZ zS5v@PfPxm-0)I8^EvPd=AOn9kShaBX%<&>u?$_&g24Zk5c)Fe9 z$N2#X3Awzzef`_nc&bDwy>^ak&#yQch$%rFldT!Ivb1dN>l1HU=;&B)9xAih`2vuO zapYYkB_)6iA1lBxJ(Y?=ka(l4rpqm^is>e@|B>Q1a`wtQLe8${N7prH_}bJ;aVLJN~GEmuH}z=Y3u~; z9_J>nwcBH{p=-LCPZd!~!ye{dh6AJmK$^hc)Jg*=2Y3hos)OY@16Xo$^2s74>!s@Z zdzWWw|5Km4&p)>$o^6hK2)2|bpg6{y!2py{~FAYow)i1927t+GiBzR zmKJKvQ|r~H=FD3{a&yT6*6wn>;TgNNjLR8Od>%uXO;1#O+RjC z;fLe6Q$_TRk9+oS3=C-XNIn*F(<2UquCutruT%cQ_)Nxq$9GoCnm<)othxSw{szrR0hcym_{ z(b3kn>QTjm{@SPB{Y08}(e8-sXwiuPc&sZZJpQZMLrW0FDl6p|zU|#j0j;-JdO9&+ z%A1aoUUz!E5Cyt;s+iX>Fn;`ZO-u|7zlVmx03-+Y!PEY#{a>~waL)-w3^kZt_LXZ6Aj|*>InjN1bOcOFziW@8V`yS#rWeRz zRC022Iqmkb_4M?R_kqpzJWu&ublRhBzFviYe$DNk1K^hw==Sbm&rQCns;bZC(c9CL z*3gi6wl#!?jeV`J|3gAr8Vv|o1kyq0gAZ_h>ENUs0ZVs?(fRp)=c6V+FRxc1h^~Q{ z`aCL$o16Rj{V&{drBgRE!}u~l_6YJ30HoKmPJtP5j;jIWU~g8(KbEtKKQ@W|;}Pfg zr3{0}H%$5DZLc#;khAJ}<7O{qc4yo3jFEFoXp`zUMH7@W3=Knanpgu%E-Bc~J4UDQ z#GMt;|3JGl!B3*38U{6GzM191y+3-ofZyyN5zu~osW+t7lT;TJ$1eTT(Rwo@vkv$- zE(60IAhFPF&Y^?1y@=0D?=4co?VpGXo8+P09E=~BSE`6R>oFmG*uW=rv>~k6G&=F` zQq>!p`XHxI2ah>O%xX`tVH-NmQkuJCKUh#RX zC=MQ81HH|4Gk|PiQZUc1u0(*x$o;)&{QlwrQ}L=T*!e|I)0vAqZBSz)4=|hwW7p?D zEG-=Zw8ksxL4ZJyEi61lP2ILb2&UIMld>{0rl;KAS(hC6fpl(sFBW(<(3McKsHdyz z^EtcTJhlh8SLY=!qH3b+{7YpZZ3W>J$OQH7uRi~sD{WOeT^NBF>V$vq3TFQAmg|8r z)gb@dH3dGdqx-4vp=*1a;#tg!{u(5C0YDqm)dh`*hXI3izNnxHsF`A4*sicl3dv|-NU6Bu^U{i)SCNfOp-Q_O z^IXJyMBl89MA4W0kj7Xob!*W71ogDn@`UVmW8b3Fs!DKfgH+$?YigJ|I7Dr1D!B~uOG_0roB;&_q|rcvnm44RpdbRcb&wANZuEZUgYaM0 z>))aSs4{*oH#PETsy*g@WXkg~$bzSoE2JZtXMsVFk zKS0f50Y;yLvKQP|cSZb>5PMH&+Q95gdA?ojGD*VSdb@yEJsNm8H zSbm&dG^6X*$wlsonTnxEV!UCA5&5ElFQ8!iGV`D=?>2CHwkD;w#6?)8f*PT!I&NljnaY1p-r zBlrq`Zm(9(!@_90CdKZo>1q9F2;dtO$G9$572e*B@h(#LD9k4=#5Asu7eQNaJd5Mj zr#ss;EFZVP{O&=fL$35CyfN^X1dP?%0p*}wI?IwzMv^VMZt>k;7782}_py<=xxR}_ z5+WX(j50WV_1po#6F{px0}depgqi%eZ+vCpiK(eXfc*#C7x;=#0L=oJ$5pY$%Hg3D zNGgE>02FmV0%X0EfX|Qd1Gol&T2fQSAAx^p2h*EuNsDakk}ARs+6 z(+gMxGz^SVi(8XZn!c8n01)Q_kOhd6qmq&&fIJ?Ix>s;_1$`HwN%N`-5;!9=dipRB z=s|!6G8zT?UuGces;d)%=}^z#Y-#D~!yWx|)d@=s#wUb?fV8!l{qAOQ`e_UL`SZy~ zj|QM`(uttoe*OA&eQWD!yP2Qul@4f4Y<7+XvHng^9sVS>x7qdXx&C~0lo%h+_-t`Q zw<)~N<9BZS5Or6#i}exiln_eIE}T=P8e1T+@_?M}%JdHOAAuZ@|M<>6tf`3?+@{9c z-NIeAVL7FJR9BTAWk^fAU-{!A}lS$WJqibXRY!vs|N9eSPH0= z8TW_?b$eB5=f5e3FRw@x0u)&@5icAHQVSBYCD)e*Ho431zcp*~}>A_RIS{ zA;0M$n|vVrEe>N3O^s6WDvM?;IYVB=O50Swaq;iO%KvE^1eo}wq%3gufwZ(V5Om-W z5rH{2qD?~@Xg}ti4Y~oOps%kFBuNv(^%FQaIp5&mcC#3@R##UClt2KU@Bx+x(&ekFc#KtkCQt-|b}u0L0h-_EW8@`x@2CLY@Njok zh=sKT28miTZC7hod&2T0SFfT z`8_f5)2Qw$*r(4L%iSSh{X@V!Ts`zajt8^H2kSbe-gPIxp@ zd$j-P;6}bWDQDJ>xHQ2uy7yeSApgVM)ElBI`Mro#>ANw7)M*;eLewu71*)-y|8BzP9FS)eH$HsFrLGxnA+P_j{t2nHX{=yZ2t8%LG}p?hOlfZ(ML(M=~QpI z1k4XbM@AX0`=YQ`#KhAC8Y0w~1Mxm*uV0Nen&ySseCJ^GC#XB&QAlZBNl=v<$FQs} z_ry}6uANqDr*1-2B{W$1BZD{9#pR$~l*}%iSjRU18;|tj-boIvG>pR0P?I;eew1S# zy)XTi<8m^)jFH__P#Q0GhcECl(_Q3C-YcQr5*=UV;c&DMMrnvb0cP@gPI3_|Qj*m} z!BZ-KM6^>HxA+gb6=p_!1t4>Zbj!gr94D7(#=O`O)pRZKYyzf%S|kgN5CD|ne>xB8ek zm7|8@eYMngind|~xk@fsPi8+*Px*2?8p|P@n;)(u52!UZ<%ig_RUIF0ep|#bT(@%P z%;mP`n2-M5oM3@8(P5EB7jOFBGFrG+Q=ccS)A|vdRrReX%s%6t9pb=@N7k)U6w!gG zZUXs4yt;h0GnV+pI$aZ!|o=m~<(%3or3KN>glUl_WD zn{>bZj~1Y#K28?I}T%@i7ru~%XO5*y# z$Y_Rdcp?%z;NRom=MQelYg2A17dmEFcqr84){al~Or(&hADOQVq<>q)Hrd?$K=6}| z!qGM_R{Y^J-DRw0bwfCsX*_;Oh;9K{tbQNKOf{e9Ad5Sy>VTzsiKJc`E$z(<8w@|$ z_+_EMpR5=GiinI<6pFZV-KYOwZB%;zD!2-rVewmVK_UKE>G#^j*_G(oGO@VA zQqjn8Zb*X8CGV$4aE~UaE!4mFCu~3qI&nl`FAIH1V?S{t6m;Zxqh%_bFlIz`ueu$2 zs%`A_u7NpYriCwLEe0wnpK>MoR~!}|b=~}2|K2BpM$XwzyiD*gIXHo6tGZLXa`EW2 zh@ZE0q5ht}CdR5HKYZ+h6aQX-#j?S2)kZ$RBz6Y^}KKY7tC=v0sL zU02wn;nfB4;<+#kQ#^Vr8qP_hOk8jI>C3^1uNK)&9tvE04yM|8Q^H(zT=RoIk6d)7 zK$hwLs`Qfm^sk-%hYpxLR!?yGfkU3BIje59{gmSt2vO}gbg>i7dW^9;BdYGP;A zImCUbBfjtIKewHz=YMicLYCzG&awq9_jBcwP{!TAx=-dAwLh_oR@IkZe`VK1o`in! zO$;=k@F%CA^fRDW;W3R})i##$Uo(0+sk~-b@sdb|I)i84|K#Ld*Hjd?2C|kbufIk^ zf{h6GWCQmo%6hw^70uiznxma7p-2HW$DCq!kmN<<;!+o$7eOQIY-b{=TI2j22nfmd zM!=1R+MF1s8UpRiE(W`8hfy}Xg4Yt%D9NngNK z58~Ayj$LL~e;bAzKHlh9aN!lN^81d3;#XPME-?SjLP2Gv`P)yu$Q-#dzuR6OQ3^8p>Tz?%g8?uv9dVK{333PDc&L8r}Nk5;SJ7X z&8gfJ8CF7IP3FRX$RL%)A)Sy7_mH*&v)S%{t#P*a}^JImNK3)a!fe z@>xzm4AF{gvMBC!RdGi*&9Izt{Zie|V<8Y-)*ll@hp)q#)!%j-jr6^iHNcfEr=Z zxry30{jB{BcA*pQJi2Q{3H_tEI>SZ02eZ2QKWQh5fPehk7yjVEZ?Ku*6;F-rD{1pX zy(tSkZZ-g;m&6>bb2zsu_HEjC9@6JMenMxxpz8rG9x}QS#sI*Lf zu9$xplr%!Y2r$dKPN+yHiBE|XtQXhXp$SZ5<@es4AO81PuoU_+l)u79Zpd`&7;TM* zakf>^9+9?l2mQTwBm>t}85&J8Wo`u}9dy}YI#zI-ih!=0t5whNu7uJSr(}pA+ndvLI zVY-&D$lo|e)(^&pf7M&RbC$zL{h(w3QT4{drUQmK9QCtn8S@_Rx2WC9K$N`=2O5R& z6?19JA~cKuI+HxnoCXe$&;NhJ+Yjry{0Na;F$h z%F9AArJ7iIECs6v&z|!W@`=90cgXCK^U0!i_U|TUA{6nctyJ+10+2GP`8-kWVWJ;X zqHmqT4|YXMe!`3l?)h7kkuU1f)-6iO-*S)PZc15~QHKzxM8i0s=xTc$1!fC!#mS%_ zh$@Id9{9+fN0W`J;eXPXeYfyl7D4{~(7%Q`=WZ@Xy`ms}au^4FmP>I|UK z7s)6thE+F|DoBL?UPybQR-PoI0&nHj1Y5({EvDfy^-K3%QTcn@V%C7m*m3WhVU$hD zkQVNy{NC$n#g(#of6c@go%*?`Ursph>8N*tF7)KSp*M*UXBDf71+Tpxbybi{-0l9s z6n`11SpOMqMkb}B>yIFteCL=P2K&Ey%KhD9y{j(alsT@Bapnfc$AAR{mWfEB73spwY1OtJr>|?J6TEY%MgwG=R+`m z!8}dd!ND<`its%yb)d^+gi*G1d=O_r5<^Ofgf0(t@WtTf`mKsw;=1I}Ew*m~^R{fx z@YjUj{!Cy*CIZ_x@)3Dlwtu}i6QU!XsaU=gN0;a(X{iicqPLV(us*%QxqpkYhwU0}h@<4NUEh={zA@e@5d(kv{I2NSa>bIx#)W$VdFv`Gko_6}e3> zscCJ>mbh23Q!1LpMsM)1Das7v>JaKAzUWKtMSQ$*c|W30Z<5 zuHlf*vv&@c1ufr%tRcwe7pGiru?k~ES#Wo73vrL?? zdJI_-nN@E+f4v*}S9d8gF(K&e_$FKIWc}7zcGXNe#tUb{I9ArQ0X;j0u&NLRfU(LnDF49jp2WUXE|Ey)y~;T~VHf@OIjApCLu|{&1*ibmsfMmKy(Q z(dfqOS6Ja#@Ya_g{`-Cpf+kf^$@Fu1x-;{!^S246NJ zdg!)K*g;|6c^E@ejx}E*BJ?Qh4qBAKh`_ILsKxf9aYooca#t{t{czoI#4n}NayKM& zem&+`|2BT1t~|K&hACw|jEdF2)c~36)f6NCo}~FWt`jp4HeHxjC7Vxdzvk?(_HAnM zv<4dAE`0ahFZ2J7I$VcC2rS@>*;HkB*|U;9ZU%GgjMjg7wed?S8qZipw?OD{RU@)t z`^_ol5Q+JT$tk8`c={QIAyb)w zCTxt}t~iR_CSK8Bm4Z7aLpoXPa*nb|6ro!I=O4(%JmV$8bQJ7f(xYdUGqZXGOk1!C z!7vjN^eAT0M_Ia=h$HE!SV0s(nhTR8ZNIKc=kAPY9fkERK+BiD%B5tE3%!V_#PS)9 z+!I%co%+{6x30G4wDGev{us+Wv#GrCKtH%H{yN}hdf;nScF;Sq&ah-nh zt#d2QD2uz;=)Fc{+64upau{khZ;*oz8zr>xdSZ#7VTCUn412vQPaHznW_*zW zY!7kUuStdd+En}=Tce*GnMM)`7^O^L%QdwlUnK^5;uQPmuyscHvhXWgy)+m&%cPx3 zJajqw*Ih?$a>4Yc@f#zy(LkuCH5>QNuMw%AQibow6Sidv_aZfPDe4Wv|5~ot4Fe ziYe?ema?;E1K!2J&Z~n-*_MQf@$N(>~G_X z&vakWEt%+jNN377oX6r1q@`2%d7<2F zu>OLH{(-0cqW(c_FVry+u1j@{(>S@Cf^mLLrY{IasRzBciKER?)`%K?ue?s1B+_+1 zqhmBkETT_1GkeyfRP#Sa_TPd>s~eZ^FLm0joy=LU z>ar@K2;xu)A3RBdMA8#EwMpPF;2?)?r*WiGY>hw{55=fIk@p}s9bu~^Zy1g`?DRF^ zzddy^9EcSf{x4>9ViEZd*x-C^)WsWuV?C;E6XGc)XNr5yvdyR_T6&{}8;mKF#{3iC zl$NQIwMRMaWAh=8mF;F^g=nH6En)`i7D_?3$5rEu1MTR$K@-ZlSiNYa;;io>1P6ms z!M@%MZwOjN6(M*ZOM-=DehA^~-)<2|L$~$F=wV;y^<0Dsy*5-7-3@9aa7_ zk)uU7RkWq0M3{T}g(DWDy}94QF8hWV^Qfas#u~|&ZlzO^lrBrflEs)7jS=KADw6h* z@J%}@=X&*H(W?L-{+F6=AC4(^NI6J&%#kILKEv@wVE1Q#j&VGunqK`l?F6yHoh;L) zaa6frl&V)9`kt{&ypRJ8(6h^enMaH;9 z*luCUDS47k{6CP9G~t9HXo+aCzyw;?PJbEbjQt!Mt!L3l60{aGlO(fw{Kc4)o;})9 zOzF4JFZ{uhp-ll!<~ebel-lpPGbOjh z$})LpJOPC z48dSI{d;}!=iu>|H9uMY2LPpSOTdg$il)1TvhA}mV3iwgln+AErsa~r9IZ7W7J_H( znTiuR$#9g%8OSxu$DHtm?^Vwd>Y;yPZ*IBg=NNE))gZgIBU+e>w-&I%qY>Lqtjote*5=4V>bW&VZrMl{Hg>Vc zDH}87v+FV#t84X+JS7t+0$<`-M>>OkZnX&qu13E@r8Qm=ZLv?aRRvC16;`bW&rrNh zRkJmvlqdDNhw&XTiD=f z<_+q$%PBK;=25BcW~}3l?>)fDvn$fqa%S{Ogr8xMZC?)kNS4C=`;ghZ;%an?=Z=cU z8soC*g>)0sK#z4PLz!`)Z>wo#=wX`asS=mHMES$DGmrI-F`@eo*&O}+_w{vq6Sotj zwXN@Cpr_}Fd`t5jA0gFi#o8X*=?%1ocdIq>?DeYJgZ|;L{VkhouKAcXDwp(!J23-Z z>!8VsrQyrfsmj!c*uydQ8H?9!_+HJF+gvXXy3;n!31)}pv!3?t5mIhKBgU2(olaGR z!`$1iPfFuCP7qaw7C+cta+3|ZwQpjzd|zEfB-5ztjqS6KEl&isfi90<|7j+IJDRXga-)@-LZeo4z*^>vN4^PS z119~N0bP0_!)2En7s*{@YQ-Ff&&tbV%{^;tT_2%|V_?(zsecfQUwOD~37sc(-oIaj%X4>{49gbdXx(BO4kQIpMp)#wVCtg<}&&l^vHC) z_*Xf?#qVadP>v|5M3OFgY>b9VSs3VJjC>tAyio{8gj!pVd@1~MZF1dTrtjCeX4!T# zO(x${3V98Ob7qm@$tu^Q>K1cSDg_0IstOn+5sJ;kLWUIM%;(xWVHwq+4VRu5-xZz1!DwxtH+7xH*huB2zqq=TNhF+Gy7)1& zTA+I#WeK0J!*$~7e#J{?1=9KZV7L%gQnm?iPbTAAU#~n23uE@hdYSCcLrwl|)G3zPmrLfD z!-n+Bnn!-Ae+Z>dBbPSC;~6F=r1CgMV}|9?bj(l$U9*+66FIG-eydQ{6e;X@*;<4l zUCJytdouYoKjaAzN%WpxrJw1q74W9cJYBSCGOEC9@RF`dO7Ow!vH=V=?u0#nZzi{DkS-E zYh~UbR0o-tDUpv@=d@Q(TOtKcg!MjkFOI1w9g3c8R<_ql% zYK3R$aEyC7;a^}OaH}WBP6y-1sV~FLq^ycWD%Bc|1Djap*)S1 zMBSPB>knK~0&_bmmB|mW)mSa*Yy0*#sm(%9V%tx05TmY;TwvD!4)=LdUF&kZIX3ql zYvPbgdq;k$Z1Q#B0eOqo)Q${|W6B?$`)Ow`R(CSy}+HFkl-dR}c)|WkHc09U)2Ts#v zZ?xPIUvz!=w$jJL^g@D9u5Hcli^Dz? zf4y+**mza+b=HixZ-07Ghi|ysQKEEw zHS+lQT7?~;aMza8{Sr&zO58AuY}vae^eJDw>GS`rDrHvADoK!{gOLy!tt5xsN{kfmMkdwlb3%mt#7MEft^k<5f1L&6JaNuI!sbx*jzApBVG;J3Ge z_Wg&nH?iA@@O5`0O0-Updj>Z#&WX+hOQh16i0zY{$-HIk!rjtp$BlHY)rELT)9p~B z<&AZT+D$ZdscV~34gt?ZUD}DWI zLy&%q-1*{l^r7(%tW_?3e~^a-{jC5mcHpJ9xbi!0>(%K?cSZGt$23SH|Ss+2&cHG!lz^g{HTpEF*V=g_YiMI+I}46RKFYSZZ|TChxbc54kh zY4JWLKy)lF0+rC^F_4v=f&pBXV4Q=hn%cx17%o2uX6OLT8aQ1j9OQQu+TBQ?&GIs8 z>xon2Y-`Y&9)gmR5=>YNTzWXPf1X|mh8*@^4<-DQ;*F^BGXCz9Yig`*2|Dw;t+SKr z%$Cz`Jl0`#w!=DGFX6G{jqSW7z{#uD&6rIHGcsnJv;TH7?_rk0&(ju5?zgQF^6S8- z-6Yj1fL89O*vc-QcHe*&(P--JEoA4s z+NGsyu?wnkgEDV+^kXksSh<)wJie{sR&_o@GH-^PQuk9RnP0i?RN-;HB%703(A>VR zu_1Vh-PB$haad(TBtMd|K4+VNF_(2+W@80T$`Sof*n+Slq!IGR1-HBfcXo*UB+tnF zIdp>C(9`xM8TV!5dSv&$YOIwV_!@`HeS7?73$Gvr^Rvr2`|AVl<2&Qy9o;xLsK?_` zg62kxMEaqn^}aLq>(hC}oS}u~GwYh0dsG)E48CR;KX<1cwp8`n)-8JXF8xxCwTdg` zv%4^IhqVJMx@PqDpl%mOy)CNC1GRSRAQYb`yg4tD>l;yC(ZDdW)V9T1xnrH)&YjLvs0W%`bpQjb9xy|E6{6>M78nf zGJ%eFVJV+mMB#B*DI+B<5|KV|RvCK8rmwc9cVPT*MD7N$_hrC;qQ|6E?x z4pbO6nslV;rXEfz<1i*cqwyDGB4?ZNPV?{d?$}<#YlPH45^{i~A!X`~NW<2@&%B2X zh9jq94fW50{bHpJ8)Dtf-oIm7XZIg10Q8a!e50p?#l=K7=?COe%}+d@2q&;?9n}5U zOBC>)Xlig$aPP@l{O5097(rh#{MypBBXIw@HRRrLLfx`8Z=7niGpn!ayqD^@mR#y^ zGf>KLw@buvI-1Mlep$m~yUG>@eWYHq-LO-l>YlKK6~ew^q!G~t0gf6+av06fgQNBzMvd)Pnz z^jF%mYHl*B9v1TLb#!2zj^Vwha(kyuJPw0q`j9V%__lJ1_}M5F3!TP?yFZ!O7DWlsI6Vm}wzr(#*C(&d?LjHDpeO@naEtxT*lsZdUHvYj)lG)#rIpT|b4RwX)0 z7R34!8b#ee)Rn~Vo&p3>`1bbpz-!Iam=kRcr7D>7gEoXz_eaj+;$qMi22@~!U?e0M zT|Oh7^0ehLkji}oG8NFGi3mnE7pc^Qg86EodBM{1rjPdb-zBO;T$4+d*UvB;3p;nb zTn&S*3Ffs%8yA19l%nrPXfZrZ4RH%$8x^i9NKpkQUF23cOR7EBn*wBHfiv})p#yUX zJ4D9c9lB8-RMurC=xIEI@h|9etq`~T1=5P3!n}d7J-QIymW;G?9K$>pok>q~0M&63hJ8PMf4HiWNNs4qx{I$~w@6=9-P!?jrH# zrd_QQ+)6D>INyRNppXOg9J%?Z`>Kksv`c44Z|RKNCiP|GHB4yB>3fC6`ql=b`IUC$ z<-Ny-@Ykx9AEjgepj<8FTL ziPrwL`HAhIZHcb>iqY-+l5CBQ!;}UW6_+q)nC7j!PyDB8w~W$8si&1YgSA5lYFOrGCtaHmlk4Xl}tQ#Ag$AQ(RO>hj)M5Y&s zW;r$w8_Yn?(G{C!fal^Fd=hO;{B;`z-OQsVm5}c_F>3)0hp(^a_gTzxxAE&xJg_^GYFv?4f$VOybC4$WCjf*Qoz`eGJ~&7OlK9S5u)0yay7ABWG+2%R(r-fLPSD6}c$Ojd`2as) z-xN9IPvaSF)uMwsqLPrRx2aeS$MD&PEv1b&Q1Kd`-Tj3e^RC;lDNA{?j>k+Aj2z{; zj~~XS_&{FE{fOHpzFBv*GItx>i4rr)_Zc*iOmWWj8Z=*=BWd%TW(^nfQuzpdX6b9- zy}?jf;W@V2epFfIJ#@NyR9SrmFc$u*IEev4K6{g_MEM>jK!^wh=4+m((HwZ6{*SvPxupk%XY?4lD7Gs!qsD5~2#tb;e9EzF| z;E@Vs-|~t1`uggO>I*H1Jv(LY8_SfGW8;Xz3qKf9Y_&K;F|-(Wl2%h~`@M2ZMMfeZ z`cfFKGMOqgcn^J^fh+tuU^ff+u3m$RVqPX&n@0Yl^I|luc(<39?5$*s3X_7IdpVl6 zjp$`_Ri!M_ES#;#v_9;tL1aDMdMb%SdG-6SgC=WoH3v!e`*Tjlw-=zps@wDR&X(K# z@yyvbVE6MVP(uuy4dDH;0`$AW=k*9GDkAgnU;qpOZGFFX-!jtEfmVGVp=V#4rarbC zTXKHy9vi>`89>2mv_^x;$GETUcmIE1)%QLEjib6Ir{>B%nLX@ie5w342Qt|t%hDS4 zzMXnE>TwL^W?vA`AEpT@+<_Y%B?(EaffJEf=c}AiSyar+ZI1NZN=FUWM?%e}g9%Np zcxNs?W5pB3Udi2=tfS*AnccyOnNH0{2iG_4Mtn3jgk8mG(w0KI$Gl zW?OnSyiso%Y45tcVyv$?hjXXtUE6(Gch|IzKd~aT`R;;0weJiaSP-o1rjOvSlJsaAyEkN>%b;%6=Y!I8V9ISzx5tIS_GoAD3nxX*)sFFm_6R+v@Gb#; z6$7`x`;)Q#kl^SKh3T<|UFMYN@UbMvR1qtlSJw%$YkbeX{fQ1l^j6;0`qBCo@5I5P z^?j!LK+$EeQ=@Egy_Dok_qRo#!=Xs`O-5*ZHOF>K=Q#X^MO5HQ^sUyr1JPba<1qvU2Z-_wcl$_yt-f?qgy)&a4#8 z3mA?&vNHD=GllD^?Y@Mzw8U>{e`U0^$f<9Cq^ba(>JO=CEVAqJAF(8xrZse*0uJC9 z_J-?Uef|NaQcppljUUO24?jRe{=ugJ{`^2DnptZn4ckJ=fM|#xVqU$}7f9!g^W@{2 z89Im9M(SsAmJEiW!SI$3;`K5BuyLnG4a3rLnJA>7=x3-k0}?mWWwTAMGhwIA7pN9R z?4Y!C#1s9fi;_2bjA5?lK;dVV` zZkM;(wwlwNVyQk_-eF}?tuAi!z*~S!R{VuO?eG1AiauS~XOqRju{bu1IXLs&{Cp}^ z>~(6i@I1Bmv1)I*-5Ph)JYl)blWWaI*7)O*inKaMVm73W)LMJ&7OrABJ*mGv^P_UK zf~cuH;v#e^LFo-mg91O+`H<0FhhgOGgremQoO6R=gY8Hr}8JHobEU3$WUl zyEEaY>pXU$5giP(O-)&kO%x~E_L-MKfO}eAsi!|C?HDZfHi9Te{N}~3ip)oQ87Gol zLRYJEUU3fDHNUSMT5dSEn&IsCGSe^N&3Ili152_Ua=T(~vq7XhU#YH6OX@xSULEcB zadA&Vis4Jme>rZ85ExVB*q2^_Pj38m$Ex1&yXscGYc&lsl?COY_8eH^u9-=43YojZ zHp|kHUz_ld8^qfcITzH-r!fn!-k*QQUZr54V|~EPN{E?dEQ)(PX>yt>FK{#gH7#Lr z@NghWNqM@pUi{TvaeN>*$2hfQqNw#V1vGe1VuQ$FrX*w{+cb#U3Dxi_u2rJZE+qr7 zV;I&jfo*F0W8F)1L|8;7^=zony*fyy-rybA_K-}@=(N*JsNjGy5J+{{`uIfw==0|FEn75RHXbM6pWyIhl2>?zvtFuuqEY zQ?3rztA$oX!3Clbkx4x7m;wORU(9XHDb@prr8nq_!V zIVdWWk&WJCx%GJG(%Qdd9mchcOsNeN*%q>pNt|>O-fisM?(wI1Wi9X!uCyDV`3tEb zfp{DH&8UyB^|f`IkZriHAIel7biL?R!aMR>xhs-@PYTILF!?z&bq~WtOrVl^jDvvq zP}X4gw==C2%~8YeAB8MF@*d;L^>XmBKJT37|G>>&Od-qHz+rLDio#b|6DxmR`ys{R zBA=o6o-!NTQ(bjl3@e;>Wx4OvSo;xejk}oA!#|uEAiD8Gb-tUhtoe#vx3;o5r*P@W z=f2_m*Lzsa1xa^vOi`22H>7{!Ya5|V)kZow3O_@}N!_?~xTGMoVMZZvquFDB?W}HC zE=9-`<&je(o_N+UYtv5EGD<%y8-fOoRlSrupj44S|6}v5^QOcAXbRt9_O<0|=kAIL zf~`4n-^l25rIRUcfmjLb4B;rSn;l=xn8YpEm9&}ye%H&d zXt88;c8=~F$s4&YiqzMW$H(zy-)HSDCt(Y#zPc$TkVwjg8=gH%uvtYLFN8=|uC<5# z%1CbDbLU<$UNBP2DK0&r_LTP#-n_A;GV>NOFeUKx3|*dMme8FhY}*LjcR`4qV|``^ z*>?teq4+)$tw$j+1zY35m@PPY3$m5xPB}P>k`t6II9Z#b7qKQYvlc|g z3j-Tv%5sfY1vO1n9X)0gJ=mNasXn;)+4v7a=K{Uv$_{Vah}x$S{(9ViSEamhx*CU7 zsO@A}+Ffz2zaiWBg0N5Z7gd8)XX5M*9ogM|=jr?|UsL{4_kra~(|vHJqt;g29<}Fa zS&F45^)*fN=fS_S;!#r+X4(E*WMk>ov)b`C#kQ^$bd3I{5xspm8{xd`y;ZutslDnh_qL7vs|vsu^$#xL@gOmn$`7dN6@i((Egkmx+~b}eDK}eiTZNG+52)M7<>bSVHQM;hwU79exTa`8pD6q z8?^`HFFk<^mkuEiULfTLswF+GGJfbmwY(`1ptr< zs39?DRB8?lU!g>cqhl_VG@fAO$9t5DlBmNMY*R_N+neM-D;{ktBiBwhA8Q*WZxq9s z!}@%CyP1ZFEiI+|Cw)?<{S4iD;71bhvDG2+`wtHRKJl0L(RAWp&-T>2l883vHvf#A zrCIOt)F0MG+Q-ZCM`b+GY*r1sn=HIk}$k{`Wdn9PfkYS$ndp!tSa)odAdk2Tb>R!FddV-jcFk;H=ZrWiLgR zu}58j_c;Xn?n~c5vl!ew-oBoyy(xuaAb6|3asXwGSakT}1se_~Sk*R=TD4;Z_93C@8ixTXstDsQ~vpP6fpy1um zY0KFjD2*y&Gc!qQ@uobBO7ZFB>+h;i1Q63gg*Q_W&O*ED(OB`y)H$&ZZ46_V&Hhd; zGc+vbLPDk?rkx6?<-qw)e69etLL8?>n4Gak#Vkt8JSb}zDPtfiQHZ06k{Om|F*>kf zG9brH&Y>DpDrpj#VG`(@%Gcco;r4Pyi13q;a2|IHSRwg6n}_Qx+*f>{Uv zs~CK?i%}S(QXSecfJmXHTxkVY=h{3pwF04qVOgm?QD?{2H#UiigMebS0cV#KZik8k zI5G(FNl)Q2=w_#@G#?-wN(s{-<oavo)qtL!h+ww=p zAUb0mF+7KekD4Sgub5I;_D1!TNYRY=ZmCbrI7qLSY79!+3xKOQslepCp)^#rIW}*d zL`&5X1N7XK=UdNMKw4zbneKepOZjTWJ3&d5w%Q>-A~@YSh#W=52%>N z7Z-*pTJ$=!5{xY-CwTX@y}Qh?-MQVAAdhA>iq3|LiQyA^yJ)dr{7a^7G$~{0X|krt zv^AARiomcabzl|u7K?!|G}?;zI9x`VgDdjVs1HLRKLR#dgj2T8rrZ2XNF@cbvewB zBLK9aKRG`y?CQz_j=kXF;YnpOhH*TcaR2!H3jcQNc?R>JwC~^K=Bi`XK0phD+s*Fm zhflX_(peY9^R4y|*Xm}6r&aSyFX#A2Wl`KJ`Gfm#oq3fi6WbXtn5QWsZeQw-yW(2U zC)E0e;ZqsqMc=G1CwjMnE#@AjV8xN5BrT%I>PG(3K#nTJSF z-oW!K|9pB@Pp;6BGo^$jxHcUNhxYk>Cm}gVqn58Dko~3S8_RE!-e`jH)1@meQj?F& z7E0WNMR+cmmw=}gQx$JMi6b?;H=O5#GotLAw_x#yEeD1#7(JWI-F2XVZ>p*Q;6hi$ z4DaZm1U@`;QNmcB+CI|7GLYy%SsBap3;*p`TO!1jfv+7OSvilx0r$#T#+1(%?cf1UERlyTThuj2zFwO&XtW<^`a(DW-338jI&9vM;#= z7T5bvZyd!v>-$K=5Wz`>Z|~jdmAk_>Iy*DhiSDoAILfe-4YvRUsoNvF#5Z{t>XYg67jlOxg|6I(~n1%{I`#hUv-x&>ke`XvN$;HWATJ zMNv!u5)zxSfwor>`2{kTsn}TiA+SMA6io9-rgg9{1?5Bolc1;u3XWCyv>qhgPq8p> z;8!h@kgf)#-DQPmS%omoe-q7x{{0Pyr>nBg9?`(s);}qbY;j6;xmCk(&n6@(gE5)j zL%rj4=hQl+qJ@*5iCNp|kV8s@LrTUzKCJfX=g`91_qrT9BouGx$arD|hhgpkNLPMN zdcN$|x3;~Vqac+NKW*a(rU_tQ9~?-Y$w<tj>N{%z?8VOnq556$H;?^!}sj-%pg4qdSRv5f6nQ+T{`V$_~ya7#OjPF&he?8Cm zp>S9u-FU5&agKAbZ}>cHyZsNK;1Y)xC+zHutGnQSTwG`z?@#cEi<>O3{OsS%q%&Ze z%`Y+Tkn*RVoWdniQ`g{4D)-bey z9Map_Jc^}o{YGbu7nbUQ$uOq{0`fzA4&C&r;~(yU2y_@azqlwXE#1D{=veRe&H#?n z`)NFuxU}>IOb4#2XuuHvTcq{h?zyViWO&{gVuyWy5A)9*BDmu>lkZ-3C?L+?{@c&=s+;7Q5dN>){f1-{5_Ib+R|%%*x*5Kg=G2$?=t_cWQfQ{pen8%P}5IM&~q9 zR$%QxRy9Y>!P=IY-1@;Xd|pIU?)N$(bXxG612c2n$C!NZ6ASgtRN=TIf|suhm3nTu zVqLP^3leMUOtM8!IL-}{RWKMgoE|tAmaN2dai(h@EQS5vj^;wTd%SBfFn{g6^$Ev^ zwtcXlm)$M)35|bW`^e{!wR^mMtZPErtK*E=RmtPU0YH-_ZDF3RB%v`P2jkTePo_H! z-$B}}K}WJ?{ezQUYt&^`s#^;i93Kl++L7{Rtf-ecLdYJz2w231L|3e)-S_h)`ZXqG z@k^8?=)8!tFsL}z5L@VRmg$6WgC=G!V^M1I(1DFXdn$7@PehCp1>am=KZxuT>Cg=_ z-0qQWK+YmEVI9Wa59JdHNI71aeA+Wh!)?ICSGNghh49V7T>XgZzmXJvinV&;?9j6H zt<1ryg@Y^U{RjZiV)4&qrk3W=24G<8TkS{GLLfOGB$r5Z8BvKY%^!5Dz_nLf z-Y&N5XCQ{^84+0b-avfo*hbk8aP_0}--!+y;3$A?`m?r$StmqLmP6D{?f6{?7b+_8 zr;Wo;#kqnT90K9vcQToc)ZxUc(6r>mp@7{C(gi*P96XG_mPDKAGFq(`jY*K z(%2#DuN7M|KAqX$UZS3RU`Tx*EqSosqx{ug^^pFz-y^|kLPBZBWSkO3RpHF4QNf$; z#SN@tVApRA#v-#TJ7meMSX;`pOJwK}%Q9Itt{B%0(p%CgiEvf^{7WtdKvli!3U}K7 zS!^C@TvQFe3&36fpBA9v-YE>96*r+}^UrY?QmX|PlDYY?lc%T23OCdEOd8c=^nivI z^JL%eD#g!zIk;jY7s@wNNM(*+qf=0NhvQbzjSKxV3ZN9$c<(G?%;O>%#)qqwOjwf^ zfe7jVp7`J299PL#XYj41ir&l~IZqUi3uVJa60no#DTc#858mkhTN6cu`fSBt_Zr#r zgFe&aw^lbLHJJ}vlB8Z}Wu&J&Yf z%L5N)q_CSHm1hMRyvYr0tx!I0%F;d|cR0ux`DI0{-0qJDFKN{zN4nt-O2&tU3%@Gu ztxh!zK$v4|3eR2{e)0OmqNlewP*UR7tF+pSKr?MiogWJ}E;*6q5Vd`moEpw4^qf&_ zM`xR>%k@WLrZ&ga6B4y!TiJ~|uhknOj~J|EeGRfsmMmPZCLcD&>A-7IIF6I6Gh%-; z;!Koipt_#O{mY#2QEyeA2#yQ%72DGjs;W9+tw?(2y{=u`)#^HudjKE^JNQ_YIV-?P1 z2zyIN_bvnn70E*OQz^)|6#7Y)H0!4`F*zC46nMK5;pUo0UE^d@oc6W7y z{nJRMZFGzH#IzeSwJGX^a85(g2SF`k_~AWh+1-m_NmHeUiC{y|M5YE253jAl+pnr@7Te><5tD|y4qo!tD^I~Ry6gLY#w0o!Vy9pW5Z{a*(bT9>QZ=cGXI&hL74@)omG^S^ zhUvqCF3*edhpsZLv6gIhEL-2v@;yoxniV51H!+TlD)K#TW?%LP3FmC6NE#-AGHB#b zw9$F(PHOiTQJse-Ez^u)a2dI!?C@>civ+w|#w_DZa`q^CBiM=JPO)%z6Pv~%_CBYX zeXn>BJFUc`Hx3JaY%_DVMXKe{<%@E^74LzwAt_-Tj-d6 zet-OCTGO4|c0@JIP*KLqKa#g8NbM1_y!F83x9=*XdsOjlwt&3lED3(ZIyAF+3xTkQ z7wlu{Tl^}_XvqR;4le1Q6F(W=2a6u&?rzHUHUz9L*6v_<&NJK7_naED{JlNusj1T4 z`F*MAXqqDOdcV_=@8u-7WiV^P#uD@gWm%>C3FaBk#i>n?LKS^_ntdQ)`sB>w|pe=m(peD$o0h)YEy(%u&QosPG60g>v)?l#P8oAyGZvIWUbZ zSw}RL*U=^maT}3A92W(W0TP72;^zhaB6;E>nW-b;d~VOndz5uUQ~lUDYBZHulXcFF z{VQ|d<4Ert~(ES!{ zAJ*$JJvl$p`JPDP8#vGbcG!=iA%5{#GGAl!e!?5LuZL%%|I*}7jKWik1OpSX-x325 z-a2epW_4>~IbNQ;Ft~6djx5BJN;xudj2%@@qsmO=$cmlti&6Pv~%->x>^xM zuYhM2tqf8)*+ol>dR6HN4FHS1#}SFx$8ZO%=Nk!ZsO4_4wV(PDYMnnPJs0_M)J&hO zR*D%UcQOREI!2M9b1A_c89i94dOo{M;L{e?P^l~5pNBw%w6c=EVNDYCa`t#@HZGOt zh*qx2G=}2TS?n^|Chb5k9BU=G;drZD(eg6375H}CYxdWatCs)hGyd5S-NW{%K72{w z!{6)~jymgV#HA_7BMKcF+Q8+{mKXl8p&oOotubRR8q^w@)D*N?bSS50Zo3!7VYkuV zeN9nob-u&t{`#c2^m-#{x#B&%MDSjB=NM3X3O(*(?JbL#HaqIRiB>I@#gMvZt6qX-B;vXVwR;gc!HIbnduQ*U|$3*2PmK^N{Ei&OM$v7@22$W zZr!WRQpR2os?{gq#>nos`VQH&z@0m&Pr95LTh(j*fp{aca?uv6Kf|ss)S^-;RK|{# z7Ixwk2O!uxc)^+OT5vLVCo9i{a^h=@mf1IDMpo>(Y14`C!O!7pi7H!>MKPkW4C5E_ zNky`wI)&$F0ZlNZAMW&isP=5 z$M93|P}@orPLrniB(Z~S)+ld)!%dQfvkVCyKHtjVDD&7_Q$uQzqeGHrG1Y~X|N5K) zq|G$dT3Q>Hhk?Mgmi2%A-h?QNe?MPEU$nh4^SiQE0`9BA= zE0}`kxZFZ}B4EQ|P`??4&@6@YE1^VNsgR41E@4o3yns=>LZqg#SH&WTWhG}9L?(!I zNZBs}7LpEB~kpH26z4j&_aRV~dc43@B4qW?UW_J5;T0G)h7A(q4Aj z#4t(a8yKkmN%3%31w=z%+d_ZC0V&Tye^pAMs+%7zgVM$!q`hF_J&d{_L;<(vqque=vp!?8ddBe#@GcCv$*{xD7?sGG35615~@*nlhkx{CNVQZA6;>g z9(UfK_lIw=Z*xCkw{W6H#aF|`u=P2#F|rVb^mzluL2w$eIW#pryQ%0c+RnMyq7 z^eD}Cui}D!bP_rT9+|KIAN}V&-#g05zT4}ETyOJCT5Pt!j@eh5ixqU9q^G73@@d{@g^tfB!p-fB^CQD9F#=bGG;T#L)WL zkBDJ|FzaLO*RV8?+r=UBfdQ)Gy(xe2LNw;FaLx@m*rnive>?S%;8>lro{h2Z(nHwN zkh305 z8p#6nOv$t*eCiLWQW*LIY9oTs0O?Z2B&8DCJ&9{U>;h@?bUmS$S(W6$C{v|ENI^jp zu+a28sGlOmEMn+JQEIU?mp+F1CNd_z9|m0A=eusUc;H|rxsBpvp{Y0sFvB}UMT21d#QI4REZ>H(of_8 zA48r_9ecF3ygXvpYvve`>Qn+#H`qcxVl> zYcR#EfayMw%X5(WE}Fjo{ML7dA~NJ)MkZh7#5^{zpcN$41DOd_+aXzHWW#Nn@CDSf{`ZCqxLXC`A18bR(B1ZGWp~6(` zhDo6aqaW7svO}?kEb%fxsVL4_y{=xyfo6dOHg_hR2Nx|qXMkuyNQ2QiCEvndqg6BO zLIR82mrJNk_cxMF_d61?&*9KWF8~K%6K}lqi3Rg!6O%>UET7$wHn|;Wr;JTFyC}BT zZ_s(yr@rZVM&h*fi8vZs5ROwYd_S`~(EUP=BTCZtbI_lFzj<%f4Q@5ixikqY*1BNa zVp5Topkh#p4lmg<+92uD%!O0qWBf_$f7%Abcl(XD54YB9qk( zp!-d{CEc#EG)oISJs_Z2pzjJE5ezNPb6IWyb9Wi$X&Ul-g@GzT2a4E1~?u_lzv$mDBdjN&4{0mXE|F^dIW^UyKzKD9eYf z*)r1?sBTyJ^9-ToxkBYC;PYS@Gnj2Lhs#RXfG0(arj*m`@98AKB$j7nW(1T)JaGn7 z@s-O<1rkjWr87ksUO08e4rPd%{j_Hm{8q)uWU_jui$l#~87fBwu0;=FRS)yxo*7b3jNEB%23I zRy@-a3oOq(y%w@CIZ|vlf(+jSq+y={IRqKf%pzqVkO`#j;+X}K_F~l#5+pJ*4%jYF z#8uNQ-O~v!cdwd34BZT`Yp3fp$%p_JkOF_8``>PO2 zFA3@QH-J$$P^a{ONOK=c35)cGxl6?^kpENY)G{a~hYC3u3%L#4&{mq%fu<0~vJ*9V z1hn#6ab>5#VTfNw>Un_ButXG@ktnj4l0Tr}LovjITCzHM)E-LpF@-`aXKAI}T886(VCE3OrhR$oN21 zN8Tr|p=*f=C%}IdQureoc7kTwD=!nlIgxS5jqV4}rJ;XOm7g@&#iT`Vb;8Lkt4|HP z^Hy@a^HyYJ*Plx8hs!dkuP+bBo3Kj9{Fx;I64gN8y=fF83uL|E*nuSoNvl&+jlEvI zftVh6!Wxp1iXIefAIId8Gs$?hn4#CRYeoKn`u3F1mMi=JNT&LFvI^@oD`#f_P2GH! zu=mUQg~M!)faVBTNp!4uVkX0mI(({TO(SkBg?+;jK6c*UIu9!rxqYUut3Z%3irSXv~;y~12f%iW3#!aj#Zd>n>HCwNdYj*LU=TS&r_m5_qo}Q>z z@8)3r{Mh|r2;%vS4lL;f!#@p|B|h(`AUp3qAAex{!akzzfHis zwbuW#iBGS6e7HMEPoK#zy|zNqh+DIBJkvkFq^9Iv8ktZM<9M+8tGo4)tSg1yac4}n zo$o7Inmyb8V~Q}v=5fyPf@)*w?YN6mWO|aQ-3ETv9uWJ86WHj>D)OdgvD%~R`1*=y z+6_D$%|yXcW}UNY^oaU7maWA$z22cTt|MM_=K-e(PuJKyT;c{KJ&5?C5v` z+k!&Hj-xn87|A^m@}f|sEkU@P2cFWAGO;NBvf1CLB|b3AmBD$iBn1=|A)OJQQ(@^cgf;mhUp_RT=IQxJnRq;3pfkeD9$SNcZP~CX{sH~Q zs!p%ZrDVa%QM(`g?U$9Sx^VfPhZ5dm!cKb{Z@h}bMhg%y;+)o;QKe@`TqTK?j3HO5 zwMNlwO>4X`Ad@^x5mv<;$^$%lK3GDMl-cW2S4D#p$uEr-8c$?$2+2$`@n-6xgT%QI zac$%k3Yj;l#RonwIXonxGMG|iJDwUiYXZt7&u*~z@vju9%AwQ@DMrJy3B|E?19<+z zr_I8I=Zuc`?o^vGDpnx}|ULScj_{1gjJM*%(H2CGh6)mW`vjPz;euV`GmV96w?{OOT}OFZxGu&dnP3 z7t?pWOB*^mQXkl}MVQ<{qS}hg&KupDmVij(ZI>8cm*j@bX3nLk%s(_ofvi>rqgIEi zR!4WKORQaZ$nkp;xLdJ9%`CQS3d9co`Qh&f3_rAatL$!Shc?FXZHsVz>$`ddXkY(u zAtBWMZCgkHG%x#uUSq5)M%Pfk`qH}11)aoS-}wnm6U_%$sXH2IxkvH+jw~-A)R10y zNTkYw&^`M#_CpmP%gFc+ktSoI(n__V6HAq)|JFo(5e$ei(@2t5stL;zme4(NF`dX? zQiciXXtK5C(5h^Gx8$tjx>?-FTPy-XcZlQBr5cNsjXL z6Uum57D=`llY%~V^q9|B(E{+Z1uKQ}mD6nb(WvVw zc$V_f=)>8Y#sJCjC`usC@G$3O?AJ~stfGURe|`t@`1q*2%q<~!h4^wbe|~~R+@mGy zbA;&01vz@+g~eabwP54|8#luzA@)X?W*unM2~Q{t99i&jXs-_JpMap`W$!H;x3JL- z9L9JB3KHPdlr>LeO84g1`&r~UMJ8Jv%JX$0VnO@N6Cp46{T$c_H_i9MTjJ<8MT(6; zPvRd6-KtFz9C^;p(d)-d_-Ly5$w$55B@Z1n09|1$OK?V>m$~Y3qaX|T@WH4`Xi5Wl z+d}Y=X!abX#|I+f3P?@m{1x!)<2$`wDiy!We9(j}0-qFdI%8mZyvDrmD4!-hu>^SL zMxK^OZH}z18Z-wX8r;}47yt>*$X_vCZ@T(s0$L+~bf? zn`o8ED&}EA>R~ZQp}yxEA@YO)r!=4jsGS z;8<319xb$|vQN8x*~V`nBYR^coD#?v8=;-;OIE5CDin_9swYTx(!SYSc~)0Yb{`);=*sBpIm?R|Km&<02ZdjIV7(Ad=8XsBZolPkh$U1++|46oTqnOL zPaR5Bs_^%jw64GD;(3e+!lvG!!Xr4C!s5v2XYvw_1QvHc6Ni=*vBdM5+zQw{NERXm zjB)+7pSYwxpynauS;Y7o$$jU^ZBf86!^lMgxYd37?E0|KgSglstbYPHCwd#7wsx{O9e;|7Y?s9E)FcznSSqGhsS^(s zw1^QZQbVgg6Dr3LsqabFPGN*^qNLfgXl7sxDd;tlGoWfR7*X4j!r1Op^Q#PfV^QUw zM`ws6(pB&Gt{bv|PUDM91s_jMRG3Pfphj0|M((*nqUk;Z9Q1+gB5jk}z<`@Wnsxo6^JdM-7P4jDMbhgC7BS ztT80mZfNv|rdRJ^JT=D6FPr3FZ5r+h`VS!f1E8^90n*7p=xPgW0tfyZ1HIQdKBjOTO*I|NlY&|Ud9Adadmu|m>2@ig%}z4z6J${(^iS^ zNkTb2acu7l6TS!hsc*w-&(BHxcRK{16OCJ+;m3Mi0k+fg}RAzSa~OYiTdJv&>z zH{72eM?HHfJ=L-2YPTO>@4g>j=;0#&K6kjt*H!yd>s3*8=(JhKQ*4H{j&`Se=-rZy z{pTtkcJ=xpu;+h1yKSg%r~PA5M2jBnkuxnmZB%w-g&fF7BHoa$1VBeSd{7BNuj8(d>{2{9kD@k} z-xqrfN~)u%jO;Qn_Cit}>i$arRim%>T>P~^9yWR2n51A%l|QRAfDYh0Sk)ez=R_S@ ziaqIxC#@MI^Vjg#@G&Vrjoy)`bgf|4m# z$(Bu{4vl)n9g|&ANp)DRoGwyQ6L8+gFE4ns(|@<=_V(lsRr3Txn)0=uzmX*mS zCL>>riOn-Uh}#4GDgK&U4^GH9rWh=uAD;22HO(i_|2SPgnujSHNd53UnDL~J0vs!E%NB3W%djH*iCEw#EPxHSByBmZxF{@VTC?fa42 zE4-is$lyMzgg_fr6;2K3UP+;(i2XqN*>Z3u3w`SXqMSF^4DZAyjeVebUnF zx}xWLMNh1LKPrxv;D$>Q@F`@|tG5Ec5$-o)NGEr9WEu<7aw`@!i|w?;7In`NEm$@d7{S`N)p@dL(%N#OT?<;QxXH!iVki z%GWz<&-38b^B{xIG=tCQzvyzn@AHV`^TzKpc=dJUdp*YRHId`{00Hn}4N&uWf$)88 zQLF8Fh3w8a?!R;Aa63N2P^zXmHdf_@8v^HAUO5~qV#clMZMIO%+9>`yAaD@~dNQy)^*(gi z*XAkT?T^mh|##gbCF-nf`BTL#?ON;Sj2 zzyQ64VfVJcI{sr%S3*Jsyd77|?+eK@bq-6OIn&Z`{Ie)tFEAoSl5or`$@#)>w17Yb zb<$&!^PnEi@M|g*Xm=Xqeh$_l315{VgVLyix*&*rMh}u-Q6kk?;bT8xf_*r!@1S5^ z5S-8vWFEiK<|)Av37XMRjTSyUo%P2?#hddTmm&zMDlU`{YOc|cP)F;GWQ zSY%;X6!3GMZNnpKC4vcuA-p0ISk3gAS@B`^7aa>5NwD~gJTNt)<1N~8+fIAL{7uCy z#3uP)&D(f7_Le* z=ZTn$8KT09-L{HTw1^QkgOD|d5V(N=NM#_}E9!hP08>8f5Kk?`0{my>X(YAT9YtfQ0t^>;AeDBx|@N>+P!(PS9v~qOF z?;i}8W2ac%$h5F`e2q@HtD?8rKsojRd&2MU(sjGX#pet4l+P`Kq<3xQ^sb0`rI{|Z z@R(}BczbR)_w(M8_hV^W@etI%1NZ;^BM_~Zf|p}6?J7= zqB_&EzJzfWxxdT-Ond;pY51_!Vb=}(53%m)cciPjc>w&VV8n=0RsP@3kSZj1D>$r3 zf}}iAD+D?dakGB{r53HOUv*%LVA+_?u%#(%<59_FZG7390gzIah?i{GoDuQ==z7bb zIKya3IJk!ZgS!QHcXt>xB)Gc-cN-)GcX#*T?(XjH?(SqKclX}!?zg*DPZjkJQ~aXe zKBv3Sd6sM$4Z}#Y5Z66M>YJ@O_muyP7f5Hybg*ZfWsA>1CC2R#PtsNf(c^uv-0G$E z`!AZ^K3_#?98~+wZ)C+C5KpFdVU}O(4Xk7*7{h&yrWz(uOclvALBLqb-SCmYNT2CvfxRD*CSO$Z`o^f9e|D@q}^U0~nv9p&d}XA}4c!HmI&-@kwRc zEgb&sGwNqj4jLMc3C}>2I5H;u^+RvWNMKqsIEN!j{O7%BArVN812SS7BcmT9!GJ>Z z);!!r4_uwk!4f+i=+`aivvcBlw8FOQ1he!B8*5Wi%Im|Sl`2FME<}?2IctE}_=S}b zv0_~|S~Iv)EkrLGu$leI-xy-(n+m%JCTjt5vpQ&^RMIFRw^}YbEuPv2>u#GPk@4GDwR|R5a3dDgP4@~R{ff)4 zzIVd%QjejTpIOMi!cV$~!zkhOuSMYGthDSk-} zPV&vy;CQN9bMtk&J-~LS3?^~Ds}xVV95kmXT^UptU^`QqUe0qwQajMS!b`Orti3lE zCO0MVU$g@*-@!PVR@}4X((Z)gy6D~qg2K)j|2QFOAER?`UgYPP_zisKiqL_i;)6L^ zg)aTcQ__6AHDrTbl)A2c1~7Mrf6VIXExNjj36qM_xf8@Zaz`X=w`*VRU*>x!XnzP_ z8J#R?UQxW~z<#Ynczdr&(>ctr7C6;kg#lG4R2@UAr3c?QD*0e>X5y+Xa2MAZF#7{g zf}-DM|I+)w1JWH-H?|Bf-La)A;n!MVAAzV-HMdwOWu-iK-9XDi+r!oCv}dxKaKfA* z>-vhKo_LuMng}v2SbTXJ<5Tro$@=iVtswgQkKaLgrs$XVXrpaHq&#kDr|dESoCPJz zaYHRPh=iOVwO@d0f&AZuIRO|Xt-W%~_{tB8P(#4e?8_oimzB^Z1DgDq_(@J9A}wV6 zrTobP`3#8^-mvjs_wiQ$G{ZP11@iByW12FMDY4KhZ%G(Jrh-}REWyu}mpn4#(55S466^~6i?SmuM#vJ@)7=_$Na1yq_kJvsBrTUu~@f?R@ zWSW}Y=Lfm7ycbvG_3X~??`e%NX4H zCuq5=I}{4$ACaOZ!WA(&3&Ze<&!mg8)2nws$ZZ1qBy($4rliF4P*J7u4JC<7#R?zA z{yd8QA&k&wLyQ;(!yZ4QA1YuS$|{if;Rlbw&z0Y4_l#`c3u^QC@OK(Bck*sj$5!nF z`t^kLmq9-23-I)1zn(0yM=f79?1zSLG=J#!ZXHI!(^ulw)vSz{k|MyZm-A9r<$6#j zzhPX@+wKI54nB5d(T7yJpy{0(OGKmvYD$*`-SG~U2ZZB+IN)Fw2%M@52P8Zq!tOMw zESw{=-Uz8+zx?Zg{~H+{>CI&jHMtZ2aqg~X1eIk#D%dcluIOkV**Uf>i-?t_sh->A zOJpA;2CSHZ$Zc#(EAQ>!BID$AAS>GK{vz;uogEnbByLC5yLzgQ+b9Y!$iL6&N&s@1 zX~A;4mu0ECYNuPGac>~jH$rzbpBYXz`?zE}R_*$yjojKcWH{E|m!~n9ty}Z#8an2s zDMZ-P;u#nPT;;*5*m*GfzaIOA?NC4yPhGo|KWr3S9ev8YuZ7zy^hMC{IP9UIC*1uHaFcj z9?jxX6aG5{6rQmoH^#1LSP0geZP|0Gi2|c;Dd`8Ye%p61<-LI+p4}KRfU^_AGl!bu zK>-oF4NcbuAHl)qxZx?EB@j?TEPt4xahY9P!t!efmv1^yKpvz{{9FDYKz=7cfd~Ia!i?-u*KWWL_|Yg1FZp>=Yxr z_Z2hG+xr?xMZZB(pL2EU_#3oLJA8DcNDk7#7efk)udr55^o75F3;?~8s+vNiBQ({p z=BMstzwm~k@`h0zDCx=PY#iAbF)s;J2fkvU)AbUSky%=@?+U*8rG)U%GrmSXI&|*m zDIET|GvT^^%|aov_;zk85fKKyM4Ms`sk}TWp}uM-_&V z1SHPG_kC~G1IE4uq?yb^(N|s=nSgV;n%EZ3(eCgIME>>8(aKO(me49z(6N?l6mv~K zbjbe?5J}%*Sh#;0N8Ot6Zt_;#GHvXN0D`PCZ2vg5G%sBoSce77G5~>%Na+_}xL0WH zo+8tX#%(8Dy6)koK5#As(cPxlx&mGm-CxZ8HZ}w=1l&Yk*L_kid7GW}whp|TX7&$c z8@u{HgJxaR=k&aR_x*=zIv0m&g@PTHCuVx8LVDUqyJ5H9X9AD@0%osE%TtObyPvf1 z39Na~v(MrKc2t3gz-DT01|>H<#9xIXH~7#uimk&!`?*iXLaUS9B^?xY2V`}+e!+t} z>_4q?NVl2m9UrdG?_?jsnT({=NYi?`s-`m~LKxx{Sn!wFD$*6~-Hp>QWEL5zbTAcj zjY*eV=J)VosoBkxOviJ25=Tu>VL8*dlq{I?XLN@ia%iH@8z5blkd|>(`X-{g2}wMA zxoXDKCta*a!Dv&{L@Z`MRJE8W5>2~h^^3QvfrI*OyFQ8#?O^j+;)Vl2$4aek8cQeh z^?RcHAO0W?kuqr%@cllO67-L6;cijSUUx~4$@e43f^WO*g7|`Id)Wo~a12HXgQBr* zNihs^l;2Z;i4-AYe)Hu>vN_VJ-9S|YyNfcJ$N?&S9K;Ch25N)> zJ4Gkb-svFZLBK_jwoocb0k%p#AV@iA4L!V%KsuTer?N}} z!bY(IdOj}=ZCD66>+m~`C2p8_g4An=0)Qp(q6C#_E-=81U^$C($BD{*5Q8Je&l2>S z+u)I1>uylxt{-(r>Jah*(~X@xvWneWANl6Ex3Ziw;JSdaF#aOKpp~{(N)- z$Hm`;(xk~2jc3`#(nCmU=-9dNy z|54aK^j)~1qM2W~*cXisp9A32>pk%d)*PTVpCwxYXinIiD;{9Q17b0ZrnP8A)B8pDYW=r zEs|-c3$C>|wLMs1c7!H!#4v*+#k$v$m3?%$HebbfJe%K`P^lx)1)m(m~ zDg1WiUVfu3FR28%TmxVYKp(o&lL6|J!OS={;M_cswfVnexH#C2=vr<($L2Y9>@Mxl zrrzM0Qwz$^x16g{l#_WrJE=2p)?7L2seh$&_k3VB-1Nw3vdHXHxHf$=M*Z4(KHAhM zi9y7L{JLbYlq-eCx)3)7o^ly{K|?=};Fy6j8ls*nG@!mGS2~f(V|mVNfF|XF$!REI zkw~6e<)DrLnbQm6hNup=$#6V z?EZ2P#@I(JCjDgqd_|8@zPQ2+8Vg6@@U5V+`U|h%*h(+l^I-Bfp9Bd#A!FzEfItuI z5-FJ2Q)qQ!fb<{xIJMoc)dLEm6={LIpn2!2QX+LC|8LHaWv9^SmO(k6cF1xDBt$c= z0;;ZiyRO^+digqMq~)(bs93&Amz)zLlW;JqSdutP%Q8^Ri;6N(5cmi7R<-EAaOUl+imUAqE0=snZd=*4gA#*cAihWKwIc_IiqZakAl0E3ta;n) zWItn*53we3cYD#)Ei#cH){*yK?qN>A>*MQj%d3CGAHmdCg0<$;!skrkRc}xv5om!3 zq@@G=Q+H>73=~RAC0uKwv)d)oZbkauy6w=|RlvxF-3mR?&|9L;?S=H9hq>h0-M=6S zXF>%>&9k3dERvmVK<&>CFNW6F|7(|tn)f4p1eR)(6Oo-AVXc{d%44Sco~f1RyI06; z3RQ{D4WVyVeE`$u`pCy}D^JZ9-vlGySj_Y0&An%W8jwDhoh%Jfi}!g!O;&7C1ue6; zVaUrx61$eKC0-!L~zUF^tGAn0UJf5^xR^V9JQ8C?%4 zK3gwY3%-o-n^m-p%N17E0RqjPk9_m4>M1mh1v_ImNmwZi)}x@|Se^X3pUD zZG0YPd#Z17F4yOMglY=wV(Y=ahkcyErgq{?hX0v9k4V^)YrBzF$euq)QG=Y!rd_9t_SNlf^rQ?bxGQ(!N7d1 z7hG*kX|+!!dnu>9$DF(|2NomXT1i;MlW;xda(WtkejFr13zR*Sh&E>T@#&p5hje?* zupe{dLi7xTE||b*UV&@o{Z!I}8Z>|!F%1`T@y(yzmrVNI%=iT@S#yz!oho_a2I%$70*o9JFmPE%YGF`i4-Z2fQ^b*A(wKoV<4EgFcAbvnW6?gwl zAfz?zN8Rq%EbE_U+gwpUl!dxN#k}*g?Bc-5F4_9Hx&WyBMdWDRLyGrkVas-5m3Cp# z_pQ7B6EVm#R0N8-W|?xw7`0QfY8Pg|w@UTJ77YP_@<&Ran61hQLH@#hoFu|u4T_|x#Fz2PUc{|2*vJ=lkYv*20L>Gr4fcBnP)y{!); zD%7kN_ouP(yhF&SS6Ek1r+dV@$0iH+tpn4dIJ)!Ce>Q`(9&;+NTZmBwAGcWe-N4<@ zrp)0w#7fJH#qn8D^QeeiW7$iLT2*a_UyE0je#9_>~> zTMnqZ0BKEBofr!YG_1pi3i!dH zIb$bnk5vOqpgqM0*| z%$>J?1X(s77eKe5M4~{>#T>G>Wn2TMs6>ibw6;*_tp4&l&7m0<$CSS>aQ}h1r+2Nf z=UJzN_6I>Q?s{jG9cAt`L{tB=s(2^X4E)4xj-}u{sd*x^B>(pF!uW6Cxfh2Eo8F+h z%KZY-iK*{sbKkD^2+weHPr%va1eNcyygE}|jlS*|HnS+hox1P1eB0j)cO<{ybA?vh z=Y^#0D2^HX_859sNw^zCTy>*gM6ehm4@6HV_YUY+fmK8N5QZMqymjn^Zls`YxR3$3 z2o1>}<%D9tQ$O{aQ=FjvAcsuho)=XsCraS_B-E))od6*&j`y3WXwdjk%;rkG@sjeRm--k{kVv>;CP%{0?Qc1&j2-(NnrXz3w7K4K(Ik|-O zYeyNmQ*QVpw*0~F(=xq`#zYa_cUFrB?TrsF+$^*GT8f`^R*xLf?VTCnCxiLKE-_w1 zGBeu{Gf@vQ-fdCo~5+5apcHt9JY%4GT2_0fRh7?9fL3fCkM-4;)d=lO6czQSapc7;J4 zIf`~7Wj=^pvbjAuF*`Utz_V{U+tO+#g%!d*7Hw3;6~ITRWBtrEVk z9TQ|1STXz6tvgOl@8;GHD!d9{Gh{&3Iq{fx(oL;Ht)u3YNoChcW#59*9$tYf7ktNV z)KfE1is=5N&2@MT$Cubp?ENec(|d&0XO*TfJ`)M8^F@smf@rZ=;SMC z_HbRB_cXgXC#!WZ>-y+QHFJUgU^~gxf}wMwzT7cgS8WvJ>RM~2!m~Pvt%}y18L_== z9Xev7D*joEe6g0CHfw!a;w+Nh(A5pCRTOF2mJVm-QMvE4=l1BQ8n*l+lTRg66-Hq+ zQ4V5^1uNDg_h7?o$Rvz3iS^r8E#zkFnSG_wv21NH>KM~l$2CXTt!NfaRP&{ael(jh z`wh*~Bo@XHr;BD%BxuW^H`f@~n8*YS8ay)?But7XMn1>8SGEt93jw$DgcQv-PA}Om z?^C=ut+D9Zv7)iQD5hSju)ZZ#>t;$fvxI?#9WRW=gi0gMTZtvf4#dr|k0ru6`Q_0N z#WL>B7jCXFJPZ1l)Cz<$X)W#;iCd?!45sb(=s%IVeXHOj@CUcI>%S7Do`5B5xh>*wzkgP&C7ya;|)HxuH5G5 z4$~fs{pS;cnist0t(Up`e**Xj-|L)s%{xyIHpD=lsN1$tUF$^H>!|5Y0!Kx=A6@$N z$5>4Z7YAd6*ujymtY`aA!+%AfhkpX7xuJq0APZ1zIk}paJO^a%HQ39-mLZ=06xf57qJ#bE1;dypiY`P?(sHA z9;o2fgLI~0&YlJR0x_%T^8GRzL|v8;muwku)}9TRyl_STHECn+)~vSKJx!U2yB;Gb z|9r0+jn0dIs5Jdc?q~it?Gu?oo_NbILkr%Z8TK3FlD!d?A5?N*Ra1p){;HtAVO6hO zIwrbLn0)*LSN-FY^;7Ve_q)JB$AjRgz+ntgT{s8CbvcT*WF~7!#DF}l7*`clP4aq9 z|5*)I?WAru7n)XaMpIbJv8RRhkI8~N)%1yy9Xn-8EwJEYAcK5+Q2K1#5u4&j(bvwC zO2hW%_Oszv@wLxU1z72j1ZTsT! zNCo@1Jm&9#Y!dbvQS*2r&p-k>^DiD@LWmKlf*(d#*S7;)UDyFK!5b9hw2}do6kjri zvEvwUDrn$KX5b1qztl70#3_K6m_Y<6gp7O=ZVb+*eCf&EA96B+SBVfex#`Ej3KZ-^HEKdFlty(j z_?eAF{EJ}%TPr<28F!mr`o~D2x9?#q#$gGMW86EHtL(TaT(n%#!x(z6794fu#-1w3QI}O-M%{?Qfe(tycUTAtA9WY038yf{5@EH~O z6B%gNB=g5L<_6rgwO@)!-xz@6$=|3-q(~}=W`YX^bT{}A!A&4*B=>NsFK|1??9BY= zFf2~->A;wYs`BCQ-X%AS-|zoScl~F`EBD0@TR00}w`nU#b?ezL%l| zGI{<0p~*{Fx9)7;eoxcLn>D+}(RDuIV_W}d-M0je-tkLN_bfS}=L!x6s05031y1pL_i zgb!?`v9_zN?v~j<7VHqX^;cDZs?)|kY9_nNug=O0cxWh)G1K*L`GbVQDCH>*h=)>>IZcp8Q-^ECttDEFU*P#e3NlO`Or`Bv?r5P9FX z=M)^SiiMUi|1pcRfYPFWR>N^vHvTbKnDYsYvPeW5PRdXYYqiP(?X-J6*l1B1+JYKn zPFhx)*aB5*IjZlm;C`5O_FZ4+?R21z}Q| z%a4~s-vm*i6zk;-8OUN4(rnR@5%Wu$a_F-vs^(g+5MyMyUS((FN`;88N?TBPs+ zY&Hj|9D+FL;jMmvF~oEbtsk%XGoMz`m{!k!-{)u?Pn4`&TwE(8lmi2|jM6e4Hjm>= z&;W4=y&s7MGhRUE)sY?9z)H%CE%E|953DB%TD6C~fh?p+rZfPAL+>HaNlqH$f~<}r z>-|L~0vkPn3K48i2cR1TqRClP4}dp+9nf#xjxo?rto4?g6v+Q&2ccpylG=I@Oxt6X z=cvd(2=95IvSaDdqoL1Xp#lmGj>M#LQSl=M4Ji(Ai0OBY#eogC6Gg1m^xQ1j^> zP67Bf?Q52vl8!}j_%=XB4ph79afSDwA}{Brv{H;HZqMeZ1{ZAC)hzqgagldtkT>?4 z8o?=5c_v#$jkGP3P)b2)A?{1o?9X?MNAg*nt{dpEyu za-d2S>(NqlUbKtxQE?f$SZ9>ziZX~pO2?SUN5s~fX%#=y?x-aW&SyEA8MNyeJiunHat~$(25hhar?Z}&K%4Kpq z;xl&A#hv5zf#aVw+%1}WpPIR*c)bhriMYds0NfeXP} zkV?sAK*2sQEfrhNa?ly!_W|r`lQaCr81G%$ zCkHPWy@;}{vL!@tgt7|km7On$HsCCxGIDbrR*$C-f>nOZ7H4ZhL{hDA{3UA~uR_tr zNOY60_#Dger3)(MLnL~!qF`+!BGpU-vr>st(o>qg>r9)6^?5aj^s7YK#i>XgDhV>l8bB> z7QHwTtynqlGs@xmWMVZ5PgZl8>@#=AZ%UdVdZ4_S#S9`AeTtl09cDc#d_gyM&<1u; zH-5o1RJ{o@?<-FDwr(<68v-E{r9*Bc!ffxeb$`*>y9*cG=Woj1O^Nufsm-gmfr$^g zsanL-?yi0d6A*tkyyRySh!}Oww;#@RTUv=`XWyeACd}B^aIy<6{Fs0OX16g#fcZ|6 zOR&dH1Y$jQMw z#LF1%1VE1xIYE#Xf*6+4$tQ4(b{`X&V8L!4gkB(YuDv+=^emNCb8L(X$N1<_{SMQ( zqGxwMVf3f5?f<2$wA*pJ3vO+>X9XNG5%7BocEuIF^SiH1?hbnMpLkE?Z3q$xIb7|< z#8E}1^Ly_cOk*^?!lzz#*K=}xw?(z9SnfUta#cJ++t#Dll~rV|+IX*7ToyIw`PwZ? z9eyHwgmv`=cX{ASb3DVAi;Hhv`!sMg!>$1nxaOejIp6J?1o!lk8&JvEyyU5@zbLWf zjNqb6P`68F-3hP71aB>PXu7MxRS*FT#n+B!M~vqbJ;tTB0D#ra{2gPVR^X%R?A}ff zhj}Z4;!i)YSKiS=wYKgNS9UDLQ~SgR^m?O&D^$A~&$l_l|K5FZq~anDXs_ckCHEXi zY_H>Mxho*dp|ozq`k=P+5_$$hP!WtSg%|DrDOE~=9}w4hIgcH|I4b}{k<}RsYy}{i z9IG8Iv?G%QpcylJ#h29T3VzQWdz-%O$&rcXm!VyTKrn`*h{i}BYRT@FIJSCMk2xWn z3}r#mV0mFv5B~`NMwAtI)E?;6xo-^n#}I6bd+pq7k>z@DrOrGrJt)Ajr6!rSblg&fRsT$ zY%bRe$#)M73c?6A9#cCq@l%dX8MK81|4nJW+^WraDaMx6)M`|J;rkHi3R{&%pu;!ld>$QUPG3boN|ki+)1AR zGpb%wUE{wOZd`7l4rtK_c=+z|67P8^0$>%@OquF9nb_4)&x|PL({TIuTzhaI6Eid% zi)wen5I+;WM850>H@V#M+GMy|STxINX)&$qOdgy2O5SGZ+HQIX-)6izIjt47oH@UdVKccAXJ9mZ8E| z1jlG0Cc=_;mMfnDKi(`DbPx-re0z&(2Qv27mVO%(#1KIXZW~-ePeQ0v*8FRrHSU zo5Cff!8L7c@2EF+jXyxxIwRW^Ir<$i!d1BH)NMM>`siifldgF%H;ui?7X35Bk{L9*$3I3HJ6etmFJY)!8Jm{vAsV<3MnJed0?JfEBUV-x z6MvyrIqsd+!|QMBj~J0^vR$E|e?B<)S734k3@^5M6@otp(Pyk}?Im54D<(>I@MolV ziO+Z?R(p&cmJ`%QCm3PHZe8;X>jpqjkn8V9K}ugM=`S0ubuoIfcvkd#;ddmIF0HF| zK2rt@74N8d2^1~P)d<<}t;*eCEP7{L!Tl)3&$2zh<_gdZR*4UayzP zyLqB#(Wi>7Y3)uOVN%zL3_1G@)#*yt8%3WAD5dgG|7d6a^=t%x--|^_?vV>xzBRpC zp5fU`I=H$ARr1U_g`767HchV$kFP#9*_Q>Ma(Oh_*CydN5;@*J7-?!|&CI{2UtAQ` zH3)1iRJ>}pe*7*hQ#5Z|8N9{^=c2kNYL&ctBtB$7_eIb(itxtZ3w^*frt@G1fU{}Y zZcgMv`G+So>*+dx5P$0w2`b&f-mzL|Yls1xkFjZ3==|$pe%jy8c0S+Gn+ zj0;^smfYWAFz3}TI8#e5Q*+A9AS*0!yeFw!GKV+c@%}Hdv8=hJCxFqeYIvjq3+qdI z&bACJ92HB-R~8f?3paa!g*n!4H12M65QvlxN=*Gu3^JAU2=7zDgk;)4xQbQbD#?@) zfH~aH2O62_zB8W~^ckb>vv3|TyKqsmU}PlD7D>oitGTkuPRd}vuxFsr#;yR9u|Y&) zRr`&5(=e~xozVl(2oGq02h_puajg#htcl&!FRa>-mk9{EF$Kw0aCTUw?Hjxzm3q)q zqd=~RFsJCReVWB%Zbahuy-EKV)r=o@RwMKnLcP>G{D_p(*3#=sID%x9IACZ(*QsKD zx2Iu^3cVtj2nNqf#{;W<5hZT+f-1R5SW(1M3dv57!Nk3TE6=Tlr zQwgGG_dGLm=9nVnM4Gjc=(p6}cpevY_Ads0x?e3QWP08CwO~Y*$hM5G@7<=qzkSK_ zzT)I_{dGIBLG5yhx__@T5%|;1#1>on%E2pN&i>X1hH04&TD+Wu+JW*W8uJO3eo(6c zlIfVW&Dc>D0E{)^ex~p3H$%7(9KE{J0Yy2X2>MuEUFik|KhmzXo!MV&g0Hy>>5`^F z)5=}`*beS1JVZ}Z7k*k0;C_+Z-D`}@j^MjO(TfV`!``eS>EV(>!=a&K7X8)Q7n4w? zCqlF*Dcpojdiu8X@B!O!xjL3cY`e2Q*>JlY0(HiB2Z7%pfd-(FBD?LI9mI9b;%Jgl z-=Wp`6*g(O=9RSd9QLW^0|i%W<1?vO0C5)4iky6pLFgz_)9n?hGsAjaS$Lf@%GAn+ zqPG?C{5_s!8Zvu*iuoyyNP$n}A788rgI|9#l~-1R&A&w|t@4k}CL;KpR9$6@W#`I} z9HykyQL*LobHwRdP?oL8+SaG6jo>dYW%gfxbHImdN^F#G+4t+FDr zTF104+2g+3e61Z3Ro_Q)$OJ~~S>zPUX1C!n&UfwWiAT$Qv+G1ViRT1_+P7#a9PvsW zo#MT(SN`8jLYasNAPetJdQ41bA8Ot;5A3evivkl4PI^DHxulSJ&ZN17SzRt+RW9es z5v!=D5cNIeIV{MQyf`@LC-MtbH#5YG@)Qb!xjg3_l)4%eCmsjqNgX7ICCH4HPRM!U zCg27Jb)~Rrm3O?NLBp1&!m9|-ROmNaVORYvyKR2pS)Hz+f>T!02GD>As6*Uq6!oF| zhdQoR?nUcu!?J`^SrA_a;2q0Df%7F8S`yYK{C?H#PXo)ULGKLrXkV|voe6Ec z*-0_aT{5vyTW^5Q;*+f^?&cq+gOe4}KYtkZR$9pZ{G{G)jVM4G)YSVN(ofYglZlj&(y z>F~3+ac$ipL+Wy^@L-DEa<}tP=0xF7`UI5_X$-lZ?-;g};9gwb<;}w@D;XyvC5bgc z#|@>MEY|kHJ5}4>UrD<=hn@xSnz8oKuHWB=deq5LbVAsjcw)CO-Cmdm=Uowix?y(L z+JUW;tZfC3g9gnW41?>Ql(xEb_V*2gd|fHg^{kw2^)c;msP<%(Nlb<_(UNC<-DViE zQ|ICx)!3U?DBRC7_K%PKOlpy7a~O&x;06`?dlZM;EAJMatMU56C&3R7RK0%RvF@gK zucvunWX8LHc`SuWt>W!RhwF8m=kD%lXyY6j>apzFd*Y;muXNJ(c_+He7VVzF1i_O7 z)n@uz{Gw~Q$!3x7!PGR8%(;gv)r8QZdc0D+m*Srs zIcJ&T1sMfeY;tmgI2_}>{5AyJBKIU*Wxtwrg*X~J^EO0X_K~0OIcrKyhbuD+ay7P0 z`PM8knl$;uEcO9G^QJYl75N|R3L9}Uww#KpmDMWi0;BH>G!u*Rakpcl>ID&Nv~(~D zrihs<)E=~U9eA{s*|}IFR$JN}+Qt59&R6-vvNpXq3@DOnh#098IsZ?BJ3^9_D#XD} zF*G+voZUi#m7m24pFL8jJyO7OlBC1SOW1&*6L@EObiP|PC;nveH~j(Ph*e|~-drlj z72X3D1`Ib|6s-6bT)+v9<~&pJX-bZ+O^yuJRDP{;QT0{1RVr~p9KQt*40>Zc9{8Rs~0o8vXd=)+)4^fPi`DL%Kh$8Yt8$0q!M!I z?N8M67gixO2NrPP?22GStd<&ee8)@rE4J7zH*s=*v!A@Iu>}*A$PD%EWcCnKP-wKa zLpwS)q;%#ZZs?l|bxff$g-ni8tbCyrKa8Lm&4WS#_#yJuqGla^$VHB1(3?>j45_b+ z`{kiE2f0`P>81XLkNhi*Ene>;!#OV-O?VnO~&F5t+uenxeHY zde14HqG*?bFNqL(3){t>!n9b@QTKEIDEA+(Et5oX_>p(%M)8N0dl z1Fw-wdwU~o@yY#?u(Z=%+Ga+~mQp+W%!yIzGto{!)aGH_F7fqtlGakqdd61qH|f36 zs|T&nC~LHvss6w}TEL?g%)oLT1*JMDka8rnc*TH_C1uT3g0%nlElRy#X_toD-dNig zt$?4$vTX%)_KzB&X^$$}ZHYT)^#n{M?u8r{}$y~YY|J8QTw(e*jrJE9j}%$>|se>i|$~R zoh?annIh~{AS@FhtdSvXArL<&qRbHAo(|vq{pbGRufsV`lw2h|<+A?&5?Eg{mR46W z(9o`feLw%N#OE}znU_;y^|Xehlqn8gW;Z)~ub%~0`*8S#v4mMo4kuzUEOg5Y4DTJ} zh#;sz5PzJPPJtIGLX!=A6nNPfys=j9umB$THXd{~ylfRKxSH%t=EvS5j+X!hfmv!N zQ?;*3QGO#7Q-y4^*&aaeNu-nc+BvK8xl$Xo2YCLAIy*g{Ue{3EKeS`o){S-|7J1q< zcDe|M0Hr^Ea)?jr2D=S2BT+h>rJgw&aD=c(r61VluSGb_@@yMiqjdwJ6|2AMEfNn= zf8n%cOJ*#Ho>rUjzaJ5~ZnpH*qflyVak)Y-yk$l`6Owe^X+4g^MYH}zmfb%FJQvV= zWgU9|Lh9x*ZqCXDBN9w|H3I0=(dh+KTtQx0wR`SVF(*#3{FfAn-l{{lK(g8MxwY$W zOeUV`nQ3EJ@)Y2iTc0r|$;k)qcINk(9h}~jZ&Jf{VN|o^;Qc{3=x3eVW2r{@P3aW( zNf3S8IA(-VaXSQJrK2+7sx)>Ruk(t{5xgA)31V6MYBIM+DEM^SWKGvICT$vXP16?? zyjrR9e5^wYhS|flT>JpQ?(Wv;?Db5wKY1`xRVB77m*-$R0!6oj$s?*DXJ*4r0NF1vjd_C`% zNOaskD!4OMc3uHu_SZLEv!e(ho3!~54{g-~@lW|bhZtpdd+u4$RibY8tJ^8e`fr|d zyvwzSf%?&0H^OGdpwH4!i(A-LhD3-W;g|wI6;;GiAU&&Q02_|&vu8$ zBuS;F)MYhFY9^$eE26d$L1(;d&CYCl>Jh5i96gQqyZqgyiI*r6rup zw%ZBf4~_qH8GXa2r zdw@JDg20EjB84|1h4-G``9uScqqYtoW(AoumE9E2)69HkY^ty}oBhWzi^lOq~#fZCu2L0qBAh)Zhb3&D0>GqiU{9KTr<_*PU$NF-;j8HJZw+ z>?LTxlsM2>fptMW_BJIb=bRLDK!ksehp*#-R0_d%@`3Brf{k1I>6wf&}&xG^b zfNBH8A6cR;6>6V+Y^`)KJ9Y2S`QFBS&my$1jFu^;p~MR_LxGqt6Azuw2pwIM?KI*) zQvyG^Eo#na0)ZP3Yi!3z9ft0XM|tBU3&lDVM`6#%9LJwU;ov=?M6XCbc*_19Tf65$ z8N2JAs$D5wBLIv8BUrnV4UAy2UXDocXE$w=V}vIAc#jS_?))0IMMHKWldb@DeJ#K`B)O!myU9S&+I zJ!Z5wZpk29JVlo9DM`Pb%qL?`LxRxI{yeg)X^yrTl;q%f?oMP~lI`+WfVQ)(x7TQ~ z^k+-2=;?-$OWkG(=YnO#?y(313|+$Wg+iz{dy_B03g|`h&HpoHOXP`p1jifkd9s>Y52Q#(YcN2buS5756mzGq zYA2)~?BsWr!N>ETbLOM6r=zCw@bl#aq=QESRXC)BEs-S_aTF?g-J~ze1VFU#Q z0kE)c#<@1DOvmvY939=??-&1`G%G7B8=IQec)vabExsiN211{mok;_Mx=ok!-}T;u z1vfh%ccX+@IXNYPzzJ|!?CI$_FfiaFQK9~KyA%IENm$6#X>4Gqsp}}e>nO163L0ln zScpEG6Tu0`x(**2-~r+kVDFrpqEafVRRN!}TBWjjr7{lHvXn5=3MlZ40bc>k$arky z-sg8tmQi`tNBVOCtd=>f78K4FI2g5ebq|hO z98YU7@{_f!!Orxse$cPXJxR@|H~IYye15Mo|5vREM!kamyvU892# z*o)tnJNUwNJad;`)Ty-^C2DpvBF>guLlzt1(DC*|=%+B<{rFgY&Adz;uX`6aGrO3v zUD_K#ik)7;6{|f@dtm}z_u~)`giB(kKtv&aAK|nbOcN0{I5nPlbSiaJYc>KEvED9Fu51&6$2 zn0=I4z(U$^No}mwPx8uXNs&BZ5jH@BsBKun*?`3jo}SVItDO5TGG_f`v-;n3;`rIR z`_(DM6`V|#zZZ-DmF(GxQxwdpt;NWjriP9F8_~(-=jP^CWxdP_hVD|kCl@X*E>h$9 z+1Zaeb2J$l8SB-C2$Rvo?X$BseZl0hO&2@6u8E0AOgi;10KlCugP-+UQ_S?VG8ooa zWTTr#f_~QPEtn;0p=z|?G5fdw4duq#`fj57Zs@FaeMa8VGMr@^g?S4y*QoHsnY7{YRM^Qx;wS|V#qDBxz)Cy9BBGihNyy^9O zfA95vuIKO1f6qDRKIgvg$970r)~IKtg?J)xL6~OfxtvZCZBXvF-GpAtUJH7~R?XU5 z#6|kkna$|*Cb>bmFU`OdaKzO!cXYaws|4P*AL*mV5eVo?>-L&Bz^6-IUM{~ZdK&Wq z`nhNUst9^etZV#~Zy^6ry!)-0kEg`5{AT6IOP$#lC&Iwz^oU}Ilz(uh2CWG%8}$QL z>cDsvf{-t6X>7w$_|wuYEsifYZ6|qL%S}Tmr2wHYIbmKD6KNx1-0!z*f>6FNEJ-qt z8@%5OJ%_GrblkKlRLkfwYC3IpsY2Z!BUvM8K(TZ- z(wwSaN)H&1L`4^KCaKJ38%{UBkv}-w|GJRSczjD}hFar{M>IOa;L_nBuWL;*uzz7f zz&4Y$k6GZ;g4E`I6FAvS)%fWj>HylQn$E}!oZwRBV}y1Hm}YvCsnUg&ju9;D!Q(Os z9C_!-mgApr9V0_N$V_+j4SW9D+$#yY$NygE+50;80;gT2?H=y%bJC3+ub45O{s^hi zy(-Z=7B!itZgqLWMTx2T8jE3$`VL~6DP7fLlMy=q z8S%#w8Lvdh$ScVPW#i)fv4Z4F$(p!K&3usNPmK_|$3_}JUWy_*GWzg1m3YncKEpOb zl{)R?s6gTOhAtbnI3RM{_PMGG{>?n7rt4Ikr~5tHLfY?jRI(d+&ufDb;w|pwI3n zt{U?1*4cVZB+0M(ag-(!e8$PwzA%K)r8Edo)g~o0e>s}O+mgyAaln*YVfPc8TYjC1 zW#dBJgri-<26EQf&AKi?&0p3)fp3Jri3IQcCO!UTbjZs8mx8~jR!E=$TQ;n>w(d32 zg5gHd+#05h=dT-yFEj*+qYrj2%pNG=8wHtsiSptN08mJJ6!!zdt*dnlyF-0%_-KHc z5J`65$aXc1v=q;J@8|S(yegBgL6>9SF^IaO!Vt=C+kbVuuDTeUvf-jpsowbREL=@v z@e=Yoqz7|?!G$_RfKzd)2GUBpPPSy-1U^&q?=<}=WftgiPUao)p*1jbSwIo~$TBkg zQluTmIWS)jNqDHt3`69jLiAPyS4}lrB@w>itX;!#U)x4AU&CJePCga=!;T**-Oo~9 z-DzV3;0BZoom|p8`1h_$W+p&|-@Ik{qF#~=FIHw_9R)bYz}rJY);NE?>6l?^^A+WS6YGI-H&z}G`nj2y{DG-PNgMe!1K7IpUd`7syflN$vtEc_9rmE1Fd}T2N zWwSDM-Acrh`-P$VE7yH|d}zVacCE>sol5ib^ISYU+Ks3~EJCEezn=qw+1eUz^FmGj zK0Z1<4a5x6lb-7(Z1i3UQVRtK2lfdoD&`~WY+6DOo<6d)Oi4{Who9oX3_|wp-hHn3 z?|ui5kDJ~S5&792B27(A&Bn&&hu>fAJq!Q8uHq}Au1jl$tSy3Jev*OK<26N>iGm8{ z#>vY&=PyW!h|r`rlLv6lV{)NJj>_s(Cr=Ac3rqi~&ihzJasuckf#i@t&MLz=BqGLC zE#W3FR4r+(PH3!7>}npFSk{MYIpTowOB1!bVOsI?#x3J|mSrRnkf+j?$dgyN-C+B? ztGX6fs8`!k!A*vtpfiJW7g1o8=>CSrtvaOm7z?Bd^76)7k+Dh?Jf=!hE77!>*NM>P zZ!6RIHGH8M`gxa3QIR9iD@qovw;m|I)<|yf)<)G|k|6+VCg>N0xSm}Kwz%`ahy)#H z(e6L;O2p7OIughK!i#2Z7USzc;Gol-ztoRBrr6peU3m>qkv*NKkF0Cggf94uN>)&G z1E9G9P^F2=Ar12CkjQ_SVF+XwmFt>>AywroJ4G(Eqhp(=(UHg1QISW^!H0<6osE4- zN>ajP*rl&pC{S$>LJ|!|JFlcror&1&b%^GNh1$d$JIauhUl%1+|707cnDK00-mj$^ zSq}&mM(gDTh&1OGGgn3SZrx{Wcc?g@z6jcwnU1PsUvF`Ps78HH7aS2MD5T)W%#iTB5C!3V&3BHke$>~P_bRZMk?5~s{c=n-jzKth4fJi@&2lnVJR@gwwJE{n>{*t*r z)@&BV+L=igOg*|8s`J#KITq3KMkcPNl1!{T#p{MXR1CY%vXTE$C_SKYKq>rgpJNYC z*n3U}mWYzu8F>Bk7S9VYZB(KVeU=d8L7&lfTFb@r;NI@i(r&bv)ct~`h~`D#ys?)m57_!8fY=rM>!?{E)zd37aU&|geE zLmwox}L!%vESAjksM^tx2&Jlb4pW-5bfUVHu)D2I9_ z431lD&ku!tC|Iqwmego1fTEtRTEEGYgma857Ad18%s<3V1>f0Xy0g`4G4pR#%~C&9 zftGWDLSp`1h3-mtOX5%}x1E)=3|#>?e~Ya8zb--jgV=(+6ojW!TJnScY>#BQ(jqKh zW8vc)o12?!B*YSrQO<`uKjr=k`z9AkmC_8y?%>t+^#O=l1Q#El>re*&+|Qp)&yf-* zy9-IZy&3`n0+E*oLuqMgQs3Xeixs8$Mt@+Oz{h(z}PoqN4<>7pD9;=NmAY#n~{MNqMKE8{=rTw|@WKYpp}kW%#EWP84=B2i6 z>WINngY2EqS8{dW%+77z@do9SKPMI}HiEWPLI;vPYjqmCF2tDS0RZs@qwFX{_702A zM|&yHhQRV?>XA|;SAX;_gl_`+Y{zzwx|c>sSG_hD)U1Td*MY_eunQ+TFi5Y4|5EnR zby`7u_`Qe@O&P*P=|3JLFB+}GhR+)!bB0Q~-|9xrR!5e8PLh6#UYjVp(X^|^>4a`8 z`a!}GVwYqij!xt}o$4g={2paS^!E&KNAuOUC+)D`x-(+>+Ou7UgBd0}b1md%G1NYf zY*fkl_h~x-Pj+dvQH?^by8*9my%lD3O36nX@;NwtLqu^mEPMGK`)jgbG#mser6TUQm3Hk7CEqwA49VfHO=}(*1gftJjPR){&PE)4j<>uZRDr}G#~|F z2AM>oCnhIJK7mY;x(IAut1BW2ixtpDC>y>BNOK#YfRAhfB>^kEcr2TU$OJb}(GzcvS3eP(y%+NTH_`gJ<>G=oxwMpD%V9@m(jzl9Pv2>FBed;%6RqP5XG!KlE!r@?Pn&dL%ZBO83Y;3z+?sS` zdEt_eqh_HZ%|QwhNVktOEi<0=z+>80dhKFryL2*>DC_NTXLIx+Usd0$V25`xG;}%d zxS7ohKLv4(-8pyjK#nJZ_0rj&^`=9#;(GqQew9rBEt$L2Gj*9jZFQ9sv|Uz-Ew0d2 zG-+`wYF`FfZBwVsdk#j_kG0zu)|NcQKNnQvhR+C`LxymUn7#$hGat*X{_jJ1*vN)Y zcUQK%p!`DlPWQB>>5WB3B_VPdXurW#nXNt9Ul$}>z~t5tAWo_gk51$Jt0`WpX|}N57deP z{6Pxs0jCK1=8+tbM6$5(h0#e2ETtaT*+PInPIxGNTQq?FU$3kElhdc84T@(H1Q}<@ zd77nd+5WRJJty?~H{S04u+4bK$UjJ}S13IUD>lhJR&Gj0|5uh|R$@=8*-GykhNzK= zm+rUe;jsbdDM1%7B8LyxaPieM@m~$Nn`IbPuWW?r1N#Af?8}6@eOkXk`{!nOJ)7l7 zKr%n>h3h8d?w1Qfv3HbQQKnza`vCDrP&V6G#VJkw$oTwK&MuO5!Q&cdN|6MjV#s1* z+0YNQ65>^Ce1_WFjXXngvaxaa9nP8vsD(ca43rFy(zqgz_c)FZI^wbTXxtjaF!heB zqWxLI#}Bd+ynxVI;Bd~MKSUmESy}SF;ZXTysmshuy6KNRm9UT!pItV!F7fa-%bJ;- zpi|Sy$_TCQ@azo;^|lp8^@ZSusg7Vism(gDE>(`R7tp>V0J15w*sn~bJ$7;MfUG(k zO0CyhH%L(Q{Ep@2_j45YtAY>a1xw~X@OJR#>|AuiH1zAiMzo!YQaa==X=*z5 diff --git a/invidious/screenshots/05_preferences.png b/invidious/screenshots/05_preferences.png deleted file mode 100755 index f1227a668bdbeb93d3b341eaa06f621f52e31690..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91202 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 `ujcmNrLp$GND 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�A7l_ss}nqV#{J1!(XzANuk*Gu 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 diff --git a/invidious/screenshots/native_notification.png b/invidious/screenshots/native_notification.png deleted file mode 100755 index be246d1dcb7f7e4766f4ead74e9e661de0c01e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22500 zcmXtAWk6g#(}l&|-JRkN#oda#ySux)LyMQYew zA~&nZyTa2VFu#am&W-Q;Jq3Fsjk~oQoPYU*o=wwZ?sY$zv*PUC6Zq#~5_!$8`NxPf zIypQ#Gy`rZqjqhzPJ`KIr*Aoruy9ac7)(4KYaW;Fmr;vnP&nG2+mp6&V0wBwO!n>V zZAb_NPfl0hpZlA`>EQbnYkCf+^)|6^SfPh?cTVf6YRxLG={%ua9uaPC&AO#x6B`?w z_qSJy)XdC>?P#*8Y)%CcLdr%vzJT(FU8Zs=T6}{Z3 z%daIcydT^T9*5_`5U)Op9|8IjEs!lpv|RFVx_1bCqp8pt-pX42Ll=&kW2w_ z4TE9dyjoI1eaY&HJmhR)QKCYR9Y5G~n?fO>Rco+Pp-#s~a5Ta1d7_Xfn7vtw`6-iy zgwLfw!fJLyIPe*ngult=Ep?1S@}(q&?hX?=&l8%E%jPmUuu8QUmKcVMn6>BSx?HvR z$dCat3>Jfo&!yL_q4&$=1|Nbli_~g6PwV5K%|MNb!2i3PSQ5*iJ0Lsm1E1R-{L7%r;|?AScx>Ze2BOh; zZRa9b-o{ybdM(8+a20!zljGyZCngqbxV|grTV*ga7?^(SM68O{ko*^A#OM&rPRsSC z6Itx2Pq!@P_sJq}q6#ofW|yqYAKmswq~dWY$|!kwTEGLn0(~(5-qS_z*kW94vg6QMN`B7jZFx#UPgG8fgc+hQUO3GfE4iGry+3g=wuCW zCK#&!np^@g$c1<4f)He(z+Z=2lR%0Cr=Lkgr}Dw~^Vxy-2^NJ5YhrKaR7yx#@!!$T z#wbR~s+BEN zNefHrk_MWXPJD=NKSo4EEZ4n7!0`8Aj%5SS8*zw$xY5W8OTP2XE~K9jB<5bEjVlRq zaeX#AQBYbWd`(u9UriKJNZ>sdD>WAc`?Jo!OGKk)T^%kN2XFlJWbFDD4HZ@3sgM^N zmW4)I>C#kR?*jfjOO>><-C`7TVh5L)_*7+V-Y_nPeFdF1Q6kaD)Msqah{|la-^5gb zCE9r6Hi45u^7MG0`WozNILJ%T>z@bb^)`ys(W!4Av9Pft?)F82?Ck7WVu}puX6eOE zO*BK2W zl8iuJ6eEt{$?TjPBZ2#pDr6bHvmi)gb^*i~AcnPA4q+0;)oZdr_(M#J^)MYFiwU0g z(4pV4A#dZhH(XAaRTZ3*c@Y&H98AO?l!paWv25Uw-8xY&cK}G{r~&=`=f+T!a^UzA zT!arf7xgO;MklvHw~&QlY717|q%gAztdGp@pjP}ZLSdlmL9!Lf^8%8{-fUeM`fUq% z;n>vRc+WF}u7`(L443uspai!{uB7h&7qlVdy^{uvYXu(&(1C$}aA*l@Ep+@s> z4wz7iQch&qq;P@XU2ci>s>{>}SSv*$cTgRFMh2S!QT{d48w>}@#tnN-v5NdXLKXkW zk&!Ns8G}O{NFy%!?`hw$0U+aqnE`xIzc@GA%XovY%_J_8w1jLaN4k7up*PON$fhm> z0u&az1$uZJJJ0$ZPR`RA7-EoC9P0}(Fi6t#g1 z^fD{}pCVy)+QdRxnHU{S>2}~_wxzj)Jaoj2vEzIG7fSz46oGk>jdWNb?upE1RW}a;P9I z-Irk%3suOm;oB%F&~UkjuZ>hdp;i^=-l2hDY5?cC-}k&OFnI62pe`+os02;(6%R?TvNz!6pEsG0l z+b;~v?Ylpz_&=St-|h)WSCRgy4_djjUJf86PGQfS++BGeBQh@fyHC+00mi$Hh23ri z;Lu1InlS_Zlx--x4^wS7#ih)kW3yhM9fA9IqCu96lkCi4gXHFZeeI^`*QIOEG@))? zW|4)Wm72GIxLc)a@5aGVD&C+*SxbzmM#b>M&4Q+6A5*oY$9b2qfjCi`BK;WIsyMq; z%btlgUb=X4Y!t`kNxGQg?U_4P6rLekIh!Zcu_8K0{piy~z+u-znL^Hi#_5B|8~*L} z_yR@Qa*47?F1K~kJms`FZGf1N-`#33sJG|dBKYN)u4yKIGQ1_dO3SwdJ@?M@WU0sJ z_=`-b0TQRPEZnH$S}U*J9FXEB_JZ{34?LmtE3;mw#q5_snPigO$5FZ*9_K<13Xm!l zMnzO@5MAo$<2$8Wd}2;jbYT>FSIX0_YB~v^jYu1Q&S*bIJ@YW?nS>3288ugyv2N8; z_Jlzm1gD>s^?{CpRkq~U{M=IXxPkQUv#&gA6=@Bhx9KexZNDy5Zr0l+L`+VNj?Uvx z5ax<8Vd_s<#gCSZYP)|t#Trhspr&)L;UQ!9dpSy++}HW&z{g}j{?UJmSP;{FWBl0MYY@_t5SCq;oX3*cwP^^udMM$f>wOiI5&ZZLko@*XtAY1P&`(;FWV;Bc`dj`p6cPv7v?H z5;p7YRQ=H5hVybF5_~aa3;=q4XTyhNh2RQT;^T^KN7~W(VS{0&drnQwWc1Smcr+XQ zcAqofi}zEb<}3G=%*9-+k&xfau{9^V-vT`z9cn5;e*W2NvparwoV+6Ix&alltIMLgJcqOrMAH; zy+mDsblf;}7!&=snin2zTGOXRd3&CtX13@+OH4k8NhVV9sCFi$0(nht!3phNP8~-K z96{md?dtmY4$m{Dj7vpabq5cR_sy=I)bmYwB~&yNo0T@Pjb(h1bb#r|%5lZa&|!V$ zAdtLVksh?w=GVn0vUTvyCt#p^()iR(LPbW$#%8~~{Qhh$nB9>OH>u0(m0uGu)}6;* z?AhTpsn_K5`>fS@t6Om&?;&#BL!HZZ^JV#Jw|L9H&b86X@TaGKy$gjz$8A4WGd}iZv5!Otja2J)c@XrKwgvjdex1%|NQdrR1=;##Rk z=%wZ&gNcO%so1f_hLL5-mTKR4dPggXeXBiJ#0hz@e>r_R>r4ZGTHrN>ABW!D3PC|b z`b;W*?FHi=1!DVv2hVKVI&pIXjEcJD<(gHt_)Q@fUtYg1l&{uk&g0Hv6q*H_;Y%5J_vHevwze zt&!~wzZ>8A`f&C(U(Vc%E^s?%I+Hu84{Xo{F2}Xhw-F;p0x2Ga=pkL=G$@}eC%=03 zyo52{j#}sAXwTRR2N>0V=6!!U1R`Md+K?mZA(!#?_b=7xHd<`=M?^%lN+%TPhGcwT zhZHEXOJ{Jmn&hwdzM#XR6+JxWv@TaGClt;g)2i0FnOBA%h{_EA#dE)#+y_&oRlVHe z%PGDRos2IgQsv|RjX#iZ3$CZu5J`{V{+GW0{aKEH|NR9K4|&Av{QGON8sMEa?-I{A zz;(LTaK7hp=djsc47w?Zp~3oMlT5oV@9J*p&%>#1r;Y0OBobGO7UvaA4AQr4I5LB7 zm+d9vpwJR~&D8G-eVztauMZb(TumgEL$v~zZ$F$iytjhi-~2BeH#&XifU!PMli9q< zYMR9L1^u%Z-9(1%*JUDaI()%zwHqC&U%niz#zWojjiw$s;J?g$5@>NE5pg2!H1)u+ zDr%FrC4k0hwqNu5-Qwsm)j}d*R;3wk95y9pw(`RgynDP|-%PhUtuB$`%P4)cw2+mWc1c~tIsC#jx0UaYA ze$s6#By{k#`qbYWv+mWsJ!tp90lIw!c0mZ=_^{~ngal|sztwsA8#mH+gy+dZ zA!?u6P`G^Qme1?mgUAcI6%r}Fl^EXf`Nq$?`i?IRJ51H%7a7bsY(br8D1Bz3khX5w zFDuq{ozDzfc+N8gq2Vq1txkQulM~R!-oIDVr+nWEu?P+Ve0+Qi42ZuiTwPt!Dd*}n z`g!KAHd8#!X0Zp82}t9FidW|$iI)`7&XVHW2a^fO9|Knc??>r$vXJ^gE3DlwZgT`IVhy34y^8=-s zw*(wd7L*Kss?@kao_;kBvYqXGs*;En#~fEoBK(NC1*bGUXj`f<`u6(Vw>f;6)YBt! zzMR|PmFV-wu?%9)eyPU)CXsiw#WvjI!l=u|*m1ox`^yJZ$MvT__ZPz`>UB>92`F5!+doEe$V(Y)l>tzVpjg=PxF_-lSCo9p`9+($V#0M*V->D7 z!b4CT7LKG)Homl*?v@YWHe;X$e3q@7VjY=OD}R}Fj)sFZLRcg3_%h@H930+tN5+PV zb6EVb|L`eO%>Y5PO0!COpfY7#EX)V4O&Q3heZ13bzbM|uHPoZtIV1=TN2UT$$D=Wu z*?(zwx22Jt$oiPNIVhS%^C>fr&-aIDjdafZ{QTWLx1}>3wJ61WyrB?J#&wWEe7wXJ zMP0W%W1n0hc{7q$sSbVzNJT+Ysu{O~qXN5U;n+AiUgC4lTC)Ty4^v6Z1v-P`dl=wy z`{m^mYqQ-VBAQoYnc}g;M1;L&8?l1v!#qtt64#8BQjcq4J9r}2M?o0A`rXAr@vwiW z&|9p$r96RrdlOBtOGh$Mt^D*|$z#`*`G|{C)u2>?0G*#6e-mMb{~PjS+VPXmcULVh z9**ooO_I9aXh{R&RiAjib+)^c#kJ>|L7+o#4`(8grZXGAV@{3t)Hz-hGcqLp;4Y@}~X_vTB9&fZv%SAj~GgJ!5{CEsM4rAkRtqVHsh$;=WLiE!piW#lq z&*MM#O1{$q4dZKdwW-x9L4Z0aZ%~y%`*oP_&85e7p&PkwgU)GE)Q&|6ATZ{6FEle` z%(R=-WEFz_`Km0Q91*;XKHo`I>y_n79pl35B{ zF~dve02X{#zSz`nafHHf-fDnS(hP89OIox3`Qt%#K08@2#<~K(Nldg!Ft?zfz`HA_ z&Hv&2wEd<;ZM36!3jqOvrPyt4xOFkizjqrpYBel&*ESj2>w}tBu&^e(ceg|-J?bXI zd7d{q%Z8H_7P}MPdfftZPG)B2=Q!IGNv%AHa3(%n#^I4K@IW>n6ltm{gAq=6O~i_1 z1IqL(DNI~i81WH;l;(OLas6@jaOkqyfvk_=a?z&Vu;H2v>NYxdvB|_=q#HkQQNGNH zXum*rXWQD+?~>tG+#-P*+V9uK?>*W#Mdgkv+?myX7GHVYq%!#5ooMn!LP0@Q7-nrZ zDOEbBP^$Ac0-@W8-r!P5G|@fW-wRENaBw1v%foo$wxguaW)Q+rd+=uv)+&Jvaag_4 z{ppO_VPRo$SOquR`j4Qlhv&QFa8fBgdZL9owB+=a+at!gK+Ps4>dVgU&{?+Uwkx4N zY zFV%{0m-p^K?P>$x{S!@K{sileQ&d+1QsT)Gn|vFI4a#64$}k3@%Ts=^ODMhRt(;c# z7K4ZG1#NGCv2;?%R7Jk>*+!MO>OTJ7KDw@|M${DK;>dnn=enS3eaw_3Ab+8Z=<3A} z#X`MIHOO?izrboY(w!*+6DdMryK{a0+UVQnEV8MVF{!POZ-cAJ+K(FD;|eBJvRrGk zSol7BX?#@5421VKhZ?cu7`V^kr&u6Xb!hngH*w7Zm6Eg%fXM(D{o`RY?^8z_m0 z?rsOtEjzZVI|5>sqD^!O2QAlqhQcg!_QQjNC;C8L10yFRB^RBDU>AI1;1N~R6YZ(K z@3&$Be(%%O$U518!Q$Ze@A<)`{1)(rh`ECCxUAB_g!E9VC@%6dC353!N}vgl3v`DV zGOIg1B%Zp|rGXfQIMvLD=+)WO`{{JX1q#8q8vWKNPV51e^U{)n0TPsAf!_v8vSfj; z%}b)t#tQkU)?7+^m!GMQz7{8|A$SmxKL2J#HtNOWHNpoeKAO71_sG1x5!LiZ8G37c zv>9TVB5~=vi^Uq&EuKDkdAd<(z}$|6re3NcRwM#E(^r?_KkyHad5W%n4iuCtkf%-;^j#qwrlzarG{C{pl!}i z9r=$+Gqv6>p{C#$`))cse{1PUxY`T@fxT^c_k(z#E%0Hi2UBqlp)sdNUvMx0kA+cS zyf1Fpy6GYhD$W<_X!9d=+7|P}M%Pwoq$>I#i7;zt&@UWE3@QuAn@=F_$Pq3D`2Oq&t$tDW%>vhh?9(_H0K5P?=f=c;9q2FWUI++q$Oa}2X#~BG{cW9aQr4}YHF9SeG9NGR_AKAJOivU`vv4fG@^2B&>5Fn^z(<#1o|3HIli*Np_iFRT;V+nx#az{ zXe$#Apw83;&k;l2X>ljbVYLY(0lJka=y)|A%j!V8Ny;JT71=x< zBWh?nh6dAzsu#dvoUUXIs`rh=mGCm{rZ;xsWT)U3O0?WISBc86`{CJ0i*mAHn!^W+ zUYX_0_FI8TqB}1=CB@?{KO%;F%kJ|waZm<}an9#df|JAP)IY;p-2-1nBk)NL3m{|s za#u}$cnb8Y^+xgNy@jhmuCZ0mGFwg=s0vj^ z>R`aT=lhJZX;%2SZF%VDVUGXnvb7 zh?q4{-{6wCG35?_Wq*FZzQ?7Cy^R4ee$cj?^ zLpmxdieBM7beagsCmK^`Y8EoiW^)y|XjW}-V%_C(2U~^C`KdlaynB;+O4=oSsJbIH zkomPbb^rxA0sTXflg)x$ECNHe`0020iT$n443~2&z|vUyr$u5*tq>Kp4_uP8csVNv z*oKA4l#+!iS5KJsMxil-=}%AAR+i6I0gW8<%(Pvi^bLACF{I(TZw^jopKVJ2gv&wv zj|*`A@^n-y_JY{m4oY*u559Bg7oU3WNrVs{tkS3mDq@RV^&+3}n@T8NP@ z!w!0G)uWTN3eHPLOa%%O5@Wnfzq$$Irp!x0B#$z4G?sqH+j(xsqXQ!?W=8o7huS$j zU$<7c9?hWTXKF5yo&c!xN*~05ajtMufn{1F;Jgqtwx1PDZ+ZYY-Hv@kq;R)V=ATjR8(_ z=W!n8r#&!#AvBl*P@o<0(03q(Mhc+Epe>kR{gnqtQGjL~I>3N)x{ug0$M7xYj4mOy zq$Mls=rI2x*kefvHIu9wyOI4ON<5(ep*s?9bY}q>6d6MeV9ABH*Q%_izn9SH-rB`V(pWZv&YQb3E#ylDMQJgzbof8n@rx&YJSERq zscfwevy_i7O~Jz{WVn>DV3!%WpZ_E!jt~`c#BHY_+jrnjDgII-td=gS)h=%toS(7| zVQJz5A4aRfd!Q2Tk6lBK+weOloR|jw{-jG1oyA&0}nsj+ZBIK4uD9uh^xUSAT8-H zuzs{x&_XWa1Tz<2UI3p%SaGgDe=Z(vta}~3%Y?0u1XL#j4_pWFt*je8*|ng5`yDm& z=l*hVFsRB-+H|L!@#FPlH7F7BS^!+Pnd1ErySG_Ow z=)_jmR*hT-6BB~Q?Zn%(fXD?iZdY`GHM=<`Lc$^h5z(DisA!hHN>&vwuj5LkQrAy~ zKbb9K#~CTm|2?o8yapGBdJEfNIG;6V4o$k;4I2=kE^4w(ohw$%8wVp8slZ}#<%2ol zVA~rY%H}dZH-9Uw=qLX}$dz^R-s=Wx3N!8PN&6&HW`}(8q~NbNwOY6y!S}mfl`loiqNB7 zxIaanoEju)S+`JnpbUtMo@-J3a@?aV(jDVdW zvSy_(u+ZOVw)(M~#+Ya%9XE!VKU~h9&Ey23jR_q@-g|oyU|#dHnTl(uAf`TK22_73 z%d|~_gbHVV_z7AbzCjUCsF`X^f2+9+_<@lgnu08B%#s$R9XB<(blk90t^yp2BTbOI z$a0Dc9PA(qu5cCQLlm&t0FaV)ayc4*&qXqN7+5M%v zf2AO)Ym>txqg5L6ws_?}i#Jdk7sGUXWtX0sVChZ65rmvJ)+}J@Wgvmihk$EjON7x* zDO|kx81Ve^`c05ZKjdjsFnG7K>Etxh-I`}?QhvNCVGB*K zPu9qCdCTP&m<$!jeDkL1lPFSge|XNX7iAw`lzx{pyd`Uex*vAFT86ojm`es|*R=|J zh5=hvvPS=7(UFp?%u2q@kn@=D$fFmn*hmMk#naVj)l~pxJYSOU@ZZj;b{^?Vvl5_? ztTz=E7A$ZW*!;^xd&e0xp8mkN`DA-zF~?M)yUeAg-icwRE0me)?xiyjDB>dj3QI ziDW@h?6P$CJ%Tse9cso22oW966xUV3p_YbCP+Z$)gg48*3Dz<+18u8z6CW4dXCItu zC&6#R+K1#T9jyLwAISe)d`HQoezkC24q3gFF zp#vj^@h`+s%8Dfp<%uU|1CK{p{f30`D!%@pVwsZ(*ml}1O#@`7{IR+jfxHtxAn6S3 z5q($8C&d1Ogu0Pk()q_;*QJqoSp6Tn5Mw?YK)r(b7j*I-p-dFP`v@OiaRSjh$Ot zFZF)I6z*Q4>6iC33sfL>t)-n=Qr^Cx1J22t6%tHsvjyjd8ILr^eZWT`m!9=!(>ZfZ^X@{Q&SymV zaKSHiqC1bv##POFjbY@rW$!`&A^U6M08x0@;b{-dTnU$1v*tf(uS7`oDVHRiuU(WGkh2Fum@A#>tp)8R?7-ZN}!Zoi>#e#z#|Rf%5HX#b09W2C;d{(@0sSFR?0LOUl@ct3M@R zcv5z!#rKipPnkBj_cdU90jii__`7)*y z{M9B{E*;|dtxdrqOpP7CRH}(pee|s@f%mHvy`&&yCTFK5%>e~N*O|Ou-KtpHcYxg* z@X@j7+5}^|sDI*{XnVb=^}5@W@CZp6f29d2jV*Xd1XV~B6lKa6K@^>uy{z(|v(XSP z;T|KYwIBiuHSMXb$_9rbXv#|e#7Q!xO7-rVv7cl39EMyPY zM3g9!0 zsiV{{afbeg1h2HTfN$nxvfecqeD5ma@_FZ?0S99gEjSR_IdvK-sx~E^ICcq-=E$dI zK+vY5Ih(Uxx3I!f%sItCI8iPJe5S6A{!7|w(JS@5|B~p`W1@C2U!LHPbgcM4g-lO> zsUYR#(DGdxbLLGtkcp8v2`D(*c(nDiBL~?FFIUpjo2DGrg`X$IMrvmZm>06xZP|yve*KC;j13&VL{T6B znjI2g2=#I3)&Npdc<9aoz1WnFd*<@F0suAU0f)qGFjzPfM+M~)nmw9yUqt(8<2|1m zB%_O$&(!IB)=7t=tbMpG2`1Y4tL&+e-Dty556CbuDEIQ^?;=-8hA18W(6 z5T9mB>Z9_~pOB%1ht$?a2}`o)ysF)nt-9|}cTQlBNMw2J z_9T_qFVw|8))&?2BjpyO>0kH*nnk*=cG6F)%Yxj>a7M5&0|c+OOLp&Tq;xngV$Xqg za9a~h5u&xf_%)Ns_zJDpTATz=a&XS%2cDQ1tsZPQOfvU5F|xtP^@isY{i53TVS>N4ehpg z9x(0*K|$YP#vaiJ5OlZN3{+#6fiTZDADO$RzRp@+)pw4#&t)N-+V zu9}o4$xq(TbU^w@6$WruHbI!*NugTMBIcm}y98YF18@|9xTHik#y?CE8=qo^6dBpb ze!2-**brIfQyR{&=JI1(kXbTAi~q3 z`Dvm|JM4g=i(WvRDp!KpphG{R{@W+uv-pSPIAkQ`OZ7^PtRei=%D%GZAJrzN5jaT8 z;u*7Q1^Z`-(?T2*qv#2y*a)d^9vk|qjk3igNo(gL;IudlC% zN29hgzsb(Lsvj-2I)mvFWa+nR3_?O(O0Um4P5Wn`se*M|QT4tDUJX`%Z22s<(BeOx zr)?B?w{-V=%lD!y+PCHX=K7|?<9F2OTX3zR+x$@Jpm1l-C$;NkjPWA)(bOP7P~B?3 zQnS@*%jy8kBkqldN2k1}%u1@nJYUy+8bC{GpSqv@eZ;hu;_JY6;*AV7lwXYVS%j`i%>+Ht+f7FQ)6zYC4YUrKdyp9h^19BTOFotYlE&k+{Zj2630uKmhDYZUZCmo#^u$C!@I;oD$Jb`+PlIk71k3()otXghL1OvBt-#TIKh*nziQN z3(bsnOn!)IQ$46;=Q9;pOp107BU{0(XETtTUxWC4ulon%D<*abVgLN}uQRe?d%<~7 zQ=>O6xO%QPx>@pudAq%!3WdNhB;CE$_7ni-6LTMDDBof}F zownqmM2Ra2I8@Ng1EbbU;BC1?9~2x~?ep>XK_tAl*Ck_=lO++am$q<-uC-$ShfpXu zuivXUi3Ge}OxN)Y!v>!3IUJV15(sRDqC9`EHaqICe`s=AMC@Z|GWK7)KkM?l-@77> z6vtg+!_MXnek*eBkqS2zPJVwhZ-N$1#h{W2J4PkrZ?fATo78XVB`nofqA63#4ufWq z2lEF%hd`BRj%O@T@Bsz9PT~CtI-s8K23XRQw=V1JkBx(TUADSuknqBM)#v9@5OAeE zO$!Ts+zr}%Fsz&qmyM@z+B1>jLW9<1ZZEg%W3Dm-9$4By z8?(h?F5BDNxdLA69nSgT9DBFN8y$9wmGtlo)fyFF!bM#>l+p(ZVBJHZ#dOH2H1rHy zEBP;3p_}xW4W=(qIV0ok@nvyQhIoa!kV!c9u0`H^Qz1HVJPTh(BKH40SJiQhrm5-o z7zt7LCb(dbhstRJz(r_@oEC>r<1qQ%B9o}!oM@B!BkFGv%gZ{!!S8AQ4=y_cG6^cZ z)96??Jr(N12_ynuFOMT5Bj94Z>P2__5_9Qy%XnN~r_F#`RjO~YiGFPPAs z@x7_Kg##UjDx|CRQ6Bk5U6&-Uwuyv~weJ>l)C+*9xEig*TGWG+z$lq7Q{Sx&i@bB` zNb~9Pf)=)s2kE@5q+u;h?t^4q*tGjlRTj(Tu*STf{yg6iWM`*E%4%YO6(yaulF0$MIaeAs@vf!DQ4HX5*xZ1CQ` zoq54Vcj_=rjgN;rhw5UK)r?Jync2C27WTcS{^cxYZ<`$y_zY5qC64s4}=wLg|_igdBwKHoV-z15|{vhb|T(4XV&B40pQf5fKYqp2`-$ zGoG)pTLNo~7l?d&us7;*a$nGjj^;Wj?liy@bi zqut!Mg0*E~n_%G}1iKG&kABOuhMuMZ8}#xD1(Fy^xW?{26|44ax00VUvQ zfLOo$bAiWd7=~>0F-BSxKuXGo0=gGl1ozMI^=A6@&z-xYnKShHi~iJE4N!518rKbPytWg=llA0n2#Q%Z?)pRRkKwO zY0YkSdxV!CoOl1kU+%fQ(QPhMES+d$%^rw7xScCHK*(bg0*?}bpD*N%N|Mk7!Q@06 zxJ&ravyRFOzbnb(19%@wBLi0%#busy<$P_VeME?XkABQ(`;v5E0DVa&@i&fkKlGE3 zHGaxu_Fr^56PB8!Rs454!VgV47$oee$hri(>knpn9hc%69nEwHwrfeIVf{Vt2BW8` zi%{+=Z2=KcxBux;G01a0H>J~#sQ%$RQcBU7Wr^MxKJd-J$e0I=ExHovXJ!6rvjo99 ztA^+hjK8AF5OR6zS@0lYj_OBb4*c1@@d;$VUoaEs5;p7r3MKWg(3P1T4bsix& zDb1g?yNr@)Mv{m>BFnYnR?;g`js6E|l@S1GQ~;)gr;dNED7z5b1n9O&D5Vv%(tg=+ zQHJ6Hj_?u0f#(Jglz*|O;2FG%B=QLqQh0p))QsT{f?s0H73}5BO}JuGa}T{Vt)v0v zv*cg5J))6|Vz4ixwXo^nTO1wB`6kAwvR4jA(YTcNf(_;wAyX>n;xZ#9= z5j7%2w#I)tPXh|jWI2NNU5fd?wjf<86R>7NO1VopU)Y1TA;y+oHtgT1r6BZ5P_aWzp%(KR%3A(#o=S z@K~=@q|>z2Wh)O1ItCA&xWg6~4*$Ykc^2o1e-+zs-6c|DXmD78@d0wGc%jF_{_Tiy zXvir3ah3Qdz|*x5(f#QD_mruT>9}g=agVO2&CfNTbYw;s5MyL-6(#goKpiamHN{}n zFYXsfH1K0zQe*UzZ@-+L!V6%yFQ4igda2Yj)K_B+eTmf}a(Mt8YFEOqImFg4$H~I9 zGz`17cXlc#pu74~Dct@YG@Q`hYn-iUo(xsohSn2x_((=A7P6adnN2mFZ=~YDK?;fM zzlGrM2%!rL{utj*D7$$-CJyhHl&sf4V9OG_!h|SP{`JQg31sog=^Z~9B8)m*{ah_V z?0UK{Xc`_IX4ZYqm88t(v6OdmVo4spxw~W5bLH{PxrKnh3;O$i0i+JV)Z6#=tLa@j zC9^21+qfubI9~f-r(m33rB$($ZUwR~OHUZ9##se#c4CJm5pboh#caPZqps6?<~mlroD6%`dHmLkIC z!vh+8xn`qPwAUFpVuttKgdC0a^iIC{B2DE9g@+{)@xC1mpoNEp32KUuE`6Y#!-B|A zqR<@E*Dhpoq^~`FgM$0@`poEL72c=vk)hIftGg}wDgcL0`H)P+b!R$}XgXIUKQ)yK zBi??o@(v6zzyh5jm~u%iuY0gWiA2!nGRTiVZ{?7XoA7>!h(?&|`}DWJ%7G?^CYeGN zprlNz{n~xxVLo2`;B6t8Ow3}~g505)!=($R|9f;xm`(r9J(6XtOiV!FWRf`P=kg#G z9mfa#Co~U=-B}93rMI8>xW9kOl*-c?Tx;ISvJUpcp^~01Hqrq~TF;h4Z&Sp=1-#Gq zrbu>G4bS0sGhVF@5;pwryLmj0stGv3$(Jg_lhbvfM6@v(Pqlw*EtW{0%23p{9fcF| zi__8oY~l`Z&9XSV z*iR3kTBkdmhjyK+#Tu~wW|GxjB20q6$@yWb{Qm-u6>;iOcpgB(&;~kAPftI0?)

    VC}TO%pHF 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 A?RYnV=5fycMpZ4p3LgJ>L95Ry@_Un5 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

  • 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
    Xw52wBIVLfzuf*W|QuAN=H7mJ*Uw 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 MAd^5RW4PV@zeDyLcmMzZ diff --git a/invidious/assets/fonts/ionicons.svg b/invidious/assets/fonts/ionicons.svg deleted file mode 100755 index 43bbea8..0000000 --- a/invidious/assets/fonts/ionicons.svg +++ /dev/null @@ -1,2090 +0,0 @@ - - - - - -Created by FontForge 20160407 at Fri May 24 15:45:40 2019 - By Adam Bradley -Copyright (c) 2019, Adam Bradley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/invidious/assets/fonts/ionicons.ttf b/invidious/assets/fonts/ionicons.ttf deleted file mode 100755 index ffd7d6fb9780bb4c7c994c66c33ac479777b703d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112472 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 diff --git a/invidious/assets/fonts/ionicons.woff b/invidious/assets/fonts/ionicons.woff deleted file mode 100755 index 8708d82b21750575dae633c6490017b4b048bdc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65908 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 U!Z&gP38oZ!kRS9%KRJK=4;(j-p#T5? diff --git a/invidious/assets/fonts/ionicons.woff2 b/invidious/assets/fonts/ionicons.woff2 deleted file mode 100755 index 39176471d1386afe362d208c57c7426880a01f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50556 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