From ccc7f375f60de8a61ae8c820d0fbbbbd7a1b76fa Mon Sep 17 00:00:00 2001 From: Froidefond Julien Date: Sun, 29 Mar 2026 22:51:00 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20table=20series=20avec=20UUID=20PK=20?= =?UTF-8?q?=E2=80=94=20migration=20compl=C3=A8te=20backend=20+=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migration DB (0070 + 0071): - Backup automatique de book_reading_progress avant migration - Crée table series (fusion de series_metadata) avec UUID PK - Ajoute series_id FK à books, external_metadata_links, anilist_series_links, available_downloads, download_detection_results - Supprime les colonnes TEXT legacy et la table series_metadata Backend API + Indexer: - Toutes les queries SQL migrées vers series_id FK + JOIN series - Routes /series/:name → /series/:series_id (UUID) - Nouvel endpoint GET /series/by-name/:name pour lookup par nom - match_title_volumes() factorisé entre prowlarr.rs et download_detection.rs - Fix scheduler.rs: settings → app_settings - OpenAPI mis à jour avec les nouveaux endpoints Frontend: - Routes /libraries/[id]/series/[name] → /series/[seriesId] - Tous les composants (Edit, Delete, MarkRead, Prowlarr, Metadata, ReadingStatus) utilisent seriesId - compressVolumes() pour afficher T1→3 au lieu de T1 T2 T3 - Titre release en entier (plus de truncate) dans available downloads Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/api/src/anilist.rs | 121 +++++++++--------- apps/api/src/authors.rs | 4 +- apps/api/src/download_detection.rs | 98 +++++++------- apps/api/src/main.rs | 1 + apps/api/src/metadata.rs | 71 ++++++---- apps/api/src/metadata_batch.rs | 19 ++- apps/api/src/metadata_refresh.rs | 6 +- apps/api/src/openapi.rs | 3 + apps/api/src/prowlarr.rs | 40 +++--- apps/api/src/reading_status_match.rs | 23 +++- apps/api/src/reading_status_push.rs | 35 +++-- apps/api/src/series.rs | 53 +++++++- .../app/(app)/authors/[name]/page.tsx | 4 +- apps/backoffice/app/(app)/books/[id]/page.tsx | 8 +- apps/backoffice/app/(app)/books/page.tsx | 4 +- .../app/(app)/downloads/DownloadsPage.tsx | 17 +-- .../components/DownloadDetectionCards.tsx | 11 +- .../[id]/components/MetadataReportCards.tsx | 4 +- .../components/ReadingStatusReportCards.tsx | 4 +- .../series/{[name] => [seriesId]}/page.tsx | 36 +++--- .../app/(app)/libraries/[id]/series/page.tsx | 5 +- apps/backoffice/app/(app)/series/page.tsx | 5 +- .../{[seriesName] => [seriesId]}/route.ts | 14 +- .../api/libraries/[id]/series/[name]/route.ts | 17 --- .../{[name] => [seriesId]}/metadata/route.ts | 6 +- .../libraries/[id]/series/[seriesId]/route.ts | 31 +++++ .../app/components/DeleteSeriesButton.tsx | 4 +- .../app/components/EditSeriesForm.tsx | 11 +- .../app/components/MarkSeriesReadButton.tsx | 5 +- .../app/components/ProwlarrSearchModal.tsx | 7 +- .../app/components/ReadingStatusModal.tsx | 6 +- apps/backoffice/lib/api.ts | 37 ++++-- apps/backoffice/lib/volumeRanges.ts | 25 ++++ apps/backoffice/next-env.d.ts | 2 +- apps/backoffice/tsconfig.tsbuildinfo | 2 +- apps/indexer/src/job.rs | 4 +- apps/indexer/src/scheduler.rs | 2 +- infra/migrations/0070_create_series_table.sql | 4 + 38 files changed, 463 insertions(+), 286 deletions(-) rename apps/backoffice/app/(app)/libraries/[id]/series/{[name] => [seriesId]}/page.tsx (92%) rename apps/backoffice/app/api/anilist/series/[libraryId]/{[seriesName] => [seriesId]}/route.ts (73%) delete mode 100644 apps/backoffice/app/api/libraries/[id]/series/[name]/route.ts rename apps/backoffice/app/api/libraries/[id]/series/{[name] => [seriesId]}/metadata/route.ts (70%) create mode 100644 apps/backoffice/app/api/libraries/[id]/series/[seriesId]/route.ts create mode 100644 apps/backoffice/lib/volumeRanges.ts diff --git a/apps/api/src/anilist.rs b/apps/api/src/anilist.rs index ecc1d22..7b387ab 100644 --- a/apps/api/src/anilist.rs +++ b/apps/api/src/anilist.rs @@ -287,11 +287,11 @@ pub async fn search_manga( /// Get AniList link for a specific series #[utoipa::path( get, - path = "/anilist/series/{library_id}/{series_name}", + path = "/anilist/series/{library_id}/{series_id}", tag = "anilist", params( ("library_id" = String, Path, description = "Library UUID"), - ("series_name" = String, Path, description = "Series name"), + ("series_id" = String, Path, description = "Series UUID"), ), responses( (status = 200, body = AnilistSeriesLinkResponse), @@ -302,15 +302,16 @@ pub async fn search_manga( )] pub async fn get_series_link( State(state): State, - Path((library_id, series_name)): Path<(Uuid, String)>, + Path((library_id, series_id)): Path<(Uuid, Uuid)>, ) -> Result, ApiError> { let row = sqlx::query( - "SELECT library_id, series_name, anilist_id, anilist_title, anilist_url, status, linked_at, synced_at - FROM anilist_series_links - WHERE library_id = $1 AND series_name = $2", + "SELECT asl.library_id, s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url, asl.status, asl.linked_at, asl.synced_at + FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id + WHERE asl.library_id = $1 AND asl.series_id = $2", ) .bind(library_id) - .bind(&series_name) + .bind(series_id) .fetch_optional(&state.pool) .await?; @@ -331,11 +332,11 @@ pub async fn get_series_link( /// Link a series to an AniList media ID #[utoipa::path( post, - path = "/anilist/series/{library_id}/{series_name}/link", + path = "/anilist/series/{library_id}/{series_id}/link", tag = "anilist", params( ("library_id" = String, Path, description = "Library UUID"), - ("series_name" = String, Path, description = "Series name"), + ("series_id" = String, Path, description = "Series UUID"), ), request_body = AnilistLinkRequest, responses( @@ -346,7 +347,7 @@ pub async fn get_series_link( )] pub async fn link_series( State(state): State, - Path((library_id, series_name)): Path<(Uuid, String)>, + Path((library_id, series_id)): Path<(Uuid, Uuid)>, Json(body): Json, ) -> Result, ApiError> { // Try to fetch title/url from AniList if not provided @@ -382,29 +383,36 @@ pub async fn link_series( let row = sqlx::query( r#" - INSERT INTO anilist_series_links (library_id, series_name, provider, anilist_id, anilist_title, anilist_url, status, linked_at) + INSERT INTO anilist_series_links (library_id, series_id, provider, anilist_id, anilist_title, anilist_url, status, linked_at) VALUES ($1, $2, 'anilist', $3, $4, $5, 'linked', NOW()) - ON CONFLICT (library_id, series_name, provider) DO UPDATE + ON CONFLICT (series_id, provider) DO UPDATE SET anilist_id = EXCLUDED.anilist_id, anilist_title = EXCLUDED.anilist_title, anilist_url = EXCLUDED.anilist_url, status = 'linked', linked_at = NOW(), synced_at = NULL - RETURNING library_id, series_name, anilist_id, anilist_title, anilist_url, status, linked_at, synced_at + RETURNING library_id, series_id, anilist_id, anilist_title, anilist_url, status, linked_at, synced_at "#, ) .bind(library_id) - .bind(&series_name) + .bind(series_id) .bind(body.anilist_id) .bind(&anilist_title) .bind(&anilist_url) .fetch_one(&state.pool) .await?; + // Fetch series name for the response + let series_name: String = sqlx::query_scalar("SELECT name FROM series WHERE id = $1") + .bind(series_id) + .fetch_one(&state.pool) + .await + .unwrap_or_else(|_| "unknown".to_string()); + Ok(Json(AnilistSeriesLinkResponse { library_id: row.get("library_id"), - series_name: row.get("series_name"), + series_name, anilist_id: row.get("anilist_id"), anilist_title: row.get("anilist_title"), anilist_url: row.get("anilist_url"), @@ -417,11 +425,11 @@ pub async fn link_series( /// Remove the AniList link for a series #[utoipa::path( delete, - path = "/anilist/series/{library_id}/{series_name}/unlink", + path = "/anilist/series/{library_id}/{series_id}/unlink", tag = "anilist", params( ("library_id" = String, Path, description = "Library UUID"), - ("series_name" = String, Path, description = "Series name"), + ("series_id" = String, Path, description = "Series UUID"), ), responses( (status = 200, description = "Unlinked"), @@ -432,13 +440,13 @@ pub async fn link_series( )] pub async fn unlink_series( State(state): State, - Path((library_id, series_name)): Path<(Uuid, String)>, + Path((library_id, series_id)): Path<(Uuid, Uuid)>, ) -> Result, ApiError> { let result = sqlx::query( - "DELETE FROM anilist_series_links WHERE library_id = $1 AND series_name = $2", + "DELETE FROM anilist_series_links WHERE library_id = $1 AND series_id = $2", ) .bind(library_id) - .bind(&series_name) + .bind(series_id) .execute(&state.pool) .await?; @@ -506,10 +514,10 @@ pub async fn list_unlinked( JOIN libraries l ON l.id = b.library_id LEFT JOIN series s ON s.id = b.series_id LEFT JOIN anilist_series_links asl - ON asl.library_id = b.library_id - AND asl.series_name = COALESCE(s.name, 'unclassified') + ON asl.series_id = b.series_id WHERE l.reading_status_provider = 'anilist' - AND asl.library_id IS NULL + AND asl.series_id IS NULL + AND b.series_id IS NOT NULL GROUP BY l.id, l.name, COALESCE(s.name, 'unclassified') ORDER BY l.name, series_name "#, @@ -553,11 +561,12 @@ pub async fn preview_sync( let links = sqlx::query( r#" - SELECT asl.library_id, asl.series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url + SELECT asl.library_id, asl.series_id, s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id JOIN libraries l ON l.id = asl.library_id WHERE l.reading_status_provider = 'anilist' - ORDER BY l.name, asl.series_name + ORDER BY l.name, s.name "#, ) .fetch_all(&state.pool) @@ -566,7 +575,7 @@ pub async fn preview_sync( let mut items: Vec = Vec::new(); for link in &links { - let library_id: Uuid = link.get("library_id"); + let series_id: Uuid = link.get("series_id"); let series_name: String = link.get("series_name"); let anilist_id: i32 = link.get("anilist_id"); let anilist_title: Option = link.get("anilist_title"); @@ -577,15 +586,13 @@ pub async fn preview_sync( SELECT COUNT(*) as book_count, COUNT(brp.book_id) FILTER (WHERE brp.status = 'read') as books_read, - (SELECT sm.total_volumes FROM series sm WHERE sm.library_id = $1 AND sm.name = $2 LIMIT 1) as total_volumes + (SELECT sm.total_volumes FROM series sm WHERE sm.id = $1 LIMIT 1) as total_volumes FROM books b - LEFT JOIN series s ON s.id = b.series_id - LEFT JOIN book_reading_progress brp ON brp.book_id = b.id AND brp.user_id = $3 - WHERE b.library_id = $1 AND COALESCE(s.name, 'unclassified') = $2 + LEFT JOIN book_reading_progress brp ON brp.book_id = b.id AND brp.user_id = $2 + WHERE b.series_id = $1 "#, ) - .bind(library_id) - .bind(&series_name) + .bind(series_id) .bind(local_user_id) .fetch_one(&state.pool) .await; @@ -649,8 +656,9 @@ pub async fn sync_to_anilist( // Get all series that have AniList links in enabled libraries let links = sqlx::query( r#" - SELECT asl.library_id, asl.series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url + SELECT asl.library_id, asl.series_id, s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id JOIN libraries l ON l.id = asl.library_id WHERE l.reading_status_provider = 'anilist' "#, @@ -674,7 +682,7 @@ pub async fn sync_to_anilist( "#; for link in &links { - let library_id: Uuid = link.get("library_id"); + let series_id: Uuid = link.get("series_id"); let series_name: String = link.get("series_name"); let anilist_id: i32 = link.get("anilist_id"); let anilist_title: Option = link.get("anilist_title"); @@ -686,15 +694,13 @@ pub async fn sync_to_anilist( SELECT COUNT(*) as book_count, COUNT(brp.book_id) FILTER (WHERE brp.status = 'read') as books_read, - (SELECT sm.total_volumes FROM series sm WHERE sm.library_id = $1 AND sm.name = $2 LIMIT 1) as total_volumes + (SELECT sm.total_volumes FROM series sm WHERE sm.id = $1 LIMIT 1) as total_volumes FROM books b - LEFT JOIN series s ON s.id = b.series_id - LEFT JOIN book_reading_progress brp ON brp.book_id = b.id AND brp.user_id = $3 - WHERE b.library_id = $1 AND COALESCE(s.name, 'unclassified') = $2 + LEFT JOIN book_reading_progress brp ON brp.book_id = b.id AND brp.user_id = $2 + WHERE b.series_id = $1 "#, ) - .bind(library_id) - .bind(&series_name) + .bind(series_id) .bind(local_user_id) .fetch_one(&state.pool) .await; @@ -735,10 +741,10 @@ pub async fn sync_to_anilist( Ok(_) => { // Update synced_at let _ = sqlx::query( - "UPDATE anilist_series_links SET status = 'synced', synced_at = NOW() WHERE library_id = $1 AND series_name = $2", + "UPDATE anilist_series_links SET status = 'synced', synced_at = NOW() WHERE library_id = $1 AND series_id = $2", ) - .bind(library_id) - .bind(&series_name) + .bind(link.get::("library_id")) + .bind(series_id) .execute(&state.pool) .await; items.push(AnilistSyncItem { @@ -752,10 +758,10 @@ pub async fn sync_to_anilist( } Err(e) => { let _ = sqlx::query( - "UPDATE anilist_series_links SET status = 'error' WHERE library_id = $1 AND series_name = $2", + "UPDATE anilist_series_links SET status = 'error' WHERE library_id = $1 AND series_id = $2", ) - .bind(library_id) - .bind(&series_name) + .bind(link.get::("library_id")) + .bind(series_id) .execute(&state.pool) .await; errors.push(format!("{series_name}: {}", e.message)); @@ -824,8 +830,9 @@ pub async fn pull_from_anilist( // Find local series linked to these anilist IDs (in enabled libraries) let link_rows = sqlx::query( r#" - SELECT asl.library_id, asl.series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url + SELECT asl.library_id, asl.series_id, s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id JOIN libraries l ON l.id = asl.library_id WHERE l.reading_status_provider = 'anilist' "#, @@ -833,16 +840,16 @@ pub async fn pull_from_anilist( .fetch_all(&state.pool) .await?; - // Build map: anilist_id → (library_id, series_name, anilist_title, anilist_url) + // Build map: anilist_id → (series_id, series_name, anilist_title, anilist_url) let mut link_map: std::collections::HashMap, Option)> = std::collections::HashMap::new(); for row in &link_rows { let aid: i32 = row.get("anilist_id"); - let lib: Uuid = row.get("library_id"); + let sid: Uuid = row.get("series_id"); let name: String = row.get("series_name"); let title: Option = row.get("anilist_title"); let url: Option = row.get("anilist_url"); - link_map.insert(aid, (lib, name, title, url)); + link_map.insert(aid, (sid, name, title, url)); } let mut updated = 0i32; @@ -851,7 +858,7 @@ pub async fn pull_from_anilist( let mut items: Vec = Vec::new(); for (anilist_id, anilist_status, progress_volumes) in &entries { - let Some((library_id, series_name, anilist_title, anilist_url)) = link_map.get(anilist_id) else { + let Some((series_id, series_name, anilist_title, anilist_url)) = link_map.get(anilist_id) else { skipped += 1; continue; }; @@ -869,10 +876,9 @@ pub async fn pull_from_anilist( // Get all book IDs for this series, ordered by volume let book_rows = sqlx::query( - "SELECT b.id, b.volume FROM books b LEFT JOIN series s ON s.id = b.series_id WHERE b.library_id = $1 AND COALESCE(s.name, 'unclassified') = $2 ORDER BY b.volume NULLS LAST", + "SELECT b.id, b.volume FROM books b WHERE b.series_id = $1 ORDER BY b.volume NULLS LAST", ) - .bind(library_id) - .bind(series_name) + .bind(series_id) .fetch_all(&state.pool) .await; @@ -946,9 +952,10 @@ pub async fn list_links( State(state): State, ) -> Result>, ApiError> { let rows = sqlx::query( - "SELECT library_id, series_name, anilist_id, anilist_title, anilist_url, status, linked_at, synced_at - FROM anilist_series_links - ORDER BY linked_at DESC", + "SELECT asl.library_id, s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url, asl.status, asl.linked_at, asl.synced_at + FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id + ORDER BY asl.linked_at DESC", ) .fetch_all(&state.pool) .await?; diff --git a/apps/api/src/authors.rs b/apps/api/src/authors.rs index 0f368d0..655d23e 100644 --- a/apps/api/src/authors.rs +++ b/apps/api/src/authors.rs @@ -77,14 +77,14 @@ pub async fn list_authors( NULLIF(authors, '{{}}'), CASE WHEN author IS NOT NULL AND author != '' THEN ARRAY[author] ELSE ARRAY[]::text[] END ) - ) AS author_name, id AS book_id, library_id, series + ) AS author_name, id AS book_id, series_id FROM books ), author_agg AS ( SELECT author_name AS name, COUNT(DISTINCT book_id) AS book_count, - COUNT(DISTINCT (library_id, series)) AS series_count + COUNT(DISTINCT series_id) AS series_count FROM author_books WHERE ($1::text IS NULL OR author_name ILIKE $1) GROUP BY author_name diff --git a/apps/api/src/download_detection.rs b/apps/api/src/download_detection.rs index 3a92f4d..a60a504 100644 --- a/apps/api/src/download_detection.rs +++ b/apps/api/src/download_detection.rs @@ -303,10 +303,11 @@ pub async fn get_detection_results( ) -> Result>, ApiError> { let rows = if let Some(status_filter) = &query.status { sqlx::query( - "SELECT id, series_name, status, missing_count, available_releases, error_message - FROM download_detection_results - WHERE job_id = $1 AND status = $2 - ORDER BY series_name", + "SELECT ddr.id, COALESCE(s.name, 'unknown') AS series_name, ddr.status, ddr.missing_count, ddr.available_releases, ddr.error_message + FROM download_detection_results ddr + LEFT JOIN series s ON s.id = ddr.series_id + WHERE ddr.job_id = $1 AND ddr.status = $2 + ORDER BY s.name", ) .bind(job_id) .bind(status_filter) @@ -314,10 +315,11 @@ pub async fn get_detection_results( .await? } else { sqlx::query( - "SELECT id, series_name, status, missing_count, available_releases, error_message - FROM download_detection_results - WHERE job_id = $1 - ORDER BY status, series_name", + "SELECT ddr.id, COALESCE(s.name, 'unknown') AS series_name, ddr.status, ddr.missing_count, ddr.available_releases, ddr.error_message + FROM download_detection_results ddr + LEFT JOIN series s ON s.id = ddr.series_id + WHERE ddr.job_id = $1 + ORDER BY ddr.status, s.name", ) .bind(job_id) .fetch_all(&state.pool) @@ -381,11 +383,12 @@ pub async fn get_latest_found( State(state): State, ) -> Result>, ApiError> { let rows = sqlx::query( - "SELECT ad.id, ad.library_id, ad.series_name, ad.missing_count, ad.available_releases, ad.updated_at, \ + "SELECT ad.id, ad.library_id, s.name AS series_name, ad.series_id, ad.missing_count, ad.available_releases, ad.updated_at, \ l.name as library_name \ FROM available_downloads ad \ JOIN libraries l ON l.id = ad.library_id \ - ORDER BY l.name, ad.series_name", + JOIN series s ON s.id = ad.series_id \ + ORDER BY l.name, s.name", ) .fetch_all(&state.pool) .await?; @@ -509,9 +512,9 @@ pub(crate) async fn process_download_detection( .map_err(|e| e.message)?; // Fetch all series with their metadata link status - let all_series: Vec = sqlx::query_scalar( + let all_series_rows: Vec<(String, Option)> = sqlx::query_as( r#" - SELECT DISTINCT COALESCE(s.name, 'unclassified') + SELECT DISTINCT COALESCE(s.name, 'unclassified') AS name, b.series_id FROM books b LEFT JOIN series s ON s.id = b.series_id WHERE b.library_id = $1 @@ -528,11 +531,10 @@ pub(crate) async fn process_download_detection( r#" DELETE FROM available_downloads WHERE library_id = $1 - AND series_name NOT IN ( - SELECT DISTINCT COALESCE(s.name, 'unclassified') + AND series_id NOT IN ( + SELECT DISTINCT b.series_id FROM books b - LEFT JOIN series s ON s.id = b.series_id - WHERE b.library_id = $1 + WHERE b.library_id = $1 AND b.series_id IS NOT NULL ) "#, ) @@ -541,6 +543,10 @@ pub(crate) async fn process_download_detection( .await .map_err(|e| e.to_string())?; + let all_series: Vec = all_series_rows.iter().map(|(name, _)| name.clone()).collect(); + let series_id_map: std::collections::HashMap = all_series_rows.iter() + .filter_map(|(name, id)| id.map(|id| (name.clone(), id))) + .collect(); let total = all_series.len() as i32; sqlx::query("UPDATE index_jobs SET total_files = $2 WHERE id = $1") .bind(job_id) @@ -551,7 +557,9 @@ pub(crate) async fn process_download_detection( // Fetch approved metadata links for this library (series_name -> link_id) let links: Vec<(String, Uuid)> = sqlx::query( - "SELECT series_name, id FROM external_metadata_links WHERE library_id = $1 AND status = 'approved'", + "SELECT s.name AS series_name, eml.id FROM external_metadata_links eml \ + JOIN series s ON s.id = eml.series_id \ + WHERE eml.library_id = $1 AND eml.status = 'approved'", ) .bind(library_id) .fetch_all(pool) @@ -602,7 +610,7 @@ pub(crate) async fn process_download_detection( // Skip unclassified if series_name == "unclassified" { - insert_result(pool, job_id, library_id, series_name, "no_metadata", 0, None, None).await; + insert_result(pool, job_id, library_id, series_id_map.get(series_name).copied(), "no_metadata", 0, None, None).await; continue; } @@ -610,7 +618,7 @@ pub(crate) async fn process_download_detection( let link_id = match link_map.get(series_name) { Some(id) => *id, None => { - insert_result(pool, job_id, library_id, series_name, "no_metadata", 0, None, None).await; + insert_result(pool, job_id, library_id, series_id_map.get(series_name).copied(), "no_metadata", 0, None, None).await; continue; } }; @@ -625,10 +633,12 @@ pub(crate) async fn process_download_detection( .map_err(|e| e.to_string())?; if missing_rows.is_empty() { - insert_result(pool, job_id, library_id, series_name, "no_missing", 0, None, None).await; + insert_result(pool, job_id, library_id, series_id_map.get(series_name).copied(), "no_missing", 0, None, None).await; // Series is complete, remove from available_downloads - let _ = sqlx::query("DELETE FROM available_downloads WHERE library_id = $1 AND series_name = $2") - .bind(library_id).bind(series_name).execute(pool).await; + if let Some(&sid) = series_id_map.get(series_name) { + let _ = sqlx::query("DELETE FROM available_downloads WHERE series_id = $1") + .bind(sid).execute(pool).await; + } continue; } @@ -655,7 +665,7 @@ pub(crate) async fn process_download_detection( pool, job_id, library_id, - series_name, + series_id_map.get(series_name).copied(), "found", missing_count, releases_json.clone(), @@ -663,17 +673,17 @@ pub(crate) async fn process_download_detection( ) .await; // UPSERT into available_downloads - if let Some(ref rj) = releases_json { + if let (Some(ref rj), Some(&sid)) = (&releases_json, series_id_map.get(series_name)) { let _ = sqlx::query( - "INSERT INTO available_downloads (library_id, series_name, missing_count, available_releases, updated_at) \ + "INSERT INTO available_downloads (library_id, series_id, missing_count, available_releases, updated_at) \ VALUES ($1, $2, $3, $4, NOW()) \ - ON CONFLICT (library_id, series_name) DO UPDATE SET \ + ON CONFLICT (series_id) DO UPDATE SET \ missing_count = EXCLUDED.missing_count, \ available_releases = EXCLUDED.available_releases, \ updated_at = NOW()", ) .bind(library_id) - .bind(series_name) + .bind(sid) .bind(missing_count) .bind(rj) .execute(pool) @@ -681,19 +691,20 @@ pub(crate) async fn process_download_detection( } } Ok(_) => { - insert_result(pool, job_id, library_id, series_name, "not_found", missing_count, None, None).await; + insert_result(pool, job_id, library_id, series_id_map.get(series_name).copied(), "not_found", missing_count, None, None).await; // Remove from available_downloads if previously found + if let Some(&sid) = series_id_map.get(series_name) { let _ = sqlx::query( - "DELETE FROM available_downloads WHERE library_id = $1 AND series_name = $2", + "DELETE FROM available_downloads WHERE series_id = $1", ) - .bind(library_id) - .bind(series_name) + .bind(sid) .execute(pool) .await; + } } Err(e) => { warn!("[DOWNLOAD_DETECTION] series '{series_name}': {e}"); - insert_result(pool, job_id, library_id, series_name, "error", missing_count, None, Some(&e)).await; + insert_result(pool, job_id, library_id, series_id_map.get(series_name).copied(), "error", missing_count, None, Some(&e)).await; } } } @@ -810,20 +821,7 @@ async fn search_prowlarr_for_series( let matched: Vec = raw_releases .into_iter() .filter_map(|r| { - let title_volumes = prowlarr::extract_volumes_from_title_pub(&r.title); - - // "Intégrale" / "Complet" releases match ALL missing volumes - let is_integral = prowlarr::is_integral_release(&r.title); - - let matched_vols: Vec = if is_integral && !missing_volumes.is_empty() { - missing_volumes.to_vec() - } else { - title_volumes - .iter() - .copied() - .filter(|v| missing_volumes.contains(v)) - .collect() - }; + let (matched_vols, all_volumes) = prowlarr::match_title_volumes(&r.title, missing_volumes); if matched_vols.is_empty() { None @@ -835,7 +833,7 @@ async fn search_prowlarr_for_series( indexer: r.indexer, seeders: r.seeders, matched_missing_volumes: matched_vols, - all_volumes: if is_integral { vec![] } else { title_volumes }, + all_volumes, }) } }) @@ -849,7 +847,7 @@ async fn insert_result( pool: &PgPool, job_id: Uuid, library_id: Uuid, - series_name: &str, + series_id: Option, status: &str, missing_count: i32, available_releases: Option, @@ -858,13 +856,13 @@ async fn insert_result( let _ = sqlx::query( r#" INSERT INTO download_detection_results - (job_id, library_id, series_name, status, missing_count, available_releases, error_message) + (job_id, library_id, series_id, status, missing_count, available_releases, error_message) VALUES ($1, $2, $3, $4, $5, $6, $7) "#, ) .bind(job_id) .bind(library_id) - .bind(series_name) + .bind(series_id) .bind(status) .bind(missing_count) .bind(&available_releases) diff --git a/apps/api/src/main.rs b/apps/api/src/main.rs index 98c7b42..797e6c0 100644 --- a/apps/api/src/main.rs +++ b/apps/api/src/main.rs @@ -180,6 +180,7 @@ async fn main() -> anyhow::Result<()> { .route("/books/:id/pages/:n", get(pages::get_page)) .route("/books/:id/progress", get(reading_progress::get_reading_progress).patch(reading_progress::update_reading_progress)) .route("/libraries/:library_id/series", get(series::list_series)) + .route("/libraries/:library_id/series/by-name/:name", get(series::get_series_by_name)) .route("/libraries/:library_id/series/:series_id/metadata", get(series::get_series_metadata)) .route("/series", get(series::list_all_series)) .route("/series/ongoing", get(series::ongoing_series)) diff --git a/apps/api/src/metadata.rs b/apps/api/src/metadata.rs index 62ba66b..c21bfb6 100644 --- a/apps/api/src/metadata.rs +++ b/apps/api/src/metadata.rs @@ -137,7 +137,7 @@ pub struct MissingBookItem { #[derive(Deserialize)] pub struct MetadataLinkQuery { pub library_id: Option, - pub series_name: Option, + pub series_id: Option, } // --------------------------------------------------------------------------- @@ -234,12 +234,14 @@ pub async fn create_metadata_match( .parse() .map_err(|_| ApiError::bad_request("invalid library_id"))?; + let series_id = crate::series::get_or_create_series(&state.pool, library_id, &body.series_name).await?; + let row = sqlx::query( r#" INSERT INTO external_metadata_links - (library_id, series_name, provider, external_id, external_url, status, confidence, metadata_json, total_volumes_external) + (library_id, series_id, provider, external_id, external_url, status, confidence, metadata_json, total_volumes_external) VALUES ($1, $2, $3, $4, $5, 'pending', $6, $7, $8) - ON CONFLICT (library_id, series_name, provider) + ON CONFLICT (series_id, provider) DO UPDATE SET external_id = EXCLUDED.external_id, external_url = EXCLUDED.external_url, @@ -251,12 +253,11 @@ pub async fn create_metadata_match( updated_at = NOW(), approved_at = NULL, synced_at = NULL - RETURNING id, library_id, series_name, provider, external_id, external_url, status, confidence, - metadata_json, total_volumes_external, matched_at, approved_at, synced_at + RETURNING id "#, ) .bind(library_id) - .bind(&body.series_name) + .bind(series_id) .bind(&body.provider) .bind(&body.external_id) .bind(&body.external_url) @@ -266,7 +267,22 @@ pub async fn create_metadata_match( .fetch_one(&state.pool) .await?; - Ok(Json(row_to_link_dto(&row))) + let link_id: Uuid = row.get("id"); + // Re-fetch with JOIN to get series_name for the DTO + let full_row = sqlx::query( + r#" + SELECT eml.id, eml.library_id, s.name AS series_name, eml.series_id, eml.provider, eml.external_id, eml.external_url, eml.status, eml.confidence, + eml.metadata_json, eml.total_volumes_external, eml.matched_at, eml.approved_at, eml.synced_at + FROM external_metadata_links eml + JOIN series s ON s.id = eml.series_id + WHERE eml.id = $1 + "#, + ) + .bind(link_id) + .fetch_one(&state.pool) + .await?; + + Ok(Json(row_to_link_dto(&full_row))) } // --------------------------------------------------------------------------- @@ -296,7 +312,7 @@ pub async fn approve_metadata( UPDATE external_metadata_links SET status = 'approved', approved_at = NOW(), updated_at = NOW() WHERE id = $1 - RETURNING library_id, series_name, provider, external_id, metadata_json, total_volumes_external + RETURNING library_id, series_id, provider, external_id, metadata_json, total_volumes_external "#, ) .bind(id) @@ -306,7 +322,9 @@ pub async fn approve_metadata( let row = result.ok_or_else(|| ApiError::not_found("link not found"))?; let library_id: Uuid = row.get("library_id"); - let series_name: String = row.get("series_name"); + let series_id: Uuid = row.get("series_id"); + let series_name: String = sqlx::query_scalar("SELECT name FROM series WHERE id = $1") + .bind(series_id).fetch_one(&state.pool).await?; // Reject any other approved links for the same series (only one active link per series) // Also clean up their external_book_metadata @@ -314,12 +332,11 @@ pub async fn approve_metadata( r#" UPDATE external_metadata_links SET status = 'rejected', updated_at = NOW() - WHERE library_id = $1 AND series_name = $2 AND id != $3 AND status = 'approved' + WHERE series_id = $1 AND id != $2 AND status = 'approved' RETURNING id "#, ) - .bind(library_id) - .bind(&series_name) + .bind(series_id) .bind(id) .fetch_all(&state.pool) .await?; @@ -438,7 +455,7 @@ pub async fn reject_metadata( tag = "metadata", params( ("library_id" = Option, Query, description = "Library UUID"), - ("series_name" = Option, Query, description = "Series name"), + ("series_id" = Option, Query, description = "Series UUID"), ), responses( (status = 200, body = Vec), @@ -454,18 +471,21 @@ pub async fn get_metadata_links( .as_deref() .and_then(|s| s.parse().ok()); + let series_id: Option = query.series_id.as_deref().and_then(|s| s.parse().ok()); + let rows = sqlx::query( r#" - SELECT id, library_id, series_name, provider, external_id, external_url, status, confidence, - metadata_json, total_volumes_external, matched_at, approved_at, synced_at - FROM external_metadata_links - WHERE ($1::uuid IS NULL OR library_id = $1) - AND ($2::text IS NULL OR series_name = $2) - ORDER BY updated_at DESC + SELECT eml.id, eml.library_id, s.name AS series_name, eml.series_id, eml.provider, eml.external_id, eml.external_url, eml.status, eml.confidence, + eml.metadata_json, eml.total_volumes_external, eml.matched_at, eml.approved_at, eml.synced_at + FROM external_metadata_links eml + JOIN series s ON s.id = eml.series_id + WHERE ($1::uuid IS NULL OR eml.library_id = $1) + AND ($2::uuid IS NULL OR eml.series_id = $2) + ORDER BY eml.updated_at DESC "#, ) .bind(library_id) - .bind(query.series_name.as_deref()) + .bind(series_id) .fetch_all(&state.pool) .await?; @@ -495,7 +515,10 @@ pub async fn get_missing_books( ) -> Result, ApiError> { // Verify link exists let link = sqlx::query( - "SELECT library_id, series_name FROM external_metadata_links WHERE id = $1", + "SELECT eml.library_id, eml.series_id, s.name AS series_name \ + FROM external_metadata_links eml \ + JOIN series s ON s.id = eml.series_id \ + WHERE eml.id = $1", ) .bind(id) .fetch_optional(&state.pool) @@ -503,6 +526,7 @@ pub async fn get_missing_books( .ok_or_else(|| ApiError::not_found("link not found"))?; let library_id: Uuid = link.get("library_id"); + let series_id: Uuid = link.get("series_id"); let series_name: String = link.get("series_name"); // Count external books @@ -514,10 +538,9 @@ pub async fn get_missing_books( // Count local books let total_local: i64 = sqlx::query_scalar( - "SELECT COUNT(*) FROM books b LEFT JOIN series s ON s.id = b.series_id WHERE b.library_id = $1 AND COALESCE(s.name, 'unclassified') = $2", + "SELECT COUNT(*) FROM books WHERE series_id = $1", ) - .bind(library_id) - .bind(&series_name) + .bind(series_id) .fetch_one(&state.pool) .await?; diff --git a/apps/api/src/metadata_batch.rs b/apps/api/src/metadata_batch.rs index 9b18214..a1bf97d 100644 --- a/apps/api/src/metadata_batch.rs +++ b/apps/api/src/metadata_batch.rs @@ -432,7 +432,7 @@ pub(crate) async fn process_metadata_batch( // Get series that already have an approved link (skip them) let already_linked: std::collections::HashSet = sqlx::query_scalar( - "SELECT series_name FROM external_metadata_links WHERE library_id = $1 AND status = 'approved'", + "SELECT s.name FROM external_metadata_links eml JOIN series s ON s.id = eml.series_id WHERE eml.library_id = $1 AND eml.status = 'approved'", ) .bind(library_id) .fetch_all(pool) @@ -797,14 +797,25 @@ async fn auto_apply( provider_name: &str, candidate: &metadata_providers::SeriesCandidate, ) -> Result { + // Resolve series_id from series name + let series_id: Uuid = sqlx::query_scalar( + "SELECT id FROM series WHERE library_id = $1 AND name = $2", + ) + .bind(library_id) + .bind(series_name) + .fetch_optional(pool) + .await + .map_err(|e| e.to_string())? + .ok_or_else(|| format!("Series '{}' not found in library", series_name))?; + // Create the external_metadata_link let metadata_json = &candidate.metadata_json; let row = sqlx::query( r#" INSERT INTO external_metadata_links - (library_id, series_name, provider, external_id, external_url, status, confidence, metadata_json, total_volumes_external) + (library_id, series_id, provider, external_id, external_url, status, confidence, metadata_json, total_volumes_external) VALUES ($1, $2, $3, $4, $5, 'approved', $6, $7, $8) - ON CONFLICT (library_id, series_name, provider) + ON CONFLICT (series_id, provider) DO UPDATE SET external_id = EXCLUDED.external_id, external_url = EXCLUDED.external_url, @@ -819,7 +830,7 @@ async fn auto_apply( "#, ) .bind(library_id) - .bind(series_name) + .bind(series_id) .bind(provider_name) .bind(&candidate.external_id) .bind(&candidate.external_url) diff --git a/apps/api/src/metadata_refresh.rs b/apps/api/src/metadata_refresh.rs index a5a347e..334ed73 100644 --- a/apps/api/src/metadata_refresh.rs +++ b/apps/api/src/metadata_refresh.rs @@ -309,8 +309,10 @@ pub async fn refresh_single_link( AxumPath(link_id): AxumPath, ) -> Result, ApiError> { let row = sqlx::query( - "SELECT library_id, series_name, provider, external_id, status \ - FROM external_metadata_links WHERE id = $1", + "SELECT eml.library_id, s.name AS series_name, eml.provider, eml.external_id, eml.status \ + FROM external_metadata_links eml \ + JOIN series s ON s.id = eml.series_id \ + WHERE eml.id = $1", ) .bind(link_id) .fetch_optional(&state.pool) diff --git a/apps/api/src/openapi.rs b/apps/api/src/openapi.rs index 6500c22..6b490e6 100644 --- a/apps/api/src/openapi.rs +++ b/apps/api/src/openapi.rs @@ -17,7 +17,9 @@ use utoipa::OpenApi; crate::books::convert_book, crate::books::update_book, crate::series::get_series_metadata, + crate::series::get_series_by_name, crate::series::update_series, + crate::series::delete_series, crate::pages::get_page, crate::search::search_books, crate::index_jobs::enqueue_rebuild, @@ -112,6 +114,7 @@ use utoipa::OpenApi; crate::series::OngoingQuery, crate::books::UpdateBookRequest, crate::series::SeriesMetadata, + crate::series::SeriesLookup, crate::series::UpdateSeriesRequest, crate::series::UpdateSeriesResponse, crate::pages::PageQuery, diff --git a/apps/api/src/prowlarr.rs b/apps/api/src/prowlarr.rs index 08e304b..ee7815f 100644 --- a/apps/api/src/prowlarr.rs +++ b/apps/api/src/prowlarr.rs @@ -104,6 +104,27 @@ pub(crate) fn extract_volumes_from_title_pub(title: &str) -> Vec { /// Returns true if the title indicates a complete/integral edition /// (e.g., "intégrale", "complet", "complete", "integral"). +/// Match a release title against a list of missing volumes. +/// Returns (matched_volumes, all_volumes_in_title). +/// For integral releases, matched_volumes = all missing volumes, all_volumes = empty. +pub(crate) fn match_title_volumes(title: &str, missing_volumes: &[i32]) -> (Vec, Vec) { + let title_volumes = extract_volumes_from_title(title); + let is_integral = is_integral_release(title); + + let matched = if is_integral && !missing_volumes.is_empty() { + missing_volumes.to_vec() + } else { + title_volumes + .iter() + .copied() + .filter(|v| missing_volumes.contains(v)) + .collect() + }; + + let all = if is_integral { vec![] } else { title_volumes }; + (matched, all) +} + pub(crate) fn is_integral_release(title: &str) -> bool { let lower = title.to_lowercase(); // Strip accents for matching: "intégrale" → "integrale" @@ -403,21 +424,8 @@ fn match_missing_volumes( releases .into_iter() .map(|r| { - let title_volumes = extract_volumes_from_title(&r.title); - let matched = if missing_numbers.is_empty() { - None - } else { - let matched: Vec = title_volumes - .iter() - .copied() - .filter(|v| missing_numbers.contains(v)) - .collect(); - if matched.is_empty() { - None - } else { - Some(matched) - } - }; + let (matched_vols, all_volumes) = match_title_volumes(&r.title, &missing_numbers); + let matched = if matched_vols.is_empty() { None } else { Some(matched_vols) }; ProwlarrRelease { guid: r.guid, @@ -432,7 +440,7 @@ fn match_missing_volumes( info_url: r.info_url, categories: r.categories, matched_missing_volumes: matched, - all_volumes: title_volumes, + all_volumes, } }) .collect() diff --git a/apps/api/src/reading_status_match.rs b/apps/api/src/reading_status_match.rs index 3a4fe03..09627c5 100644 --- a/apps/api/src/reading_status_match.rs +++ b/apps/api/src/reading_status_match.rs @@ -377,7 +377,7 @@ pub(crate) async fn process_reading_status_match( .map_err(|e| e.to_string())?; let already_linked: std::collections::HashSet = sqlx::query_scalar( - "SELECT series_name FROM anilist_series_links WHERE library_id = $1", + "SELECT s.name FROM anilist_series_links asl JOIN series s ON s.id = asl.series_id WHERE asl.library_id = $1", ) .bind(library_id) .fetch_all(pool) @@ -636,15 +636,24 @@ async fn search_and_link( .map(String::from); let anilist_url = candidate["siteUrl"].as_str().map(String::from); - sqlx::query( - r#" - INSERT INTO anilist_series_links (library_id, series_name, provider, anilist_id, anilist_title, anilist_url, status, linked_at) - VALUES ($1, $2, 'anilist', $3, $4, $5, 'linked', NOW()) - ON CONFLICT (library_id, series_name, provider) DO NOTHING - "#, + let series_id: Uuid = sqlx::query_scalar( + "SELECT id FROM series WHERE library_id = $1 AND name = $2", ) .bind(library_id) .bind(series_name) + .fetch_one(pool) + .await + .map_err(|e| format!("series lookup failed for '{}': {}", series_name, e))?; + + sqlx::query( + r#" + INSERT INTO anilist_series_links (library_id, series_id, provider, anilist_id, anilist_title, anilist_url, status, linked_at) + VALUES ($1, $2, 'anilist', $3, $4, $5, 'linked', NOW()) + ON CONFLICT (series_id, provider) DO NOTHING + "#, + ) + .bind(library_id) + .bind(series_id) .bind(anilist_id) .bind(&anilist_title) .bind(&anilist_url) diff --git a/apps/api/src/reading_status_push.rs b/apps/api/src/reading_status_push.rs index 245a584..1a11036 100644 --- a/apps/api/src/reading_status_push.rs +++ b/apps/api/src/reading_status_push.rs @@ -357,6 +357,7 @@ pub async fn get_push_results( // --------------------------------------------------------------------------- struct SeriesInfo { + series_id: Uuid, series_name: String, anilist_id: i32, anilist_title: Option, @@ -379,11 +380,13 @@ pub async fn process_reading_status_push( let series_to_push: Vec = sqlx::query( r#" SELECT - asl.series_name, + asl.series_id, + s.name AS series_name, asl.anilist_id, asl.anilist_title, asl.anilist_url FROM anilist_series_links asl + JOIN series s ON s.id = asl.series_id WHERE asl.library_id = $1 AND asl.anilist_id IS NOT NULL AND ( @@ -392,22 +395,18 @@ pub async fn process_reading_status_push( SELECT 1 FROM book_reading_progress brp JOIN books b2 ON b2.id = brp.book_id - LEFT JOIN series s2 ON s2.id = b2.series_id - WHERE b2.library_id = asl.library_id - AND COALESCE(s2.name, 'unclassified') = asl.series_name + WHERE b2.series_id = asl.series_id AND brp.user_id = $2 AND brp.updated_at > asl.synced_at ) OR EXISTS ( SELECT 1 FROM books b2 - LEFT JOIN series s2 ON s2.id = b2.series_id - WHERE b2.library_id = asl.library_id - AND COALESCE(s2.name, 'unclassified') = asl.series_name + WHERE b2.series_id = asl.series_id AND b2.created_at > asl.synced_at ) ) - ORDER BY asl.series_name + ORDER BY s.name "#, ) .bind(library_id) @@ -417,6 +416,7 @@ pub async fn process_reading_status_push( .map_err(|e| e.to_string())? .into_iter() .map(|row| SeriesInfo { + series_id: row.get("series_id"), series_name: row.get("series_name"), anilist_id: row.get("anilist_id"), anilist_title: row.get("anilist_title"), @@ -466,15 +466,12 @@ pub async fn process_reading_status_push( COUNT(b.id) AS total_books, COUNT(brp.book_id) FILTER (WHERE brp.status = 'read') AS books_read FROM books b - LEFT JOIN series s ON s.id = b.series_id LEFT JOIN book_reading_progress brp - ON brp.book_id = b.id AND brp.user_id = $3 - WHERE b.library_id = $1 - AND COALESCE(s.name, 'unclassified') = $2 + ON brp.book_id = b.id AND brp.user_id = $2 + WHERE b.series_id = $1 "#, ) - .bind(library_id) - .bind(&series.series_name) + .bind(series.series_id) .bind(local_user_id) .fetch_one(pool) .await @@ -513,10 +510,9 @@ pub async fn process_reading_status_push( Ok(()) => { // Update synced_at let _ = sqlx::query( - "UPDATE anilist_series_links SET synced_at = NOW() WHERE library_id = $1 AND series_name = $2", + "UPDATE anilist_series_links SET synced_at = NOW() WHERE series_id = $1", ) - .bind(library_id) - .bind(&series.series_name) + .bind(series.series_id) .execute(pool) .await; @@ -532,10 +528,9 @@ pub async fn process_reading_status_push( match push_to_anilist(&token, series.anilist_id, anilist_status, progress_volumes).await { Ok(()) => { let _ = sqlx::query( - "UPDATE anilist_series_links SET synced_at = NOW() WHERE library_id = $1 AND series_name = $2", + "UPDATE anilist_series_links SET synced_at = NOW() WHERE series_id = $1", ) - .bind(library_id) - .bind(&series.series_name) + .bind(series.series_id) .execute(pool) .await; diff --git a/apps/api/src/series.rs b/apps/api/src/series.rs index 0aabf63..ba9f9bb 100644 --- a/apps/api/src/series.rs +++ b/apps/api/src/series.rs @@ -67,6 +67,53 @@ pub(crate) async fn get_or_create_series( .map_err(Into::into) } +// ─── Lookup by name ────────────────────────────────────────────────────────── + +#[derive(Serialize, ToSchema)] +pub struct SeriesLookup { + #[schema(value_type = String)] + pub id: Uuid, + #[schema(value_type = String)] + pub library_id: Uuid, + pub name: String, +} + +/// Look up a series by name within a library. Returns its UUID and name. +#[utoipa::path( + get, + path = "/libraries/{library_id}/series/by-name/{name}", + tag = "series", + params( + ("library_id" = String, Path, description = "Library UUID"), + ("name" = String, Path, description = "Series name (URL-encoded)"), + ), + responses( + (status = 200, body = SeriesLookup), + (status = 404, description = "Series not found"), + (status = 401, description = "Unauthorized"), + ), + security(("Bearer" = [])) +)] +pub async fn get_series_by_name( + State(state): State, + Path((library_id, name)): Path<(Uuid, String)>, +) -> Result, ApiError> { + let row = sqlx::query( + "SELECT id, library_id, name FROM series WHERE library_id = $1 AND LOWER(name) = LOWER($2)" + ) + .bind(library_id) + .bind(&name) + .fetch_optional(&state.pool) + .await? + .ok_or_else(|| ApiError::not_found(format!("series '{}' not found", name)))?; + + Ok(Json(SeriesLookup { + id: row.get("id"), + library_id: row.get("library_id"), + name: row.get("name"), + })) +} + // ─── Structs ───────────────────────────────────────────────────────────────── #[derive(Serialize, ToSchema)] @@ -906,6 +953,8 @@ pub async fn ongoing_books( #[derive(Serialize, ToSchema)] pub struct SeriesMetadata { + /// Name of the series + pub series_name: String, /// Authors of the series (series-level metadata, distinct from per-book author field) pub authors: Vec, pub description: Option, @@ -943,7 +992,7 @@ pub async fn get_series_metadata( ) -> Result, ApiError> { // Fetch series row (contains metadata directly) let series_row = sqlx::query( - "SELECT authors, description, publishers, start_year, total_volumes, status, locked_fields, book_author, book_language \ + "SELECT name, authors, description, publishers, start_year, total_volumes, status, locked_fields, book_author, book_language \ FROM series WHERE id = $1 AND library_id = $2" ) .bind(series_id) @@ -958,6 +1007,7 @@ pub async fn get_series_metadata( .await?; Ok(Json(SeriesMetadata { + series_name: series_row.as_ref().map(|r| r.get::("name")).unwrap_or_default(), authors: series_row.as_ref().map(|r| r.get::, _>("authors")).unwrap_or_default(), description: series_row.as_ref().and_then(|r| r.get("description")), publishers: series_row.as_ref().map(|r| r.get::, _>("publishers")).unwrap_or_default(), @@ -1267,6 +1317,7 @@ mod tests { #[test] fn series_metadata_serializes() { let meta = SeriesMetadata { + series_name: "Naruto".to_string(), description: Some("A ninja story".to_string()), authors: vec!["Kishimoto".to_string()], publishers: vec![], diff --git a/apps/backoffice/app/(app)/authors/[name]/page.tsx b/apps/backoffice/app/(app)/authors/[name]/page.tsx index 987e6b0..3172c24 100644 --- a/apps/backoffice/app/(app)/authors/[name]/page.tsx +++ b/apps/backoffice/app/(app)/authors/[name]/page.tsx @@ -77,8 +77,8 @@ export default async function AuthorDetailPage({
{authorSeries.map((s) => (
diff --git a/apps/backoffice/app/(app)/books/[id]/page.tsx b/apps/backoffice/app/(app)/books/[id]/page.tsx index 2ccca37..c0f9821 100644 --- a/apps/backoffice/app/(app)/books/[id]/page.tsx +++ b/apps/backoffice/app/(app)/books/[id]/page.tsx @@ -76,10 +76,10 @@ export default async function BookDetailPage({ / )} - {book.series && ( + {book.series && book.series_id && ( <> {book.series} @@ -116,9 +116,9 @@ export default async function BookDetailPage({ {book.author && (

{book.author}

)} - {book.series && ( + {book.series && book.series_id && ( {book.series} diff --git a/apps/backoffice/app/(app)/books/page.tsx b/apps/backoffice/app/(app)/books/page.tsx index 43fc6bb..d731ae8 100644 --- a/apps/backoffice/app/(app)/books/page.tsx +++ b/apps/backoffice/app/(app)/books/page.tsx @@ -134,8 +134,8 @@ export default async function BooksPage({
{seriesHits.map((s) => (
diff --git a/apps/backoffice/app/(app)/downloads/DownloadsPage.tsx b/apps/backoffice/app/(app)/downloads/DownloadsPage.tsx index 70e0bf3..84a9dea 100644 --- a/apps/backoffice/app/(app)/downloads/DownloadsPage.tsx +++ b/apps/backoffice/app/(app)/downloads/DownloadsPage.tsx @@ -7,6 +7,7 @@ import { TorrentDownloadDto, LatestFoundPerLibraryDto } from "@/lib/api"; import { Card, CardContent, CardHeader, CardTitle, Button, Icon } from "@/app/components/ui"; import { QbittorrentProvider, QbittorrentDownloadButton } from "@/app/components/QbittorrentDownloadButton"; import { useTranslation } from "@/lib/i18n/context"; +import { compressVolumes } from "@/lib/volumeRanges"; import type { TranslationKey } from "@/lib/i18n/fr"; type TFunction = (key: TranslationKey, vars?: Record) => string; @@ -260,7 +261,7 @@ function DownloadRow({ dl, onDeleted }: { dl: TorrentDownloadDto; onDeleted: ()
{/* Desktop: single row */}
- {dl.series_name} + {dl.series_name} {statusLabel(dl.status, t)} @@ -275,7 +276,7 @@ function DownloadRow({ dl, onDeleted }: { dl: TorrentDownloadDto; onDeleted: () {/* Mobile: stacked */}
- {dl.series_name} + {dl.series_name} {statusLabel(dl.status, t)} @@ -389,7 +390,7 @@ function AvailableLibraryCard({ lib, onDeleted }: { lib: LatestFoundPerLibraryDt
{r.series_name} @@ -403,11 +404,11 @@ function AvailableLibraryCard({ lib, onDeleted }: { lib: LatestFoundPerLibraryDt {groupReleasesByTitle(r.available_releases).map((group) => (
{/* Title + matched volumes (shown once) */} -
-

{group.title}

-
- {group.items[0].matched_missing_volumes.map(vol => ( - T{vol} +
+

{group.title}

+
+ {compressVolumes(group.items[0].matched_missing_volumes).map(range => ( + {range} ))}
diff --git a/apps/backoffice/app/(app)/jobs/[id]/components/DownloadDetectionCards.tsx b/apps/backoffice/app/(app)/jobs/[id]/components/DownloadDetectionCards.tsx index a8f717b..8a4b2f0 100644 --- a/apps/backoffice/app/(app)/jobs/[id]/components/DownloadDetectionCards.tsx +++ b/apps/backoffice/app/(app)/jobs/[id]/components/DownloadDetectionCards.tsx @@ -3,6 +3,7 @@ import { Card, CardHeader, CardTitle, CardDescription, CardContent, StatBox } fr import { QbittorrentProvider, QbittorrentDownloadButton } from "@/app/components/QbittorrentDownloadButton"; import type { DownloadDetectionReportDto, DownloadDetectionResultDto } from "@/lib/api"; import type { TranslateFunction } from "@/lib/i18n/dictionaries"; +import { compressVolumes } from "@/lib/volumeRanges"; export function DownloadDetectionReportCard({ report, t }: { report: DownloadDetectionReportDto; t: TranslateFunction }) { return ( @@ -69,7 +70,7 @@ export function DownloadDetectionResultsCard({ results, libraryId, qbConfigured,
{libraryId ? ( {r.series_name} @@ -97,10 +98,10 @@ export function DownloadDetectionResultsCard({ results, libraryId, qbConfigured, {(release.size / 1024 / 1024).toFixed(0)} MB -
- {release.matched_missing_volumes.map((vol) => ( - - T.{vol} +
+ {compressVolumes(release.matched_missing_volumes).map((range) => ( + + {range} ))}
diff --git a/apps/backoffice/app/(app)/jobs/[id]/components/MetadataReportCards.tsx b/apps/backoffice/app/(app)/jobs/[id]/components/MetadataReportCards.tsx index d6d513a..1fa15ad 100644 --- a/apps/backoffice/app/(app)/jobs/[id]/components/MetadataReportCards.tsx +++ b/apps/backoffice/app/(app)/jobs/[id]/components/MetadataReportCards.tsx @@ -51,7 +51,7 @@ export function MetadataBatchResultsCard({ results, libraryId, t }: {
{libraryId ? ( {r.series_name} @@ -157,7 +157,7 @@ export function MetadataRefreshChangesCard({ report, libraryId, t }: {
{libraryId ? ( {r.series_name} diff --git a/apps/backoffice/app/(app)/jobs/[id]/components/ReadingStatusReportCards.tsx b/apps/backoffice/app/(app)/jobs/[id]/components/ReadingStatusReportCards.tsx index 9dd861b..230c6c9 100644 --- a/apps/backoffice/app/(app)/jobs/[id]/components/ReadingStatusReportCards.tsx +++ b/apps/backoffice/app/(app)/jobs/[id]/components/ReadingStatusReportCards.tsx @@ -51,7 +51,7 @@ export function ReadingStatusMatchResultsCard({ results, libraryId, t }: {
{libraryId ? ( {r.series_name} @@ -146,7 +146,7 @@ export function ReadingStatusPushResultsCard({ results, libraryId, t }: {
{libraryId ? ( {r.series_name} diff --git a/apps/backoffice/app/(app)/libraries/[id]/series/[name]/page.tsx b/apps/backoffice/app/(app)/libraries/[id]/series/[seriesId]/page.tsx similarity index 92% rename from apps/backoffice/app/(app)/libraries/[id]/series/[name]/page.tsx rename to apps/backoffice/app/(app)/libraries/[id]/series/[seriesId]/page.tsx index 23d030e..2a4d821 100644 --- a/apps/backoffice/app/(app)/libraries/[id]/series/[name]/page.tsx +++ b/apps/backoffice/app/(app)/libraries/[id]/series/[seriesId]/page.tsx @@ -33,28 +33,20 @@ export default async function SeriesDetailPage({ params, searchParams, }: { - params: Promise<{ id: string; name: string }>; + params: Promise<{ id: string; seriesId: string }>; searchParams: Promise<{ [key: string]: string | string[] | undefined }>; }) { - const { id, name } = await params; + const { id, seriesId } = await params; const { t } = await getServerTranslations(); const searchParamsAwaited = await searchParams; const page = typeof searchParamsAwaited.page === "string" ? parseInt(searchParamsAwaited.page) : 1; const limit = typeof searchParamsAwaited.limit === "string" ? parseInt(searchParamsAwaited.limit) : 50; - const seriesName = decodeURIComponent(name); - - const [library, booksPage, seriesMeta, metadataLinks, readingStatusLink, prowlarrConfigured, qbConfigured, metadataProviders] = await Promise.all([ + const [library, seriesMeta, metadataLinks, readingStatusLink, prowlarrConfigured, qbConfigured, metadataProviders] = await Promise.all([ fetchLibraries().then((libs) => libs.find((l) => l.id === id)), - fetchBooks(id, seriesName, page, limit).catch(() => ({ - items: [] as BookDto[], - total: 0, - page: 1, - limit, - })), - fetchSeriesMetadata(id, seriesName).catch(() => null as SeriesMetadataDto | null), - getMetadataLink(id, seriesName).catch(() => [] as ExternalMetadataLinkDto[]), - getReadingStatusLink(id, seriesName).catch(() => null as AnilistSeriesLinkDto | null), + fetchSeriesMetadata(id, seriesId).catch(() => null as SeriesMetadataDto | null), + getMetadataLink(id, seriesId).catch(() => [] as ExternalMetadataLinkDto[]), + getReadingStatusLink(id, seriesId).catch(() => null as AnilistSeriesLinkDto | null), apiFetch<{ api_key?: string }>("/settings/prowlarr") .then(d => !!(d?.api_key?.trim())) .catch(() => false), @@ -64,6 +56,17 @@ export default async function SeriesDetailPage({ apiFetch<{ comicvine?: { api_key?: string } }>("/settings/metadata_providers").catch(() => null), ]); + // Get series name from metadata for display + const seriesName = seriesMeta?.series_name ?? ""; + + // Fetch books using seriesId for the filter query + const booksPage = await fetchBooks(id, seriesId, page, limit).catch(() => ({ + items: [] as BookDto[], + total: 0, + page: 1, + limit, + })); + const hiddenProviders: string[] = []; if (!metadataProviders?.comicvine?.api_key) hiddenProviders.push("comicvine"); @@ -228,12 +231,14 @@ export default async function SeriesDetailPage({
diff --git a/apps/backoffice/app/(app)/libraries/[id]/series/page.tsx b/apps/backoffice/app/(app)/libraries/[id]/series/page.tsx index eadfe56..4bd220c 100644 --- a/apps/backoffice/app/(app)/libraries/[id]/series/page.tsx +++ b/apps/backoffice/app/(app)/libraries/[id]/series/page.tsx @@ -75,8 +75,8 @@ export default async function LibrarySeriesPage({
{series.map((s) => (
= s.book_count ? "opacity-50" : ""}`}> @@ -98,6 +98,7 @@ export default async function LibrarySeriesPage({ {t("series.readCount", { read: String(s.books_read_count), total: String(s.book_count), plural: s.book_count !== 1 ? "s" : "" })}

{series.map((s) => ( -
+
= s.book_count ? "opacity-50" : "" @@ -149,6 +149,7 @@ export default async function SeriesPage({

{/* Link overlay covering the full card — below interactive elements */} diff --git a/apps/backoffice/app/api/anilist/series/[libraryId]/[seriesName]/route.ts b/apps/backoffice/app/api/anilist/series/[libraryId]/[seriesId]/route.ts similarity index 73% rename from apps/backoffice/app/api/anilist/series/[libraryId]/[seriesName]/route.ts rename to apps/backoffice/app/api/anilist/series/[libraryId]/[seriesId]/route.ts index c3180d1..7a269f9 100644 --- a/apps/backoffice/app/api/anilist/series/[libraryId]/[seriesName]/route.ts +++ b/apps/backoffice/app/api/anilist/series/[libraryId]/[seriesId]/route.ts @@ -1,13 +1,13 @@ import { NextResponse, NextRequest } from "next/server"; import { apiFetch } from "@/lib/api"; -type Params = Promise<{ libraryId: string; seriesName: string }>; +type Params = Promise<{ libraryId: string; seriesId: string }>; export async function GET(request: NextRequest, { params }: { params: Params }) { try { - const { libraryId, seriesName } = await params; + const { libraryId, seriesId } = await params; const data = await apiFetch( - `/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}`, + `/anilist/series/${libraryId}/${seriesId}`, ); return NextResponse.json(data); } catch (error) { @@ -18,10 +18,10 @@ export async function GET(request: NextRequest, { params }: { params: Params }) export async function POST(request: NextRequest, { params }: { params: Params }) { try { - const { libraryId, seriesName } = await params; + const { libraryId, seriesId } = await params; const body = await request.json(); const data = await apiFetch( - `/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}/link`, + `/anilist/series/${libraryId}/${seriesId}/link`, { method: "POST", body: JSON.stringify(body) }, ); return NextResponse.json(data); @@ -33,9 +33,9 @@ export async function POST(request: NextRequest, { params }: { params: Params }) export async function DELETE(request: NextRequest, { params }: { params: Params }) { try { - const { libraryId, seriesName } = await params; + const { libraryId, seriesId } = await params; const data = await apiFetch( - `/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}/unlink`, + `/anilist/series/${libraryId}/${seriesId}/unlink`, { method: "DELETE" }, ); return NextResponse.json(data); diff --git a/apps/backoffice/app/api/libraries/[id]/series/[name]/route.ts b/apps/backoffice/app/api/libraries/[id]/series/[name]/route.ts deleted file mode 100644 index 616949e..0000000 --- a/apps/backoffice/app/api/libraries/[id]/series/[name]/route.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NextRequest, NextResponse } from "next/server"; -import { updateSeries } from "@/lib/api"; - -export async function PATCH( - request: NextRequest, - { params }: { params: Promise<{ id: string; name: string }> } -) { - const { id, name } = await params; - try { - const body = await request.json(); - const data = await updateSeries(id, name, body); - return NextResponse.json(data); - } catch (error) { - const message = error instanceof Error ? error.message : "Failed to update series"; - return NextResponse.json({ error: message }, { status: 500 }); - } -} diff --git a/apps/backoffice/app/api/libraries/[id]/series/[name]/metadata/route.ts b/apps/backoffice/app/api/libraries/[id]/series/[seriesId]/metadata/route.ts similarity index 70% rename from apps/backoffice/app/api/libraries/[id]/series/[name]/metadata/route.ts rename to apps/backoffice/app/api/libraries/[id]/series/[seriesId]/metadata/route.ts index d46fe37..9bf16d2 100644 --- a/apps/backoffice/app/api/libraries/[id]/series/[name]/metadata/route.ts +++ b/apps/backoffice/app/api/libraries/[id]/series/[seriesId]/metadata/route.ts @@ -3,11 +3,11 @@ import { fetchSeriesMetadata } from "@/lib/api"; export async function GET( _request: NextRequest, - { params }: { params: Promise<{ id: string; name: string }> } + { params }: { params: Promise<{ id: string; seriesId: string }> } ) { - const { id, name } = await params; + const { id, seriesId } = await params; try { - const data = await fetchSeriesMetadata(id, name); + const data = await fetchSeriesMetadata(id, seriesId); return NextResponse.json(data); } catch (error) { const message = error instanceof Error ? error.message : "Failed to fetch series metadata"; diff --git a/apps/backoffice/app/api/libraries/[id]/series/[seriesId]/route.ts b/apps/backoffice/app/api/libraries/[id]/series/[seriesId]/route.ts new file mode 100644 index 0000000..e8824bb --- /dev/null +++ b/apps/backoffice/app/api/libraries/[id]/series/[seriesId]/route.ts @@ -0,0 +1,31 @@ +import { NextRequest, NextResponse } from "next/server"; +import { updateSeries, deleteSeries } from "@/lib/api"; + +export async function PATCH( + request: NextRequest, + { params }: { params: Promise<{ id: string; seriesId: string }> } +) { + const { id, seriesId } = await params; + try { + const body = await request.json(); + const data = await updateSeries(id, seriesId, body); + return NextResponse.json(data); + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to update series"; + return NextResponse.json({ error: message }, { status: 500 }); + } +} + +export async function DELETE( + _request: NextRequest, + { params }: { params: Promise<{ id: string; seriesId: string }> } +) { + const { id, seriesId } = await params; + try { + await deleteSeries(id, seriesId); + return NextResponse.json({ deleted: true }); + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to delete series"; + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/apps/backoffice/app/components/DeleteSeriesButton.tsx b/apps/backoffice/app/components/DeleteSeriesButton.tsx index ed89249..b4cb69a 100644 --- a/apps/backoffice/app/components/DeleteSeriesButton.tsx +++ b/apps/backoffice/app/components/DeleteSeriesButton.tsx @@ -5,7 +5,7 @@ import { useRouter } from "next/navigation"; import { Button, Icon, Modal } from "./ui"; import { useTranslation } from "@/lib/i18n/context"; -export function DeleteSeriesButton({ libraryId, seriesName }: { libraryId: string; seriesName: string }) { +export function DeleteSeriesButton({ libraryId, seriesId }: { libraryId: string; seriesId: string }) { const { t } = useTranslation(); const router = useRouter(); const [showConfirm, setShowConfirm] = useState(false); @@ -16,7 +16,7 @@ export function DeleteSeriesButton({ libraryId, seriesName }: { libraryId: strin setShowConfirm(false); try { const resp = await fetch( - `/api/libraries/${libraryId}/series/${encodeURIComponent(seriesName)}`, + `/api/libraries/${libraryId}/series/${seriesId}`, { method: "DELETE" } ); if (resp.ok) { diff --git a/apps/backoffice/app/components/EditSeriesForm.tsx b/apps/backoffice/app/components/EditSeriesForm.tsx index 56a9988..8b574e4 100644 --- a/apps/backoffice/app/components/EditSeriesForm.tsx +++ b/apps/backoffice/app/components/EditSeriesForm.tsx @@ -44,6 +44,7 @@ const SERIES_STATUS_VALUES = ["", "ongoing", "ended", "hiatus", "cancelled", "up interface EditSeriesFormProps { libraryId: string; + seriesId: string; seriesName: string; currentAuthors: string[]; currentPublishers: string[]; @@ -58,6 +59,7 @@ interface EditSeriesFormProps { export function EditSeriesForm({ libraryId, + seriesId, seriesName, currentAuthors, currentPublishers, @@ -199,7 +201,7 @@ export function EditSeriesForm({ } const res = await fetch( - `/api/libraries/${libraryId}/series/${encodeURIComponent(seriesName)}`, + `/api/libraries/${libraryId}/series/${seriesId}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, @@ -212,12 +214,7 @@ export function EditSeriesForm({ return; } setIsOpen(false); - - if (effectiveName !== seriesName) { - router.push(`/libraries/${libraryId}/series/${encodeURIComponent(effectiveName)}` as any); - } else { - router.refresh(); - } + router.refresh(); } catch { setError(t("common.networkError")); } diff --git a/apps/backoffice/app/components/MarkSeriesReadButton.tsx b/apps/backoffice/app/components/MarkSeriesReadButton.tsx index ef8c5cc..9402e6b 100644 --- a/apps/backoffice/app/components/MarkSeriesReadButton.tsx +++ b/apps/backoffice/app/components/MarkSeriesReadButton.tsx @@ -5,12 +5,13 @@ import { useRouter } from "next/navigation"; import { useTranslation } from "../../lib/i18n/context"; interface MarkSeriesReadButtonProps { + seriesId: string; seriesName: string; bookCount: number; booksReadCount: number; } -export function MarkSeriesReadButton({ seriesName, bookCount, booksReadCount }: MarkSeriesReadButtonProps) { +export function MarkSeriesReadButton({ seriesId, seriesName, bookCount, booksReadCount }: MarkSeriesReadButtonProps) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const router = useRouter(); @@ -27,7 +28,7 @@ export function MarkSeriesReadButton({ seriesName, bookCount, booksReadCount }: const res = await fetch("/api/series/mark-read", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ series: seriesName, status: targetStatus }), + body: JSON.stringify({ series: seriesId, status: targetStatus }), }); if (!res.ok) { const body = await res.json().catch(() => ({ error: res.statusText })); diff --git a/apps/backoffice/app/components/ProwlarrSearchModal.tsx b/apps/backoffice/app/components/ProwlarrSearchModal.tsx index 7455b9d..7896f9f 100644 --- a/apps/backoffice/app/components/ProwlarrSearchModal.tsx +++ b/apps/backoffice/app/components/ProwlarrSearchModal.tsx @@ -6,6 +6,7 @@ import { Icon } from "./ui"; import type { ProwlarrRelease, ProwlarrSearchResponse } from "../../lib/api"; import { useTranslation } from "../../lib/i18n/context"; import { QbittorrentProvider, QbittorrentDownloadButton } from "./QbittorrentDownloadButton"; +import { compressVolumes } from "@/lib/volumeRanges"; interface MissingBookItem { title: string | null; @@ -251,9 +252,9 @@ export function ProwlarrSearchModal({ seriesName, libraryId, missingBooks, initi {hasMissing && (
- {first.matchedMissingVolumes!.map((vol) => ( - - {t("prowlarr.missingVol", { vol })} + {compressVolumes(first.matchedMissingVolumes!).map((range) => ( + + {range} ))}
diff --git a/apps/backoffice/app/components/ReadingStatusModal.tsx b/apps/backoffice/app/components/ReadingStatusModal.tsx index a5c0eeb..fd6f56f 100644 --- a/apps/backoffice/app/components/ReadingStatusModal.tsx +++ b/apps/backoffice/app/components/ReadingStatusModal.tsx @@ -9,6 +9,7 @@ import type { AnilistMediaResultDto, AnilistSeriesLinkDto } from "../../lib/api" interface ReadingStatusModalProps { libraryId: string; + seriesId: string; seriesName: string; readingStatusProvider: string | null; existingLink: AnilistSeriesLinkDto | null; @@ -18,6 +19,7 @@ type ModalStep = "idle" | "searching" | "results" | "linked"; export function ReadingStatusModal({ libraryId, + seriesId, seriesName, readingStatusProvider, existingLink, @@ -67,7 +69,7 @@ export function ReadingStatusModal({ setError(null); try { const resp = await fetch( - `/api/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}`, + `/api/anilist/series/${libraryId}/${seriesId}`, { method: "POST", headers: { "Content-Type": "application/json" }, @@ -91,7 +93,7 @@ export function ReadingStatusModal({ setError(null); try { const resp = await fetch( - `/api/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}`, + `/api/anilist/series/${libraryId}/${seriesId}`, { method: "DELETE" } ); if (!resp.ok) throw new Error("Unlink failed"); diff --git a/apps/backoffice/lib/api.ts b/apps/backoffice/lib/api.ts index f47a109..3b9b248 100644 --- a/apps/backoffice/lib/api.ts +++ b/apps/backoffice/lib/api.ts @@ -97,6 +97,7 @@ export type BookDto = { reading_status: ReadingStatus; reading_current_page: number | null; reading_last_read_at: string | null; + series_id: string | null; summary: string | null; isbn: string | null; publish_date: string | null; @@ -122,6 +123,7 @@ export type SearchHitDto = { }; export type SeriesHitDto = { + series_id: string; library_id: string; name: string; book_count: number; @@ -137,6 +139,7 @@ export type SearchResponseDto = { }; export type SeriesDto = { + series_id: string; name: string; book_count: number; books_read_count: number; @@ -802,6 +805,7 @@ export async function updateBook(bookId: string, data: UpdateBookRequest) { } export type SeriesMetadataDto = { + series_name: string; authors: string[]; description: string | null; publishers: string[]; @@ -813,9 +817,9 @@ export type SeriesMetadataDto = { locked_fields: Record; }; -export async function fetchSeriesMetadata(libraryId: string, seriesName: string) { +export async function fetchSeriesMetadata(libraryId: string, seriesId: string) { return apiFetch( - `/libraries/${libraryId}/series/${encodeURIComponent(seriesName)}/metadata` + `/libraries/${libraryId}/series/${seriesId}/metadata` ); } @@ -831,17 +835,23 @@ export type UpdateSeriesRequest = { locked_fields?: Record; }; -export async function updateSeries(libraryId: string, seriesName: string, data: UpdateSeriesRequest) { - return apiFetch<{ updated: number }>(`/libraries/${libraryId}/series/${encodeURIComponent(seriesName)}`, { +export async function updateSeries(libraryId: string, seriesId: string, data: UpdateSeriesRequest) { + return apiFetch<{ updated: number }>(`/libraries/${libraryId}/series/${seriesId}`, { method: "PATCH", body: JSON.stringify(data), }); } -export async function markSeriesRead(seriesName: string, status: "read" | "unread" = "read") { +export async function deleteSeries(libraryId: string, seriesId: string) { + return apiFetch(`/libraries/${libraryId}/series/${seriesId}`, { + method: "DELETE", + }); +} + +export async function markSeriesRead(seriesId: string, status: "read" | "unread" = "read") { return apiFetch<{ updated: number }>("/series/mark-read", { method: "POST", - body: JSON.stringify({ series: seriesName, status }), + body: JSON.stringify({ series: seriesId, status }), }); } @@ -1003,16 +1013,16 @@ export async function rejectMetadataMatch(id: string) { }); } -export async function getMetadataLink(libraryId: string, seriesName: string) { +export async function getMetadataLink(libraryId: string, seriesId: string) { const params = new URLSearchParams(); params.set("library_id", libraryId); - params.set("series_name", seriesName); + params.set("series_id", seriesId); return apiFetch(`/metadata/links?${params.toString()}`); } -export async function getReadingStatusLink(libraryId: string, seriesName: string) { +export async function getReadingStatusLink(libraryId: string, seriesId: string) { return apiFetch( - `/anilist/series/${libraryId}/${encodeURIComponent(seriesName)}` + `/anilist/series/${libraryId}/${seriesId}` ); } @@ -1052,6 +1062,7 @@ export type MetadataBatchReportDto = { export type MetadataBatchResultDto = { id: string; + series_id?: string; series_name: string; status: string; provider_used: string | null; @@ -1097,6 +1108,7 @@ export type ReadingStatusMatchReportDto = { export type ReadingStatusMatchResultDto = { id: string; + series_id?: string; series_name: string; status: "linked" | "already_linked" | "no_results" | "ambiguous" | "error"; anilist_id: number | null; @@ -1132,6 +1144,7 @@ export type ReadingStatusPushReportDto = { export type ReadingStatusPushResultDto = { id: string; + series_id?: string; series_name: string; status: "pushed" | "skipped" | "no_books" | "error"; anilist_id: number | null; @@ -1180,6 +1193,7 @@ export type DownloadDetectionReportDto = { export type DownloadDetectionResultDto = { id: string; + series_id?: string; series_name: string; status: "found" | "not_found" | "no_missing" | "no_metadata" | "error"; missing_count: number; @@ -1189,6 +1203,7 @@ export type DownloadDetectionResultDto = { export type AvailableDownloadDto = { id: string; + series_id?: string; series_name: string; missing_count: number; available_releases: AvailableReleaseDto[] | null; @@ -1226,6 +1241,7 @@ export type RefreshBookDiff = { }; export type RefreshSeriesResult = { + series_id?: string; series_name: string; provider: string; status: string; // "updated" | "unchanged" | "error" @@ -1306,6 +1322,7 @@ export type QBittorrentAddResponse = { export type TorrentDownloadDto = { id: string; library_id: string; + series_id?: string; series_name: string; expected_volumes: number[]; qb_hash: string | null; diff --git a/apps/backoffice/lib/volumeRanges.ts b/apps/backoffice/lib/volumeRanges.ts new file mode 100644 index 0000000..643855d --- /dev/null +++ b/apps/backoffice/lib/volumeRanges.ts @@ -0,0 +1,25 @@ +/** + * Compress a sorted list of volume numbers into ranges. + * e.g. [1,2,3,5,7,8,9] → ["1→3", "5", "7→9"] + */ +export function compressVolumes(volumes: number[]): string[] { + if (volumes.length === 0) return []; + + const sorted = [...volumes].sort((a, b) => a - b); + const ranges: string[] = []; + let start = sorted[0]; + let end = sorted[0]; + + for (let i = 1; i < sorted.length; i++) { + if (sorted[i] === end + 1) { + end = sorted[i]; + } else { + ranges.push(start === end ? `T${start}` : `T${start}→${end}`); + start = sorted[i]; + end = sorted[i]; + } + } + ranges.push(start === end ? `T${start}` : `T${start}→${end}`); + + return ranges; +} diff --git a/apps/backoffice/next-env.d.ts b/apps/backoffice/next-env.d.ts index c4b7818..9edff1c 100644 --- a/apps/backoffice/next-env.d.ts +++ b/apps/backoffice/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/backoffice/tsconfig.tsbuildinfo b/apps/backoffice/tsconfig.tsbuildinfo index 5a9ab3d..6ce0208 100644 --- a/apps/backoffice/tsconfig.tsbuildinfo +++ b/apps/backoffice/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/entry-constants.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/lib/bundler.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","./node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/debug-channel.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/client/components/readonly-url-search-params.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/app-router-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/ppr-navigations.d.ts","./node_modules/next/dist/client/components/segment-cache/types.d.ts","./node_modules/next/dist/client/components/segment-cache/navigation.d.ts","./node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/server/route-modules/pages/builtin/_error.d.ts","./node_modules/next/dist/server/load-default-error-components.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/staged-rendering.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/@types/react/compiler-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/create-error-handler.d.ts","./node_modules/next/dist/shared/lib/action-revalidation-kind.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/shared/lib/size-limit.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/build/adapter/build-complete.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./.next/types/routes.d.ts","./next-env.d.ts","./lib/api.ts","./app/api/books/[bookid]/route.ts","./app/api/books/[bookid]/convert/route.ts","./app/api/books/[bookid]/pages/[pagenum]/route.ts","./app/api/books/[bookid]/progress/route.ts","./app/api/books/[bookid]/thumbnail/route.ts","./app/api/folders/route.ts","./app/api/jobs/[id]/route.ts","./app/api/jobs/[id]/cancel/route.ts","./app/api/jobs/[id]/stream/route.ts","./app/api/jobs/active/route.ts","./app/api/jobs/stream/route.ts","./app/api/komga/reports/route.ts","./app/api/komga/reports/[id]/route.ts","./app/api/komga/sync/route.ts","./app/api/libraries/[id]/metadata-provider/route.ts","./app/api/libraries/[id]/monitoring/route.ts","./app/api/libraries/[id]/series/[name]/route.ts","./app/api/libraries/[id]/series/[name]/metadata/route.ts","./app/api/metadata/approve/route.ts","./app/api/metadata/batch/route.ts","./app/api/metadata/batch/report/route.ts","./app/api/metadata/batch/results/route.ts","./app/api/metadata/links/route.ts","./app/api/metadata/match/route.ts","./app/api/metadata/missing/route.ts","./app/api/metadata/refresh/route.ts","./app/api/metadata/refresh/report/route.ts","./app/api/metadata/reject/route.ts","./app/api/metadata/search/route.ts","./app/api/series/mark-read/route.ts","./app/api/series/provider-statuses/route.ts","./app/api/series/statuses/route.ts","./app/api/settings/[key]/route.ts","./app/api/settings/cache/clear/route.ts","./app/api/settings/cache/stats/route.ts","./app/api/settings/status-mappings/route.ts","./app/api/settings/status-mappings/[id]/route.ts","./app/components/ui/card.tsx","./lib/i18n/types.ts","./lib/i18n/fr.ts","./lib/i18n/en.ts","./lib/i18n/dictionaries.ts","./lib/i18n/context.tsx","./app/components/ui/badge.tsx","./app/components/ui/statbox.tsx","./app/components/ui/progressbar.tsx","./app/components/ui/button.tsx","./app/components/ui/input.tsx","./app/components/ui/form.tsx","./app/components/ui/icon.tsx","./app/components/ui/pagination.tsx","./app/components/ui/index.ts","./app/health/route.ts","./lib/i18n/server.ts","./lib/i18n/index.ts","./node_modules/next-themes/dist/index.d.ts","./app/theme-provider.tsx","./app/theme-toggle.tsx","./app/components/jobsindicator.tsx","./app/components/mobilenav.tsx","./app/layout.tsx","./app/page.tsx","./app/components/bookcard.tsx","./app/components/livesearchform.tsx","./app/books/page.tsx","./app/components/bookpreview.tsx","./app/components/convertbutton.tsx","./app/components/markbookreadbutton.tsx","./app/components/editbookform.tsx","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/tokenizer.d.ts","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/parser.d.ts","./node_modules/domelementtype/lib/esm/index.d.ts","./node_modules/domhandler/lib/esm/node.d.ts","./node_modules/domhandler/lib/esm/index.d.ts","./node_modules/dom-serializer/lib/esm/index.d.ts","./node_modules/domutils/lib/esm/stringify.d.ts","./node_modules/domutils/lib/esm/traversal.d.ts","./node_modules/domutils/lib/esm/manipulation.d.ts","./node_modules/domutils/lib/esm/querying.d.ts","./node_modules/domutils/lib/esm/legacy.d.ts","./node_modules/domutils/lib/esm/helpers.d.ts","./node_modules/domutils/lib/esm/feeds.d.ts","./node_modules/domutils/lib/esm/index.d.ts","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/index.d.ts","./node_modules/@types/sanitize-html/index.d.ts","./app/components/safehtml.tsx","./app/books/[id]/page.tsx","./app/components/editseriesform.tsx","./app/components/folderbrowser.tsx","./app/components/folderpicker.tsx","./app/components/jobprogress.tsx","./app/components/jobrow.tsx","./app/components/jobslist.tsx","./app/components/providericon.tsx","./app/components/libraryactions.tsx","./app/components/libraryform.tsx","./app/components/librarysubpageheader.tsx","./app/components/markseriesreadbutton.tsx","./app/components/metadatasearchmodal.tsx","./app/components/monitoringform.tsx","./app/components/seriesfilters.tsx","./app/jobs/page.tsx","./app/jobs/[id]/page.tsx","./app/libraries/page.tsx","./app/libraries/[id]/books/page.tsx","./app/libraries/[id]/series/page.tsx","./app/libraries/[id]/series/[name]/page.tsx","./app/series/page.tsx","./app/settings/settingspage.tsx","./app/settings/page.tsx","./app/tokens/page.tsx","./node_modules/next/dist/client/form-shared.d.ts","./node_modules/next/dist/client/form.d.ts","./.next/types/link.d.ts","./.next/types/validator.ts","./.next/dev/types/cache-life.d.ts","./.next/dev/types/link.d.ts","./.next/dev/types/routes.d.ts","./.next/dev/types/validator.ts"],"fileIdsList":[[74,116,434,435,436,437,600,603],[62,74,116,159,289,397,455,465,481,599,600],[74,116,600,603],[74,116,244,478,481,489,491,492,493,494,495,497,502,519,520,521,539,547,548,551,573,588,589,590,591,592,596,597,600,603,604],[62,74,116,159,289,397,455,465,481,599,603],[74,116,244,478,481,484,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,519,520,521,539,547,548,551,573,588,589,590,591,592,593,594,596,597,600,603],[74,116,244,478,486,600,603],[74,116,244,454,486,540,552,553,554,555,572,600,603],[74,116,244,454,486,538,540,549,550,600,603],[62,74,116,244,454,486,529,600,603],[62,74,116,244,454,529,600,603],[62,74,116,244,529,538,600,603],[62,74,116,169,171,244,486,529,535,600,603],[62,74,116,169,171,244,529,535,600,603],[62,74,116,244,486,529,600,603],[62,74,116,244,486,529,538,575,600,603],[62,74,116,244,529,538,577,600,603],[62,74,116,169,171,244,529,530,532,600,603],[62,74,116,244,529,578,600,603],[62,74,116,244,529,538,580,600,603],[62,74,116,244,486,529,538,576,600,603],[74,116,244,538,540,600,603],[62,74,116,244,529,600,603],[62,74,116,169,171,244,486,529,538,580,600,603],[62,74,116,169,171,244,529,538,600,603],[74,116,244,600,603],[62,74,116,244,571,600,603],[62,74,116,244,600,603],[74,116,244,524,530,531,532,533,534,535,536,537,600,603],[74,116,244,529,533,600,603],[74,116,244,486,538,540,600,603],[74,116,244,486,538,540,579,600,602,603],[62,74,116,244,454,526,529,538,540,543,544,545,546,600,603],[74,116,244,486,538,540,549,583,600,603],[74,116,244,454,486,538,540,549,554,572,574,584,585,600,603],[74,116,244,454,486,538,540,583,584,587,600,603],[74,116,244,486,538,540,581,582,600,602,603],[62,74,116,244,486,528,538,540,600,603],[74,116,244,454,486,538,540,550,580,584,600,603],[74,116,244,486,595,600,603],[62,74,116,244,486,525,529,538,580,600,603],[62,74,116,244,542,600,603],[74,116,244,486,538,540,600,602,603],[62,74,116,244,525,528,600,603],[74,116,244,525,526,527,600,603],[74,116,244,526,600,603],[74,116,244,525,526,528,529,540,600,603],[74,116,244,450,525,528,600,603],[74,116,482,483,484,600,603],[74,113,116,600,603],[74,115,116,600,603],[116,600,603],[74,116,121,151,600,603],[74,116,117,122,128,129,136,148,159,600,603],[74,116,117,118,128,136,600,603],[69,70,71,74,116,600,603],[74,116,119,160,600,603],[74,116,120,121,129,137,600,603],[74,116,121,148,156,600,603],[74,116,122,124,128,136,600,603],[74,115,116,123,600,603],[74,116,124,125,600,603],[74,116,128,600,603],[74,116,126,128,600,603],[74,115,116,128,600,603],[74,116,128,129,130,148,159,600,603],[74,116,128,129,130,143,148,151,600,603],[74,111,116,164,600,603],[74,111,116,124,128,131,136,148,159,600,603],[74,116,128,129,131,132,136,148,156,159,600,603],[74,116,131,133,148,156,159,600,603],[72,73,74,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,600,603],[74,116,128,134,600,603],[74,116,135,159,600,603],[74,116,124,128,136,148,600,603],[74,116,137,600,603],[74,116,138,600,603],[74,115,116,139,600,603],[74,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,600,603],[74,116,141,600,603],[74,116,142,600,603],[74,116,128,143,144,600,603],[74,116,143,145,160,162,600,603],[74,116,128,148,149,151,600,603],[74,116,150,151,600,603],[74,116,148,149,600,603],[74,116,151,600,603],[74,116,152,600,603],[74,113,116,148,600,603],[74,116,128,154,155,600,603],[74,116,154,155,600,603],[74,116,121,136,148,156,600,603],[74,116,157,600,603],[74,116,136,158,600,603],[74,116,131,142,159,600,603],[74,116,121,160,600,603],[74,116,148,161,600,603],[74,116,135,162,600,603],[74,116,163,600,603],[74,116,121,128,130,139,148,159,162,164,600,603],[74,116,148,165,600,603],[62,74,116,169,171,600,603],[62,74,116,600,603],[62,66,74,116,167,168,169,170,429,475,600,603],[62,74,116,387,600,603],[62,66,74,116,168,171,429,475,600,603],[62,66,74,116,167,171,429,475,600,603],[60,61,74,116,600,603],[74,116,570,600,603],[74,116,556,557,558,560,569,600,603],[74,116,556,600,603],[74,116,560,600,603],[74,116,559,600,603],[74,116,558,600,603],[74,116,560,562,563,564,565,566,567,568,600,603],[74,116,558,560,600,603],[74,116,560,561,600,603],[74,116,432,600,603],[74,116,176,178,182,193,383,412,425,600,603],[74,116,178,188,189,190,192,425,600,603],[74,116,178,225,227,229,230,233,425,427,600,603],[74,116,178,182,184,185,186,216,311,383,402,403,411,425,427,600,603],[74,116,425,600,603],[74,116,189,281,391,400,420,600,603],[74,116,178,600,603],[74,116,172,281,420,600,603],[74,116,235,600,603],[74,116,234,425,600,603],[74,116,131,381,391,480,600,603],[74,116,131,349,361,400,419,600,603],[74,116,131,292,600,603],[74,116,405,600,603],[74,116,404,405,406,600,603],[74,116,404,600,603],[68,74,116,131,172,178,182,185,187,189,193,194,207,208,235,311,322,401,412,425,429,600,603],[74,116,176,178,191,225,226,231,232,425,480,600,603],[74,116,191,480,600,603],[74,116,176,208,336,425,480,600,603],[74,116,480,600,603],[74,116,178,191,192,480,600,603],[74,116,228,480,600,603],[74,116,194,402,410,600,603],[74,116,142,244,420,600,603],[74,116,244,420,600,603],[62,74,116,353,600,603],[74,116,279,289,290,420,457,464,600,603],[74,116,278,397,458,459,460,461,463,600,603],[74,116,396,600,603],[74,116,396,397,600,603],[74,116,216,281,282,286,600,603],[74,116,281,600,603],[74,116,281,285,287,600,603],[74,116,281,282,283,284,600,603],[74,116,462,600,603],[62,74,116,598,600,603],[62,74,116,179,451,600,603],[62,74,116,159,600,603],[62,74,116,191,271,600,603],[62,74,116,191,412,600,603],[74,116,269,273,600,603],[62,74,116,270,431,600,603],[62,66,74,116,131,166,167,168,171,429,473,474,600,603],[74,116,131,600,603],[74,116,131,182,215,267,312,333,335,407,408,412,425,426,600,603],[74,116,207,409,600,603],[74,116,429,600,603],[74,116,177,600,603],[62,74,116,338,351,360,370,372,419,600,603],[74,116,142,338,351,369,370,371,419,479,600,603],[74,116,363,364,365,366,367,368,600,603],[74,116,365,600,603],[74,116,369,600,603],[74,116,242,243,244,246,600,603],[62,74,116,236,237,238,239,245,600,603],[74,116,242,245,600,603],[74,116,240,600,603],[74,116,241,600,603],[62,74,116,244,270,431,600,603],[62,74,116,244,430,431,600,603],[62,74,116,244,431,600,603],[74,116,312,414,600,603],[74,116,414,600,603],[74,116,131,426,431,600,603],[74,116,357,600,603],[74,115,116,356,600,603],[74,116,217,281,298,335,344,347,349,350,390,419,422,426,600,603],[74,116,263,281,378,600,603],[74,116,349,419,600,603],[62,74,116,349,354,355,357,358,359,360,361,362,373,374,375,376,377,379,380,419,420,480,600,603],[74,116,343,600,603],[74,116,131,142,179,215,218,239,264,265,312,322,333,334,390,413,425,426,427,429,480,600,603],[74,116,419,600,603],[74,115,116,189,265,322,346,413,415,416,417,418,426,600,603],[74,116,349,600,603],[74,115,116,215,252,298,339,340,341,342,343,344,345,347,348,419,420,600,603],[74,116,131,252,253,339,426,427,600,603],[74,116,189,312,322,335,413,419,426,600,603],[74,116,131,425,427,600,603],[74,116,131,148,422,426,427,600,603],[74,116,131,142,159,172,182,191,217,218,220,249,254,259,263,264,265,267,296,298,300,303,305,308,309,310,311,333,335,412,413,420,422,425,426,427,600,603],[74,116,131,148,600,603],[74,116,178,179,180,187,422,423,424,429,431,480,600,603],[74,116,176,425,600,603],[74,116,248,600,603],[74,116,131,148,159,210,233,235,236,237,238,239,246,247,480,600,603],[74,116,142,159,172,210,225,258,259,260,296,297,298,303,311,312,318,321,323,333,335,413,420,422,425,600,603],[74,116,187,194,207,311,322,413,425,600,603],[74,116,131,159,179,182,298,316,422,425,600,603],[74,116,337,600,603],[74,116,131,248,319,320,330,600,603],[74,116,422,425,600,603],[74,116,344,346,600,603],[74,116,265,298,412,431,600,603],[74,116,131,142,221,225,297,303,318,321,325,422,600,603],[74,116,131,194,207,225,326,600,603],[74,116,178,220,328,412,425,600,603],[74,116,131,159,239,425,600,603],[74,116,131,191,219,220,221,230,248,327,329,412,425,600,603],[68,74,116,131,265,332,429,431,600,603],[74,116,295,333,600,603],[74,116,131,142,159,182,193,194,207,217,218,254,258,259,260,264,296,297,298,300,312,313,315,317,333,335,412,413,420,421,422,431,600,603],[74,116,131,148,194,318,324,330,422,600,603],[74,116,197,198,199,200,201,202,203,204,205,206,600,603],[74,116,249,304,600,603],[74,116,306,600,603],[74,116,304,600,603],[74,116,306,307,600,603],[74,116,131,182,185,215,216,426,600,603],[74,116,131,142,177,179,217,263,264,265,266,294,333,422,427,429,431,600,603],[74,116,131,142,159,181,216,266,298,344,413,421,426,600,603],[74,116,339,600,603],[74,116,340,600,603],[74,116,281,311,390,600,603],[74,116,341,600,603],[74,116,209,213,600,603],[74,116,131,182,209,217,600,603],[74,116,212,213,600,603],[74,116,214,600,603],[74,116,209,210,600,603],[74,116,209,261,600,603],[74,116,209,600,603],[74,116,249,302,421,600,603],[74,116,301,600,603],[74,116,210,420,421,600,603],[74,116,299,421,600,603],[74,116,210,420,600,603],[74,116,390,600,603],[74,116,182,211,217,265,281,298,332,335,338,344,351,352,382,383,386,389,412,422,426,600,603],[74,116,274,277,279,280,289,290,600,603],[62,74,116,169,171,244,384,385,600,603],[62,74,116,169,171,244,384,385,388,600,603],[74,116,399,600,603],[74,116,189,253,265,332,335,349,357,361,392,393,394,395,397,398,401,412,419,425,600,603],[74,116,289,600,603],[74,116,131,294,600,603],[74,116,294,600,603],[74,116,131,217,262,267,291,293,332,422,429,431,600,603],[74,116,274,275,276,277,279,280,289,290,430,600,603],[68,74,116,131,142,159,209,210,218,264,265,298,330,331,333,412,413,422,425,426,429,600,603],[74,116,253,255,258,413,600,603],[74,116,131,249,425,600,603],[74,116,252,349,600,603],[74,116,251,600,603],[74,116,253,254,600,603],[74,116,250,252,425,600,603],[74,116,131,181,253,255,256,257,425,426,600,603],[62,74,116,281,288,420,600,603],[74,116,174,175,600,603],[62,74,116,179,600,603],[62,74,116,278,420,600,603],[62,68,74,116,264,265,429,431,600,603],[74,116,179,451,452,600,603],[62,74,116,273,600,603],[62,74,116,142,159,177,232,268,270,272,431,600,603],[74,116,191,420,426,600,603],[74,116,314,420,600,603],[62,74,116,129,131,142,176,177,227,273,429,430,600,603],[62,74,116,167,168,171,429,475,600,603],[62,63,64,65,66,74,116,600,603],[74,116,121,600,603],[74,116,222,223,224,600,603],[74,116,222,600,603],[62,66,74,116,131,133,142,166,167,168,169,171,172,177,218,325,369,427,428,431,475,600,603],[74,116,439,600,603],[74,116,441,600,603],[74,116,443,600,603],[74,116,445,600,603],[74,116,447,448,449,600,603],[74,116,453,600,603],[67,74,116,433,438,440,442,444,446,450,454,456,466,467,469,478,479,480,481,600,603],[74,116,455,600,603],[74,116,465,600,603],[74,116,270,600,603],[74,116,468,600,603],[74,115,116,253,255,256,258,470,471,472,475,476,477,600,603],[74,116,166,600,603],[74,116,148,166,600,603],[74,83,87,116,159,600,603],[74,83,116,148,159,600,603],[74,78,116,600,603],[74,80,83,116,156,159,600,603],[74,116,136,156,600,603],[74,78,116,166,600,603],[74,80,83,116,136,159,600,603],[74,75,76,79,82,116,128,148,159,600,603],[74,83,90,116,600,603],[74,75,81,116,600,603],[74,83,104,105,116,600,603],[74,79,83,116,151,159,166,600,603],[74,104,116,166,600,603],[74,77,78,116,166,600,603],[74,83,116,600,603],[74,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,105,106,107,108,109,110,116,600,603],[74,83,98,116,600,603],[74,83,90,91,116,600,603],[74,81,83,91,92,116,600,603],[74,82,116,600,603],[74,75,78,83,116,600,603],[74,83,87,91,92,116,600,603],[74,87,116,600,603],[74,81,83,86,116,159,600,603],[74,75,80,83,90,116,600,603],[74,116,148,600,603],[74,78,83,104,116,164,166,600,603]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"9d37372c385ea35087857d10afe0ae636503035feee2f742c4031c3658b17d80","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fa51737611c21ba3a5ac02c4e1535741d58bec67c9bdf94b1837a31c97a2263","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0539c58717cbc8b73acb29f9e992ab5ff20adba5f9b57130691c7f9b186a4d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"f9677e434b7a3b14f0a9367f9dfa1227dfe3ee661792d0085523c3191ae6a1a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"9057f224b79846e3a95baf6dad2c8103278de2b0c5eebda23fc8188171ad2398","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fb11e675f5cc648bc6c344e1311e36b8dfffea8bffe575bedc0e41af77eca99","impliedFormat":1},{"version":"1e289f30a48126935a5d408a91129a13a59c9b0f8c007a816f9f16ef821e144e","impliedFormat":1},{"version":"f96a023e442f02cf551b4cfe435805ccb0a7e13c81619d4da61ec835d03fe512","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"f579f267a2f4c2278cca2ec84613e95059368b503ce96586972d304e5e40125b","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f6f1d54779d0b9ed152b0516b0958cd34889764c1190434bbf18e7a8bb884cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"f7b1df115dbd1b8522cba4f404a9f4fdcd5169e2137129187ffeee9d287e4fd1","impliedFormat":1},{"version":"c878f74b6d10b267f6075c51ac1d8becd15b4aa6a58f79c0cfe3b24908357f60","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"fbf68fc8057932b1c30107ebc37420f8d8dc4bef1253c4c2f9e141886c0df5ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"993985beef40c7d113f6dd8f0ba26eed63028b691fbfeb6a5b63f26408dd2c6d","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb094bb347d7df3380299eb69836c2c8758626ecf45917577707c03cf816b6f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"b02784111b3fc9c38590cd4339ff8718f9329a6f4d3fd66e9744a1dcd1d7e191","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"f23dfbb07f71e879e5a23cdd5a1f7f1585c6a8aae8c250b6eba13600956c72dd","impliedFormat":1},{"version":"b2ba94df355e65e967875bf67ea1bbf6d5a0e8dc141a3d36d5b6d7c3c0f234b6","impliedFormat":1},{"version":"115b2ad73fa7d175cd71a5873d984c21593b2a022f1a2036cc39d9f53629e5dc","impliedFormat":1},{"version":"1be330b3a0b00590633f04c3b35db7fa618c9ee079258e2b24c137eb4ffcd728","impliedFormat":1},{"version":"3372eb0a0d4d9429b3b8ccfe54e5ee2744c3c74ba27315df7bd9c52afa9eb492","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","impliedFormat":1},{"version":"182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","impliedFormat":1},{"version":"5c9b31919ea1cb350a7ae5e71c9ced8f11723e4fa258a8cc8d16ae46edd623c7","impliedFormat":1},{"version":"4aa42ce8383b45823b3a1d3811c0fdd5f939f90254bc4874124393febbaf89f6","impliedFormat":1},{"version":"96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","impliedFormat":1},{"version":"3677988e03b749874eb9c1aa8dc88cd77b6005e5c4c39d821cda7b80d5388619","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"02436d7e9ead85e09a2f8e27d5f47d9464bced31738dec138ca735390815c9f0","impliedFormat":1},{"version":"f4625edcb57b37b84506e8b276eb59ca30d31f88c6656d29d4e90e3bc58e69df","impliedFormat":1},{"version":"78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","impliedFormat":1},{"version":"f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","impliedFormat":1},{"version":"540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","impliedFormat":1},{"version":"121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","impliedFormat":1},{"version":"4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","impliedFormat":1},{"version":"678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","impliedFormat":1},{"version":"493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","impliedFormat":1},{"version":"aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"e2a37ac938c4bede5bb284b9d2d042da299528f1e61f6f57538f1bd37d760869","impliedFormat":1},{"version":"76def37aff8e3a051cf406e10340ffba0f28b6991c5d987474cc11137796e1eb","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","impliedFormat":1},{"version":"bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","impliedFormat":1},{"version":"6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","impliedFormat":1},{"version":"594fe24fc54645ab6ccb9dba15d3a35963a73a395b2ef0375ea34bf181ccfd63","impliedFormat":1},{"version":"7cb0ee103671d1e201cd53dda12bc1cd0a35f1c63d6102720c6eeb322cb8e17e","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","impliedFormat":1},{"version":"ad37fb4be61c1035b68f532b7220f4e8236cf245381ce3b90ac15449ecfe7305","impliedFormat":1},{"version":"93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","impliedFormat":1},{"version":"8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","impliedFormat":1},{"version":"304b44b1e97dd4c94697c3313df89a578dca4930a104454c99863f1784a54357","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"a365c4d3bed3be4e4e20793c999c51f5cd7e6792322f14650949d827fbcd170f","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"97e5ccc7bb88419005cbdf812243a5b3186cdef81b608540acabe1be163fc3e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","impliedFormat":1},{"version":"5c32bdfbd2d65e8fffbb9fbda04d7165e9181b08dad61154961852366deb7540","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"6b3453eebd474cc8acf6d759f1668e6ce7425a565e2996a20b644c72916ecf75","impliedFormat":1},{"version":"0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","impliedFormat":1},{"version":"89cd3444e389e42c56fd0d072afef31387e7f4107651afd2c03950f22dc36f77","impliedFormat":1},{"version":"7f2aa4d4989a82530aaac3f72b3dceca90e9c25bee0b1a327e8a08a1262435ad","impliedFormat":1},{"version":"e39a304f882598138a8022106cb8de332abbbb87f3fee71c5ca6b525c11c51fc","impliedFormat":1},{"version":"faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","impliedFormat":1},{"version":"fcdf3e40e4a01b9a4b70931b8b51476b210c511924fcfe3f0dae19c4d52f1a54","impliedFormat":1},{"version":"345c4327b637d34a15aba4b7091eb068d6ab40a3dedaab9f00986253c9704e53","impliedFormat":1},{"version":"3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"2b5b70d7782fe028487a80a1c214e67bd610532b9f978b78fa60f5b4a359f77e","impliedFormat":1},{"version":"7ee86fbb3754388e004de0ef9e6505485ddfb3be7640783d6d015711c03d302d","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"7580e62139cb2b44a0270c8d01abcbfcba2819a02514a527342447fa69b34ef1","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"7e6ac205dcb9714f708354fd863bffa45cee90740706cc64b3b39b23ebb84744","impliedFormat":1},{"version":"61dc6e3ac78d64aa864eedd0a208b97b5887cc99c5ba65c03287bf57d83b1eb9","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"f730b468deecf26188ad62ee8950dc29aa2aea9543bb08ed714c3db019359fd9","impliedFormat":1},{"version":"933aee906d42ea2c53b6892192a8127745f2ec81a90695df4024308ba35a8ff4","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"144bc326e90b894d1ec78a2af3ffb2eb3733f4d96761db0ca0b6239a8285f972","impliedFormat":1},{"version":"a3e3f0efcae272ab8ee3298e4e819f7d9dd9ff411101f45444877e77cfeca9a4","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","impliedFormat":1},{"version":"71d9eb4c4e99456b78ae182fb20a5dfc20eb1667f091dbb9335b3c017dd1c783","impliedFormat":1},{"version":"cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","impliedFormat":1},{"version":"30e6520444df1a004f46fdc8096f3fe06f7bbd93d09c53ada9dcdde59919ccca","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"a58beefce74db00dbb60eb5a4bb0c6726fb94c7797c721f629142c0ae9c94306","impliedFormat":1},{"version":"41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","impliedFormat":1},{"version":"502fa5863df08b806dbf33c54bee8c19f7e2ad466785c0fc35465d7c5ff80995","impliedFormat":1},{"version":"c91a2d08601a1547ffef326201be26db94356f38693bb18db622ae5e9b3d7c92","impliedFormat":1},{"version":"888cda0fa66d7f74e985a3f7b1af1f64b8ff03eb3d5e80d051c3cbdeb7f32ab7","impliedFormat":1},{"version":"60681e13f3545be5e9477acb752b741eae6eaf4cc01658a25ec05bff8b82a2ef","impliedFormat":1},{"version":"9586918b63f24124a5ca1d0cc2979821a8a57f514781f09fc5aa9cae6d7c0138","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","impliedFormat":1},{"version":"55095860901097726220b6923e35a812afdd49242a1246d7b0942ee7eb34c6e4","impliedFormat":1},{"version":"96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"bb8f2dbc03533abca2066ce4655c119bff353dd4514375beb93c08590c03e023","impliedFormat":1},{"version":"d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","impliedFormat":1},{"version":"1a6e6ba8a07b74e3ad237717c0299d453f9ceb795dbc2f697d1f2dd07cb782d2","impliedFormat":1},{"version":"58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"190da5eac6478d61ab9731ab2146fbc0164af2117a363013249b7e7992f1cccb","impliedFormat":1},{"version":"01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","impliedFormat":1},{"version":"f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","impliedFormat":1},{"version":"8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","impliedFormat":1},{"version":"8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","impliedFormat":1},{"version":"7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","impliedFormat":1},{"version":"2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true,"impliedFormat":1},{"version":"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"88e9caa9c5d2ba629240b5913842e7c57c5c0315383b8dc9d436ef2b60f1c391","impliedFormat":1},{"version":"ddf68b3b62e49cf6fd93ba2351ad0fbbcf62ca2d5d7afc9f186114e4b481c3cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"a46dba563f70f32f9e45ae015f3de979225f668075d7a427f874e0f6db584991","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"622694a8522b46f6310c2a9b5d2530dde1e2854cb5829354e6d1ff8f371cf469","impliedFormat":1},{"version":"d24ff95760ea2dfcc7c57d0e269356984e7046b7e0b745c80fea71559f15bdd8","impliedFormat":1},{"version":"a9e6c0ff3f8186fccd05752cf75fc94e147c02645087ac6de5cc16403323d870","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"13c1b657932e827a7ed510395d94fc8b743b9d053ab95b7cd829b2bc46fb06db","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"078131f3a722a8ad3fc0b724cd3497176513cdcb41c80f96a3acbda2a143b58e","impliedFormat":1},{"version":"8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"9e155d2255348d950b1f65643fb26c0f14f5109daf8bd9ee24a866ad0a743648","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b103e9abfe82d14c0ad06a55d9f91d6747154ef7cacc73cf27ecad2bfb3afcf","impliedFormat":1},{"version":"7a883e9c84e720810f86ef4388f54938a65caa0f4d181a64e9255e847a7c9f51","impliedFormat":1},{"version":"a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d408d6f32de8d1aba2ff4a20f1aa6a6edd7d92c997f63b90f8ad3f9017cf5e46","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"b1f1d57fde8247599731b24a733395c880a6561ec0c882efaaf20d7df968c5af","impliedFormat":1},{"version":"9d622ea608d43eb463c0c4538fd5baa794bc18ea0bb8e96cd2ab6fd483d55fe2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264","impliedFormat":1},{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","impliedFormat":1},{"version":"af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","impliedFormat":1},{"version":"94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","impliedFormat":1},{"version":"1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","impliedFormat":1},{"version":"e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","impliedFormat":1},{"version":"5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","impliedFormat":1},{"version":"e7765aa8bcb74a38b3230d212b4547686eb9796621ffb4367a104451c3f9614f","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},{"version":"1b6720b360af84283c1bb915691c9a23f8be883c4c59860e5d3c02a0253f28fd","affectsGlobalScope":true},"7b550dda9686c16f36a17bf9051d5dbf31e98555b30d114ac49fc49a1e712651",{"version":"19aa7c70f541c275e86cd864688bd6569b805dc52017eb6cc90c083f349ef9f5","signature":"b983276d23e6af91c8def354e69cddaedfc29c6c3a15166472789884775621ee"},"c0a4736ac3340da6b94c689d127e5a1c4ebe3c87c0f550b6882325e48939d156","868cdc9885c4cd3a40e22171667f52108b120522151de7f285d4a6baf280ed18","4d91da434b53707c0e82997005ced1ea464616d84746d005d70f2874a9ea2968","b0292c78804c15f8f2e3dbb9e4a53b07cd0cb3c4dc1f95a0922aefc1a20d2deb","cc2ed00532981950616a7aa21209f625a5e3ec4f28738ac5765916df04a982cd","d733d684c6f9cdb59afa8ea97621789d906dc4c2e87b31540fe1dfdf7b6db174","c0ae82b6aeefdb607021810af69281acb1aaa841ec042a78291547fda7a403e8","5627a95bbd91914823726d03cc4adc9ae0f186b65344040dbc74b9dbb2ab3cc2","171d0fa3ce186d07eba456bbc056d5ea9e3b9ea83c2298f09a6743083e6443af","78b046725cff94ea19f2d09e8283403957f7dc21f1103770a60054f00cb73a8c","084ab56c445c5bdc9ebf4c65924fc09fe074095a93e4653cf5b7d8fbfb37f7b2","69c30e416e6fcc5e4b7ef2eed1b04295d44b89d29090888d640749bfc2bec897","0798941ff8cedff9434fb04dedc6784107590c43cc02259b7a4c5768c7f9e999","e37a1a43ed1041774a76fabffad8e3688a9feac6c8548f07e8dbe357c28001ae","2da3ac609b807c55e6f5a46ea5bf6533251539b7fb00ae5ab915affc03ed8e46","8289d539aa030a0daae776ce0781db1d812337ed54efe77981fea84812a415e8","73b3c8137be67b0d173c1284dc58e015262eac0e66fc67ee90572af9f519f83a","0bee48f8b8aabac9603e0ac2b79a4cba40ad77f25d1beb3247c56f34d2deccaf","089286ec0cd8dd4377c3d66375a13bd12640cfd6c85f0b9378d0d30a36af6803","1a56a6c8656903072129bb2b8d4b2480ca23fd0485f0fa44192fe47063ddca82","7aee672eb0a5926bd2bfda390e5b2f32f2e8afc587de8ed17133fd952c74e2a7","90f6d8c8eb435f11a42733f4947a7321d4ef967db6d3e3b7d82c0feabf3d8874","47c4713d4254dcfb10cd98baf5ca5a14c0367b6792a9611dc50438b77b892639","9da6d928e783c297bf291d87d599a3800ad2c4a3eb63dc7a14711f676c7a5a7d","e5d5a18c02ff507923d597571c2f2639ea48311f17421e87888506962ec678b3","85cca56b1d5f3934c2bf8e3bbe4c07e7e523c68139457742c82ac88273752894","f2ac63828532bf41eb82bab4a8b25c6640da9f09b7a4d2071349ba5b1c74063b","9d5adf8445d0d8a7014423323097f73d08c3a13d825f1ed005075705d1c2eba0","fb7b94855746a87322dfd8c2a73dca7a5a48b3b62b7f51d249b49faee82185d7","1a0402f65cc636ec10b240623cdc6f53cf24679b499b73fbbf3ae23f9ba9c349","34725c8ee2e3026c6a32e0c1fbe7f1de0521424c4c9354833557ce276af85f6e","e78257e5847f10daa44ff599cc2ff063842755ecb65885386f09f38c20b0cc60","d06b3fd39e09b894d025c8d98e7ff8f8a0fb7bb23a150e17026023904b39994d","4a76946404587e0c4ff209da99aede3e8ac18612a89f6312799a977751b73f17","57573e55f01f8f9c672100062acf51e123c85d8187b28d2bc74f5606a0f1c1ce","858dc07b7e179f84d86356eaa98d60f96c691633d1d6d16cc761650af30d6a1d","466cfea2715740c4ca5fe8151ef870e5b485b4df4c1ad00c90910916f276431c",{"version":"36c9c8ad27c9c1e4c727569bc94dcce940cfaecd47bda05441da0cb389687441","signature":"9659568d0fde775ab1406982a3adfd5adf37c675b57ad3129f7e42fb237aea1a"},{"version":"2850ae9210e5601be382a1a78af233abcb6c3935996e986a5908ef7fe0e4129b","signature":"3293d333b94cf0cbf353ac7fde9907a9b78b7df6e9fb1849b942ed86ca1a8a15"},{"version":"e654008f2bfc634b07167c253909bde0434e33ce86430610ea027771deb9aee5","signature":"f24babf40cc1ad5781a370b4c244ce6a755cede3f1d19314ef11d2800bbd4ea8"},{"version":"ef3a1770efd8885bb9279beab86f6224dc04f3fa4b4c9cd9fe867d7418c50025","signature":"cfeaac52c7d1dc40878408514c4788d2509a4f4804f54d5b12c63e2262a1d209"},"25ddcb3b94fba9b875e67044f9abeb1ef7cbb54a049d6836d86b217d37915440","ad23ed0bd8fae58ee930dc12b88bfcd8a5b79ca1494799e35e0d13b3f45f88bc","dbde5595324c12c3b874f6d377847ca494cfe4f2dde106f49ce58be9766f847a",{"version":"35ab79e69790812d93f5866a736399be4d10909a985a8815b22869b5c792a8d5","signature":"210e6a704c56ca41d8ab102ba04436fa40e8bad2158882be43dda2144d78c967"},{"version":"b6805e78b846383e01e0270933ef550f005afb3ba6bd3ff037009c335bd745ef","signature":"cd76f44e764304dc19faf547e130d500ef5778f7164e57509667076a7d6a6411"},{"version":"0c4990cc492833ee86014d516de515d6b894d1ee594280bf22dd65d7c4556926","signature":"ca35fea34e833b62a83d55ab71f4554fd5eba3d32a7aa4589fbd6ff449a30e46"},{"version":"9c88eb85ae6152a8313d6003e99c8a41b17df78c8b2ace44185a2b8143a7c764","signature":"68c2e6764c3ce9125550c88263962448698d776f047de22bc12eea3ce0b2510a"},{"version":"48831a56d4492df056f4412349d33fbf96de989db12aa1d8580b8a2ce305e75c","signature":"cfa3504a5c6206eaa677f95f0c18527338c45673411c43e4891e7ed1efc99bb2"},{"version":"364dc93f2a6bceb37cbf19d844691945ade4266671105cca4ee965b753bcdaec","signature":"df1a66d8b2a20aad99a7e7293bda2111c8a9e429877a6fe980044c658bcc9035"},"58c378a3aea2e306f4ec40d8add3eb119c1dfba0f176b8b01a5ba0b9e53bccd6","e1697ff00ceba8f3e1e5ceec650140ce9fe7ea8d4ce28d72f550725dfe82b4eb",{"version":"b0508fd8cae4d316560b7ed8ecabe4305001d024aeabd3146a134c3318f1c7a7","signature":"193f3698143959625b77bab03ef64fae1876dda0ed7438f9da236b49a3b9b826"},"6f7eb734e30c21b5e41f170f09ae502f99e37f8417952cd3c3478cfe50631f22","ddd4dbc0f7607df8c62040279964116f9eecab0f81c75941a27652765324c491",{"version":"6c05d0fcee91437571513c404e62396ee798ff37a2d8bef2104accdc79deb9c0","impliedFormat":1},{"version":"3f22fae104c090fd67cc1c6a7b63650e02593b2177559298409bd9be2f571100","signature":"d34a2db2c6a481d87ef49cd6cf23f4c3abacb808ff8a3c278e0dc96022e8c88c"},{"version":"e0c7e1f912ebf5b8e5108edb0e818149469ce584870685b71326f3e129d380fd","signature":"2c993d4a78fee7c2e267a51c9bb5fb90aa0f0c6bba5b642b8b6b169015273152"},"aaa4459b228b937667bb97bf003ef23432a58c111b0fdeb6758ba029109ac581","e0dcb62d63a42ded5d091347c425f6e8af6b06bd0679a64aca86aa6a7b2ed8b8","1b81a4982e60c180f3cb20407b6b8254045641ee34cdf02a4758b8c08e0c9853","825f9c230cdc6e863843b887d545ea9472d82e365006c40fdf097ab0d7e0b753","396a985df04676b43568f7fd71b8cf17e03953804974af4ff36e11eba69c4a19","536e7672e02dc1c2dbc875e607ff5951c7732a8db7cbb315d85bec3b48fa312a","fc26cf4e1004ff2514c028ecd8142dad7d975f8c9fe2a6852da2347f4ea23e5b","c97745bea34fc62ceb1db3ec37888fdba1174950fa093254ac9930e45459e0d1","713d3ed0f2a6ccd613f51630e1ff45d17b608e3db5ab4d0d06f6f30b34781448","5270ea552e0d8be8307d62da36757a25a75d0d84bfc482845598c25fa0d51f00","b078928d648b480c075cdd56f35b2eeec143c151d853b761f956ec04a9541001",{"version":"884aab8c07224434c034b49e88de0511f21536aa83ee88f1285160ba6d3fb77a","impliedFormat":99},{"version":"130b39b18c99e5678635f383ef57efaa507196838ddabb47cb104064e2ce4cd3","impliedFormat":99},{"version":"2556e7e8bb7e6f0bb3fe25f3da990d1812cb91f8c9b389354b6a0c8a6d687590","impliedFormat":99},{"version":"ad1c91ca536e0962dcbfcdff40073e3dd18da839e0baad3fe990cf0d10c93065","impliedFormat":99},{"version":"19cf605ba2a4e8fba017edebdddbbc45aea897ddc58b4aae4c55f382b570ff53","impliedFormat":99},{"version":"7618d2cb769e2093acd4623d645b683ab9fea78c262b3aa354aba9f5afdcaaee","impliedFormat":99},{"version":"029f1ce606891c3f57f4c0c60b8a46c8ced53e719d27a7c9693817f2fe37690b","impliedFormat":99},{"version":"83596c963e276a9c5911412fba37ae7c1fe280f2d77329928828eed5a3bfa9a6","impliedFormat":99},{"version":"81acfd3a01767770e559bc57d32684756989475be6ea32e2fe6255472c3ea116","impliedFormat":99},{"version":"88d0c3eae81868b4749ba5b88f9b6d564ee748321ce19a2f4269a4e9dd46020a","impliedFormat":99},{"version":"8266b39a828bfb2695cabfa403e7c1226d7d94599f21bea9f760e35f4ca7a576","impliedFormat":99},{"version":"c1c1e740195c882a776cf084acbaf963907785ee39e723c6375fec9a59bf2387","impliedFormat":99},{"version":"137f96b78e477e08876f6372072c3b6f1767672bf182013f84f8ae53d987ff86","impliedFormat":99},{"version":"29896c61d09880ff39f8a86873bf72ce4deb910158d3a496122781e29904c615","impliedFormat":99},{"version":"81ce540acef0d6972b0b163331583181be3603300f618dcd6a6a3138954ff30c","impliedFormat":99},{"version":"a82f5ba70d26e6ad9d432ab7556506d807c49f35a44af99fb8054004220aaaa1","impliedFormat":1},{"version":"97a44e4295fbdca67f58f09a7eb66390fdfe8ba90fa261fc3f3aae682e9f9254","signature":"9745cffeb6fc7301383adbf85f24be4348d3a2026bda345f7a8db75a0337aafd"},"13305c54d5c28644f1d7af1c4336e00562943c0d7925b4181ba5270df650513f","535a3a18387be0ec47fdb41c93551b2ed5ace63d74dc1c83a96a897f76962249","ca18b53dd135ec9583b4cb51220d42dffe49b9e558ea8aefdf61d8e1fcd9599d","87f3b892ecda2158fce8f71b3f5704397288fb1dd7adcb9f4e880ec2b35c548d","c7dca7f9f3bc6adcacfa7afe7bee5239f8bed7864162d45d51851ee4d741b6a1","44ccaa96441d0e3ed432a23eaa40d099544196ca5429249dc9fb9d90367d08fe","053c3940f4b1ace7252d68f6fb949235e70c1c474a58f44f57448eeb3bda5071",{"version":"68190bf3626418408ed6a711c1309daab432df3247c80abab710172a2f4f67d3","signature":"829d2762ca74f0775b07aebdfb63ee0c1278b88adb12c96b2368e43c9ee2c58f"},"52e46ac86173d1f9dd300d3e7a163e3ebd8c6d41cc766e325688351cd7863040","fb589e831e98779f96570a7bf744e25d1c2f2374b47814d7668c2e444773579e","69b1754d8508895fe66a512d6e25c9c540a4786e528b0ddec93124f56ecafe6f","3e42a6a90693b8d9376d564c901b0aee709f65a6575d6c273455788cce7569fc","af1511ac5ffe87f9379605a2bd9a53e2a2163cb107802b741732dcadb9ad425c","be27c0d9878c085e753846295c3d327f3d63eaebcb35235665dd4b0d66533be6","da7b44b999e7e1f449d57f0e71741b9ad07a5fb2bd8ded3316ab62f4088cbce8",{"version":"15c1823da1fb88df3af8687fa7c08a7a0a82232ce191a96a3a920f093c2367b2","signature":"7a5bddc5a2004f61a03c1f0c435ec31ea910d702c4950e425ed7a6531ed08938"},"47a5741b5fa52097fb2d0cd4dde9bea1e394018a62a7128de70778b5ed21c7a6",{"version":"a4196298d4d156c89eea552a60761e5bfacf0b8b674110bbf0009a4161fa13cd","signature":"221cfed09d51ab277be15e09eb008925b29e50446d426e9747d91fa4d3314229"},"b1ce688913db5a9316286ba61cac36b7bc98e15093a585214a775c91558a2afa","23012729b960eacf13960b24e46cc9e1cf7238d132f66356ebc1a88c7d18117c","ff15db95111585eed5879e8791fb46708418a541056cc412b47b71936a848ee2","e05b3d518fefcd6116fba40d02041d2ec92067822eeeb69299588945d35cfd9b",{"version":"4e3bbca5669da086974f665bf8b29555fb0d073e6dcc1663f59f4a3551bc65bd","signature":"553dccbc3caffd51e02864fc5181033029bdd06872a7f4f623112cebd826d3ea"},"7dd9256162019b0e5b34b0d5dc6d91c3d193b6dd0e2461384b3035ca75fdd738","611734edd7ad58d668aa736aaff1b7952574e27c0abbcee6f7d2dce763d6effa",{"version":"bdc1824d433df07efbd9a0ccf543d9358e250676fb755b27a9937176ff3a31e1","impliedFormat":1},{"version":"41c514d6896dd73d171bfa8ee88fb56cecda181e1811493ea4d330683eef7df5","impliedFormat":1},{"version":"dbdb1e671d5f80085a7b1c56c1c06386f263cc8701670b37bb352214e30424d9","affectsGlobalScope":true},"b624b430d20ea94d031e44253b1e15e0049727be2a96717ccffc413daa5ffb05","d1986184a09a52db8228cb2bb2a61a8c05c9354e5b93cec8e2628d8579c892d7",{"version":"dee71d8885b5697c8ff1a897b98c918451483f12f0675b522195c345e96b80fc","affectsGlobalScope":true},{"version":"b7cd1f4a8050cd3fef2f33ae62af592e299d18e56acffd3418b8bf8374ce89b9","affectsGlobalScope":true},"45e801bf3bc66653c7ed9a7abddacfb0c9fb8fa6c2ab6e6ce4ba0aeb875b84b1"],"root":[[484,541],[543,555],[572,597],[600,605]],"options":{"allowJs":false,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[602,1],[603,2],[604,3],[605,4],[600,5],[484,3],[601,6],[488,7],[489,7],[490,7],[487,7],[491,7],[492,7],[494,7],[493,7],[495,7],[496,7],[497,7],[499,7],[498,7],[500,7],[501,7],[502,7],[504,7],[503,7],[505,7],[507,7],[508,7],[506,7],[509,7],[510,7],[511,7],[513,7],[512,7],[514,7],[515,7],[516,7],[517,7],[518,7],[519,7],[520,7],[521,7],[523,7],[522,7],[573,8],[551,9],[549,10],[552,11],[553,12],[555,13],[574,14],[575,15],[576,16],[577,12],[578,17],[545,18],[579,19],[581,20],[582,21],[583,22],[550,23],[554,12],[584,23],[585,24],[546,25],[586,23],[580,26],[572,27],[587,23],[530,23],[533,28],[524,28],[535,28],[536,26],[538,29],[534,28],[537,30],[532,26],[531,28],[539,26],[589,31],[588,32],[547,33],[591,34],[593,35],[592,36],[590,37],[548,38],[594,39],[596,40],[595,41],[543,42],[544,42],[597,43],[486,26],[529,44],[528,45],[527,46],[526,26],[541,47],[540,48],[525,26],[485,49],[227,3],[113,50],[114,50],[115,51],[74,52],[116,53],[117,54],[118,55],[69,3],[72,56],[70,3],[71,3],[119,57],[120,58],[121,59],[122,60],[123,61],[124,62],[125,62],[127,63],[126,64],[128,65],[129,66],[130,67],[112,68],[73,3],[131,69],[132,70],[133,71],[166,72],[134,73],[135,74],[136,75],[137,76],[138,77],[139,78],[140,79],[141,80],[142,81],[143,82],[144,82],[145,83],[146,3],[147,3],[148,84],[150,85],[149,86],[151,87],[152,88],[153,89],[154,90],[155,91],[156,92],[157,93],[158,94],[159,95],[160,96],[161,97],[162,98],[163,99],[164,100],[165,101],[170,102],[387,103],[171,104],[169,103],[388,105],[167,106],[385,3],[168,107],[60,3],[62,108],[384,103],[244,103],[571,109],[570,110],[557,111],[556,3],[61,3],[561,112],[558,3],[560,113],[559,114],[568,112],[567,112],[569,115],[566,116],[564,112],[565,112],[562,117],[563,112],[542,103],[433,118],[438,1],[428,119],[191,120],[231,121],[412,122],[226,123],[208,3],[383,3],[189,3],[401,124],[257,125],[190,3],[311,126],[234,127],[235,128],[382,129],[398,130],[293,131],[406,132],[407,133],[405,134],[404,3],[402,135],[233,136],[192,137],[336,3],[337,138],[263,139],[193,140],[264,139],[259,139],[180,139],[229,141],[228,3],[411,142],[423,3],[216,3],[358,143],[359,144],[353,103],[460,3],[361,3],[362,28],[354,145],[465,146],[464,147],[459,3],[278,3],[397,148],[396,3],[458,149],[355,103],[287,150],[283,151],[288,152],[286,3],[285,153],[284,3],[461,3],[457,3],[463,154],[462,3],[282,151],[598,103],[599,155],[452,156],[455,157],[272,158],[271,159],[270,160],[468,103],[269,161],[251,3],[471,3],[474,3],[473,103],[475,162],[173,3],[408,163],[409,164],[410,165],[186,3],[219,3],[185,166],[172,3],[374,103],[178,167],[373,168],[372,169],[363,3],[364,3],[371,3],[366,3],[369,170],[365,3],[367,171],[370,172],[368,171],[188,3],[183,3],[184,139],[239,3],[245,173],[246,174],[243,175],[241,176],[242,177],[237,3],[380,28],[266,28],[432,178],[439,179],[443,180],[415,181],[414,3],[254,3],[476,182],[427,183],[356,184],[357,185],[351,186],[342,3],[379,187],[417,103],[343,188],[381,189],[376,190],[375,3],[377,3],[348,3],[335,191],[416,192],[419,193],[345,194],[349,195],[340,196],[393,197],[426,198],[297,199],[312,200],[181,201],[425,202],[177,203],[247,204],[238,3],[248,205],[324,206],[236,3],[323,207],[68,3],[317,208],[218,3],[338,209],[313,3],[182,3],[212,3],[321,210],[187,3],[249,211],[347,212],[413,213],[346,3],[320,3],[240,3],[326,214],[327,215],[403,3],[329,216],[331,217],[330,218],[221,3],[319,201],[333,219],[296,220],[318,221],[325,222],[196,3],[200,3],[199,3],[198,3],[203,3],[197,3],[206,3],[205,3],[202,3],[201,3],[204,3],[207,223],[195,3],[305,224],[304,3],[309,225],[306,226],[308,227],[310,225],[307,226],[217,228],[267,229],[422,230],[477,3],[447,231],[449,232],[344,233],[448,234],[420,192],[360,192],[194,3],[298,235],[213,236],[214,237],[215,238],[211,239],[392,239],[261,239],[299,240],[262,240],[210,241],[209,3],[303,242],[302,243],[301,244],[300,245],[421,246],[391,247],[390,248],[352,249],[386,250],[389,251],[400,252],[399,253],[395,254],[295,255],[292,256],[294,257],[291,258],[332,259],[322,3],[437,3],[334,260],[394,3],[250,261],[341,163],[339,262],[252,263],[255,264],[472,3],[253,265],[256,265],[435,3],[434,3],[436,3],[470,3],[258,266],[418,3],[289,267],[281,103],[232,3],[176,268],[265,3],[441,103],[175,3],[451,269],[280,103],[445,28],[279,270],[430,271],[277,269],[179,3],[453,272],[275,103],[276,103],[268,3],[174,3],[274,273],[273,274],[220,275],[350,81],[260,81],[328,3],[315,276],[314,3],[378,151],[290,103],[424,166],[431,277],[63,103],[66,278],[67,279],[64,103],[65,3],[230,280],[225,281],[224,3],[223,282],[222,3],[429,283],[440,284],[442,285],[444,286],[446,287],[450,288],[483,289],[454,289],[482,290],[456,291],[466,292],[467,293],[469,294],[478,295],[481,166],[480,3],[479,296],[316,297],[58,3],[59,3],[10,3],[11,3],[13,3],[12,3],[2,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[20,3],[21,3],[3,3],[22,3],[23,3],[4,3],[24,3],[28,3],[25,3],[26,3],[27,3],[29,3],[30,3],[31,3],[5,3],[32,3],[33,3],[34,3],[35,3],[6,3],[39,3],[36,3],[37,3],[38,3],[40,3],[7,3],[41,3],[46,3],[47,3],[42,3],[43,3],[44,3],[45,3],[8,3],[51,3],[48,3],[49,3],[50,3],[52,3],[9,3],[53,3],[54,3],[55,3],[57,3],[56,3],[1,3],[90,298],[100,299],[89,298],[110,300],[81,301],[80,302],[109,296],[103,303],[108,304],[83,305],[97,306],[82,307],[106,308],[78,309],[77,296],[107,310],[79,311],[84,312],[85,3],[88,312],[75,3],[111,313],[101,314],[92,315],[93,316],[95,317],[91,318],[94,319],[104,296],[86,320],[87,321],[96,322],[76,323],[99,314],[98,312],[102,3],[105,324]],"semanticDiagnosticsPerFile":[[605,[{"start":7625,"length":32,"messageText":"Cannot find module '../../../app/api/jobs/route.js' or its corresponding type declarations.","category":1,"code":2307},{"start":9577,"length":36,"messageText":"Cannot find module '../../../app/api/settings/route.js' or its corresponding type declarations.","category":1,"code":2307}]]],"affectedFilesPendingEmit":[605,601,488,489,490,487,491,492,494,493,495,496,497,499,498,500,501,502,504,503,505,507,508,506,509,510,511,513,512,514,515,516,517,518,519,520,521,523,522,573,551,549,552,553,555,574,575,576,577,578,545,579,581,582,583,550,554,584,585,546,586,580,572,587,530,533,524,535,536,538,534,537,532,531,539,589,588,547,591,593,592,590,548,594,596,595,543,544,597,486,529,528,527,526,541,540,525],"version":"5.8.2"} \ No newline at end of file +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/entry-constants.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/lib/bundler.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","./node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/debug-channel.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/client/components/readonly-url-search-params.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/app-router-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/ppr-navigations.d.ts","./node_modules/next/dist/client/components/segment-cache/types.d.ts","./node_modules/next/dist/client/components/segment-cache/navigation.d.ts","./node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/server/route-modules/pages/builtin/_error.d.ts","./node_modules/next/dist/server/load-default-error-components.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/staged-rendering.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/@types/react/compiler-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/create-error-handler.d.ts","./node_modules/next/dist/shared/lib/action-revalidation-kind.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/shared/lib/size-limit.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/build/adapter/build-complete.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./node_modules/jose/dist/types/types.d.ts","./node_modules/jose/dist/types/jwe/compact/decrypt.d.ts","./node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts","./node_modules/jose/dist/types/jwe/general/decrypt.d.ts","./node_modules/jose/dist/types/jwe/general/encrypt.d.ts","./node_modules/jose/dist/types/jws/compact/verify.d.ts","./node_modules/jose/dist/types/jws/flattened/verify.d.ts","./node_modules/jose/dist/types/jws/general/verify.d.ts","./node_modules/jose/dist/types/jwt/verify.d.ts","./node_modules/jose/dist/types/jwt/decrypt.d.ts","./node_modules/jose/dist/types/jwe/compact/encrypt.d.ts","./node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts","./node_modules/jose/dist/types/jws/compact/sign.d.ts","./node_modules/jose/dist/types/jws/flattened/sign.d.ts","./node_modules/jose/dist/types/jws/general/sign.d.ts","./node_modules/jose/dist/types/jwt/sign.d.ts","./node_modules/jose/dist/types/jwt/encrypt.d.ts","./node_modules/jose/dist/types/jwk/thumbprint.d.ts","./node_modules/jose/dist/types/jwk/embedded.d.ts","./node_modules/jose/dist/types/jwks/local.d.ts","./node_modules/jose/dist/types/jwks/remote.d.ts","./node_modules/jose/dist/types/jwt/unsecured.d.ts","./node_modules/jose/dist/types/key/export.d.ts","./node_modules/jose/dist/types/key/import.d.ts","./node_modules/jose/dist/types/util/decode_protected_header.d.ts","./node_modules/jose/dist/types/util/decode_jwt.d.ts","./node_modules/jose/dist/types/util/errors.d.ts","./node_modules/jose/dist/types/key/generate_key_pair.d.ts","./node_modules/jose/dist/types/key/generate_secret.d.ts","./node_modules/jose/dist/types/util/base64url.d.ts","./node_modules/jose/dist/types/index.d.ts","./lib/session.ts","./proxy.ts","./lib/api.ts","./app/api/anilist/libraries/[id]/route.ts","./app/api/anilist/links/route.ts","./app/api/anilist/pull/route.ts","./app/api/anilist/search/route.ts","./app/api/anilist/series/[libraryid]/[seriesid]/route.ts","./app/api/anilist/status/route.ts","./app/api/anilist/sync/route.ts","./app/api/anilist/sync/preview/route.ts","./app/api/anilist/unlinked/route.ts","./app/api/auth/login/route.ts","./app/api/auth/logout/route.ts","./app/api/available-downloads/[id]/route.ts","./app/api/books/[bookid]/route.ts","./app/api/books/[bookid]/convert/route.ts","./app/api/books/[bookid]/pages/[pagenum]/route.ts","./app/api/books/[bookid]/progress/route.ts","./app/api/books/[bookid]/thumbnail/route.ts","./app/api/download-detection/latest-found/route.ts","./app/api/folders/route.ts","./app/api/jobs/[id]/route.ts","./app/api/jobs/[id]/cancel/route.ts","./app/api/jobs/[id]/replay/route.ts","./app/api/jobs/[id]/stream/route.ts","./app/api/jobs/active/route.ts","./app/api/jobs/list/route.ts","./app/api/jobs/stream/route.ts","./app/api/komga/reports/route.ts","./app/api/komga/reports/[id]/route.ts","./app/api/komga/sync/route.ts","./app/api/libraries/[id]/metadata-provider/route.ts","./app/api/libraries/[id]/monitoring/route.ts","./app/api/libraries/[id]/reading-status-provider/route.ts","./app/api/libraries/[id]/series/[seriesid]/route.ts","./app/api/libraries/[id]/series/[seriesid]/metadata/route.ts","./app/api/metadata/approve/route.ts","./app/api/metadata/batch/route.ts","./app/api/metadata/batch/report/route.ts","./app/api/metadata/batch/results/route.ts","./app/api/metadata/links/route.ts","./app/api/metadata/match/route.ts","./app/api/metadata/missing/route.ts","./app/api/metadata/refresh/route.ts","./app/api/metadata/refresh/report/route.ts","./app/api/metadata/refresh-link/[id]/route.ts","./app/api/metadata/reject/route.ts","./app/api/metadata/search/route.ts","./app/api/prowlarr/search/route.ts","./app/api/prowlarr/test/route.ts","./app/api/qbittorrent/add/route.ts","./app/api/qbittorrent/test/route.ts","./app/api/series/mark-read/route.ts","./app/api/series/provider-statuses/route.ts","./app/api/series/statuses/route.ts","./app/api/settings/[key]/route.ts","./app/api/settings/cache/clear/route.ts","./app/api/settings/cache/stats/route.ts","./app/api/settings/status-mappings/route.ts","./app/api/settings/status-mappings/[id]/route.ts","./app/api/telegram/test/route.ts","./app/api/torrent-downloads/route.ts","./app/api/torrent-downloads/[id]/route.ts","./app/components/ui/card.tsx","./lib/i18n/types.ts","./lib/i18n/fr.ts","./lib/i18n/en.ts","./lib/i18n/dictionaries.ts","./lib/i18n/context.tsx","./app/components/ui/badge.tsx","./app/components/ui/statbox.tsx","./app/components/ui/progressbar.tsx","./app/components/ui/button.tsx","./app/components/ui/input.tsx","./app/components/ui/form.tsx","./app/components/ui/icon.tsx","./app/components/ui/pagination.tsx","./app/components/ui/tooltip.tsx","./app/components/ui/toast.tsx","./app/components/ui/modal.tsx","./app/components/ui/index.ts","./app/health/route.ts","./lib/searchparams.ts","./lib/i18n/server.ts","./lib/i18n/index.ts","./node_modules/next-themes/dist/index.d.ts","./app/theme-provider.tsx","./app/layout.tsx","./app/theme-toggle.tsx","./app/components/jobsindicator.tsx","./app/components/navlink.tsx","./app/components/logoutbutton.tsx","./app/components/mobilenav.tsx","./app/components/userswitcher.tsx","./app/(app)/layout.tsx","./node_modules/@types/d3-time/index.d.ts","./node_modules/@types/d3-scale/index.d.ts","./node_modules/victory-vendor/d3-scale.d.ts","./node_modules/recharts/types/shape/dot.d.ts","./node_modules/recharts/types/component/text.d.ts","./node_modules/recharts/types/zindex/zindexlayer.d.ts","./node_modules/recharts/types/cartesian/getcartesianposition.d.ts","./node_modules/recharts/types/component/label.d.ts","./node_modules/recharts/types/cartesian/cartesianaxis.d.ts","./node_modules/recharts/types/util/scale/customscaledefinition.d.ts","./node_modules/redux/dist/redux.d.ts","./node_modules/@reduxjs/toolkit/node_modules/immer/dist/immer.d.ts","./node_modules/reselect/dist/reselect.d.ts","./node_modules/redux-thunk/dist/redux-thunk.d.ts","./node_modules/@reduxjs/toolkit/dist/uncheckedindexed.ts","./node_modules/@reduxjs/toolkit/dist/index.d.mts","./node_modules/recharts/types/state/cartesianaxisslice.d.ts","./node_modules/recharts/types/synchronisation/types.d.ts","./node_modules/recharts/types/chart/types.d.ts","./node_modules/recharts/types/component/defaulttooltipcontent.d.ts","./node_modules/recharts/types/context/brushupdatecontext.d.ts","./node_modules/recharts/types/state/chartdataslice.d.ts","./node_modules/recharts/types/state/types/linesettings.d.ts","./node_modules/recharts/types/state/types/scattersettings.d.ts","./node_modules/@types/d3-path/index.d.ts","./node_modules/@types/d3-shape/index.d.ts","./node_modules/victory-vendor/d3-shape.d.ts","./node_modules/recharts/types/shape/curve.d.ts","./node_modules/recharts/types/component/labellist.d.ts","./node_modules/recharts/types/component/defaultlegendcontent.d.ts","./node_modules/recharts/types/util/payload/getuniqpayload.d.ts","./node_modules/recharts/types/util/useelementoffset.d.ts","./node_modules/recharts/types/component/legend.d.ts","./node_modules/recharts/types/state/legendslice.d.ts","./node_modules/recharts/types/state/types/stackedgraphicalitem.d.ts","./node_modules/recharts/types/util/stacks/stacktypes.d.ts","./node_modules/recharts/types/util/scale/rechartsscale.d.ts","./node_modules/recharts/types/util/chartutils.d.ts","./node_modules/recharts/types/state/selectors/areaselectors.d.ts","./node_modules/recharts/types/cartesian/area.d.ts","./node_modules/recharts/types/state/types/areasettings.d.ts","./node_modules/recharts/types/animation/easing.d.ts","./node_modules/recharts/types/shape/rectangle.d.ts","./node_modules/recharts/types/cartesian/bar.d.ts","./node_modules/recharts/types/util/barutils.d.ts","./node_modules/recharts/types/state/types/barsettings.d.ts","./node_modules/recharts/types/state/types/radialbarsettings.d.ts","./node_modules/recharts/types/util/svgpropertiesnoevents.d.ts","./node_modules/recharts/types/util/useuniqueid.d.ts","./node_modules/recharts/types/state/types/piesettings.d.ts","./node_modules/recharts/types/state/types/radarsettings.d.ts","./node_modules/recharts/types/state/graphicalitemsslice.d.ts","./node_modules/recharts/types/state/tooltipslice.d.ts","./node_modules/recharts/types/state/optionsslice.d.ts","./node_modules/recharts/types/state/layoutslice.d.ts","./node_modules/immer/dist/immer.d.ts","./node_modules/recharts/types/util/ifoverflow.d.ts","./node_modules/recharts/types/util/resolvedefaultprops.d.ts","./node_modules/recharts/types/cartesian/referenceline.d.ts","./node_modules/recharts/types/state/referenceelementsslice.d.ts","./node_modules/recharts/types/state/brushslice.d.ts","./node_modules/recharts/types/state/rootpropsslice.d.ts","./node_modules/recharts/types/state/polaraxisslice.d.ts","./node_modules/recharts/types/state/polaroptionsslice.d.ts","./node_modules/recharts/types/cartesian/line.d.ts","./node_modules/recharts/types/util/constants.d.ts","./node_modules/recharts/types/util/scatterutils.d.ts","./node_modules/recharts/types/shape/symbols.d.ts","./node_modules/recharts/types/cartesian/scatter.d.ts","./node_modules/recharts/types/cartesian/errorbar.d.ts","./node_modules/recharts/types/state/errorbarslice.d.ts","./node_modules/recharts/types/state/zindexslice.d.ts","./node_modules/recharts/types/state/eventsettingsslice.d.ts","./node_modules/recharts/types/state/renderedticksslice.d.ts","./node_modules/recharts/types/state/store.d.ts","./node_modules/recharts/types/cartesian/getticks.d.ts","./node_modules/recharts/types/cartesian/cartesiangrid.d.ts","./node_modules/recharts/types/state/selectors/combiners/combinedisplayedstackeddata.d.ts","./node_modules/recharts/types/state/selectors/selecttooltipaxistype.d.ts","./node_modules/recharts/types/types.d.ts","./node_modules/recharts/types/hooks.d.ts","./node_modules/recharts/types/state/selectors/axisselectors.d.ts","./node_modules/recharts/types/component/dots.d.ts","./node_modules/recharts/types/util/typeddatakey.d.ts","./node_modules/recharts/types/util/types.d.ts","./node_modules/recharts/types/container/surface.d.ts","./node_modules/recharts/types/container/layer.d.ts","./node_modules/recharts/types/component/cursor.d.ts","./node_modules/recharts/types/component/tooltip.d.ts","./node_modules/recharts/types/component/responsivecontainer.d.ts","./node_modules/recharts/types/component/cell.d.ts","./node_modules/recharts/types/component/customized.d.ts","./node_modules/recharts/types/shape/sector.d.ts","./node_modules/recharts/types/shape/polygon.d.ts","./node_modules/recharts/types/shape/cross.d.ts","./node_modules/recharts/types/polar/polargrid.d.ts","./node_modules/recharts/types/polar/defaultpolarradiusaxisprops.d.ts","./node_modules/recharts/types/polar/polarradiusaxis.d.ts","./node_modules/recharts/types/polar/defaultpolarangleaxisprops.d.ts","./node_modules/recharts/types/polar/polarangleaxis.d.ts","./node_modules/recharts/types/context/tooltipcontext.d.ts","./node_modules/recharts/types/polar/pie.d.ts","./node_modules/recharts/types/polar/radar.d.ts","./node_modules/recharts/types/util/radialbarutils.d.ts","./node_modules/recharts/types/polar/radialbar.d.ts","./node_modules/recharts/types/cartesian/brush.d.ts","./node_modules/recharts/types/cartesian/referencedot.d.ts","./node_modules/recharts/types/util/excludeeventprops.d.ts","./node_modules/recharts/types/util/svgpropertiesandevents.d.ts","./node_modules/recharts/types/cartesian/referencearea.d.ts","./node_modules/recharts/types/cartesian/barstack.d.ts","./node_modules/recharts/types/cartesian/xaxis.d.ts","./node_modules/recharts/types/cartesian/yaxis.d.ts","./node_modules/recharts/types/cartesian/zaxis.d.ts","./node_modules/recharts/types/chart/linechart.d.ts","./node_modules/recharts/types/chart/barchart.d.ts","./node_modules/recharts/types/chart/piechart.d.ts","./node_modules/recharts/types/chart/treemap.d.ts","./node_modules/recharts/types/chart/sankey.d.ts","./node_modules/recharts/types/chart/radarchart.d.ts","./node_modules/recharts/types/chart/scatterchart.d.ts","./node_modules/recharts/types/chart/areachart.d.ts","./node_modules/recharts/types/chart/radialbarchart.d.ts","./node_modules/recharts/types/chart/composedchart.d.ts","./node_modules/recharts/types/chart/sunburstchart.d.ts","./node_modules/recharts/types/shape/trapezoid.d.ts","./node_modules/recharts/types/cartesian/funnel.d.ts","./node_modules/recharts/types/chart/funnelchart.d.ts","./node_modules/recharts/types/util/global.d.ts","./node_modules/recharts/types/zindex/defaultzindexes.d.ts","./node_modules/decimal.js-light/decimal.d.ts","./node_modules/recharts/types/util/scale/getnicetickvalues.d.ts","./node_modules/recharts/types/context/chartlayoutcontext.d.ts","./node_modules/recharts/types/util/getrelativecoordinate.d.ts","./node_modules/recharts/types/util/createcartesiancharts.d.ts","./node_modules/recharts/types/util/createpolarcharts.d.ts","./node_modules/recharts/types/index.d.ts","./app/components/dashboardcharts.tsx","./app/components/periodtoggle.tsx","./app/components/metrictoggle.tsx","./app/components/readinguserfilter.tsx","./app/(app)/page.tsx","./app/(app)/anilist/callback/page.tsx","./app/components/livesearchform.tsx","./app/(app)/authors/page.tsx","./app/components/bookcard.tsx","./app/(app)/authors/[name]/page.tsx","./app/(app)/books/page.tsx","./app/components/bookpreview.tsx","./app/components/convertbutton.tsx","./app/components/deletebookbutton.tsx","./app/components/markbookreadbutton.tsx","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/tokenizer.d.ts","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/parser.d.ts","./node_modules/domelementtype/lib/esm/index.d.ts","./node_modules/domhandler/lib/esm/node.d.ts","./node_modules/domhandler/lib/esm/index.d.ts","./node_modules/dom-serializer/lib/esm/index.d.ts","./node_modules/domutils/lib/esm/stringify.d.ts","./node_modules/domutils/lib/esm/traversal.d.ts","./node_modules/domutils/lib/esm/manipulation.d.ts","./node_modules/domutils/lib/esm/querying.d.ts","./node_modules/domutils/lib/esm/legacy.d.ts","./node_modules/domutils/lib/esm/helpers.d.ts","./node_modules/domutils/lib/esm/feeds.d.ts","./node_modules/domutils/lib/esm/index.d.ts","./node_modules/@types/sanitize-html/node_modules/htmlparser2/dist/esm/index.d.ts","./node_modules/@types/sanitize-html/index.d.ts","./app/components/safehtml.tsx","./app/components/editbookform.tsx","./app/(app)/books/[id]/page.tsx","./app/components/qbittorrentdownloadbutton.tsx","./app/(app)/downloads/downloadspage.tsx","./app/(app)/downloads/page.tsx","./app/components/jobprogress.tsx","./app/components/jobrow.tsx","./app/components/jobslist.tsx","./app/(app)/jobs/page.tsx","./app/components/jobdetaillive.tsx","./app/(app)/jobs/[id]/components/jobsummarybanner.tsx","./app/(app)/jobs/[id]/components/joboverviewcard.tsx","./app/(app)/jobs/[id]/components/jobtimelinecard.tsx","./app/(app)/jobs/[id]/components/jobprogresscard.tsx","./app/(app)/jobs/[id]/components/metadatareportcards.tsx","./app/(app)/jobs/[id]/components/readingstatusreportcards.tsx","./app/(app)/jobs/[id]/components/downloaddetectioncards.tsx","./app/(app)/jobs/[id]/components/joberrorscard.tsx","./app/(app)/jobs/[id]/page.tsx","./app/components/providericon.tsx","./app/components/libraryactions.tsx","./app/components/folderbrowser.tsx","./app/components/folderpicker.tsx","./app/components/libraryform.tsx","./app/(app)/libraries/page.tsx","./app/components/librarysubpageheader.tsx","./app/(app)/libraries/[id]/books/page.tsx","./app/components/markseriesreadbutton.tsx","./app/components/seriesfilters.tsx","./app/(app)/libraries/[id]/series/page.tsx","./app/components/editseriesform.tsx","./app/components/metadatasearchmodal.tsx","./app/components/readingstatusmodal.tsx","./app/components/prowlarrsearchmodal.tsx","./app/components/deleteseriesbutton.tsx","./app/(app)/libraries/[id]/series/[seriesid]/page.tsx","./app/components/externallinkbadge.tsx","./app/(app)/series/page.tsx","./app/(app)/settings/components/metadataproviderscard.tsx","./app/(app)/settings/components/statusmappingscard.tsx","./app/(app)/settings/components/prowlarrcard.tsx","./app/(app)/settings/components/qbittorrentcard.tsx","./app/(app)/settings/components/telegramcard.tsx","./app/(app)/settings/components/komgasynccard.tsx","./app/(app)/settings/components/anilisttab.tsx","./app/(app)/settings/settingspage.tsx","./package.json","./app/(app)/settings/page.tsx","./app/components/tokenuserselect.tsx","./app/components/usernameedit.tsx","./app/(app)/tokens/page.tsx","./app/components/monitoringform.tsx","./app/login/page.tsx","./node_modules/@types/d3-array/index.d.ts","./node_modules/@types/d3-color/index.d.ts","./node_modules/@types/d3-ease/index.d.ts","./node_modules/@types/d3-interpolate/index.d.ts","./node_modules/@types/d3-timer/index.d.ts","./node_modules/@types/use-sync-external-store/index.d.ts"],"fileIdsList":[[62,74,116,244,466],[74,116,244,454,456,518,597,600,757],[74,116,244,456,518,597,599,600,755],[74,116,244,442,454,456,466,518,600,760,761,762,763,780,781],[74,116,244,454,456,518,597,599,600,755,757],[62,74,116,169,171,244,456,518,582,585,597,783],[74,116,244,518,784],[74,116,244,456,518,584,597,783],[74,116,244,584,597],[74,116,244,456,584,597],[74,116,244,518,584],[74,116,244,456,518,584,597],[74,116,244,456,466,518,600,790,791,792,793,794,795,796,797,798],[74,116,244,438,466,518,597,600,788],[62,74,116,244,438,450,454,456,518,582,597,600,605,606,607,608,609,610],[74,116,244,466,518,597,600,757,806],[74,116,244,442,454,456,466,518,597,600,757,763,780,800,808,811,812,813,814,815],[74,116,244,454,456,466,518,597,600,806,808,809],[74,116,244,438,454,456,518,582,597,600,800,801,804],[62,74,116,244,456,518,584,597,600,749,750,751,752],[74,116,244,454,456,518,597,599,600,755,800,808,817],[62,74,116,244,518,585,597],[62,74,116,244,585,597,800],[62,74,116,244,585,597],[74,116,244,518,826,827],[62,74,116,244,466,518,581,585,597,819,820,821,822,823,824,825],[74,116,244,438,466,518,597,600,829,830],[74,116,244,478,518],[74,116,244,478,516],[74,116,244,438,478,518],[62,74,116,244,454,456,518,585],[62,74,116,244,454,585],[62,74,116,244,456,585,597],[74,116,244,748],[62,74,116,244,466,585,597],[62,74,116,244,466,518,585,591,596,597],[62,74,116,244,466,585,591,596,597],[74,116,244],[62,74,116,169,171,244,518,585,597,802],[62,74,116,244,456,585,597,786],[62,74,116,169,171,244,456,585,586,588],[62,74,116,244,585,787],[62,74,116,169,171,244,585,597,800],[62,74,116,244,518,585,597,803],[74,116,244,456,597,600],[74,116,244,466],[62,74,116,244,466,585],[62,74,116,244,466,518,585,597,800],[62,74,116,169,171,244,456,518,585,597],[62,74,116,244,585],[74,116,244,456,466],[62,74,116,169,171,244,518,585,597,783],[62,74,116,169,171,244,585,597],[62,74,116,169,171,244,466,518,585,597],[62,74,116,244,454,456,518],[62,74,116,244,779],[62,74,116,244],[74,116,244,580,586,587,588,589,590,591,592,593,594,595,596],[62,74,116,169,171,244],[74,116,244,466,585,589],[62,74,116,169,171,244,592],[62,74,116,244,518,597],[62,74,116,244,482,585,600,603],[62,74,116,244,454,466],[62,74,116,244,602],[74,116,244,450],[62,74,116,244,581,584],[74,116,244,581,582,583],[74,116,244,582],[74,116,244,581,582,584,585,600],[74,116,244,450,581,584],[74,116,244,450,515],[74,116,482,483],[74,116],[74,116,622,623,624,625,626],[74,116,835],[74,116,612],[74,116,636],[74,113,116],[74,115,116],[116],[74,116,121,151],[74,116,117,122,128,129,136,148,159],[74,116,117,118,128,136],[69,70,71,74,116],[74,116,119,160],[74,116,120,121,129,137],[74,116,121,148,156],[74,116,122,124,128,136],[74,115,116,123],[74,116,124,125],[74,116,128],[74,116,126,128],[74,115,116,128],[74,116,128,129,130,148,159],[74,116,128,129,130,143,148,151],[74,111,116,164],[74,111,116,124,128,131,136,148,159],[74,116,128,129,131,132,136,148,156,159],[74,116,131,133,148,156,159],[72,73,74,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165],[74,116,128,134],[74,116,135,159],[74,116,124,128,136,148],[74,116,137],[74,116,138],[74,115,116,139],[74,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165],[74,116,141],[74,116,142],[74,116,128,143,144],[74,116,143,145,160,162],[74,116,128,148,149,151],[74,116,150,151],[74,116,148,149],[74,116,151],[74,116,152],[74,113,116,148],[74,116,128,154,155],[74,116,154,155],[74,116,121,136,148,156],[74,116,157],[74,116,136,158],[74,116,131,142,159],[74,116,121,160],[74,116,148,161],[74,116,135,162],[74,116,163],[74,116,121,128,130,139,148,159,162,164],[74,116,148,165],[62,74,116,169,171],[62,74,116],[62,66,74,116,167,168,169,170,429,475],[62,74,116,387],[62,66,74,116,168,171,429,475],[62,66,74,116,167,171,429,475],[60,61,74,116],[74,116,778],[74,116,764,765,766,768,777],[74,116,764],[74,116,768],[74,116,767],[74,116,766],[74,116,768,770,771,772,773,774,775,776],[74,116,766,768],[74,116,768,769],[74,116,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514],[74,116,485],[74,116,432],[74,116,434,435,436,437],[74,116,176,178,182,193,383,412,425],[74,116,178,188,189,190,192,425],[74,116,178,225,227,229,230,233,425,427],[74,116,178,182,184,185,186,216,311,383,402,403,411,425,427],[74,116,425],[74,116,189,281,391,400,420],[74,116,178],[74,116,172,281,420],[74,116,235],[74,116,234,425],[74,116,131,381,391,480],[74,116,131,349,361,400,419],[74,116,131,292],[74,116,405],[74,116,404,405,406],[74,116,404],[68,74,116,131,172,178,182,185,187,189,193,194,207,208,235,311,322,401,412,425,429],[74,116,176,178,191,225,226,231,232,425,480],[74,116,191,480],[74,116,176,208,336,425,480],[74,116,480],[74,116,178,191,192,480],[74,116,228,480],[74,116,194,402,410],[74,116,142,244,420],[74,116,244,420],[62,74,116,353],[74,116,279,289,290,420,457,464],[74,116,278,397,458,459,460,461,463],[74,116,396],[74,116,396,397],[74,116,216,281,282,286],[74,116,281],[74,116,281,285,287],[74,116,281,282,283,284],[74,116,462],[62,74,116,179,451],[62,74,116,159],[62,74,116,191,271],[62,74,116,191,412],[74,116,269,273],[62,74,116,270,431],[62,66,74,116,131,166,167,168,171,429,473,474],[74,116,131],[74,116,131,182,215,267,312,333,335,407,408,412,425,426],[74,116,207,409],[74,116,429],[74,116,177],[62,74,116,338,351,360,370,372,419],[74,116,142,338,351,369,370,371,419,479],[74,116,363,364,365,366,367,368],[74,116,365],[74,116,369],[74,116,242,243,244,246],[62,74,116,236,237,238,239,245],[74,116,242,245],[74,116,240],[74,116,241],[62,74,116,244,270,431],[62,74,116,244,430,431],[62,74,116,244,431],[74,116,312,414],[74,116,414],[74,116,131,426,431],[74,116,357],[74,115,116,356],[74,116,217,281,298,335,344,347,349,350,390,419,422,426],[74,116,263,281,378],[74,116,349,419],[62,74,116,349,354,355,357,358,359,360,361,362,373,374,375,376,377,379,380,419,420,480],[74,116,343],[74,116,131,142,179,215,218,239,264,265,312,322,333,334,390,413,425,426,427,429,480],[74,116,419],[74,115,116,189,265,322,346,413,415,416,417,418,426],[74,116,349],[74,115,116,215,252,298,339,340,341,342,343,344,345,347,348,419,420],[74,116,131,252,253,339,426,427],[74,116,189,312,322,335,413,419,426],[74,116,131,425,427],[74,116,131,148,422,426,427],[74,116,131,142,159,172,182,191,217,218,220,249,254,259,263,264,265,267,296,298,300,303,305,308,309,310,311,333,335,412,413,420,422,425,426,427],[74,116,131,148],[74,116,178,179,180,187,422,423,424,429,431,480],[74,116,176,425],[74,116,248],[74,116,131,148,159,210,233,235,236,237,238,239,246,247,480],[74,116,142,159,172,210,225,258,259,260,296,297,298,303,311,312,318,321,323,333,335,413,420,422,425],[74,116,187,194,207,311,322,413,425],[74,116,131,159,179,182,298,316,422,425],[74,116,337],[74,116,131,248,319,320,330],[74,116,422,425],[74,116,344,346],[74,116,265,298,412,431],[74,116,131,142,221,225,297,303,318,321,325,422],[74,116,131,194,207,225,326],[74,116,178,220,328,412,425],[74,116,131,159,239,425],[74,116,131,191,219,220,221,230,248,327,329,412,425],[68,74,116,131,265,332,429,431],[74,116,295,333],[74,116,131,142,159,182,193,194,207,217,218,254,258,259,260,264,296,297,298,300,312,313,315,317,333,335,412,413,420,421,422,431],[74,116,131,148,194,318,324,330,422],[74,116,197,198,199,200,201,202,203,204,205,206],[74,116,249,304],[74,116,306],[74,116,304],[74,116,306,307],[74,116,131,182,185,215,216,426],[74,116,131,142,177,179,217,263,264,265,266,294,333,422,427,429,431],[74,116,131,142,159,181,216,266,298,344,413,421,426],[74,116,339],[74,116,340],[74,116,281,311,390],[74,116,341],[74,116,209,213],[74,116,131,182,209,217],[74,116,212,213],[74,116,214],[74,116,209,210],[74,116,209,261],[74,116,209],[74,116,249,302,421],[74,116,301],[74,116,210,420,421],[74,116,299,421],[74,116,210,420],[74,116,390],[74,116,182,211,217,265,281,298,332,335,338,344,351,352,382,383,386,389,412,422,426],[74,116,274,277,279,280,289,290],[62,74,116,169,171,244,384,385],[62,74,116,169,171,244,384,385,388],[74,116,399],[74,116,189,253,265,332,335,349,357,361,392,393,394,395,397,398,401,412,419,425],[74,116,289],[74,116,131,294],[74,116,294],[74,116,131,217,262,267,291,293,332,422,429,431],[74,116,274,275,276,277,279,280,289,290,430],[68,74,116,131,142,159,209,210,218,264,265,298,330,331,333,412,413,422,425,426,429],[74,116,253,255,258,413],[74,116,131,249,425],[74,116,252,349],[74,116,251],[74,116,253,254],[74,116,250,252,425],[74,116,131,181,253,255,256,257,425,426],[62,74,116,281,288,420],[74,116,174,175],[62,74,116,179],[62,74,116,278,420],[62,68,74,116,264,265,429,431],[74,116,179,451,452],[62,74,116,273],[62,74,116,142,159,177,232,268,270,272,431],[74,116,191,420,426],[74,116,314,420],[62,74,116,129,131,142,176,177,227,273,429,430],[62,74,116,167,168,171,429,475],[62,63,64,65,66,74,116],[74,116,121],[74,116,222,223,224],[74,116,222],[62,66,74,116,131,133,142,166,167,168,169,171,172,177,218,325,369,427,428,431,475],[74,116,439],[74,116,441],[74,116,443],[74,116,445],[74,116,447,448,449],[74,116,453],[67,74,116,433,438,440,442,444,446,450,454,456,466,467,469,478,479,480,481],[74,116,455],[74,116,465],[74,116,270],[74,116,468],[74,115,116,253,255,256,258,470,471,472,475,476,477],[74,116,166],[62,74,116,617,628,633,639,640,647,649,650,652,693,696],[62,74,116,617,628,633,638,640,649,653,654,656,657,693,696],[62,74,116,649,654,698],[62,74,116,632,696],[62,74,116,616,617,619,628,696],[62,74,116,617,628,649,687,696],[62,74,116,617,655,676,680,696],[62,74,116,640,663,664,696,737],[74,116,616,696],[74,116,628,696],[62,74,116,617,628,633,639,640,693,696],[62,74,116,617,619,654,668,720],[62,74,116,615,617,619,668],[62,74,116,617,619,648,668,669,696],[62,74,116,617,628,631,635,639,640,664,678,679,693,696],[62,74,116,621,628,696],[62,74,116,621,628,693,696],[62,74,116,696],[62,74,116,654,664,696],[62,74,116,616,664,696],[62,74,116,664,696],[62,74,116,629],[62,74,116,617,664,696],[62,74,116,615,617,696],[62,74,116,616,617,618,696],[62,74,116,616,617,619,696,748],[62,74,116,641,642,643],[62,74,116,628,630,631,642,664,696,699],[74,116,686,696],[74,116,628,629,648,691,693,696],[74,116,615,616,617,619,620,621,628,629,631,639,640,641,644,648,651,654,655,664,668,670,676,678,679,680,681,688,691,692,693,696,697,698,700,701,702,703,704,705,706,707,709,711,713,714,715,716,717,718,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,743,744,745,746,747],[62,74,116,617,633,640,659,661,696,712],[62,74,116,617,621,628,669,696,710],[62,74,116,617,628],[62,74,116,617,621,628,669,696,708],[62,74,116,617,640,648,660,669,696],[62,74,116,617,628,633,638,640,649,693,696,704,712,715],[62,74,116,638,696],[62,74,116,653,696],[74,116,622,627,696],[74,116,620,621,622,627,693,696],[74,116,622,627,632],[74,116,622,627,663,681,696],[74,116,622,627,628,633,634,635,652,657,658,661,662,696],[74,116,622,627,641,644,696],[74,116,622,627,664,696],[74,116,622,627,628],[74,116,622,627],[74,116,622,627,628,667,668,670],[74,116,622,627,628,667,696],[74,116,622,627,629,651,696],[74,116,647,663,686,696],[74,116,628,633,646,647,648,663,671,674,682,686,688,689,690,692,696],[74,116,628,633,646,647],[74,116,686],[74,116,627,628,633,645,663,664,665,666,671,672,673,674,675,682,683,684,685],[74,116,622,627,628,630,631,663,696],[74,116,633,646,651,663,696],[74,116,646,656,663],[74,116,633,663,696],[62,74,116,631,659,660,663,696],[74,116,663],[74,116,646,663],[74,116,631,633,663,696],[74,116,649,663,696],[74,116,664,696],[62,74,116,654,655,696],[74,116,631,638,645,647,648,664,693,696],[62,74,116,651,655,676,680,696,723,724,725,738],[62,74,116,696,709,711,713,714,716],[74,116,696],[62,74,116,716],[74,116,628,696,742],[74,116,621,696],[62,74,116,663,677,680,696],[74,116,638,646,649,663],[62,74,116,659,719],[62,74,116,614,615,616,619,620,621,628,629,630,633,651,659,693,694,695,748],[74,116,622],[74,116,148,166],[74,83,87,116,159],[74,83,116,148,159],[74,78,116],[74,80,83,116,156,159],[74,116,136,156],[74,78,116,166],[74,80,83,116,136,159],[74,75,76,79,82,116,128,148,159],[74,83,90,116],[74,75,81,116],[74,83,104,105,116],[74,79,83,116,151,159,166],[74,104,116,166],[74,77,78,116,166],[74,83,116],[74,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,105,106,107,108,109,110,116],[74,83,98,116],[74,83,90,91,116],[74,81,83,91,92,116],[74,82,116],[74,75,78,83,116],[74,83,87,91,92,116],[74,87,116],[74,81,83,86,116,159],[74,75,80,83,90,116],[74,116,148],[74,78,83,104,116,164,166],[74,116,613],[74,116,637],[74,116,244,478,515,516]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"9d37372c385ea35087857d10afe0ae636503035feee2f742c4031c3658b17d80","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fa51737611c21ba3a5ac02c4e1535741d58bec67c9bdf94b1837a31c97a2263","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0539c58717cbc8b73acb29f9e992ab5ff20adba5f9b57130691c7f9b186a4d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"f9677e434b7a3b14f0a9367f9dfa1227dfe3ee661792d0085523c3191ae6a1a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"9057f224b79846e3a95baf6dad2c8103278de2b0c5eebda23fc8188171ad2398","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fb11e675f5cc648bc6c344e1311e36b8dfffea8bffe575bedc0e41af77eca99","impliedFormat":1},{"version":"1e289f30a48126935a5d408a91129a13a59c9b0f8c007a816f9f16ef821e144e","impliedFormat":1},{"version":"f96a023e442f02cf551b4cfe435805ccb0a7e13c81619d4da61ec835d03fe512","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"f579f267a2f4c2278cca2ec84613e95059368b503ce96586972d304e5e40125b","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f6f1d54779d0b9ed152b0516b0958cd34889764c1190434bbf18e7a8bb884cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"f7b1df115dbd1b8522cba4f404a9f4fdcd5169e2137129187ffeee9d287e4fd1","impliedFormat":1},{"version":"c878f74b6d10b267f6075c51ac1d8becd15b4aa6a58f79c0cfe3b24908357f60","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"fbf68fc8057932b1c30107ebc37420f8d8dc4bef1253c4c2f9e141886c0df5ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"993985beef40c7d113f6dd8f0ba26eed63028b691fbfeb6a5b63f26408dd2c6d","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb094bb347d7df3380299eb69836c2c8758626ecf45917577707c03cf816b6f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"b02784111b3fc9c38590cd4339ff8718f9329a6f4d3fd66e9744a1dcd1d7e191","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"f23dfbb07f71e879e5a23cdd5a1f7f1585c6a8aae8c250b6eba13600956c72dd","impliedFormat":1},{"version":"b2ba94df355e65e967875bf67ea1bbf6d5a0e8dc141a3d36d5b6d7c3c0f234b6","impliedFormat":1},{"version":"115b2ad73fa7d175cd71a5873d984c21593b2a022f1a2036cc39d9f53629e5dc","impliedFormat":1},{"version":"1be330b3a0b00590633f04c3b35db7fa618c9ee079258e2b24c137eb4ffcd728","impliedFormat":1},{"version":"3372eb0a0d4d9429b3b8ccfe54e5ee2744c3c74ba27315df7bd9c52afa9eb492","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","impliedFormat":1},{"version":"182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","impliedFormat":1},{"version":"5c9b31919ea1cb350a7ae5e71c9ced8f11723e4fa258a8cc8d16ae46edd623c7","impliedFormat":1},{"version":"4aa42ce8383b45823b3a1d3811c0fdd5f939f90254bc4874124393febbaf89f6","impliedFormat":1},{"version":"96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","impliedFormat":1},{"version":"3677988e03b749874eb9c1aa8dc88cd77b6005e5c4c39d821cda7b80d5388619","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"02436d7e9ead85e09a2f8e27d5f47d9464bced31738dec138ca735390815c9f0","impliedFormat":1},{"version":"f4625edcb57b37b84506e8b276eb59ca30d31f88c6656d29d4e90e3bc58e69df","impliedFormat":1},{"version":"78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","impliedFormat":1},{"version":"f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","impliedFormat":1},{"version":"540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","impliedFormat":1},{"version":"121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","impliedFormat":1},{"version":"4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","impliedFormat":1},{"version":"678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","impliedFormat":1},{"version":"493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","impliedFormat":1},{"version":"aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"e2a37ac938c4bede5bb284b9d2d042da299528f1e61f6f57538f1bd37d760869","impliedFormat":1},{"version":"76def37aff8e3a051cf406e10340ffba0f28b6991c5d987474cc11137796e1eb","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","impliedFormat":1},{"version":"bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","impliedFormat":1},{"version":"6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","impliedFormat":1},{"version":"594fe24fc54645ab6ccb9dba15d3a35963a73a395b2ef0375ea34bf181ccfd63","impliedFormat":1},{"version":"7cb0ee103671d1e201cd53dda12bc1cd0a35f1c63d6102720c6eeb322cb8e17e","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","impliedFormat":1},{"version":"ad37fb4be61c1035b68f532b7220f4e8236cf245381ce3b90ac15449ecfe7305","impliedFormat":1},{"version":"93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","impliedFormat":1},{"version":"8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","impliedFormat":1},{"version":"304b44b1e97dd4c94697c3313df89a578dca4930a104454c99863f1784a54357","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"a365c4d3bed3be4e4e20793c999c51f5cd7e6792322f14650949d827fbcd170f","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"97e5ccc7bb88419005cbdf812243a5b3186cdef81b608540acabe1be163fc3e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","impliedFormat":1},{"version":"5c32bdfbd2d65e8fffbb9fbda04d7165e9181b08dad61154961852366deb7540","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"6b3453eebd474cc8acf6d759f1668e6ce7425a565e2996a20b644c72916ecf75","impliedFormat":1},{"version":"0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","impliedFormat":1},{"version":"89cd3444e389e42c56fd0d072afef31387e7f4107651afd2c03950f22dc36f77","impliedFormat":1},{"version":"7f2aa4d4989a82530aaac3f72b3dceca90e9c25bee0b1a327e8a08a1262435ad","impliedFormat":1},{"version":"e39a304f882598138a8022106cb8de332abbbb87f3fee71c5ca6b525c11c51fc","impliedFormat":1},{"version":"faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","impliedFormat":1},{"version":"fcdf3e40e4a01b9a4b70931b8b51476b210c511924fcfe3f0dae19c4d52f1a54","impliedFormat":1},{"version":"345c4327b637d34a15aba4b7091eb068d6ab40a3dedaab9f00986253c9704e53","impliedFormat":1},{"version":"3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"2b5b70d7782fe028487a80a1c214e67bd610532b9f978b78fa60f5b4a359f77e","impliedFormat":1},{"version":"7ee86fbb3754388e004de0ef9e6505485ddfb3be7640783d6d015711c03d302d","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"7580e62139cb2b44a0270c8d01abcbfcba2819a02514a527342447fa69b34ef1","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"7e6ac205dcb9714f708354fd863bffa45cee90740706cc64b3b39b23ebb84744","impliedFormat":1},{"version":"61dc6e3ac78d64aa864eedd0a208b97b5887cc99c5ba65c03287bf57d83b1eb9","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"f730b468deecf26188ad62ee8950dc29aa2aea9543bb08ed714c3db019359fd9","impliedFormat":1},{"version":"933aee906d42ea2c53b6892192a8127745f2ec81a90695df4024308ba35a8ff4","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"144bc326e90b894d1ec78a2af3ffb2eb3733f4d96761db0ca0b6239a8285f972","impliedFormat":1},{"version":"a3e3f0efcae272ab8ee3298e4e819f7d9dd9ff411101f45444877e77cfeca9a4","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","impliedFormat":1},{"version":"71d9eb4c4e99456b78ae182fb20a5dfc20eb1667f091dbb9335b3c017dd1c783","impliedFormat":1},{"version":"cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","impliedFormat":1},{"version":"30e6520444df1a004f46fdc8096f3fe06f7bbd93d09c53ada9dcdde59919ccca","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"a58beefce74db00dbb60eb5a4bb0c6726fb94c7797c721f629142c0ae9c94306","impliedFormat":1},{"version":"41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","impliedFormat":1},{"version":"502fa5863df08b806dbf33c54bee8c19f7e2ad466785c0fc35465d7c5ff80995","impliedFormat":1},{"version":"c91a2d08601a1547ffef326201be26db94356f38693bb18db622ae5e9b3d7c92","impliedFormat":1},{"version":"888cda0fa66d7f74e985a3f7b1af1f64b8ff03eb3d5e80d051c3cbdeb7f32ab7","impliedFormat":1},{"version":"60681e13f3545be5e9477acb752b741eae6eaf4cc01658a25ec05bff8b82a2ef","impliedFormat":1},{"version":"9586918b63f24124a5ca1d0cc2979821a8a57f514781f09fc5aa9cae6d7c0138","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","impliedFormat":1},{"version":"55095860901097726220b6923e35a812afdd49242a1246d7b0942ee7eb34c6e4","impliedFormat":1},{"version":"96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"bb8f2dbc03533abca2066ce4655c119bff353dd4514375beb93c08590c03e023","impliedFormat":1},{"version":"d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","impliedFormat":1},{"version":"1a6e6ba8a07b74e3ad237717c0299d453f9ceb795dbc2f697d1f2dd07cb782d2","impliedFormat":1},{"version":"58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"190da5eac6478d61ab9731ab2146fbc0164af2117a363013249b7e7992f1cccb","impliedFormat":1},{"version":"01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","impliedFormat":1},{"version":"f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","impliedFormat":1},{"version":"8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","impliedFormat":1},{"version":"8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","impliedFormat":1},{"version":"7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","impliedFormat":1},{"version":"2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true,"impliedFormat":1},{"version":"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"88e9caa9c5d2ba629240b5913842e7c57c5c0315383b8dc9d436ef2b60f1c391","impliedFormat":1},{"version":"ddf68b3b62e49cf6fd93ba2351ad0fbbcf62ca2d5d7afc9f186114e4b481c3cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"a46dba563f70f32f9e45ae015f3de979225f668075d7a427f874e0f6db584991","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"622694a8522b46f6310c2a9b5d2530dde1e2854cb5829354e6d1ff8f371cf469","impliedFormat":1},{"version":"d24ff95760ea2dfcc7c57d0e269356984e7046b7e0b745c80fea71559f15bdd8","impliedFormat":1},{"version":"a9e6c0ff3f8186fccd05752cf75fc94e147c02645087ac6de5cc16403323d870","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"13c1b657932e827a7ed510395d94fc8b743b9d053ab95b7cd829b2bc46fb06db","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"078131f3a722a8ad3fc0b724cd3497176513cdcb41c80f96a3acbda2a143b58e","impliedFormat":1},{"version":"8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"9e155d2255348d950b1f65643fb26c0f14f5109daf8bd9ee24a866ad0a743648","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b103e9abfe82d14c0ad06a55d9f91d6747154ef7cacc73cf27ecad2bfb3afcf","impliedFormat":1},{"version":"7a883e9c84e720810f86ef4388f54938a65caa0f4d181a64e9255e847a7c9f51","impliedFormat":1},{"version":"a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d408d6f32de8d1aba2ff4a20f1aa6a6edd7d92c997f63b90f8ad3f9017cf5e46","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"b1f1d57fde8247599731b24a733395c880a6561ec0c882efaaf20d7df968c5af","impliedFormat":1},{"version":"9d622ea608d43eb463c0c4538fd5baa794bc18ea0bb8e96cd2ab6fd483d55fe2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264","impliedFormat":1},{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","impliedFormat":1},{"version":"af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","impliedFormat":1},{"version":"94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","impliedFormat":1},{"version":"1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","impliedFormat":1},{"version":"e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","impliedFormat":1},{"version":"5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","impliedFormat":1},{"version":"e7765aa8bcb74a38b3230d212b4547686eb9796621ffb4367a104451c3f9614f","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"7b550dda9686c16f36a17bf9051d5dbf31e98555b30d114ac49fc49a1e712651",{"version":"ef52b983c108a10854a26ee467a86c9b5f87024563d48defe3b0e8f4a1af4a51","impliedFormat":99},{"version":"a380cd0a371b5b344c2f679a932593f02445571f9de0014bdf013dddf2a77376","impliedFormat":99},{"version":"dbbcd13911daafc1554acc17dad18ab92f91b5b8f084c6c4370cb8c60520c3b6","impliedFormat":99},{"version":"9c06dd902f40b340b062fff14d3ef579b67c65007fbaba56497422a21e2e5911","impliedFormat":99},{"version":"b026daf5c00c8f2abdb49008322a7d51fbadcd7b200a99ee7a4452dbd40f0420","impliedFormat":99},{"version":"e130a73d7e1e34953b1964c17c218fd14fccd1df6f15f111352b0d53291311bb","impliedFormat":99},{"version":"4ddecad872558e2b3df434ef0b01114d245e7a18a86afa6e7b5c68e75f9b8f76","impliedFormat":99},{"version":"924e513606180beab310a21ece1fe85dc3f1cc159bd894861b01bbe46764d7ca","impliedFormat":99},{"version":"270ceb915b1304c042b6799de28ff212cfa4baf06900d3a8bc4b79f62f00c8a7","impliedFormat":99},{"version":"1b3174ea6e3b4ae157c88eb28bf8e6d67f044edc9c552daf5488628fd8e5be97","impliedFormat":99},{"version":"6564db88fa4cf3bae5c8e0de01c701c6228eaeef1118b4ad6a49a8aaf8556350","impliedFormat":99},{"version":"9c5a4a21ed5686b2ea080557488b966c3aeea641ef1aa8975a10e5fc59dd569f","impliedFormat":99},{"version":"5585ed538922e2e58655218652dcb262f08afa902f26f490cdec4967887ac31a","impliedFormat":99},{"version":"b46de7238d9d2243b27a21797e4772ba91465caae9c31f21dc43748dc9de9cd0","impliedFormat":99},{"version":"625fdbce788630c62f793cb6c80e0072ce0b8bf1d4d0a9922430671164371e0b","impliedFormat":99},{"version":"b6790300d245377671c085e76e9ef359b3cbba6821b913d6ce6b2739d00b9fb1","impliedFormat":99},{"version":"c92c9dc7415bf7969931ac5339f21c65687909b32d05ac89789b411372e52991","impliedFormat":99},{"version":"a36c717362d06d76e7332d9c1d2744c2c5e4b4a5da6218ef7b4a299a62d23a6d","impliedFormat":99},{"version":"a61f8455fd21cec75a8288cd761f5bcc72441848841eb64aa09569e9d8929ff0","impliedFormat":99},{"version":"b135437aa8444e851e10cb514b4a73141813e0adcfcc06d702df6aa0fd922587","impliedFormat":99},{"version":"cc82fa360f22d73b4cc7f446d08ad52b11f5aba66aa04b1ed8feb11a509e8aff","impliedFormat":99},{"version":"466e7296272b827c55b53a7858502de733733558966e2e3a7cc78274e930210a","impliedFormat":99},{"version":"364a5c527037fdd7d494ab0a97f510d3ceda30b8a4bc598b490c135f959ff3c6","impliedFormat":99},{"version":"f198de1cd91b94acc7f4d72cbccc11abadb1570bedc4ede174810e1f6985e06e","impliedFormat":99},{"version":"83d2dab980f2d1a2fe333f0001de8f42c831a438159d47b77c686ae405891b7f","impliedFormat":99},{"version":"ca369bcbdafc423d1a9dccd69de98044534900ff8236d2dd970b52438afb5355","impliedFormat":99},{"version":"5b90280e84e8eba347caaefc18210de3ce6ac176f5e82705a28e7f497dcc8689","impliedFormat":99},{"version":"34e2f00467aa6f46c1d7955f8d57bffb48ccc6ad2bbc847d0b1ccef1d55a9c3c","impliedFormat":99},{"version":"f09dfae4ff5f84c1341d74208e9b442659c32d039e9d27c09f79a203755e953d","impliedFormat":99},{"version":"e7878d8cd1fd0d0f1c55dcd8f5539f4c22e44993852f588dd194bd666b230727","impliedFormat":99},{"version":"0d22b18cb407b03331edf3413b93e568da71130c906fd69911090df2abf55414","impliedFormat":99},{"version":"b00824870e9c2a1a5bcf1b2a886fff27414ede0954c3b96cc8606085c984b6b2","signature":"bcc5c58ed3c3101b7f3c8a8dba992531c5695fb5e5f0cbe539afa27bfd20eb44"},{"version":"7a751995337b94687f6f5e54d863d7c8ce4497bfb65c31ce86ffa23cc20cb698","signature":"7935436f690b0f0b4bdfe913ae26a7bd5ce7d8ec1bdf3184bd2fa1cbc8208abf"},{"version":"6f5e5ad677d73b7e8f43761aba7f571182432ba0af56eedd5e0beccff9ccf33c","signature":"71b3952b924ad9b1dce7d3486a0dcdb165b97086212e7b1f5fc6e4b32a358d71"},{"version":"598cf2ba56f5d8700e544a7707de1c362bc684bdd26dcec5935d25c1c461ab16","signature":"2689610158a696036891b99170b12e055c959ca4a7ecd8a9dcb5d295db13e878"},{"version":"77ba037819ea11333f866e72adf07937cb00a790e237380e46675639a67fd1c1","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"c861e0a300ca6fee9255aad08eef0bc7aaa12ed5adbd4dfc14b5a72568e5d82c","signature":"3730012abb4e39a1979b81b6766bc7628f52dcaa0e76d01c5c37919c6ae5ddfc"},{"version":"7d9de13d2a8d6a7f70b5282b06000d461b0cf85298a170afbfa61c3b297441c8","signature":"e3e41d6ad843db5af0532543d4c3ec56d1cda0331c474f45f0d7f00b21608858"},{"version":"b4ae3efe537b61b71899079bd6ef9048d087ce961c991d4f53c686ba712b2ab8","signature":"9f1dc1dc2a437203251a302e64c70cbe3b84d645ebb6068b998466dbfe9e7361"},{"version":"fe01718989b0c01dcd0124d4acc733851c57d205cd3375a543f9bea2c052a71b","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"958e851c3da07e680fa85ab98455eaf09de6a8252cf2b5ae7d443ab36f8beedc","signature":"3730012abb4e39a1979b81b6766bc7628f52dcaa0e76d01c5c37919c6ae5ddfc"},{"version":"e414f1f381f04f2173b0dc1995d20ea1e8500b8787d8c1b5c62f99cbb5683c7d","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"2c5bf31ddadd5025912a8ae0634ec632ed66095bd88f1a9df57c3ce5aedeb7c3","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"690dac7258f14b64f1452d679d8b16447215808ec472ca01c63c29d93b5dbf30","signature":"f67413fe3cd48b7f3a33839ba8beb0bb4768b4798c848a4cecb0eb0d22ee1de1"},{"version":"76b95cdcc17ec94699552ecb87c4632f8897f3617170c6636c091314cdb65289","signature":"7a0fc24ab97fa31f1ad87682bd7bf000d93abd5d06a4d459ee312b2c40ac4421"},{"version":"90d4afaf5b9f3a3e20bab45996dddf914a2ce2b00f3fba851071550457a97a6c","signature":"421ccd7613c49b2052e56395bffa706e05a4067eb55494d3bf4eefc878f13acf"},{"version":"9921c698b4c07372ef91e8aea60f866cf643a2495a3f1d9dea7d55a89090b3a2","signature":"8c05044583fe379e98847bda0ac57c5401164e6da0161229a420abde963da47e"},{"version":"868cdc9885c4cd3a40e22171667f52108b120522151de7f285d4a6baf280ed18","signature":"47091ae5abc56efb3211f73b3051429d975d299b19829850e1f5d5103f08634b"},{"version":"8c1fbe1839e87c7d52546cf38ba2efe86696e09be5c2c37be2b14e7d0afa8963","signature":"7650273e8da9017f41712188e8b52dd9a9061b96c5eee6b10ba23ef318f41bfa"},{"version":"b0292c78804c15f8f2e3dbb9e4a53b07cd0cb3c4dc1f95a0922aefc1a20d2deb","signature":"e54a2b5a7ec1a7ca8bed654c03f4fc0ffa72fe498b89568649608b21b14ae013"},{"version":"3997d4788aca3a69e14b920209f8120b1cea87bfc405f05b8874af2000387d0b","signature":"aadf38e05540aec1a653d3c32944c17b8de2582b9b0255516fcea7e681a2cebd"},{"version":"3580f6c9473b26416bd7d3902668ef87d22ba90089866b01e8b3306671ec01b1","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"d733d684c6f9cdb59afa8ea97621789d906dc4c2e87b31540fe1dfdf7b6db174","signature":"6c274855ceb00206dbc342015f56ef97fd7db8c4ae3db4a86b203da93fcec31f"},{"version":"c0ae82b6aeefdb607021810af69281acb1aaa841ec042a78291547fda7a403e8","signature":"502ef0a9c198c637faf948bc4a670234b815ea4924388824cfd4ec4861f06d4b"},{"version":"5627a95bbd91914823726d03cc4adc9ae0f186b65344040dbc74b9dbb2ab3cc2","signature":"4d1177e68cf74d1ec681e8eefb07ad64b9590836d1c3e90b822ca02e0de1e216"},{"version":"58e001a218e52264d1c77b7b7b5a603e8b6b50b5c792f305348fb8afa9e9ddf1","signature":"c72a48a0bdb670552a2c925b67d2ac36a06ca4351927a6069642a75a015a41b9"},{"version":"171d0fa3ce186d07eba456bbc056d5ea9e3b9ea83c2298f09a6743083e6443af","signature":"ef011f6000499f638d8afb922b5eaf73249b3ed978a89a4892ea6b0f7b127f89"},{"version":"78b046725cff94ea19f2d09e8283403957f7dc21f1103770a60054f00cb73a8c","signature":"fbaae4399ce20cdce62affa49c1790e382009b662c7c2010b8adbef1dd9e38b3"},{"version":"733d6424398d8405f40803a592579dec180e313c0735b17d26e879ed85fa7645","signature":"b42d985daee8fbac8f76ce88d1a724f90ed917f2d98f838bc3e45235c03d12a2"},{"version":"1e47e45c58b1c69baa27e50983305bb7682e79520829e63eef46e87aa94cf5d2","signature":"a3df50373eaab5122c1384f66eac08aedf5505f13be691f57565e2dc852a3ea0"},{"version":"69c30e416e6fcc5e4b7ef2eed1b04295d44b89d29090888d640749bfc2bec897","signature":"2c308f9ddc83ccdfe0a5a2cf08b5e9e768b783bfdfebe8f869ce1d5bd9ceb718"},{"version":"0798941ff8cedff9434fb04dedc6784107590c43cc02259b7a4c5768c7f9e999","signature":"0dd3af12569d2948aab4f32469ed5b46a9c456a6ffd7c6d1990fc76c2e6117b9"},{"version":"e37a1a43ed1041774a76fabffad8e3688a9feac6c8548f07e8dbe357c28001ae","signature":"e3e41d6ad843db5af0532543d4c3ec56d1cda0331c474f45f0d7f00b21608858"},{"version":"b14715fc60b81e33db74c2b9ea50a205714d2c763c218da2e696a3af1245a8b5","signature":"4d02f37472fbaa3899765646d16e43d366f9801897ae76a42de5043c7290d899"},{"version":"59c4eb209ff2c7124aa00a2e9ba5e4aa739db96993c3558b6fb1c02dcf56917b","signature":"2b6bbb24c2c97aff598726aad658af87c1c214a44d3efdfcbec7b9028a1bef2a"},{"version":"21e155d7cefbd086db7467f0626a45baad1a2534b6837c16a756da54944eb3df","signature":"7ea177c0588ff03dfbd917e072eda207464df2357e9fcd61547042063a456e92"},{"version":"e66bfa0968c57463217ca377e442fb21dd31aa4e9b9e6884932e8313b89dca5d","signature":"8e3f4723636746826fa7c2f572617c4e130c6be4f2c268cc6336b5ce2ff4d75e"},{"version":"24f8d80dae0fba83a315bbff3a7b4ba77d8cbcd510d043a8f7fe3a62ecf8a2fb","signature":"17ba9c0f46d4980eb5a803bc843058b0c7008a25e501dfb5e20222914ff770ff"},{"version":"089286ec0cd8dd4377c3d66375a13bd12640cfd6c85f0b9378d0d30a36af6803","signature":"3fa2b14981281504e1a58874be01ff6c5f22ac20e216a62b3c7cf8b4e87c1153"},{"version":"1a56a6c8656903072129bb2b8d4b2480ca23fd0485f0fa44192fe47063ddca82","signature":"da7eb2beafb69653938358dca21a073cf2fd4aca6bd4a9575f63ab7cb7c49210"},{"version":"7aee672eb0a5926bd2bfda390e5b2f32f2e8afc587de8ed17133fd952c74e2a7","signature":"d1b70bee1b03d67d70dcd528717cca7ce54e97619603af1a4f0e244b260a8cc6"},{"version":"90f6d8c8eb435f11a42733f4947a7321d4ef967db6d3e3b7d82c0feabf3d8874","signature":"cca800fd5c225955c6fb69fa0de99c8fe0b01d5f15ccae18cd45f6c4856abace"},{"version":"47c4713d4254dcfb10cd98baf5ca5a14c0367b6792a9611dc50438b77b892639","signature":"4ff1946d3ed8965ccdc8d57f58fbfa6c2f55614824c72bac0ee3c38a826e4604"},{"version":"9da6d928e783c297bf291d87d599a3800ad2c4a3eb63dc7a14711f676c7a5a7d","signature":"dfb706eda7d64a38e7b7ad6780bb50ebf3d96b7bc008d40216bd696b69faab93"},{"version":"e5d5a18c02ff507923d597571c2f2639ea48311f17421e87888506962ec678b3","signature":"36d2109b2170376f7ec834016d3232b604d08c050758d8ed4f60a0adb3da4aab"},{"version":"85cca56b1d5f3934c2bf8e3bbe4c07e7e523c68139457742c82ac88273752894","signature":"da7eb2beafb69653938358dca21a073cf2fd4aca6bd4a9575f63ab7cb7c49210"},{"version":"f2ac63828532bf41eb82bab4a8b25c6640da9f09b7a4d2071349ba5b1c74063b","signature":"7291ef104a365e51e537c69cd1cc7038fd4a0f60237e7e06f0e315efa57a8ea2"},{"version":"53fa9060bbfd178b469d489e830d9149a1fecc08fa2f365abc9c69cefd532cef","signature":"c1b42c658ec213c43cfe69e2ed92269c9dbddccf5410f3f0855b65e2601deecb"},{"version":"9d5adf8445d0d8a7014423323097f73d08c3a13d825f1ed005075705d1c2eba0","signature":"072cc1e36d8a6e634e844d3bf794688a8c1ea7b4df136c9b89bbce5238681589"},{"version":"fb7b94855746a87322dfd8c2a73dca7a5a48b3b62b7f51d249b49faee82185d7","signature":"e340d2e551a135fe4b7a41ab910bca464121096affc89a941cfe80a69111983d"},{"version":"17c82bae85d4eb47a9140e24784de173e4f46bdd1839afbdb4180972101238b7","signature":"e3e41d6ad843db5af0532543d4c3ec56d1cda0331c474f45f0d7f00b21608858"},{"version":"27c2154bdb749bec35f76115c484d71c4407fa8188aed722e0116c5c14fe2094","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"7f6536d9fc263f40b6f8ccc2c32a4aa064108711684dace397880859daa768ff","signature":"e3e41d6ad843db5af0532543d4c3ec56d1cda0331c474f45f0d7f00b21608858"},{"version":"2e4045fa86333ea8ce4984dd87d310f1de160a3b3a88fec282b50c64e7592819","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"1a0402f65cc636ec10b240623cdc6f53cf24679b499b73fbbf3ae23f9ba9c349","signature":"58a412d6f964e5415bbe046dadc0ea588894c880c05c9dfd76aa6514f2d138dc"},{"version":"34725c8ee2e3026c6a32e0c1fbe7f1de0521424c4c9354833557ce276af85f6e","signature":"15e669fd99962cbee35cabe0eb4451e8c3a9c68d5a3bba02c1ea56dd29e948b5"},{"version":"e78257e5847f10daa44ff599cc2ff063842755ecb65885386f09f38c20b0cc60","signature":"15e669fd99962cbee35cabe0eb4451e8c3a9c68d5a3bba02c1ea56dd29e948b5"},{"version":"d06b3fd39e09b894d025c8d98e7ff8f8a0fb7bb23a150e17026023904b39994d","signature":"08a993f075fdf9f48e38820f5f5cab55a74010d38f617d16b279ad6973db1ec7"},{"version":"4a76946404587e0c4ff209da99aede3e8ac18612a89f6312799a977751b73f17","signature":"f5f0ff2d867eab2989c57334edb92e30cc3cc5bc836172e1ae90fbd5f4b498d0"},{"version":"57573e55f01f8f9c672100062acf51e123c85d8187b28d2bc74f5606a0f1c1ce","signature":"31a521fcf3c2ecd6ffb939c4b4258f4444066f253fcdd1b7bd0a3f8092357974"},{"version":"858dc07b7e179f84d86356eaa98d60f96c691633d1d6d16cc761650af30d6a1d","signature":"5c74b4521f502a08b22a876e6ea2c4999bc0a3ff589a121f98918cb714c00520"},{"version":"466cfea2715740c4ca5fe8151ef870e5b485b4df4c1ad00c90910916f276431c","signature":"8df0d31686e0861bbf4a9e259cc807928555787e48b4a6f4a696ad54ac81a53e"},{"version":"806e7ec6fc2c1aaa4dcb03f8715e6bc4e5df4c5cac35f03a4423b720fe0d4cb7","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"59932d61458bdf8a44977324fc7110b8108dfea86672929bc0b06046e76a4912","signature":"8b1bc84eff3e1aee3c0260bdcd75291399ea2bd19f20f718176c979b16f4c213"},{"version":"f10f53ff34e8ee84baf89ece3b9696de2d840537e42d62a3419570cf5a8097d7","signature":"421ccd7613c49b2052e56395bffa706e05a4067eb55494d3bf4eefc878f13acf"},{"version":"36c9c8ad27c9c1e4c727569bc94dcce940cfaecd47bda05441da0cb389687441","signature":"9659568d0fde775ab1406982a3adfd5adf37c675b57ad3129f7e42fb237aea1a"},{"version":"2850ae9210e5601be382a1a78af233abcb6c3935996e986a5908ef7fe0e4129b","signature":"3293d333b94cf0cbf353ac7fde9907a9b78b7df6e9fb1849b942ed86ca1a8a15"},{"version":"880cea280d50a5f1d035bbc8e3bde6cc81893e53f6ccf3890c1467e6fa1c9a6c","signature":"d4666f3151f3835b3e45f2b2c863cc8eff88e419b9c54872b92ffc7832fae033"},{"version":"ca00dc9cffa9025024c207f9a77f2b5d9b1262cdc275048957781f4efd5614fd","signature":"cfeaac52c7d1dc40878408514c4788d2509a4f4804f54d5b12c63e2262a1d209"},{"version":"25ddcb3b94fba9b875e67044f9abeb1ef7cbb54a049d6836d86b217d37915440","signature":"75f113ee722bb81ac5535499eca19a64d8dd5155281cacf42177a1b387ac9846"},{"version":"ad23ed0bd8fae58ee930dc12b88bfcd8a5b79ca1494799e35e0d13b3f45f88bc","signature":"a4a57d44e3d4815457528e37c4ae63ba148fac2deff78b687e14c3484b746281"},{"version":"bd6694f1539c13dc27bfbf50348ddd703e22c4a521229ac13b9ca381fac8bf76","signature":"b4320fd048f2b8fc972203a7011596f2410034f419cf835b32d729049c25605b"},{"version":"9a26c1918be43dc2eb7b879ac4f54b9b62b62592caa1f94225892dfdf4fe9194","signature":"e035df2545458bec7afc4dd9bf6e14454f82dc74ad6dc73092862a0f4347ce4b"},{"version":"b6805e78b846383e01e0270933ef550f005afb3ba6bd3ff037009c335bd745ef","signature":"cd76f44e764304dc19faf547e130d500ef5778f7164e57509667076a7d6a6411"},{"version":"12b1cf3ef3dd17b66534da070fcd8f01db77847b3468c38e22c15bcd552f4c29","signature":"8f2bc8a5f10446a314a881d2615cfbf40795cd3a42228ed29c575b1efa7e4d7d"},{"version":"9c88eb85ae6152a8313d6003e99c8a41b17df78c8b2ace44185a2b8143a7c764","signature":"68c2e6764c3ce9125550c88263962448698d776f047de22bc12eea3ce0b2510a"},{"version":"48831a56d4492df056f4412349d33fbf96de989db12aa1d8580b8a2ce305e75c","signature":"cfa3504a5c6206eaa677f95f0c18527338c45673411c43e4891e7ed1efc99bb2"},{"version":"000319ddfe735ed2347ee4dadfb5a7fe4ca6d164d358c134930a71999c02b974","signature":"af428473ba0b6f43cd645568ba8259937dba17804ae047bd3617a8d8ef5d8514"},{"version":"58c378a3aea2e306f4ec40d8add3eb119c1dfba0f176b8b01a5ba0b9e53bccd6","signature":"62ca90d85bd3e77a62ec843d71e21ca7b546fa838b343a3b961ada5bba74b7ae"},{"version":"7a8bf6d1cc3efaa5fb81825c5c685cf57410562e023ffb47ff06bff21832eccb","signature":"635fd86ff45b26431ce579015b1079209869894752eec8f50d2d91a8f5a6ae7c"},{"version":"c4cf83f2d34bbe0915940dbef531f6b180e0a6dfea2a4a89d0b1b044972dfe0e","signature":"c9dee0854cd645471145be6fa56825ece9e17be352a944499de961cbb787ffd1"},{"version":"fa5dc4ea2757f54ba5e98a29022d8463a8589053c83d9de9bcf386bffd4b02da","signature":"1e279f8c7376434e494dcb165a82db47118ab9fd682da502d097bcaaf35d78a7"},{"version":"9e349c364244edcc3232105881b01a3a237b7359126ef0f397fc03515305e3d3","signature":"4a090682e496e91680c59118143d09166a9184910aa4f803fee87590d75291fb"},{"version":"b0508fd8cae4d316560b7ed8ecabe4305001d024aeabd3146a134c3318f1c7a7","signature":"193f3698143959625b77bab03ef64fae1876dda0ed7438f9da236b49a3b9b826"},{"version":"c01f6b96e3bf9187e17fb6ec08fce06b07bb4866501d34189d0936ff92f074be","signature":"f3c9b57e2f0a83f133cc917184a0c5aff6fca124e92760c9490e4f4b59057bd1"},{"version":"6f7eb734e30c21b5e41f170f09ae502f99e37f8417952cd3c3478cfe50631f22","signature":"fd005351d4c1dfda36d8bcd8cf93d46b50a9e9de4da9ed2f3e5518a07c23ac18"},"ddd4dbc0f7607df8c62040279964116f9eecab0f81c75941a27652765324c491",{"version":"6c05d0fcee91437571513c404e62396ee798ff37a2d8bef2104accdc79deb9c0","impliedFormat":1},{"version":"3f22fae104c090fd67cc1c6a7b63650e02593b2177559298409bd9be2f571100","signature":"d34a2db2c6a481d87ef49cd6cf23f4c3abacb808ff8a3c278e0dc96022e8c88c"},{"version":"93a1497db576bdc73d6ad2c4755336b692b0a55bd3d96f42fd855cd0a0390a9e","signature":"8635f2bdaed58f996ba408ccd5df53644c0cf3c57f2e0644214d1ce8077f4c74"},{"version":"e0c7e1f912ebf5b8e5108edb0e818149469ce584870685b71326f3e129d380fd","signature":"2c993d4a78fee7c2e267a51c9bb5fb90aa0f0c6bba5b642b8b6b169015273152"},{"version":"57afe953a6d3545e6e3f500501b76a1118c85ef03b7a35e0630ae17a1896c7ee","signature":"dbe4b22df365f7d03d9ab7c4c5c671febb0acf37f65e360b3f75c5e2bda4e980"},{"version":"7f403e9fed95bcf47b29468528e40f5c23d7ef9faf0ac4bfbb84277e080858cf","signature":"a1989b5a82aee3f4a572fc777b1073ac8b780cd7ac2e215c86b705a6dcd02f59"},{"version":"dfafdb4d95b88dfcd8fc0aed390a500202d1f1c2943e68084f41e4a17f3d030e","signature":"14091ea8ce9aada2a0f6f2ec8b734acf20acea20ae697473f4e53eb5cb9d3389"},{"version":"098186ff0d39955c60780ab485a5dd69f3eada1bdbe5d968e7b678d3cf548ed1","signature":"d1d2e8c22add077333868bf632538078a39ae1b9fe4d8e4433c6e102ec6cfb62"},{"version":"ea426fa2f96bd15dd7e9c8d2dbd9d6fcfef1dc798ae0369f3854f6b3512abdbe","signature":"e17333f987281e3c320c906027e2fafaa024e4a6f09b2a43bd75a300cad2098b"},{"version":"8f0be8644f5e61d8bf6fb29816c78caec2d44242289b3b7c957d08965b70c165","signature":"f7599016a084dc677be8d54fdbb4e1bdd203a014159b16816dabdf97b1238497"},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"eb9271b3c585ea9dc7b19b906a921bf93f30f22330408ffec6df6a22057f3296","impliedFormat":1},{"version":"aa4a927d0c7239dff845a64e676c71aeed2bbda89a7fb486baab22eb7688ba1d","impliedFormat":1},{"version":"340a990742a00862049b378aaa482b5bb8323d443c799dded51ce711f4f8eb51","impliedFormat":1},{"version":"89eeeebbc612a079c6e7ebe0bde08e06fbc46cfeaebf6157ea3051ed55967b10","impliedFormat":1},{"version":"4c72f66622e266b542fb097f4d1fe88eb858b88b98414a13ef3dd901109e03a1","impliedFormat":1},{"version":"23a933d83f3a8d595b35f3827c5e68239fb4f6eb44e96389269d183fe7ff09ba","impliedFormat":1},{"version":"2acad3ae616a9fb5a8c3d4d7bb5edb11d1d0102372ee939e7fc64359fec4046e","impliedFormat":1},{"version":"c812eabb7d2e13c8e72e216208448f92341a4094dd107cbb0bdb2cb23d1a83e7","impliedFormat":1},{"version":"f734b58ea162765ff4d4a36f671ee06da898921e985a2064510f4925ec1ed062","affectsGlobalScope":true,"impliedFormat":1},{"version":"55c0569d0b70dbc0bb9a811469a1e2a7b8e2bab2d70c013f2e40dfb2d2803d05","impliedFormat":1},{"version":"37f96daaddc2dd96712b2e86f3901f477ac01a5c2539b1bc07fd609d62039ee1","impliedFormat":1},{"version":"9c5c84c449a3d74e417343410ba9f1bd8bfeb32abd16945a1b3d0592ded31bc8","impliedFormat":1},{"version":"a7f09d2aaf994dbfd872eda4f2411d619217b04dbe0916202304e7a3d4b0f5f8","impliedFormat":1},{"version":"a66ebe9a1302d167b34d302dd6719a83697897f3104d255fe02ff65c47c5814e","impliedFormat":99},{"version":"a7f23fecdccf1504dae27c359db676d0a1fbaaeb400b55959078924e4c3a4992","impliedFormat":1},{"version":"bee66a62aa1da254412bb2c3c8c1a0dd12efea0722d35cc6ea7b5fdaa6778fd1","impliedFormat":1},{"version":"05d80364872e31465f8a1eaf2697e4fc418f78aa336f4cea68620a23f1379f6f","impliedFormat":1},{"version":"7345ba3b9eb2182d8cdc4c961b62847c3c9918985179ddefd5ca58a80d8b9e6a","impliedFormat":1},{"version":"81c4a0e6de3d5674ec3a721e04b3eb3244180bda86a22c4185ecac0e3f051cd8","impliedFormat":1},{"version":"39975a01d837394bcac2559639e88ecdc4cfd22433327b46ea6f78eb2c584813","impliedFormat":1},{"version":"7261cabedede09ebfd50e135af40be34f76fb9dbc617e129eaec21b00161ae86","impliedFormat":1},{"version":"ea554794a0d4136c5c6ea8f59ae894c3c0848b17848468a63ed5d3a307e148ae","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"c60b14c297cc569c648ddaea70bc1540903b7f4da416edd46687e88a543515a1","impliedFormat":1},{"version":"acfa00e5599216bcb8c9f3095e5fec4aeddfcc65aabe0eac7e8dbc51e33691c9","impliedFormat":1},{"version":"922d8f0f46dbe9fb80def96f7bcd9d5c1a6c0022d71023afa9eb7b45189d61f2","impliedFormat":1},{"version":"90588fb5ef85f4a8a4234e8062eb97bd3c8114dfb86a0c67f62685969222da8b","impliedFormat":1},{"version":"6ce50ada4bc9d2ad69927dce35cead36da337a618de0a2daaaeeafe38c692597","impliedFormat":1},{"version":"13b8d0a9b0493191f15d11a5452e7c523f811583a983852c1c8539ab2cfdae7c","impliedFormat":1},{"version":"8932771f941e3f8f153a950c65707d0611f30f577256aa59d4b92eda1c3d8f32","impliedFormat":1},{"version":"df6251bd4b5fad52759bfe96e8ab8f2ce625d0b6739b825209b263729a9c321e","impliedFormat":1},{"version":"846068dbe466864be6e2cae9993a4e3ac492a5cb05a36d5ce36e98690fde41f4","impliedFormat":1},{"version":"94c8c60f751015c8f38923e0d1ae32dd4780b572660123fa087b0cf9884a68a8","impliedFormat":1},{"version":"db8747c785df161ef65237bac36a7716168e5ebf18976ab16fd2fff69cf9c6ce","impliedFormat":1},{"version":"3085abdf921a6d225ad037c89eb2ba26a4c3b2c262f842dd3061949d1969b784","impliedFormat":1},{"version":"8e8f7b36675be31c4e9538529c30a552538c42ff866ba59fe70f23ba18479c5a","impliedFormat":1},{"version":"f4f7fbf0e5bf2097ddee2c998cca04b063f6f9cdcb255e728c0e85967119f9e5","impliedFormat":1},{"version":"c5b47653a15ec7c0bde956e77e5ca103ddc180d40eb4b311e4a024ef7c668fb0","impliedFormat":1},{"version":"223709d7c096b4e2bb00390775e43481426c370ac8e270de7e4c36d355fc8bc9","impliedFormat":1},{"version":"0528a80462b04f2f2ad8bee604fe9db235db6a359d1208f370a236e23fc0b1e0","impliedFormat":1},{"version":"17fb3716df78592be07500e9a90bd8c9424dd70c6201226886a8e71b9d2af396","impliedFormat":1},{"version":"82ef7d775e89b200380d8a14dc6af6d985a45868478773d98850ea2449f1be56","impliedFormat":1},{"version":"b86720947f763bbb869c2b183f8e58bca9fa089ed8f9c5a1574b2bea18cfbc02","impliedFormat":1},{"version":"fb7e20b94d23d989fa7c7d20fccebef31c1ef2d3d9ca179cadba6516e4e918ad","impliedFormat":1},{"version":"8326f735a1f0d2b4ad20539cda4e0d2e7c5fc0b534e3c0d503d5ed20a5711009","impliedFormat":1},{"version":"8d720cd4ee809af1d81f4ce88f02168568d5fded574d89875afd8fe7afd9549e","impliedFormat":1},{"version":"df87c2628c5567fd71dc0b765c845b0cbfef61e7c2e56961ac527bfb615ea639","impliedFormat":1},{"version":"659a83f1dd901de4198c9c2aa70e4a46a9bd0c41ce8a42ee26f2dbff5e86b1f3","impliedFormat":1},{"version":"1db5c2491eebd894eb9be03408601cddfe1b08357d021aeb86c3fb6c329a7843","impliedFormat":1},{"version":"224f85b48786de61fb0b018fbea89620ebec6289179daa78ed33c0f83014fc75","impliedFormat":1},{"version":"05fbfcb5c5c247a8b8a1d97dd8557c78ead2fff524f0b6380b4ac9d3e35249fb","impliedFormat":1},{"version":"322f70408b4e1f550ecc411869707764d8b28da3608e4422587630b366daf9de","impliedFormat":1},{"version":"acb93abc527fa52eb2adc5602a7c3c0949861f8e4317a187bb5c3372f872eff4","impliedFormat":1},{"version":"c4ef9e9e0fcb14b52c97ce847fb26a446b7d668d9db98a7de915a22c46f44c37","impliedFormat":1},{"version":"0e447b14e81b5b3e5d83cbea58b734850f78fb883f810e46d3dedba1a5124658","impliedFormat":1},{"version":"045f36d3a830b5ae1b7586492e1a2368d0e4b4209fa656f529fd6f6bb9ac7ced","impliedFormat":1},{"version":"929939785efdef0b6781b7d3a7098238ea3af41be010f18d6627fd061b6c9edf","impliedFormat":1},{"version":"fca68ac3b92725dbf3dac3f9fbc80775b66d2a9c642e75595a4a11a2095b3c9a","impliedFormat":1},{"version":"245d13141d7f9ec6edd36b14844b247e0680950c1c3289774d431cbbd47e714e","impliedFormat":1},{"version":"4326dc453ff5bf36ad778e93b7021cdd9abcfc4efe75a5c04032324f404af558","impliedFormat":1},{"version":"27b47fbd2f2d0d3cd44b8c7231c800f8528949cc56f421093e2b829d6976f173","impliedFormat":1},{"version":"0795a213434963328e8b60e65a9d03a88efc138ae171bbcca39d9000c040e7a4","impliedFormat":1},{"version":"fc745bebefc96e2a518a2d559af6850626cada22a75f794fd40a17aae11e2d54","impliedFormat":1},{"version":"2b0fe9ba00d0d593fb475d4204214a0f604ad8a56f22a5f05c378b52205ef36b","impliedFormat":1},{"version":"3d94a259051acf8acd2108cee57ad58fee7f7b278de76a7a5746f0656eecbff6","impliedFormat":1},{"version":"46097d076be332463ea64865c41d232865614cf358a11af75095dd9cef2871cc","impliedFormat":1},{"version":"6e18a70a7c64e6fe578a8f3ecc1dd562cd0bf6843bbf8e65fde37cf63b9a8ea8","impliedFormat":1},{"version":"3f3526aea8d29f0c53f8fb99201c770c87c357b5e87349aca8494bfd0c145c26","impliedFormat":1},{"version":"6ee92d844e5a1c0eb562d110676a3a17f00d2cd2ea2aaaff0a98d7881b9a4041","impliedFormat":1},{"version":"b9dc36d1f7c5c2350feafb55c090127104e59b7d2a20729b286dab00d70e283d","impliedFormat":1},{"version":"45d3f1d53fa99783a5e3c29debb065d6060d0db650a6a1055308a8619bd6b263","impliedFormat":1},{"version":"a14febaf38fd75a88620a0808732cf9841afc403da2dc3de7a6fc9a49d36bdbc","impliedFormat":1},{"version":"6052522a593f094cfee0e99c76312a229cf2d49ac2e75095af83813ec9f4b109","impliedFormat":1},{"version":"a0ceb6ce93981581494bae078b971b17e36b67502a36a056966940377517091d","impliedFormat":1},{"version":"a63ce903dd08c662702e33700a3d28ca66ed21ac0591e1dbf4a0b309ae80e690","impliedFormat":1},{"version":"2b63d2725550866e0f2b56b2394ce001ebf1145cb4b04dc9daa29d73867b878c","impliedFormat":1},{"version":"e885933b92f26fa3204403999eddc61651cd3109faf8bffa4f6b6e558b0ab2fa","impliedFormat":1},{"version":"bd834465d4395ac3d8d55e94bf2a39c1f5e9be719c99340957b3b6a3a85ec66a","impliedFormat":1},{"version":"0b1238c0e3536321ae822c84216614bad2f3a7bd3f1de5c6ec8a85b26d900e6b","impliedFormat":1},{"version":"6e2d2b63c278fd1c8dd54da2328622c964f50afa62978ed1a73ccd85e99a4fc7","impliedFormat":1},{"version":"e151e41c82004cf09b7ea863f591348c9035e0f7a69d4189cbac89cc9611b89d","impliedFormat":1},{"version":"74d62eb5f24ae3e1fa7374380fa6ef354449757293c7434d00b702b1c7f87249","impliedFormat":1},{"version":"b83ffe71adbac91c5596133251e5ec0c9e6664017ee5b776841effe93de8f466","impliedFormat":1},{"version":"61ecf051972c69e7c992bab9cf74c511ecba51b273c4e1590574d97a542bd4ea","impliedFormat":1},{"version":"068f5afbae92a20a5fcd9cfce76f7b90de2c59a952396b5da225b61f95a1d60a","impliedFormat":1},{"version":"bdf5e07a22e661de2c7115e8364b98ef399c24c9fe62035dc1ac945a9dd3372a","impliedFormat":1},{"version":"4e024e2530feda4719448af6bdd0c0c7cfa28d1a4887900f4886bec70cd48fea","impliedFormat":1},{"version":"99c88ea4f93e883d10c04961dbf37c403c4f3c8444948b86effec0bf52176d0e","impliedFormat":1},{"version":"e88f3729fcc3d38d2a1b3cdcbd773d13d72ea3bdf4d0c0c784818e3bfbe7998d","impliedFormat":1},{"version":"f25b1264b694a647593b0a9a044a267098aaf249d646981a7f0503b8bb185352","impliedFormat":1},{"version":"964d0862660f8e46675c83793f42ab2af336f3d6106dee966a4053d5dc433063","impliedFormat":1},{"version":"292ad4203c181f33beb9eb8fe7c6aaae29f62163793278a7ffc2fcc0d0dbed19","impliedFormat":1},{"version":"4e04e6263670ad377f2f6bcd477def099ac3634d760ee8a7cca74a6f39d70a48","impliedFormat":1},{"version":"f1a4ca3688d951daa2d7740da5a0827fa34d4a7709eed7b8225215986ee87108","impliedFormat":1},{"version":"7879a9ca9f953587b6d1471d5b9c7ed0d9852f1a30e9c5b6a7227a7bb7a0894d","impliedFormat":1},{"version":"f8453a3fe0fe49ab718357120bec2b8205e15eb91ff62eada60a4780458fa91e","impliedFormat":1},{"version":"06f186bb9a6408ef8563dbf17d53cbe23e68422518b49b96afac732844ddbaa1","impliedFormat":1},{"version":"525f9c06245b5b43b1237cfd757396fd7fd8090e5d6a4ded758c7ce17a04bf42","impliedFormat":1},{"version":"04bc74b8fa987f140989e9f4d6dc37f04a307417af3e0a3767baa1eef4964e10","impliedFormat":1},{"version":"6a9d3aa58228faa62ec3d9e305f472a24441f22a8d028234577beb592ec295b2","impliedFormat":1},{"version":"683e2d454f64394931d233740b762dabc379e3ce5c4c4ad4747cdbd6d5fd8e8d","impliedFormat":1},{"version":"18594ddc7900f3e477645819bce4d824989ad296e3d70bdcdce13cabc5d97335","impliedFormat":1},{"version":"9376cce4d849f1d6ad2cb0048807c77cfeb78cee6e29b61dcfe74c7ab2980e18","impliedFormat":1},{"version":"2698935791615907eb632186119dfc307363d6a163f26017084009e44ea261f2","impliedFormat":1},{"version":"4edfc4848068bf58016856dfeb27341c15679884575e1a501e2389a1fea5c579","impliedFormat":1},{"version":"0c3d7a094ef401b3c36c8e3d88382a7e7a8b1e4f702769eba861d03db559876b","impliedFormat":1},{"version":"d3c3280f081f28e846239d27c2f77a41417e6a19f39267d20a282fd07ef36b96","impliedFormat":1},{"version":"7e3a4800683a39375bc99f0d53b21328b0a0377ab7cbb732c564ca7ca04d9b37","impliedFormat":1},{"version":"c777b498a93261d6caa5dbd1187090b79f0263a03526c64ea4f844a679e8299e","impliedFormat":1},{"version":"b4677e9d8802a82455a0f03a211b85f5d4b04cfbc89fc9aa691695b8e70df326","impliedFormat":1},{"version":"7cb0d946957daea11f78a31b85de435e00bcd8964eba66d3e8056ba9d14b9c55","impliedFormat":1},{"version":"b3e441cdb9d9e55e6e120052fe8bf2a8b5e5a46287f21d5bc39561594574e1a9","impliedFormat":1},{"version":"0870e8eb0527c044e844a1d83127f020aa7f79048218a62b2875e818355f8cb2","impliedFormat":1},{"version":"6b7446f89f9e5d47835117416e6d7656bac2bf700513d330254ae979260ce99f","impliedFormat":1},{"version":"9750752db342b88df1b860958a20fac9fd6a507f67c5cfb6bd5cfa8759338b1e","impliedFormat":1},{"version":"946de511c5e04659d9dfaf5ef83770122846d26d3ffe30e636d3339482bbf35a","impliedFormat":1},{"version":"fbcc201a8fc377a92714567491e3f81e204750b612d51a1720af452f1a254760","impliedFormat":1},{"version":"6dd704b0ba0131eb9e707aeedc39be6a224b4669544e518217a75eb7f5dd65c2","impliedFormat":1},{"version":"6effa89f483e5c83c0e0063df5f1d8b006d9d0f1de7eed2233886642424dc8fb","impliedFormat":1},{"version":"84a8c844f9562da8994c07b44dd2777178a147e06020c62a7f6e349e695e7149","impliedFormat":1},{"version":"d43130c35762a80da2299f8b59a4321b6e64acfb0b11a36183379b4c7b83314b","impliedFormat":1},{"version":"6bf44b890824799af8e20c0387ffa987e890fac5c5954a3a7352351eefe55d5d","impliedFormat":1},{"version":"892b19153694b7a3c9a69bcedb54e1c8ad3b9fa370076db4d3522838afd2cd60","impliedFormat":1},{"version":"5461fca70947a4d8fa272d3dda4c729317cec825141313352adf33bc94de142a","impliedFormat":1},{"version":"f83afa274e0f11860c6609198ecca220f5df60690923b990ca06cae21771016e","impliedFormat":1},{"version":"af31f37264ea5d5349eec50786ceca75c572ed3be91bdd7cb428fdd8cd14b17c","impliedFormat":1},{"version":"85e4673ec8507aef18afd4a9acfae0294bdfaac29458ede0b8b56f5a63738486","impliedFormat":1},{"version":"40683566071340b03c74d0a4ffa84d49fedb181a691ce04c97e11b231a7deee4","impliedFormat":1},{"version":"81c8ab81daa2286241ad27468d6fc7ad3ecc62da04b18b77ce9b9b437f6b0863","impliedFormat":1},{"version":"f158721f7427976b5510660c8e53389d5033c915496c028558c66caaf3d1db1c","impliedFormat":1},{"version":"8e56db8febfe127a9142435940c9a5a1ad17ddb2b2a6d8e9e8984785a76db1fd","impliedFormat":1},{"version":"6113c2f172a875db117357f0aa35aa7c1b6316516e813977ef98dc3b4b8baf2a","impliedFormat":1},{"version":"f25c9802b1316afbf667dd8fa6db4ed23aa5e7acc076a1054ca45d7bc9c8e811","impliedFormat":1},{"version":"e99285f74c22ad823c0b9fac55316b84144e15eb91830034badd9eb0fafe71bf","impliedFormat":1},{"version":"bf91469bd22f51ce744e1426f74d3b5fa35b7497309807917ec656dfa1627d38","signature":"30b6f28e0ec4ff8b57a5f0087472d4d2c0659885acfcadef0089f9eed7dc76d8"},{"version":"22679fe7a03d13dc435a91fb1fef881e6901fb0c3b09a4bae4d0151c066200ca","signature":"221686244c4a0f5585c052fe3e486f62a9fb74d3093e1939faa8d0899f25926c"},{"version":"e28b184f8b7de9da7a9d7c7418c4dcbaaff1b61f47079986f5da3d96e957acf4","signature":"58226429e7df32f8ff7d8881e795574ce4ee7b8efc6b39e8181ec569aaa0844e"},{"version":"bc539607663f82c04cd0471f0017d92c1bcaecfd10e8e1aee362a737c49df04d","signature":"c03c40bcbe4b2192f15d027ba654096aa8909d236ecd1d67bd1c8a10304fb374"},{"version":"e6adb5bdee4299c23395150d7ce610e4766ab3014f7e1a718bbe56ddd999fbf9","signature":"e3a60328c4ca6aa3f588f026eaf3b4f42911d13ec925d54f0e407fbbbfbfa77a"},{"version":"223c2032e2109f42ca95ee07fbbfb3102b66b39f5a45f34071473308d964cf5a","signature":"9ff52837017a2b3f4b936701babaf0d61f0e35947992d93be7fc61a418516eee"},{"version":"a9aae00074e72a2ed20601b43db1a5fa362a3288cda9cbda6cb885513612d359","signature":"645b5e3085f7b0d2ff0dd5a5e56de3220fa740ccdd39fe9fdeaa0c1003eaa07a"},{"version":"7ac091d53dcc3bdbccead47b4fae462b1b31c42b72b71b811226a759e434c832","signature":"f28f1b580a21a307bac5c69c4eacfe22ce441d4b46e175022b9a49d935b03b10"},{"version":"a2315c541f40fb537d2103b4026cae96503a37db356fdf9cfb0a4851b644c79d","signature":"4577814da0c68bc95f70f08c40e1419fa78f6a5cc2338693ecf7402e97fbac2a"},{"version":"dcd9fa97eb40a66d3020ba9be37452b4ac01f516bfcc079445d857cce70560c0","signature":"946046d9fb1f6ccfc6b096322b5c1240313b75385a79a7b2c1a4b1465192520d"},{"version":"cbe483e8f49ce3e598ef2293bb8755830c2d70059e8aedb4828d8b330178efc6","signature":"98202f64c6a2f50706bd7960e00530d40c473c14a97a6504cf02b7251c4b09af"},{"version":"c97745bea34fc62ceb1db3ec37888fdba1174950fa093254ac9930e45459e0d1","signature":"d5e1e1b51ce6202556c1e1d7659aaf7c6f68130c16cb0a2cac3068ae44f6d4e3"},{"version":"38b74decb61e7fc074b3513bae15c9a192001897f70e60573d8876d337d5bc74","signature":"7e04e378aad3c0f337dbab4378e6ab15cdbb9e264dcf7897b82aac2a5c0d555f"},{"version":"23b6d47436b2298da33a97fab40461086f0303de3c8fe22d060d60a0e63364ed","signature":"c127129dd2fc3ae378ac2e0e524dac2473f5261d9cb8857f521a024630127537"},{"version":"a374301a5385ff920979eef40b0cf8bc7e6fa6ca045f82d7e0c255dd15bae6a6","signature":"09d3d53fab5493ee729f8aa427eeb89bb0da1b458c79f2c545cd0e0cdc0fa627"},{"version":"884aab8c07224434c034b49e88de0511f21536aa83ee88f1285160ba6d3fb77a","impliedFormat":99},{"version":"130b39b18c99e5678635f383ef57efaa507196838ddabb47cb104064e2ce4cd3","impliedFormat":99},{"version":"2556e7e8bb7e6f0bb3fe25f3da990d1812cb91f8c9b389354b6a0c8a6d687590","impliedFormat":99},{"version":"ad1c91ca536e0962dcbfcdff40073e3dd18da839e0baad3fe990cf0d10c93065","impliedFormat":99},{"version":"19cf605ba2a4e8fba017edebdddbbc45aea897ddc58b4aae4c55f382b570ff53","impliedFormat":99},{"version":"7618d2cb769e2093acd4623d645b683ab9fea78c262b3aa354aba9f5afdcaaee","impliedFormat":99},{"version":"029f1ce606891c3f57f4c0c60b8a46c8ced53e719d27a7c9693817f2fe37690b","impliedFormat":99},{"version":"83596c963e276a9c5911412fba37ae7c1fe280f2d77329928828eed5a3bfa9a6","impliedFormat":99},{"version":"81acfd3a01767770e559bc57d32684756989475be6ea32e2fe6255472c3ea116","impliedFormat":99},{"version":"88d0c3eae81868b4749ba5b88f9b6d564ee748321ce19a2f4269a4e9dd46020a","impliedFormat":99},{"version":"8266b39a828bfb2695cabfa403e7c1226d7d94599f21bea9f760e35f4ca7a576","impliedFormat":99},{"version":"c1c1e740195c882a776cf084acbaf963907785ee39e723c6375fec9a59bf2387","impliedFormat":99},{"version":"137f96b78e477e08876f6372072c3b6f1767672bf182013f84f8ae53d987ff86","impliedFormat":99},{"version":"29896c61d09880ff39f8a86873bf72ce4deb910158d3a496122781e29904c615","impliedFormat":99},{"version":"81ce540acef0d6972b0b163331583181be3603300f618dcd6a6a3138954ff30c","impliedFormat":99},{"version":"a82f5ba70d26e6ad9d432ab7556506d807c49f35a44af99fb8054004220aaaa1","impliedFormat":1},{"version":"97a44e4295fbdca67f58f09a7eb66390fdfe8ba90fa261fc3f3aae682e9f9254","signature":"9745cffeb6fc7301383adbf85f24be4348d3a2026bda345f7a8db75a0337aafd"},{"version":"1769b043bcee06349202225e54f61abe80b6d2e6a273c0d9dc5db5eb918085b6","signature":"bccb6390f70fbec52f21432e9b231df6cd428a832d867f1fbaf8d7076e63936f"},{"version":"f2eececfefb8a3066847f26493352f1048e7a6678740a7f69cb9e534af1704be","signature":"c901820eb34f0e7b13b1941a552943ed2a8e41dcb6194f224351df36a38949b0"},{"version":"fd3aa2c8f816490d797c089ba90d690ec603985abcf88a296bc847c9dca8d51c","signature":"e93f29c2d998457357842a2ffe7dc9a3bf691c6a79b63dbda18278c67d68d5e6"},{"version":"f0c871593719fe5db7a37f3a9c4b2ab3ca290b5b85d524011e53c365bca6bca0","signature":"cf77544685f1b70fe6033b475a16d419ee8674f380dfc75c0ece69293e4a540c"},{"version":"9832eee02cb87d3e20db57a30df15b41c432f9a3387b92173ef2c0ad77406805","signature":"9515b983639282a8fcebae347802def114f967ed978cdb9c3c502eaf1ccf976a"},{"version":"c7dca7f9f3bc6adcacfa7afe7bee5239f8bed7864162d45d51851ee4d741b6a1","signature":"b208f03eb610b4e5471fb58254b8bfbfffc65cd27b874ba9d2b9f7e64740dc3f"},{"version":"d55b256ad31c07bdecbc90c8d68736d2d40f0244eff4121349cda0e82ecb88be","signature":"f00d0119ed6d1c5ecfc84a9786b087bff40a483e7163f3fc02b239726cab1c61"},{"version":"56f3aa69996eb0a366bcc9aeb498caa2ad744166cd235ac5a7af05cfa1c8c66f","signature":"9d7464c7a210bcf9418653e093a7959d30c78056232dadadc711bd20146a8c11"},{"version":"a67e2fcf89057a9e2ccd4f08a6c55cf343282a2818a71f3f43096202d238904c","signature":"7a5bddc5a2004f61a03c1f0c435ec31ea910d702c4950e425ed7a6531ed08938"},{"version":"689d113a1a0693961f0ff4f8cefad11a61d539755323e7bce3256bd36fd691f3","signature":"40e83e24d8b487f166b3bd5496ee40112da35f81453dea2da39c5ae5f7586db6"},{"version":"74e6f034a15c7a34b4f63f6e5ca7a6729f6adae442d4fbf129ebc8f880c3ddab","signature":"d7e2428e49d098ece8ab9e402008cdbe8c214c764c04aff431657ec1f06495ab"},{"version":"8dadc4412bfccc3198e9c12d7d6dc953ce92d1b42582722b8f180a2046269609","signature":"3fba4cc053501109a3832dd166cf036ec585b1ef728cd0be4d563336abc55819"},{"version":"7ae28b3dc56306a5e9adfe24b34ca4e41027313c1a9cda66e6d039966e239aef","signature":"b0d79f1b8a218d82c1e2d96dbef2941a1101190b15ab0200d70488131660c737"},{"version":"2d6e296b4de71d0cbdf119c0de65b2db1d6e42ceff0ec43d3660c3f95ccae714","signature":"5c95aa7b3d19292139c483bedb492c98c6e6593b27768e79ea7af533a2afbd54"},{"version":"2f15b14c238f6cc39e03efb5154eb3cf919615afe4cf1fe9a47c1b34c726c681","signature":"e99035eae217a2f4f83db0ab4a75b5036ee4a93472f06c1653c2c4dcf21f8f39"},{"version":"d0fae91cc427d22503599838dbdd8956c6eb500ba79a1b625e95230eb7aa33a7","signature":"4087e2b74d667f0bed180468d129218c2be5312f1240f5dc8f3edacf3baf1427"},{"version":"a1e1bca53b07bc5be2aedb71e7dc1d6b002fc35a11c5ae6ea19e39e56d5ab2ff","signature":"86fad2c2e5ee773479a55cb7634d5f92a4c20293df5d744382a090579845195d"},{"version":"0cbd1d3a104eec76c3c1c25a977f66e8390ab810ca3910c8988f6e06ddc2343d","signature":"74bdaa8dc910d251e163ba07b94edf79dd3f004da747528f90567de132b3572f"},{"version":"2bc5132cbba7fef7fd791624beff7de1869caa99890fe8a4bf07ac8cb00a3dae","signature":"0683df6254fd05d529c056f08fac74d773066e444e84a5f06519d9ec21654d36"},{"version":"68190bf3626418408ed6a711c1309daab432df3247c80abab710172a2f4f67d3","signature":"829d2762ca74f0775b07aebdfb63ee0c1278b88adb12c96b2368e43c9ee2c58f"},{"version":"8f6f252ca9832788fb24aab1c439b94a3bf44e5a8ea28af4ecefff6d2d913f7d","signature":"5fbd18ddb1839e332fa72ba8d795001e1df19e466fddaa1deb649ef780345baf"},{"version":"7c5ae944b52c210436f37a6fc435eafee47121789bc854fd9ae6d6986ce14b51","signature":"6df704cefbfe73d1269b444380e93fe7a55167ae0b3fc42c3d2cb1dcaabd5a37"},{"version":"b730295765aaa3dd92f4a601afe14a3d1dd9c0c226f94d781130cb5bc907dae2","signature":"5ad88a10296671aadf2faac6d620d7a5da57730d0e7c53dbf78a8154d55e7b6c"},{"version":"fb589e831e98779f96570a7bf744e25d1c2f2374b47814d7668c2e444773579e","signature":"16443205bc6828151c25130b7bb71c40bc17a444e125fff9a7d82906dd0b5e1b"},{"version":"21694d7ef3bb0bf35cf5130939e578f05866afdae6c37c184f0427863baeaeb8","signature":"221cfed09d51ab277be15e09eb008925b29e50446d426e9747d91fa4d3314229"},{"version":"69b1754d8508895fe66a512d6e25c9c540a4786e528b0ddec93124f56ecafe6f","signature":"11447624ab189ead258f4e4cb98ac8a999b9a6d8be13eb0a8d0c112b8e39b3e0"},{"version":"3f13a2db8279c631d649ded4b9ca207c6f58e660f91abad7745c705b07917b08","signature":"d10c39476e190947b89c22a81dde5c0321b27927a9bf254712c9bf888be53e50"},{"version":"b8095054196607e078a5a0ac8dd4d3a48ff28025606693e820dd324e5e64afe2","signature":"9977f2e9c9f1f56798ae3d1be50d98326a545fa14e82106025381e9d589a8b85"},{"version":"da7b44b999e7e1f449d57f0e71741b9ad07a5fb2bd8ded3316ab62f4088cbce8","signature":"98325b616a606d2aea9889f81f3e87ba7fab50ef06cfce57dad1e3cd69c8162d"},{"version":"ac488723f73590476e5cf935fc79c3b0ec15b0e9e128dc5b759ba0697361d51e","signature":"234520c56a56d4ac322af2f1ede1b06eaf542c5eca438c94b42960fae3fd5a86"},{"version":"278d37b4155c9b0b418b31b36e61a7047bc0f9ad28d263043aa0d00b60036296","signature":"7ec049aed50bd349c2e6b56455639279c1be4a54c2596fdcaf853ba5abb60d50"},{"version":"1440d97453ce2687cdd091c9d57c8f746c3b8c2eb6c78e7aae76a7cd533c2e99","signature":"2ea7d847ebee5303c8ba9a3aa9c1cf5948a549242ea0b7cb080f45592df43f7a"},{"version":"13933db657079d6b0f1030222c773f25a96179e73c374d2676c6ef5cec17d5fb","signature":"185eadb04794f68f1da160b861d8d48e3a53bee9fff8093d33ab90739eca9c0b"},{"version":"1e5774599f48bfb511e2aa70bdc5152fedcad3339a34dae55b3ec6ac98af10ba","signature":"83d1dfda4ee476a29bddc3f3d4e5cec75cddf77f1d8c664efe6c2ece52c650d4"},{"version":"46cb67703ee62839b9b287c53d44ca36120bb569d5539addb1dbc9db245d1ea0","signature":"9cc96c8b1c7f192a8f5125be46254b41de00c0aff950fdb29b935fd94380d355"},{"version":"0b248903aee6d6f327d7e97badf2d76810abe9f9a486396f56b094d96eb39761","signature":"4630920f32c2307223ceead8c69c72557b5e7ee0b7a8e36ce7c6fadd8aba730d"},{"version":"83e454c14144f25b7e8a5970f395798ac2a126562f7e7a7d5a19108c2f60fa91","signature":"79b7a2f43f192071e56ec4062956105ce6fb419d967f3a507472d3ddd5148f7e"},{"version":"c95b7550b37722d980f7a36be2128709bfc1b5fbda3878b669591999012b6654","signature":"f3dc60c0f09331521c11b3ff92225d0cd715b829c4bd25292dc4267b1fa2e593"},{"version":"edec4dc45d138e7acb6979c2cb0ac3e66900f5424ddf85039646121c31197f96","signature":"a286d1bfffe6e81858c139377c4578e5bfe3cd972e1581d50fd6a7147c9ab97b"},{"version":"5379734b6bf5c46ffad74ccd222146d924824b3b787c7a4b568fef4d2117feeb","signature":"5cb2f2758e48405eddb7d324b123e2a6c791bdce655700dd7eb640cd5dba4158"},{"version":"19a274114baa5e5bdb92f82a3ff57a17d382a3cc33ed29a15c13e1353c422c2c","signature":"b0fc09e5d400083b1757085b26ea2361287135f6e549f0a72af281e726b232c5"},{"version":"7c3e8e674853326d8eb2726376105cd61a343bbc04c802ea16c5b33067dd9842","signature":"748850d84b5713210fa7729188e598a1b26a0f3966c2d94f4195f35a2ac8d1c7"},{"version":"7e20b1df5888b3f988f9282686a10dd4cf0da1180900c69d13826634fb6b6f6e","signature":"e5384edd96482315c39d60e908e5d471003cecc794e025a5e9eaaa611efc29f1"},{"version":"00fdfde44803003700e056129d9d62404268e398a2948420d463a0f01df8fded","signature":"f0914c141141293cbd0adeba652fecd5d77892611a3bf9791914107a0ac84643"},{"version":"55c08979def6ca210a9802d61cad11bce5b412880e5f8ecc1394407d5e2a325d","signature":"f198403c035c9017499c95211c258b5cf16b43b2c88d68ad956c30ce3d1832e7"},{"version":"694504032e7ec6a5df9c13cfb39277db46b8a8c5ca9a6dcfaa6dc24f533b5669","signature":"a85bf91c6080f7170d5e052883dcfbdf0aba6353b3ac33acc50aff30a9f9f82d"},{"version":"f132e0ed523e1cf148d248fb3540f7432d92e2c87900f4541c9791645a97060e","signature":"2c6e92f3bac54d9def109d63b82c9992978086b4d523aa097c3f1616c2d6ff07"},{"version":"bdfc94ed19805d91f145070e6e2ef97db37d6387650ab9f3ef057211eace4513","signature":"76ea360f46c31df5e277ef673c1341b48ccdf2e3ed590cf734e62aa376e3805e"},{"version":"a011991c1e9eea9f2193e8feef57167ff655f1dd716905b31ef23892ed8f6fda","signature":"ac5b01ae693b519f3e4688686c6e2b1f71c381bdf2c1b188114ddd0add383af2"},{"version":"788ebd792ece78da4df1c0aaa876756e65124ac59b9ad3dc7d042139fbf2d5c0","signature":"e67035f0e01a1131a365ddc33c465bd631598516055e06b585c8daa56ccdee29"},{"version":"394a385ae92e33dc61b3270f9de03af1141f2a97835c94b5deb05b809cad5191","signature":"464266a0d6acd1e32e0963f16bd757e628ece98327825e114858506cab436553"},{"version":"be27c0d9878c085e753846295c3d327f3d63eaebcb35235665dd4b0d66533be6","signature":"c991253620ba05ade17e963cfee6f5a23580485d6abc184f680db140d35b2a8a"},{"version":"c9b5f88341cf279c12d69114f73d4d6d3029007dd9dcceb46ddf251a9537c5cd","signature":"26ba71f79eb1ccc526399c703ceb9595712a793b7d939584ca92df4a3ce4fea8"},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"7fa8d75d229eeaee235a801758d9c694e94405013fe77d5d1dd8e3201fc414f1","impliedFormat":1}],"root":[484,[516,601],[603,611],[749,763],[780,826],[828,833]],"options":{"allowJs":false,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":9},"referencedMap":[[754,1],[758,2],[756,3],[782,4],[759,5],[784,6],[785,7],[797,8],[798,9],[792,10],[794,9],[791,11],[793,9],[795,12],[796,12],[799,13],[789,14],[611,15],[807,16],[816,17],[810,18],[805,19],[753,20],[818,21],[825,22],[824,22],[819,23],[821,24],[822,24],[820,22],[823,24],[828,25],[826,26],[831,27],[519,28],[520,28],[521,28],[522,28],[523,28],[524,28],[526,28],[525,28],[527,28],[528,29],[529,29],[530,28],[532,28],[533,28],[534,28],[531,28],[535,28],[536,28],[537,28],[539,28],[540,28],[538,28],[541,28],[542,28],[543,28],[544,28],[546,28],[545,28],[547,28],[548,30],[549,30],[550,30],[552,28],[551,28],[553,28],[555,28],[556,28],[554,28],[557,28],[558,28],[559,28],[562,28],[561,28],[560,28],[563,28],[564,28],[565,28],[566,28],[567,28],[568,28],[569,28],[570,28],[571,28],[572,28],[573,28],[574,28],[576,28],[575,28],[577,28],[579,28],[578,28],[757,31],[760,32],[761,33],[749,34],[762,35],[815,35],[781,36],[811,37],[817,38],[802,22],[803,39],[790,1],[786,24],[787,40],[606,41],[788,42],[801,43],[804,44],[806,45],[755,35],[608,46],[763,35],[808,47],[812,48],[751,46],[609,49],[832,50],[607,51],[750,46],[800,38],[814,52],[783,53],[813,54],[752,55],[780,56],[809,47],[829,57],[586,50],[589,57],[580,57],[591,57],[592,38],[597,58],[590,57],[596,59],[593,60],[588,38],[587,57],[595,61],[594,57],[830,57],[610,62],[598,38],[604,63],[833,64],[603,65],[605,65],[518,66],[585,67],[584,68],[583,69],[582,38],[601,70],[600,71],[581,38],[599,38],[516,72],[484,73],[227,74],[627,75],[626,38],[623,74],[834,74],[835,74],[836,74],[837,76],[636,74],[613,77],[637,78],[612,74],[838,74],[113,79],[114,79],[115,80],[74,81],[116,82],[117,83],[118,84],[69,74],[72,85],[70,74],[71,74],[119,86],[120,87],[121,88],[122,89],[123,90],[124,91],[125,91],[127,92],[126,93],[128,94],[129,95],[130,96],[112,97],[73,74],[131,98],[132,99],[133,100],[166,101],[134,102],[135,103],[136,104],[137,105],[138,106],[139,107],[140,108],[141,109],[142,110],[143,111],[144,111],[145,112],[146,74],[147,74],[148,113],[150,114],[149,115],[151,116],[152,117],[153,118],[154,119],[155,120],[156,121],[157,122],[158,123],[159,124],[160,125],[161,126],[162,127],[163,128],[164,129],[165,130],[170,131],[387,132],[171,133],[169,132],[388,134],[167,135],[385,74],[168,136],[60,74],[62,137],[384,132],[244,132],[779,138],[778,139],[765,140],[764,74],[839,74],[61,74],[742,74],[769,141],[766,74],[768,142],[767,143],[776,141],[775,141],[777,144],[774,145],[772,141],[773,141],[770,146],[771,141],[667,74],[515,147],[486,148],[495,148],[487,148],[496,148],[488,148],[489,148],[503,148],[502,148],[504,148],[505,148],[497,148],[490,148],[498,148],[491,148],[499,148],[492,148],[494,148],[501,148],[500,148],[506,148],[493,148],[507,148],[512,148],[513,148],[508,148],[485,74],[514,74],[510,148],[509,148],[511,148],[602,132],[433,149],[438,150],[428,151],[191,152],[231,153],[412,154],[226,155],[208,74],[383,74],[189,74],[401,156],[257,157],[190,74],[311,158],[234,159],[235,160],[382,161],[398,162],[293,163],[406,164],[407,165],[405,166],[404,74],[402,167],[233,168],[192,169],[336,74],[337,170],[263,171],[193,172],[264,171],[259,171],[180,171],[229,173],[228,74],[411,174],[423,74],[216,74],[358,175],[359,176],[353,132],[460,74],[361,74],[362,57],[354,177],[465,178],[464,179],[459,74],[278,74],[397,180],[396,74],[458,181],[355,132],[287,182],[283,183],[288,184],[286,74],[285,185],[284,74],[461,74],[457,74],[463,186],[462,74],[282,183],[452,187],[455,188],[272,189],[271,190],[270,191],[468,132],[269,192],[251,74],[471,74],[474,74],[473,132],[475,193],[173,74],[408,194],[409,195],[410,196],[186,74],[219,74],[185,197],[172,74],[374,132],[178,198],[373,199],[372,200],[363,74],[364,74],[371,74],[366,74],[369,201],[365,74],[367,202],[370,203],[368,202],[188,74],[183,74],[184,171],[239,74],[245,204],[246,205],[243,206],[241,207],[242,208],[237,74],[380,57],[266,57],[432,209],[439,210],[443,211],[415,212],[414,74],[254,74],[476,213],[427,214],[356,215],[357,216],[351,217],[342,74],[379,218],[417,132],[343,219],[381,220],[376,221],[375,74],[377,74],[348,74],[335,222],[416,223],[419,224],[345,225],[349,226],[340,227],[393,228],[426,229],[297,230],[312,231],[181,232],[425,233],[177,234],[247,235],[238,74],[248,236],[324,237],[236,74],[323,238],[68,74],[317,239],[218,74],[338,240],[313,74],[182,74],[212,74],[321,241],[187,74],[249,242],[347,243],[413,244],[346,74],[320,74],[240,74],[326,245],[327,246],[403,74],[329,247],[331,248],[330,249],[221,74],[319,232],[333,250],[296,251],[318,252],[325,253],[196,74],[200,74],[199,74],[198,74],[203,74],[197,74],[206,74],[205,74],[202,74],[201,74],[204,74],[207,254],[195,74],[305,255],[304,74],[309,256],[306,257],[308,258],[310,256],[307,257],[217,259],[267,260],[422,261],[477,74],[447,262],[449,263],[344,264],[448,265],[420,223],[360,223],[194,74],[298,266],[213,267],[214,268],[215,269],[211,270],[392,270],[261,270],[299,271],[262,271],[210,272],[209,74],[303,273],[302,274],[301,275],[300,276],[421,277],[391,278],[390,279],[352,280],[386,281],[389,282],[400,283],[399,284],[395,285],[295,286],[292,287],[294,288],[291,289],[332,290],[322,74],[437,74],[334,291],[394,74],[250,292],[341,194],[339,293],[252,294],[255,295],[472,74],[253,296],[256,296],[435,74],[434,74],[436,74],[470,74],[258,297],[418,74],[289,298],[281,132],[232,74],[176,299],[265,74],[441,132],[175,74],[451,300],[280,132],[445,57],[279,301],[430,302],[277,300],[179,74],[453,303],[275,132],[276,132],[268,74],[174,74],[274,304],[273,305],[220,306],[350,110],[260,110],[328,74],[315,307],[314,74],[378,183],[290,132],[424,197],[431,308],[63,132],[66,309],[67,310],[64,132],[65,74],[230,311],[225,312],[224,74],[223,313],[222,74],[429,314],[440,315],[442,316],[444,317],[446,318],[450,319],[483,320],[454,320],[482,321],[456,322],[466,323],[467,324],[469,325],[478,326],[481,197],[480,74],[479,327],[653,74],[651,328],[655,329],[722,330],[717,331],[620,332],[688,333],[681,334],[738,335],[618,336],[687,337],[676,338],[721,339],[718,340],[670,341],[680,342],[723,343],[724,343],[725,344],[733,345],[727,345],[735,345],[739,345],[726,345],[728,345],[731,345],[734,345],[730,346],[732,345],[736,347],[729,348],[630,349],[702,132],[699,350],[703,132],[641,345],[631,345],[694,351],[619,352],[640,353],[644,354],[701,345],[616,132],[700,355],[698,132],[697,345],[632,132],[744,356],[712,348],[692,357],[748,358],[710,74],[708,74],[713,359],[711,360],[707,361],[709,362],[714,363],[716,364],[706,132],[639,365],[615,345],[705,345],[654,366],[704,132],[679,365],[737,345],[672,367],[628,368],[633,369],[682,370],[684,367],[663,371],[666,367],[645,372],[665,373],[674,374],[675,375],[671,376],[685,377],[673,378],[650,379],[693,380],[689,381],[690,382],[686,383],[664,384],[652,385],[657,386],[634,387],[661,388],[662,389],[658,390],[635,391],[646,392],[683,375],[629,393],[691,74],[656,394],[649,395],[677,74],[746,396],[747,397],[719,74],[745,398],[740,74],[668,74],[642,74],[715,399],[669,74],[621,398],[743,400],[648,401],[678,402],[647,403],[720,404],[659,74],[695,74],[696,405],[643,74],[660,74],[741,74],[617,132],[625,406],[622,74],[624,74],[316,407],[58,74],[59,74],[10,74],[11,74],[13,74],[12,74],[2,74],[14,74],[15,74],[16,74],[17,74],[18,74],[19,74],[20,74],[21,74],[3,74],[22,74],[23,74],[4,74],[24,74],[28,74],[25,74],[26,74],[27,74],[29,74],[30,74],[31,74],[5,74],[32,74],[33,74],[34,74],[35,74],[6,74],[39,74],[36,74],[37,74],[38,74],[40,74],[7,74],[41,74],[46,74],[47,74],[42,74],[43,74],[44,74],[45,74],[8,74],[51,74],[48,74],[49,74],[50,74],[52,74],[9,74],[53,74],[54,74],[55,74],[57,74],[56,74],[1,74],[90,408],[100,409],[89,408],[110,410],[81,411],[80,412],[109,327],[103,413],[108,414],[83,415],[97,416],[82,417],[106,418],[78,419],[77,327],[107,420],[79,421],[84,422],[85,74],[88,422],[75,74],[111,423],[101,424],[92,425],[93,426],[95,427],[91,428],[94,429],[104,327],[86,430],[87,431],[96,432],[76,433],[99,424],[98,422],[102,74],[105,434],[614,435],[638,436],[827,38],[517,437]],"affectedFilesPendingEmit":[754,758,756,782,759,784,785,797,798,792,794,791,793,795,796,799,789,611,807,816,810,805,753,818,825,824,819,821,822,820,823,828,826,831,519,520,521,522,523,524,526,525,527,528,529,530,532,533,534,531,535,536,537,539,540,538,541,542,543,544,546,545,547,548,549,550,552,551,553,555,556,554,557,558,559,562,561,560,563,564,565,566,567,568,569,570,571,572,573,574,576,575,577,579,578,757,760,761,749,762,815,781,811,817,802,803,790,786,787,606,788,801,804,806,755,608,763,808,812,751,609,832,607,750,800,814,783,813,752,780,809,829,586,589,580,591,592,597,590,596,593,588,587,595,594,830,610,598,604,833,603,605,518,585,584,583,582,601,600,581,599,516,517],"version":"5.8.2"} \ No newline at end of file diff --git a/apps/indexer/src/job.rs b/apps/indexer/src/job.rs index 02e6297..015fb18 100644 --- a/apps/indexer/src/job.rs +++ b/apps/indexer/src/job.rs @@ -17,14 +17,12 @@ async fn rematch_unlinked_books(pool: &PgPool, library_id: Uuid) { b.id AS book_id FROM external_book_metadata ebm2 JOIN external_metadata_links eml ON eml.id = ebm2.link_id - JOIN books b ON b.library_id = eml.library_id + JOIN books b ON b.series_id = eml.series_id AND b.volume = ebm2.volume_number - LEFT JOIN series s ON s.id = b.series_id WHERE eml.library_id = $1 AND ebm2.book_id IS NULL AND ebm2.volume_number IS NOT NULL AND eml.status = 'approved' - AND LOWER(COALESCE(s.name, 'unclassified')) = LOWER(eml.series_name) ) matched WHERE ebm.id = matched.ebm_id "#, diff --git a/apps/indexer/src/scheduler.rs b/apps/indexer/src/scheduler.rs index e4b99d2..a1c4138 100644 --- a/apps/indexer/src/scheduler.rs +++ b/apps/indexer/src/scheduler.rs @@ -122,7 +122,7 @@ pub async fn check_and_schedule_reading_status_push(pool: &PgPool) -> Result<()> pub async fn check_and_schedule_download_detection(pool: &PgPool) -> Result<()> { // Only schedule if Prowlarr is configured let prowlarr_configured: bool = sqlx::query_scalar( - "SELECT EXISTS(SELECT 1 FROM settings WHERE key = 'prowlarr' AND value->>'base_url' IS NOT NULL AND value->>'base_url' != '')" + "SELECT EXISTS(SELECT 1 FROM app_settings WHERE key = 'prowlarr' AND value->>'base_url' IS NOT NULL AND value->>'base_url' != '')" ) .fetch_one(pool) .await diff --git a/infra/migrations/0070_create_series_table.sql b/infra/migrations/0070_create_series_table.sql index 89c7250..a46d787 100644 --- a/infra/migrations/0070_create_series_table.sql +++ b/infra/migrations/0070_create_series_table.sql @@ -3,6 +3,10 @@ -- Fuses series_metadata into series. All related tables get series_id FK. -- ============================================================================= +-- 0. Safety: backup reading progress before any schema changes +CREATE TABLE IF NOT EXISTS _backup_book_reading_progress AS + SELECT * FROM book_reading_progress; + -- 1. Create the series table (fusion of series_metadata) CREATE TABLE IF NOT EXISTS series ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(),