# Program

- File ID: file:12rhzck:program-cs
- Path: NexusReader.Web/Program.cs
- Role: program-entry
- Layer: application

## Purpose

Bootstrap and run the NexusReader web application: configure services, authentication/authorization, middleware, database migration/seeding with retries, and declare Minimal API endpoints (knowledge, library, identity, billing/webhooks).

## Key Details

Critical startup validates infrastructure registration, performs DB migrations with retry/backoff and seeding, exposes knowledge endpoints guarded by token policy, handles Stripe webhook subscription lifecycle updating user records, and provisions Google external logins with new user creation and logging.

## Symbols

- Program (top-level): Configure DI, middleware, authentication/authorization, register endpoints and run the web host.
- GetEpubContent (GET /api/epub/{ebookId}/{index}): Return EPUB page content for an ebook index for the current user.
- Knowledge API group mappings(): Register knowledge-related endpoints under /api/knowledge with token-based authorization disabled antiforgery and policy 'HasAvailableTokens'.
- IngestEbook (POST /api/library/ingest): Accept base64 EPUB and optional cover, construct IngestEbookCommand and send via MediatR to ingest an ebook for the authenticated user.
- GetMyEbooks (GET /api/library/books): Return list of ebooks for the authenticated user via a GetMyEbooksQuery.
- StripeWebhook (POST /api/StripeWebhook): Receive Stripe webhook, validate signature, dispatch handling based on event type and update user subscription state.
- HandleSubscriptionSuccess(): Update a user's subscription plan and AI token limit after successful Stripe checkout/subscription update.
- HandleSubscriptionCancellation(): Revert a user's subscription to free plan and reset AI token limit on subscription deletion.
- Map Identity API (MapGroup /identity): Map identity API endpoints provided by helper MapIdentityApi extension.
- Identity Login (GET /identity/login/google): Initiate Google external login by issuing an authentication challenge with redirect metadata.
- Identity Callback (GET /identity/callback/google): Process Google external login callback: attempt sign-in, handle lockout, provision new user if needed, and log errors.
- Account Login Form (POST /account/login-form): Authenticate user via form POST using SignInManager.PasswordSignInAsync and redirect on success or failure.
- Account Logout Form (GET /account/logout-form): Sign out current user and redirect to login page.
- Get User Profile (GET /identity/profile): Return the current user's profile by dispatching GetUserProfileQuery via mediator.
- KnowledgeRequest: DTO for knowledge-related API calls containing input text and optional ebook id.
- GroundednessRequest: DTO for verifying groundedness of an answer against context.
- SemanticSearchRequest: DTO for semantic search requests.
- AskQuestionRequest: DTO for asking a question against knowledge with optional ebook scope and limit.

## Dependencies

- No resolved dependencies.

## Calls

- No resolved calls.

## Unresolved References

- dependency-target: NexusReader.Application
- dependency-target: NexusReader.Infrastructure
- dependency-target: NexusReader.Data.Persistence
- dependency-target: NexusReader.Application.Abstractions.Services
- dependency-target: NexusReader.Application.Commands.Library
- dependency-target: NexusReader.Application.Queries.User
- call-target: NexusReader.Application
- call-target: NexusReader.Infrastructure
- call-target: NexusReader.Data.Persistence/DbInitializer.cs
- call-target: self
- call-target: self
- call-target: self
- call-target: NexusReader.Application.Abstractions.Persistence
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Abstractions.Services
- call-target: NexusReader.Application.Commands.Library
- call-target: unknown
- call-target: NexusReader.Application.Queries.Library
- call-target: unknown
- call-target: unknown
- call-target: self
- call-target: self
- call-target: self
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: unknown
- call-target: NexusReader.Application.Queries.User
- call-target: unknown
- interaction-target: var isApiRequest = context.Request.Path.StartsWithSegments("/api") ||
- interaction-target: context.Request.Path.StartsWithSegments("/identity") ||
- interaction-target: context.Request.Headers["Accept"].ToString().Contains("application/json");
- interaction-target: context.Response.StatusCode = StatusCodes.Status401Unauthorized;
- interaction-target: context.Response.Redirect(context.RedirectUri);
- interaction-target: var userId = user.FindFirstValue(ClaimTypes.NameIdentifier);
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: var tenantId = user.FindFirstValue("TenantId") ?? "global";
- interaction-target: await epubService.GetEpubContentAsync(...)
- interaction-target: Await PasswordSignInAsync

## Coverage

- Symbols: 18
- Executable symbols: 14
- Executable symbols with control flow: 14
- Grounded edges: 18
- Unresolved references: 59
- Control-flow fragments: 14
- Unresolved jumps: 33
- Unsupported constructs: 0
- Control-flow coverage: 100%
- Required diagrams: 2
- Generated diagrams: 15

## Control Flow Fragments

- Program (top-level): 320 nodes, 362 edges, 6 jumps, 0 unsupported constructs
- GetEpubContent (GET /api/epub/{ebookId}/{index}): 19 nodes, 21 edges, 1 jumps, 0 unsupported constructs
- Knowledge API group mappings: 82 nodes, 91 edges, 8 jumps, 0 unsupported constructs
- IngestEbook (POST /api/library/ingest): 23 nodes, 25 edges, 2 jumps, 0 unsupported constructs
- GetMyEbooks (GET /api/library/books): 23 nodes, 26 edges, 2 jumps, 0 unsupported constructs
- StripeWebhook (POST /api/StripeWebhook): 24 nodes, 23 edges, 4 jumps, 0 unsupported constructs
- HandleSubscriptionSuccess: 27 nodes, 30 edges, 3 jumps, 0 unsupported constructs
- HandleSubscriptionCancellation: 24 nodes, 26 edges, 3 jumps, 0 unsupported constructs
- Map Identity API (MapGroup /identity): 5 nodes, 4 edges, 1 jumps, 0 unsupported constructs
- Identity Login (GET /identity/login/google): 5 nodes, 4 edges, 0 jumps, 0 unsupported constructs
- Identity Callback (GET /identity/callback/google): 64 nodes, 72 edges, 5 jumps, 0 unsupported constructs
- Account Login Form (POST /account/login-form): 16 nodes, 17 edges, 1 jumps, 0 unsupported constructs
- Account Logout Form (GET /account/logout-form): 8 nodes, 7 edges, 1 jumps, 0 unsupported constructs
- Get User Profile (GET /identity/profile): 24 nodes, 27 edges, 2 jumps, 0 unsupported constructs

## Diagrams

### Program Neighborhood

_Warnings: diagram file_12rhzck_program_cs_neighborhood_view exceeds preferred complexity thresholds (19 nodes, 0 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart LR
    file_12rhzck_program_cs("Program")
    method_13xh0j3_handlesubscriptionsuccess[["HandleSubscriptionSuccess()"]]
    method_19x6wwx_account_logout_form_get_account_logout_form[["Account Logout Form (GET /account/logout-form)"]]
    method_19xkg6k_identity_callback_get_identity_callback_google[["Identity Callback (GET /identity/callback/google)"]]
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index[["GetEpubContent (GET /api/epub/{ebookId}/{index})"]]
    method_1rb8gnn_map_identity_api_mapgroup_identity[["Map Identity API (MapGroup /identity)"]]
    method_1uibcuk_program_top_level[["Program (top-level)"]]
    method_72bnlj_handlesubscriptioncancellation[["HandleSubscriptionCancellation()"]]
    method_7u4uld_get_user_profile_get_identity_profile[["Get User Profile (GET /identity/profile)"]]
    method_8fzkrx_account_login_form_post_account_login_form[["Account Login Form (POST /account/login-form)"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook[["StripeWebhook (POST /api/StripeWebhook)"]]
    method_eni3nx_identity_login_get_identity_login_google[["Identity Login (GET /identity/login/google)"]]
    method_gc2kp9_knowledge_api_group_mappings[["Knowledge API group mappings()"]]
    method_ggo2op_ingestebook_post_api_library_ingest[["IngestEbook (POST /api/library/ingest)"]]
    method_veacg9_getmyebooks_get_api_library_books[["GetMyEbooks (GET /api/library/books)"]]
    type_14omw7a_knowledgerequest[/"KnowledgeRequest"/]
    type_1jb5rcg_askquestionrequest[/"AskQuestionRequest"/]
    type_gyab7i_groundednessrequest[/"GroundednessRequest"/]
    type_i2x134_semanticsearchrequest[/"SemanticSearchRequest"/]
```

### Program Execution Overview

_Warnings: diagram file_12rhzck_program_cs_execution_view exceeds preferred complexity thresholds (61 nodes, 67 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    file_12rhzck_program_cs("Program")
    method_13xh0j3_handlesubscriptionsuccess[["HandleSubscriptionSuccess()"]]
    method_19x6wwx_account_logout_form_get_account_logout_form[["Account Logout Form (GET /account/logout-form)"]]
    method_19xkg6k_identity_callback_get_identity_callback_google[["Identity Callback (GET /identity/callback/google)"]]
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index[["GetEpubContent (GET /api/epub/{ebookId}/{index})"]]
    method_1rb8gnn_map_identity_api_mapgroup_identity[["Map Identity API (MapGroup /identity)"]]
    method_1uibcuk_program_top_level[["Program (top-level)"]]
    method_72bnlj_handlesubscriptioncancellation[["HandleSubscriptionCancellation()"]]
    method_7u4uld_get_user_profile_get_identity_profile[["Get User Profile (GET /identity/profile)"]]
    method_8fzkrx_account_login_form_post_account_login_form[["Account Login Form (POST /account/login-form)"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook[["StripeWebhook (POST /api/StripeWebhook)"]]
    method_eni3nx_identity_login_get_identity_login_google[["Identity Login (GET /identity/login/google)"]]
    method_gc2kp9_knowledge_api_group_mappings[["Knowledge API group mappings()"]]
    method_ggo2op_ingestebook_post_api_library_ingest[["IngestEbook (POST /api/library/ingest)"]]
    method_veacg9_getmyebooks_get_api_library_books[["GetMyEbooks (GET /api/library/books)"]]
    unresolved_unresolved_145ktv7_call_target{"Unresolved: SignInManager<NexusUser>.PasswordSignInAsync"}
    unresolved_unresolved_14j4tjr_call_target{"Unresolved: UserManager<NexusUser>.CreateAsync"}
    unresolved_unresolved_15s1v4j_call_target{"Unresolved: UserManager<NexusUser>.AddLoginAsync"}
    unresolved_unresolved_178ba5o_call_target{"Unresolved: SignInManager<NexusUser>.ExternalLoginSignInAsync"}
    unresolved_unresolved_1a9orlv_call_target{"Unresolved: EventUtility.ConstructEvent"}
    unresolved_unresolved_1almyf8_call_target{"Unresolved: UserManager<NexusUser>.UpdateAsync"}
    unresolved_unresolved_1dkzmru_call_target{"Unresolved: HandleSubscriptionCancellation"}
    unresolved_unresolved_1dnru86_call_target{"Unresolved: IKnowledgeService.GetSummaryAndQuizAsync"}
    unresolved_unresolved_1e2zwy5_call_target{"Unresolved: HandleSubscriptionCancellation"}
    unresolved_unresolved_1ez59jg_interaction_target{"Unresolved: context.Request.Headers[\\"Accept\\"].ToString().Contains(\\"application/json\\");"}
    unresolved_unresolved_1h3uc52_call_target{"Unresolved: IKnowledgeService.GetGraphDataAsync"}
    unresolved_unresolved_1j7hia1_call_target{"Unresolved: IKnowledgeService.AskQuestionAsync"}
    unresolved_unresolved_1jj3gm9_call_target{"Unresolved: HandleSubscriptionSuccess"}
    unresolved_unresolved_1jyxn0y_interaction_target{"Unresolved: await epubService.GetEpubContentAsync(...)"}
    unresolved_unresolved_1nmuyp5_interaction_target{"Unresolved: var tenantId = user.FindFirstValue(\\"TenantId\\") ?? \\"global\\";"}
    unresolved_unresolved_1op8eta_interaction_target{"Unresolved: Await PasswordSignInAsync"}
    unresolved_unresolved_1oyil27_call_target{"Unresolved: MapIdentityApi<NexusUser>"}
    unresolved_unresolved_1phjv70_call_target{"Unresolved: IKnowledgeService.GetKnowledgeMapAsync"}
    unresolved_unresolved_1yh7mqb_call_target{"Unresolved: AppDbContext.SubscriptionPlans.FindAsync"}
    unresolved_unresolved_4zwunc_interaction_target{"Unresolved: context.Response.Redirect(context.RedirectUri);"}
    unresolved_unresolved_5jnkjz_call_target{"Unresolved: IMediator.Send"}
    unresolved_unresolved_67uv3t_call_target{"Unresolved: IEpubReader.GetEpubContentAsync"}
    unresolved_unresolved_7xqs7c_interaction_target{"Unresolved: var isApiRequest = context.Request.Path.StartsWithSegments(\\"/api\\") ||"}
    unresolved_unresolved_9tr9zo_call_target{"Unresolved: IngestEbookCommand (ctor)"}
    unresolved_unresolved_af3q5i_call_target{"Unresolved: DbInitializer.SeedAsync"}
    unresolved_unresolved_atcn0w_call_target{"Unresolved: AddInfrastructure"}
    unresolved_unresolved_d6i7fw_call_target{"Unresolved: HandleSubscriptionSuccess"}
    unresolved_unresolved_e8p2w2_call_target{"Unresolved: IKnowledgeService.GetKnowledgeAsync"}
    unresolved_unresolved_elasnz_call_target{"Unresolved: UserManager<NexusUser>.FindByEmailAsync"}
    unresolved_unresolved_eqx362_call_target{"Unresolved: IKnowledgeService.VerifyGroundednessAsync"}
    unresolved_unresolved_exg1zf_call_target{"Unresolved: IMediator.Send"}
    unresolved_unresolved_fdq985_call_target{"Unresolved: IMediator.Send"}
    unresolved_unresolved_h03m1a_call_target{"Unresolved: AppDbContext.SubscriptionPlans.FirstOrDefaultAsync"}
    unresolved_unresolved_hjm3k7_call_target{"Unresolved: UserManager<NexusUser>.FindByEmailAsync"}
    unresolved_unresolved_hqf79k_call_target{"Unresolved: SignInManager<NexusUser>.SignOutAsync"}
    unresolved_unresolved_kt6gb2_call_target{"Unresolved: AddApplication"}
    unresolved_unresolved_n0rfbb_interaction_target{"Unresolved: context.Request.Path.StartsWithSegments(\\"/identity\\") ||"}
    unresolved_unresolved_n2f2mw_call_target{"Unresolved: SignInManager<NexusUser>.SignInAsync"}
    unresolved_unresolved_pegxrp_call_target{"Unresolved: IKnowledgeService.ClearCacheAsync"}
    unresolved_unresolved_r4nsny_call_target{"Unresolved: GetMyEbooksQuery (ctor)"}
    unresolved_unresolved_sy1gxb_interaction_target{"Unresolved: var userId = user.FindFirstValue(ClaimTypes.NameIdentifier);"}
    unresolved_unresolved_wf27w_call_target{"Unresolved: UserManager<NexusUser>.UpdateAsync"}
    unresolved_unresolved_ww7zs3_interaction_target{"Unresolved: context.Response.StatusCode = StatusCodes.Status401Unauthorized;"}
    unresolved_unresolved_x4s5k1_call_target{"Unresolved: IKnowledgeService.SearchLibrarySemanticallyAsync"}
    unresolved_unresolved_yh2xm1_call_target{"Unresolved: GetUserProfileQuery (ctor)"}
    unresolved_unresolved_yx1tie_call_target{"Unresolved: SignInManager<NexusUser>.GetExternalLoginInfoAsync"}
    file_12rhzck_program_cs -->|contains| method_13xh0j3_handlesubscriptionsuccess
    file_12rhzck_program_cs -->|contains| method_19x6wwx_account_logout_form_get_account_logout_form
    file_12rhzck_program_cs -->|contains| method_19xkg6k_identity_callback_get_identity_callback_google
    file_12rhzck_program_cs -->|contains| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index
    file_12rhzck_program_cs -->|contains| method_1rb8gnn_map_identity_api_mapgroup_identity
    file_12rhzck_program_cs -->|contains| method_1uibcuk_program_top_level
    file_12rhzck_program_cs -->|contains| method_72bnlj_handlesubscriptioncancellation
    file_12rhzck_program_cs -->|contains| method_7u4uld_get_user_profile_get_identity_profile
    file_12rhzck_program_cs -->|contains| method_8fzkrx_account_login_form_post_account_login_form
    file_12rhzck_program_cs -->|contains| method_8lc46f_stripewebhook_post_api_stripewebhook
    file_12rhzck_program_cs -->|contains| method_eni3nx_identity_login_get_identity_login_google
    file_12rhzck_program_cs -->|contains| method_gc2kp9_knowledge_api_group_mappings
    file_12rhzck_program_cs -->|contains| method_ggo2op_ingestebook_post_api_library_ingest
    file_12rhzck_program_cs -->|contains| method_veacg9_getmyebooks_get_api_library_books
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1ez59jg_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1jyxn0y_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1nmuyp5_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_1op8eta_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_4zwunc_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_7xqs7c_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_n0rfbb_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_sy1gxb_interaction_target
    file_12rhzck_program_cs -->|unresolved interaction| unresolved_unresolved_ww7zs3_interaction_target
    method_13xh0j3_handlesubscriptionsuccess -->|unresolved call| unresolved_unresolved_1almyf8_call_target
    method_13xh0j3_handlesubscriptionsuccess -->|unresolved call| unresolved_unresolved_elasnz_call_target
    method_13xh0j3_handlesubscriptionsuccess -->|unresolved call| unresolved_unresolved_h03m1a_call_target
    method_19x6wwx_account_logout_form_get_account_logout_form -->|unresolved call| unresolved_unresolved_hqf79k_call_target
    method_19xkg6k_identity_callback_get_identity_callback_google -->|unresolved call| unresolved_unresolved_14j4tjr_call_target
    method_19xkg6k_identity_callback_get_identity_callback_google -->|unresolved call| unresolved_unresolved_15s1v4j_call_target
    method_19xkg6k_identity_callback_get_identity_callback_google -->|unresolved call| unresolved_unresolved_178ba5o_call_target
    method_19xkg6k_identity_callback_get_identity_callback_google -->|unresolved call| unresolved_unresolved_n2f2mw_call_target
    method_19xkg6k_identity_callback_get_identity_callback_google -->|unresolved call| unresolved_unresolved_yx1tie_call_target
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index -->|unresolved call| unresolved_unresolved_67uv3t_call_target
    method_1rb8gnn_map_identity_api_mapgroup_identity -->|unresolved call| unresolved_unresolved_1oyil27_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_1e2zwy5_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_1jj3gm9_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_1jj3gm9_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_af3q5i_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_atcn0w_call_target
    method_1uibcuk_program_top_level -->|unresolved call| unresolved_unresolved_kt6gb2_call_target
    method_72bnlj_handlesubscriptioncancellation -->|unresolved call| unresolved_unresolved_1yh7mqb_call_target
    method_72bnlj_handlesubscriptioncancellation -->|unresolved call| unresolved_unresolved_hjm3k7_call_target
    method_72bnlj_handlesubscriptioncancellation -->|unresolved call| unresolved_unresolved_wf27w_call_target
    method_7u4uld_get_user_profile_get_identity_profile -->|unresolved call| unresolved_unresolved_5jnkjz_call_target
    method_7u4uld_get_user_profile_get_identity_profile -->|unresolved call| unresolved_unresolved_yh2xm1_call_target
    method_8fzkrx_account_login_form_post_account_login_form -->|unresolved call| unresolved_unresolved_145ktv7_call_target
    method_8lc46f_stripewebhook_post_api_stripewebhook -->|unresolved call| unresolved_unresolved_1a9orlv_call_target
    method_8lc46f_stripewebhook_post_api_stripewebhook -->|unresolved call| unresolved_unresolved_1dkzmru_call_target
    method_8lc46f_stripewebhook_post_api_stripewebhook -->|unresolved call| unresolved_unresolved_d6i7fw_call_target
    method_8lc46f_stripewebhook_post_api_stripewebhook -->|unresolved call| unresolved_unresolved_d6i7fw_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_1dnru86_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_1h3uc52_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_1j7hia1_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_1phjv70_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_e8p2w2_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_eqx362_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_pegxrp_call_target
    method_gc2kp9_knowledge_api_group_mappings -->|unresolved call| unresolved_unresolved_x4s5k1_call_target
    method_ggo2op_ingestebook_post_api_library_ingest -->|unresolved call| unresolved_unresolved_9tr9zo_call_target
    method_ggo2op_ingestebook_post_api_library_ingest -->|unresolved call| unresolved_unresolved_fdq985_call_target
    method_veacg9_getmyebooks_get_api_library_books -->|unresolved call| unresolved_unresolved_exg1zf_call_target
    method_veacg9_getmyebooks_get_api_library_books -->|unresolved call| unresolved_unresolved_r4nsny_call_target
```

### Program (top-level)() Control Flow

_Warnings: diagram method_1uibcuk_program_top_level__fragment_diagram exceeds preferred complexity thresholds (320 nodes, 362 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_1uibcuk_program_top_level__call_196_DbInitializer_SeedAsync[["DbInitializer.SeedAsync"]]
    method_1uibcuk_program_top_level__call_389_HandleSubscriptionSuccess[["HandleSubscriptionSuccess"]]
    method_1uibcuk_program_top_level__call_394_HandleSubscriptionSuccess[["HandleSubscriptionSuccess"]]
    method_1uibcuk_program_top_level__call_399_HandleSubscriptionCancellation[["HandleSubscriptionCancellation"]]
    method_1uibcuk_program_top_level__call_78_AddApplication[["AddApplication"]]
    method_1uibcuk_program_top_level__call_79_AddInfrastructure[["AddInfrastructure"]]
    method_1uibcuk_program_top_level__action_107_identity_registration_107__linear("Add Identity and EF stores")
    method_1uibcuk_program_top_level__action_111_config_111__linear("Configure application cookie with custom redirect for API requests")
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__condition{"isApiRequest"}
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__false("false")
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__merge("merge")
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__true("true")
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__condition{"Falls back to alternate path"}
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__false("otherwise")
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__merge("merge")
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__true("fallback")
    method_1uibcuk_program_top_level__action_166_guard_clause_166__condition{"marker == null"}
    method_1uibcuk_program_top_level__action_166_guard_clause_166__false("continue")
    method_1uibcuk_program_top_level__action_166_guard_clause_166__merge("merge")
    method_1uibcuk_program_top_level__action_166_guard_clause_166__true("throw")
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__condition{"marker == null"}
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__false("false")
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__merge("merge")
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__true("true")
    method_1uibcuk_program_top_level__action_171_program_top_level_throw_171_12__throw{"Throws exception"}
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__condition{"Validates input or state"}
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__false("false")
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__merge("merge")
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__true("true")
    method_1uibcuk_program_top_level__action_176_retry_loop_176__linear("Database migration + seed with retries & exponential backoff")
    method_1uibcuk_program_top_level__action_181_program_top_level_await_181_13__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_body[["for (int i = 0; i < maxRetries; i++)"]]
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_entry("int i = 0; i < maxRetries; i++")
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_exit("Leaves the loop when the condition no longer holds.")
    method_1uibcuk_program_top_level__action_188_program_top_level_try_188_15__try("Begins protected execution")
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__condition{"logger.IsEnabled(LogLevel.Information)"}
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__false("false")
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__merge("merge")
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__true("true")
    method_1uibcuk_program_top_level__action_190_program_top_level_log_190_16__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_192_program_top_level_log_192_18__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_195_program_top_level_await_195_19__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_196_program_top_level_await_196_20__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__condition{"logger.IsEnabled(LogLevel.Information)"}
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__false("false")
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__merge("merge")
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__true("true")
    method_1uibcuk_program_top_level__action_198_program_top_level_log_198_21__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_200_program_top_level_log_200_23__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_204_program_top_level_catch_204_24__catch("catch Npgsql.NpgsqlException ex")
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__condition{"logger.IsEnabled(LogLevel.Warning)"}
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__false("false")
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__merge("merge")
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__true("true")
    method_1uibcuk_program_top_level__action_206_program_top_level_log_206_25__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_208_program_top_level_log_208_27__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_211_program_top_level_await_211_28__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_214_program_top_level_catch_214_29__catch("catch Exception ex")
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__condition{"logger.IsEnabled(LogLevel.Critical)"}
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__false("false")
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__merge("merge")
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__true("true")
    method_1uibcuk_program_top_level__action_216_program_top_level_log_216_30__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_218_program_top_level_log_218_32__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_220_program_top_level_throw_220_33__throw{"Throws exception"}
    method_1uibcuk_program_top_level__action_225_routing_setup_225__linear("Configure middleware pipeline and routing/auth")
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__condition{"app.Environment.IsDevelopment()"}
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__false("false")
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__merge("merge")
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__true("true")
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__condition{"Falls back to alternate path"}
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__false("otherwise")
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__merge("merge")
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__true("fallback")
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__condition{"!app.Environment.IsDevelopment()"}
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__false("false")
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__merge("merge")
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__true("true")
    method_1uibcuk_program_top_level__action_246_map_endpoints_246__linear("Register hubs, static assets, API routes and Razor components")
    method_1uibcuk_program_top_level__action_246_program_top_level_mapping_246_37__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_247_program_top_level_mapping_247_38__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_250_program_top_level_mapping_250_39__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_253_program_top_level_await_253_41__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__false("continue")
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__merge("merge")
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__true("exit")
    method_1uibcuk_program_top_level__action_261_program_top_level_mapping_261_44__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_265_program_top_level_mapping_265_45__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_268_program_top_level_await_268_47__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__false("continue")
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__merge("merge")
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__true("exit")
    method_1uibcuk_program_top_level__action_273_program_top_level_mapping_273_50__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_276_program_top_level_await_276_52__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__false("continue")
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__merge("merge")
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__true("exit")
    method_1uibcuk_program_top_level__action_281_program_top_level_mapping_281_55__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_284_program_top_level_await_284_57__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__false("continue")
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__merge("merge")
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__true("exit")
    method_1uibcuk_program_top_level__action_289_program_top_level_mapping_289_60__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_292_program_top_level_await_292_62__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__false("continue")
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__merge("merge")
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__true("exit")
    method_1uibcuk_program_top_level__action_297_program_top_level_mapping_297_65__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_300_program_top_level_await_300_67__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__false("continue")
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__merge("merge")
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__true("exit")
    method_1uibcuk_program_top_level__action_305_program_top_level_mapping_305_70__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_308_program_top_level_await_308_72__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__false("continue")
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__merge("merge")
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__true("exit")
    method_1uibcuk_program_top_level__action_313_program_top_level_mapping_313_75__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_316_program_top_level_await_316_77__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__false("continue")
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__merge("merge")
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__true("exit")
    method_1uibcuk_program_top_level__action_321_program_top_level_mapping_321_80__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_323_program_top_level_await_323_81__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__condition{"result.IsSuccess) return Results.Ok("}
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__false("continue")
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__merge("merge")
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__true("exit")
    method_1uibcuk_program_top_level__action_330_program_top_level_mapping_330_84__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__condition{"string.IsNullOrEmpty(userId)) return Results.Unauthorized("}
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__false("continue")
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__merge("merge")
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__true("exit")
    method_1uibcuk_program_top_level__action_34_service_registration_34__linear("Add Razor/Blazor and server/client services")
    method_1uibcuk_program_top_level__action_349_program_top_level_await_349_87__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__condition{"result.IsSuccess) return Results.Ok(new { Id = result.Value }"}
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__false("continue")
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__merge("merge")
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__true("exit")
    method_1uibcuk_program_top_level__action_355_program_top_level_mapping_355_91__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__condition{"string.IsNullOrEmpty(userId)) return Results.Unauthorized("}
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__false("continue")
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__merge("merge")
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__true("exit")
    method_1uibcuk_program_top_level__action_360_program_top_level_await_360_94__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__false("continue")
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__merge("merge")
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__true("exit")
    method_1uibcuk_program_top_level__action_367_program_top_level_mapping_367_97__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_373_program_top_level_await_373_98__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_374_program_top_level_await_374_100__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_377_program_top_level_try_377_101__try("Begins protected execution")
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__case_0("case")
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch{"stripeEvent.Type"}
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch_merge("merge")
    method_1uibcuk_program_top_level__action_389_program_top_level_await_389_104__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_394_program_top_level_await_394_105__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_399_program_top_level_await_399_106__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_404_program_top_level_catch_404_108__catch("catch StripeException e")
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__condition{"string.IsNullOrEmpty(email)"}
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__false("continue")
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__merge("merge")
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__true("exit")
    method_1uibcuk_program_top_level__action_418_program_top_level_await_418_112__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__condition{"user != null"}
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__false("false")
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__merge("merge")
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__true("true")
    method_1uibcuk_program_top_level__action_422_program_top_level_await_422_114__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__condition{"plan != null"}
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__false("false")
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__merge("merge")
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__true("true")
    method_1uibcuk_program_top_level__action_430_program_top_level_await_430_116__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__condition{"string.IsNullOrEmpty(email)"}
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__false("continue")
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__merge("merge")
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__true("exit")
    method_1uibcuk_program_top_level__action_441_program_top_level_await_441_119__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__condition{"user != null"}
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__false("false")
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__merge("merge")
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__true("true")
    method_1uibcuk_program_top_level__action_444_program_top_level_await_444_122__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_447_program_top_level_await_447_123__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_451_program_top_level_mapping_451_124__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_453_program_top_level_mapping_453_125__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_463_program_top_level_mapping_463_127__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_469_program_top_level_await_469_128__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_47_service_registration_47__linear("Register scoped app services")
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__condition{"info == null"}
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__false("false")
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__merge("merge")
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__true("true")
    method_1uibcuk_program_top_level__action_472_program_top_level_log_472_130__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_476_program_top_level_await_476_132__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__condition{"result.Succeeded"}
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__false("false")
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__merge("merge")
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__true("true")
    method_1uibcuk_program_top_level__action_479_program_top_level_log_479_134__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__condition{"result.IsLockedOut"}
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__false("false")
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__merge("merge")
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__true("true")
    method_1uibcuk_program_top_level__action_485_program_top_level_log_485_138__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__condition{"email != null"}
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__false("false")
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__merge("merge")
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__true("true")
    method_1uibcuk_program_top_level__action_494_program_top_level_await_494_143__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__condition{"createResult.Succeeded"}
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__false("false")
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__merge("merge")
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__true("true")
    method_1uibcuk_program_top_level__action_498_program_top_level_await_498_145__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_499_program_top_level_await_499_146__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_500_program_top_level_log_500_147__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_body[["foreach (var error in createResult.Errors)"]]
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_entry("var error in createResult.Errors")
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_exit("Leaves the loop when the condition no longer holds.")
    method_1uibcuk_program_top_level__action_507_program_top_level_log_507_150__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__condition{"createResult.Errors.Any(e => e.Code == \\"DuplicateEmail\\" || e.Code == \\"DuplicateUserName\\")"}
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__false("false")
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__merge("merge")
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__true("true")
    method_1uibcuk_program_top_level__action_516_program_top_level_log_516_153__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_520_program_top_level_mapping_520_155__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_528_program_top_level_await_528_156__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__condition{"result.Succeeded"}
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__false("false")
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__merge("merge")
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__true("true")
    method_1uibcuk_program_top_level__action_531_program_top_level_log_531_158__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_539_program_top_level_mapping_539_161__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_543_program_top_level_await_543_162__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_544_program_top_level_log_544_163__linear("Logs runtime state")
    method_1uibcuk_program_top_level__action_548_program_top_level_mapping_548_165__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__condition{"userId == null) return Results.Unauthorized("}
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__false("continue")
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__merge("merge")
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__true("exit")
    method_1uibcuk_program_top_level__action_553_program_top_level_await_553_168__await[["Waits for async work"]]
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__condition{"result.IsFailed) return Results.NotFound(result.Errors.FirstOrDefault()?.Message"}
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__false("continue")
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__merge("merge")
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__true("exit")
    method_1uibcuk_program_top_level__action_559_program_top_level_mapping_559_172__linear("Maps data or transforms shape")
    method_1uibcuk_program_top_level__action_58_httpclient_config_58__linear("Configure named HttpClient 'NexusAPI' with fallback")
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__condition{"!string.IsNullOrEmpty(apiBaseUrl)"}
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__false("false")
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__merge("merge")
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__true("true")
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__condition{"Falls back to alternate path"}
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__false("otherwise")
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__merge("merge")
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__true("fallback")
    method_1uibcuk_program_top_level__action_96_auth_registration_96__linear("Configure authentication and Google external login")
    method_1uibcuk_program_top_level__entry(["Program (top-level) entry"])
    method_1uibcuk_program_top_level__action_125_program_top_level_repository_read_125_2__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_126_program_top_level_repository_read_126_3__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_127_program_top_level_repository_read_127_4__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_131_program_top_level_repository_read_131_6__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_135_program_top_level_repository_read_135_8__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_252_program_top_level_repository_read_252_40__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_267_program_top_level_repository_read_267_46__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_275_program_top_level_repository_read_275_51__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_283_program_top_level_repository_read_283_56__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_291_program_top_level_repository_read_291_61__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_299_program_top_level_repository_read_299_66__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_307_program_top_level_repository_read_307_71__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_315_program_top_level_repository_read_315_76__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_332_program_top_level_repository_read_332_85__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_352_program_top_level_repository_read_352_89__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_357_program_top_level_repository_read_357_92__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_374_program_top_level_repository_read_374_99__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_381_program_top_level_repository_read_381_102__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_418_program_top_level_repository_read_418_111__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_441_program_top_level_repository_read_441_118__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_444_program_top_level_repository_read_444_121__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_479_program_top_level_repository_read_479_135__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_485_program_top_level_repository_read_485_139__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_490_program_top_level_repository_read_490_141__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_550_program_top_level_repository_read_550_166__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_554_program_top_level_repository_read_554_170__linear[("Reads repository or persistence state")]
    method_1uibcuk_program_top_level__action_137_program_top_level_return_137_9__return(["Returns result"])
    method_1uibcuk_program_top_level__action_258_program_top_level_return_258_43__return(["Returns result"])
    method_1uibcuk_program_top_level__action_270_program_top_level_return_270_49__return(["Returns result"])
    method_1uibcuk_program_top_level__action_278_program_top_level_return_278_54__return(["Returns result"])
    method_1uibcuk_program_top_level__action_286_program_top_level_return_286_59__return(["Returns result"])
    method_1uibcuk_program_top_level__action_294_program_top_level_return_294_64__return(["Returns result"])
    method_1uibcuk_program_top_level__action_302_program_top_level_return_302_69__return(["Returns result"])
    method_1uibcuk_program_top_level__action_310_program_top_level_return_310_74__return(["Returns result"])
    method_1uibcuk_program_top_level__action_318_program_top_level_return_318_79__return(["Returns result"])
    method_1uibcuk_program_top_level__action_327_program_top_level_return_327_83__return(["Returns result"])
    method_1uibcuk_program_top_level__action_352_program_top_level_return_352_90__return(["Returns result"])
    method_1uibcuk_program_top_level__action_364_program_top_level_return_364_96__return(["Returns result"])
    method_1uibcuk_program_top_level__action_402_program_top_level_return_402_107__return(["Returns result"])
    method_1uibcuk_program_top_level__action_406_program_top_level_return_406_109__return(["Returns result"])
    method_1uibcuk_program_top_level__action_460_program_top_level_return_460_126__return(["Returns result"])
    method_1uibcuk_program_top_level__action_473_program_top_level_return_473_131__return(["Returns result"])
    method_1uibcuk_program_top_level__action_480_program_top_level_return_480_136__return(["Returns result"])
    method_1uibcuk_program_top_level__action_486_program_top_level_return_486_140__return(["Returns result"])
    method_1uibcuk_program_top_level__action_501_program_top_level_return_501_148__return(["Returns result"])
    method_1uibcuk_program_top_level__action_512_program_top_level_return_512_152__return(["Returns result"])
    method_1uibcuk_program_top_level__action_517_program_top_level_return_517_154__return(["Returns result"])
    method_1uibcuk_program_top_level__action_532_program_top_level_return_532_159__return(["Returns result"])
    method_1uibcuk_program_top_level__action_536_program_top_level_return_536_160__return(["Returns result"])
    method_1uibcuk_program_top_level__action_545_program_top_level_return_545_164__return(["Returns result"])
    method_1uibcuk_program_top_level__action_556_program_top_level_return_556_171__return(["Returns result"])
    method_1uibcuk_program_top_level__implicit_return(["return"])
    method_1uibcuk_program_top_level__action_107_identity_registration_107__linear -->|next| method_1uibcuk_program_top_level__action_111_config_111__linear
    method_1uibcuk_program_top_level__action_111_config_111__linear -->|next| method_1uibcuk_program_top_level__action_125_program_top_level_repository_read_125_2__linear
    method_1uibcuk_program_top_level__action_125_program_top_level_repository_read_125_2__linear -->|next| method_1uibcuk_program_top_level__action_126_program_top_level_repository_read_126_3__linear
    method_1uibcuk_program_top_level__action_126_program_top_level_repository_read_126_3__linear -->|next| method_1uibcuk_program_top_level__action_127_program_top_level_repository_read_127_4__linear
    method_1uibcuk_program_top_level__action_127_program_top_level_repository_read_127_4__linear -->|next| method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__condition
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__condition -->|false| method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__false
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__condition -->|true| method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__true
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__false -->|next| method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__merge
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__merge -->|next| method_1uibcuk_program_top_level__action_131_program_top_level_repository_read_131_6__linear
    method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__true -->|next| method_1uibcuk_program_top_level__action_129_program_top_level_branch_129_5__merge
    method_1uibcuk_program_top_level__action_131_program_top_level_repository_read_131_6__linear -->|fallback| method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__condition
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__condition -->|otherwise| method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__false
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__condition -->|fallback| method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__true
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__false -->|next| method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__merge
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__merge -->|next| method_1uibcuk_program_top_level__action_135_program_top_level_repository_read_135_8__linear
    method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__true -->|next| method_1uibcuk_program_top_level__action_133_program_top_level_fallback_133_7__merge
    method_1uibcuk_program_top_level__action_135_program_top_level_repository_read_135_8__linear -->|return| method_1uibcuk_program_top_level__action_137_program_top_level_return_137_9__return
    method_1uibcuk_program_top_level__action_137_program_top_level_return_137_9__return -->|next| method_1uibcuk_program_top_level__action_166_guard_clause_166__condition
    method_1uibcuk_program_top_level__action_166_guard_clause_166__condition -->|continue| method_1uibcuk_program_top_level__action_166_guard_clause_166__false
    method_1uibcuk_program_top_level__action_166_guard_clause_166__condition -->|throw| method_1uibcuk_program_top_level__action_166_guard_clause_166__true
    method_1uibcuk_program_top_level__action_166_guard_clause_166__false -->|next| method_1uibcuk_program_top_level__action_166_guard_clause_166__merge
    method_1uibcuk_program_top_level__action_166_guard_clause_166__merge -->|next| method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__condition
    method_1uibcuk_program_top_level__action_166_guard_clause_166__true -->|next| method_1uibcuk_program_top_level__action_166_guard_clause_166__merge
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__condition -->|false| method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__false
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__condition -->|true| method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__true
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__false -->|next| method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__merge
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__merge -->|next| method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__condition
    method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__true -->|next| method_1uibcuk_program_top_level__action_169_program_top_level_branch_169_10__merge
    method_1uibcuk_program_top_level__action_171_program_top_level_throw_171_12__throw -->|next| method_1uibcuk_program_top_level__action_176_retry_loop_176__linear
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__condition -->|false| method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__false
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__condition -->|true| method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__true
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__false -->|next| method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__merge
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__merge -->|exception| method_1uibcuk_program_top_level__action_171_program_top_level_throw_171_12__throw
    method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__true -->|next| method_1uibcuk_program_top_level__action_171_program_top_level_validation_171_11__merge
    method_1uibcuk_program_top_level__action_176_retry_loop_176__linear -->|next| method_1uibcuk_program_top_level__action_181_program_top_level_await_181_13__await
    method_1uibcuk_program_top_level__action_181_program_top_level_await_181_13__await -->|next| method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_entry
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_body -->|continue| method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_entry
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_entry -->|int i = 0 i maxRetries i++| method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_body
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_entry -->|Leaves the loop when the condition no longer holds.| method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_exit
    method_1uibcuk_program_top_level__action_186_program_top_level_loop_186_14__loop_exit -->|next| method_1uibcuk_program_top_level__action_188_program_top_level_try_188_15__try
    method_1uibcuk_program_top_level__action_188_program_top_level_try_188_15__try -->|next| method_1uibcuk_program_top_level__action_190_program_top_level_log_190_16__linear
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__condition -->|false| method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__false
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__condition -->|true| method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__true
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__false -->|next| method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__merge
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__merge -->|next| method_1uibcuk_program_top_level__action_192_program_top_level_log_192_18__linear
    method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__true -->|next| method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__merge
    method_1uibcuk_program_top_level__action_190_program_top_level_log_190_16__linear -->|next| method_1uibcuk_program_top_level__action_190_program_top_level_branch_190_17__condition
    method_1uibcuk_program_top_level__action_192_program_top_level_log_192_18__linear -->|next| method_1uibcuk_program_top_level__action_195_program_top_level_await_195_19__await
    method_1uibcuk_program_top_level__action_195_program_top_level_await_195_19__await -->|next| method_1uibcuk_program_top_level__action_196_program_top_level_await_196_20__await
    method_1uibcuk_program_top_level__action_196_program_top_level_await_196_20__await -->|services| method_1uibcuk_program_top_level__call_196_DbInitializer_SeedAsync
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__condition -->|false| method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__false
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__condition -->|true| method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__true
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__false -->|next| method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__merge
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__merge -->|next| method_1uibcuk_program_top_level__action_200_program_top_level_log_200_23__linear
    method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__true -->|next| method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__merge
    method_1uibcuk_program_top_level__action_198_program_top_level_log_198_21__linear -->|next| method_1uibcuk_program_top_level__action_198_program_top_level_branch_198_22__condition
    method_1uibcuk_program_top_level__action_200_program_top_level_log_200_23__linear -->|exception| method_1uibcuk_program_top_level__action_204_program_top_level_catch_204_24__catch
    method_1uibcuk_program_top_level__action_204_program_top_level_catch_204_24__catch -->|next| method_1uibcuk_program_top_level__action_206_program_top_level_log_206_25__linear
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__condition -->|false| method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__false
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__condition -->|true| method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__true
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__false -->|next| method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__merge
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__merge -->|next| method_1uibcuk_program_top_level__action_208_program_top_level_log_208_27__linear
    method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__true -->|next| method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__merge
    method_1uibcuk_program_top_level__action_206_program_top_level_log_206_25__linear -->|next| method_1uibcuk_program_top_level__action_206_program_top_level_branch_206_26__condition
    method_1uibcuk_program_top_level__action_208_program_top_level_log_208_27__linear -->|next| method_1uibcuk_program_top_level__action_211_program_top_level_await_211_28__await
    method_1uibcuk_program_top_level__action_211_program_top_level_await_211_28__await -->|exception| method_1uibcuk_program_top_level__action_214_program_top_level_catch_214_29__catch
    method_1uibcuk_program_top_level__action_214_program_top_level_catch_214_29__catch -->|next| method_1uibcuk_program_top_level__action_216_program_top_level_log_216_30__linear
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__condition -->|false| method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__false
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__condition -->|true| method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__true
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__false -->|next| method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__merge
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__merge -->|next| method_1uibcuk_program_top_level__action_218_program_top_level_log_218_32__linear
    method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__true -->|next| method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__merge
    method_1uibcuk_program_top_level__action_216_program_top_level_log_216_30__linear -->|next| method_1uibcuk_program_top_level__action_216_program_top_level_branch_216_31__condition
    method_1uibcuk_program_top_level__action_218_program_top_level_log_218_32__linear -->|exception| method_1uibcuk_program_top_level__action_220_program_top_level_throw_220_33__throw
    method_1uibcuk_program_top_level__action_220_program_top_level_throw_220_33__throw -->|next| method_1uibcuk_program_top_level__action_225_routing_setup_225__linear
    method_1uibcuk_program_top_level__action_225_routing_setup_225__linear -->|next| method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__condition
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__condition -->|false| method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__false
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__condition -->|true| method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__true
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__false -->|next| method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__merge
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__merge -->|fallback| method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__condition
    method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__true -->|next| method_1uibcuk_program_top_level__action_226_program_top_level_branch_226_34__merge
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__condition -->|otherwise| method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__false
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__condition -->|fallback| method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__true
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__false -->|next| method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__merge
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__merge -->|next| method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__condition
    method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__true -->|next| method_1uibcuk_program_top_level__action_230_program_top_level_fallback_230_35__merge
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__condition -->|false| method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__false
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__condition -->|true| method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__true
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__false -->|next| method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__merge
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__merge -->|next| method_1uibcuk_program_top_level__action_246_map_endpoints_246__linear
    method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__true -->|next| method_1uibcuk_program_top_level__action_237_program_top_level_branch_237_36__merge
    method_1uibcuk_program_top_level__action_246_map_endpoints_246__linear -->|next| method_1uibcuk_program_top_level__action_246_program_top_level_mapping_246_37__linear
    method_1uibcuk_program_top_level__action_246_program_top_level_mapping_246_37__linear -->|next| method_1uibcuk_program_top_level__action_247_program_top_level_mapping_247_38__linear
    method_1uibcuk_program_top_level__action_247_program_top_level_mapping_247_38__linear -->|next| method_1uibcuk_program_top_level__action_250_program_top_level_mapping_250_39__linear
    method_1uibcuk_program_top_level__action_250_program_top_level_mapping_250_39__linear -->|next| method_1uibcuk_program_top_level__action_252_program_top_level_repository_read_252_40__linear
    method_1uibcuk_program_top_level__action_252_program_top_level_repository_read_252_40__linear -->|next| method_1uibcuk_program_top_level__action_253_program_top_level_await_253_41__await
    method_1uibcuk_program_top_level__action_253_program_top_level_await_253_41__await -->|next| method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__condition
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__condition -->|continue| method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__false
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__condition -->|exit| method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__true
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__false -->|next| method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__merge
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__merge -->|return| method_1uibcuk_program_top_level__action_258_program_top_level_return_258_43__return
    method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__true -->|next| method_1uibcuk_program_top_level__action_255_program_top_level_guard_clause_255_42__merge
    method_1uibcuk_program_top_level__action_258_program_top_level_return_258_43__return -->|next| method_1uibcuk_program_top_level__action_261_program_top_level_mapping_261_44__linear
    method_1uibcuk_program_top_level__action_261_program_top_level_mapping_261_44__linear -->|next| method_1uibcuk_program_top_level__action_265_program_top_level_mapping_265_45__linear
    method_1uibcuk_program_top_level__action_265_program_top_level_mapping_265_45__linear -->|next| method_1uibcuk_program_top_level__action_267_program_top_level_repository_read_267_46__linear
    method_1uibcuk_program_top_level__action_267_program_top_level_repository_read_267_46__linear -->|next| method_1uibcuk_program_top_level__action_268_program_top_level_await_268_47__await
    method_1uibcuk_program_top_level__action_268_program_top_level_await_268_47__await -->|next| method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__condition
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__condition -->|continue| method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__false
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__condition -->|exit| method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__true
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__false -->|next| method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__merge
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__merge -->|return| method_1uibcuk_program_top_level__action_270_program_top_level_return_270_49__return
    method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__true -->|next| method_1uibcuk_program_top_level__action_269_program_top_level_guard_clause_269_48__merge
    method_1uibcuk_program_top_level__action_270_program_top_level_return_270_49__return -->|next| method_1uibcuk_program_top_level__action_273_program_top_level_mapping_273_50__linear
    method_1uibcuk_program_top_level__action_273_program_top_level_mapping_273_50__linear -->|next| method_1uibcuk_program_top_level__action_275_program_top_level_repository_read_275_51__linear
    method_1uibcuk_program_top_level__action_275_program_top_level_repository_read_275_51__linear -->|next| method_1uibcuk_program_top_level__action_276_program_top_level_await_276_52__await
    method_1uibcuk_program_top_level__action_276_program_top_level_await_276_52__await -->|next| method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__condition
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__condition -->|continue| method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__false
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__condition -->|exit| method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__true
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__false -->|next| method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__merge
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__merge -->|return| method_1uibcuk_program_top_level__action_278_program_top_level_return_278_54__return
    method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__true -->|next| method_1uibcuk_program_top_level__action_277_program_top_level_guard_clause_277_53__merge
    method_1uibcuk_program_top_level__action_278_program_top_level_return_278_54__return -->|next| method_1uibcuk_program_top_level__action_281_program_top_level_mapping_281_55__linear
    method_1uibcuk_program_top_level__action_281_program_top_level_mapping_281_55__linear -->|next| method_1uibcuk_program_top_level__action_283_program_top_level_repository_read_283_56__linear
    method_1uibcuk_program_top_level__action_283_program_top_level_repository_read_283_56__linear -->|next| method_1uibcuk_program_top_level__action_284_program_top_level_await_284_57__await
    method_1uibcuk_program_top_level__action_284_program_top_level_await_284_57__await -->|next| method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__condition
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__condition -->|continue| method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__false
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__condition -->|exit| method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__true
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__false -->|next| method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__merge
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__merge -->|return| method_1uibcuk_program_top_level__action_286_program_top_level_return_286_59__return
    method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__true -->|next| method_1uibcuk_program_top_level__action_285_program_top_level_guard_clause_285_58__merge
    method_1uibcuk_program_top_level__action_286_program_top_level_return_286_59__return -->|next| method_1uibcuk_program_top_level__action_289_program_top_level_mapping_289_60__linear
    method_1uibcuk_program_top_level__action_289_program_top_level_mapping_289_60__linear -->|next| method_1uibcuk_program_top_level__action_291_program_top_level_repository_read_291_61__linear
    method_1uibcuk_program_top_level__action_291_program_top_level_repository_read_291_61__linear -->|next| method_1uibcuk_program_top_level__action_292_program_top_level_await_292_62__await
    method_1uibcuk_program_top_level__action_292_program_top_level_await_292_62__await -->|next| method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__condition
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__condition -->|continue| method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__false
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__condition -->|exit| method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__true
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__false -->|next| method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__merge
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__merge -->|return| method_1uibcuk_program_top_level__action_294_program_top_level_return_294_64__return
    method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__true -->|next| method_1uibcuk_program_top_level__action_293_program_top_level_guard_clause_293_63__merge
    method_1uibcuk_program_top_level__action_294_program_top_level_return_294_64__return -->|next| method_1uibcuk_program_top_level__action_297_program_top_level_mapping_297_65__linear
    method_1uibcuk_program_top_level__action_297_program_top_level_mapping_297_65__linear -->|next| method_1uibcuk_program_top_level__action_299_program_top_level_repository_read_299_66__linear
    method_1uibcuk_program_top_level__action_299_program_top_level_repository_read_299_66__linear -->|next| method_1uibcuk_program_top_level__action_300_program_top_level_await_300_67__await
    method_1uibcuk_program_top_level__action_300_program_top_level_await_300_67__await -->|next| method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__condition
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__condition -->|continue| method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__false
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__condition -->|exit| method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__true
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__false -->|next| method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__merge
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__merge -->|return| method_1uibcuk_program_top_level__action_302_program_top_level_return_302_69__return
    method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__true -->|next| method_1uibcuk_program_top_level__action_301_program_top_level_guard_clause_301_68__merge
    method_1uibcuk_program_top_level__action_302_program_top_level_return_302_69__return -->|next| method_1uibcuk_program_top_level__action_305_program_top_level_mapping_305_70__linear
    method_1uibcuk_program_top_level__action_305_program_top_level_mapping_305_70__linear -->|next| method_1uibcuk_program_top_level__action_307_program_top_level_repository_read_307_71__linear
    method_1uibcuk_program_top_level__action_307_program_top_level_repository_read_307_71__linear -->|next| method_1uibcuk_program_top_level__action_308_program_top_level_await_308_72__await
    method_1uibcuk_program_top_level__action_308_program_top_level_await_308_72__await -->|next| method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__condition
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__condition -->|continue| method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__false
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__condition -->|exit| method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__true
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__false -->|next| method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__merge
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__merge -->|return| method_1uibcuk_program_top_level__action_310_program_top_level_return_310_74__return
    method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__true -->|next| method_1uibcuk_program_top_level__action_309_program_top_level_guard_clause_309_73__merge
    method_1uibcuk_program_top_level__action_310_program_top_level_return_310_74__return -->|next| method_1uibcuk_program_top_level__action_313_program_top_level_mapping_313_75__linear
    method_1uibcuk_program_top_level__action_313_program_top_level_mapping_313_75__linear -->|next| method_1uibcuk_program_top_level__action_315_program_top_level_repository_read_315_76__linear
    method_1uibcuk_program_top_level__action_315_program_top_level_repository_read_315_76__linear -->|next| method_1uibcuk_program_top_level__action_316_program_top_level_await_316_77__await
    method_1uibcuk_program_top_level__action_316_program_top_level_await_316_77__await -->|next| method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__condition
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__condition -->|continue| method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__false
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__condition -->|exit| method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__true
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__false -->|next| method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__merge
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__merge -->|return| method_1uibcuk_program_top_level__action_318_program_top_level_return_318_79__return
    method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__true -->|next| method_1uibcuk_program_top_level__action_317_program_top_level_guard_clause_317_78__merge
    method_1uibcuk_program_top_level__action_318_program_top_level_return_318_79__return -->|next| method_1uibcuk_program_top_level__action_321_program_top_level_mapping_321_80__linear
    method_1uibcuk_program_top_level__action_321_program_top_level_mapping_321_80__linear -->|next| method_1uibcuk_program_top_level__action_323_program_top_level_await_323_81__await
    method_1uibcuk_program_top_level__action_323_program_top_level_await_323_81__await -->|next| method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__condition
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__condition -->|continue| method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__false
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__condition -->|exit| method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__true
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__false -->|next| method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__merge
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__merge -->|return| method_1uibcuk_program_top_level__action_327_program_top_level_return_327_83__return
    method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__true -->|next| method_1uibcuk_program_top_level__action_324_program_top_level_guard_clause_324_82__merge
    method_1uibcuk_program_top_level__action_327_program_top_level_return_327_83__return -->|next| method_1uibcuk_program_top_level__action_330_program_top_level_mapping_330_84__linear
    method_1uibcuk_program_top_level__action_330_program_top_level_mapping_330_84__linear -->|next| method_1uibcuk_program_top_level__action_332_program_top_level_repository_read_332_85__linear
    method_1uibcuk_program_top_level__action_332_program_top_level_repository_read_332_85__linear -->|next| method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__condition
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__condition -->|continue| method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__false
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__condition -->|exit| method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__true
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__false -->|next| method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__merge
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__merge -->|next| method_1uibcuk_program_top_level__action_349_program_top_level_await_349_87__await
    method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__true -->|next| method_1uibcuk_program_top_level__action_333_program_top_level_guard_clause_333_86__merge
    method_1uibcuk_program_top_level__action_34_service_registration_34__linear -->|next| method_1uibcuk_program_top_level__action_47_service_registration_47__linear
    method_1uibcuk_program_top_level__action_349_program_top_level_await_349_87__await -->|next| method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__condition
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__condition -->|continue| method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__false
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__condition -->|exit| method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__true
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__false -->|next| method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__merge
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__merge -->|return| method_1uibcuk_program_top_level__action_352_program_top_level_return_352_90__return
    method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__true -->|next| method_1uibcuk_program_top_level__action_350_program_top_level_guard_clause_350_88__merge
    method_1uibcuk_program_top_level__action_352_program_top_level_repository_read_352_89__linear -->|next| method_1uibcuk_program_top_level__action_355_program_top_level_mapping_355_91__linear
    method_1uibcuk_program_top_level__action_352_program_top_level_return_352_90__return -->|next| method_1uibcuk_program_top_level__action_352_program_top_level_repository_read_352_89__linear
    method_1uibcuk_program_top_level__action_355_program_top_level_mapping_355_91__linear -->|next| method_1uibcuk_program_top_level__action_357_program_top_level_repository_read_357_92__linear
    method_1uibcuk_program_top_level__action_357_program_top_level_repository_read_357_92__linear -->|next| method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__condition
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__condition -->|continue| method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__false
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__condition -->|exit| method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__true
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__false -->|next| method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__merge
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__merge -->|next| method_1uibcuk_program_top_level__action_360_program_top_level_await_360_94__await
    method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__true -->|next| method_1uibcuk_program_top_level__action_358_program_top_level_guard_clause_358_93__merge
    method_1uibcuk_program_top_level__action_360_program_top_level_await_360_94__await -->|next| method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__condition
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__condition -->|continue| method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__false
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__condition -->|exit| method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__true
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__false -->|next| method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__merge
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__merge -->|return| method_1uibcuk_program_top_level__action_364_program_top_level_return_364_96__return
    method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__true -->|next| method_1uibcuk_program_top_level__action_361_program_top_level_guard_clause_361_95__merge
    method_1uibcuk_program_top_level__action_364_program_top_level_return_364_96__return -->|next| method_1uibcuk_program_top_level__action_367_program_top_level_mapping_367_97__linear
    method_1uibcuk_program_top_level__action_367_program_top_level_mapping_367_97__linear -->|next| method_1uibcuk_program_top_level__action_373_program_top_level_await_373_98__await
    method_1uibcuk_program_top_level__action_373_program_top_level_await_373_98__await -->|next| method_1uibcuk_program_top_level__action_374_program_top_level_await_374_100__await
    method_1uibcuk_program_top_level__action_374_program_top_level_await_374_100__await -->|next| method_1uibcuk_program_top_level__action_374_program_top_level_repository_read_374_99__linear
    method_1uibcuk_program_top_level__action_374_program_top_level_repository_read_374_99__linear -->|next| method_1uibcuk_program_top_level__action_377_program_top_level_try_377_101__try
    method_1uibcuk_program_top_level__action_377_program_top_level_try_377_101__try -->|next| method_1uibcuk_program_top_level__action_381_program_top_level_repository_read_381_102__linear
    method_1uibcuk_program_top_level__action_381_program_top_level_repository_read_381_102__linear -->|next| method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__case_0 -->|next| method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch_merge
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch -->|case| method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__case_0
    method_1uibcuk_program_top_level__action_385_program_top_level_switch_385_103__switch_merge -->|next| method_1uibcuk_program_top_level__action_389_program_top_level_await_389_104__await
    method_1uibcuk_program_top_level__action_389_program_top_level_await_389_104__await -->|calls| method_1uibcuk_program_top_level__call_389_HandleSubscriptionSuccess
    method_1uibcuk_program_top_level__action_394_program_top_level_await_394_105__await -->|calls| method_1uibcuk_program_top_level__call_394_HandleSubscriptionSuccess
    method_1uibcuk_program_top_level__action_399_program_top_level_await_399_106__await -->|calls| method_1uibcuk_program_top_level__call_399_HandleSubscriptionCancellation
    method_1uibcuk_program_top_level__action_402_program_top_level_return_402_107__return -->|exception| method_1uibcuk_program_top_level__action_404_program_top_level_catch_404_108__catch
    method_1uibcuk_program_top_level__action_404_program_top_level_catch_404_108__catch -->|return| method_1uibcuk_program_top_level__action_406_program_top_level_return_406_109__return
    method_1uibcuk_program_top_level__action_406_program_top_level_return_406_109__return -->|next| method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__condition
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__condition -->|continue| method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__false
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__condition -->|exit| method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__true
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__false -->|next| method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__merge
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__merge -->|next| method_1uibcuk_program_top_level__action_418_program_top_level_await_418_112__await
    method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__true -->|next| method_1uibcuk_program_top_level__action_416_program_top_level_guard_clause_416_110__merge
    method_1uibcuk_program_top_level__action_418_program_top_level_await_418_112__await -->|next| method_1uibcuk_program_top_level__action_418_program_top_level_repository_read_418_111__linear
    method_1uibcuk_program_top_level__action_418_program_top_level_repository_read_418_111__linear -->|next| method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__condition
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__condition -->|false| method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__false
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__condition -->|true| method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__true
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__false -->|next| method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__merge
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__merge -->|next| method_1uibcuk_program_top_level__action_422_program_top_level_await_422_114__await
    method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__true -->|next| method_1uibcuk_program_top_level__action_419_program_top_level_branch_419_113__merge
    method_1uibcuk_program_top_level__action_422_program_top_level_await_422_114__await -->|next| method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__condition
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__condition -->|false| method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__false
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__condition -->|true| method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__true
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__false -->|next| method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__merge
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__merge -->|next| method_1uibcuk_program_top_level__action_430_program_top_level_await_430_116__await
    method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__true -->|next| method_1uibcuk_program_top_level__action_424_program_top_level_branch_424_115__merge
    method_1uibcuk_program_top_level__action_430_program_top_level_await_430_116__await -->|next| method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__condition
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__condition -->|continue| method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__false
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__condition -->|exit| method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__true
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__false -->|next| method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__merge
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__merge -->|next| method_1uibcuk_program_top_level__action_441_program_top_level_await_441_119__await
    method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__true -->|next| method_1uibcuk_program_top_level__action_439_program_top_level_guard_clause_439_117__merge
    method_1uibcuk_program_top_level__action_441_program_top_level_await_441_119__await -->|next| method_1uibcuk_program_top_level__action_441_program_top_level_repository_read_441_118__linear
    method_1uibcuk_program_top_level__action_441_program_top_level_repository_read_441_118__linear -->|next| method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__condition
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__condition -->|false| method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__false
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__condition -->|true| method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__true
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__false -->|next| method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__merge
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__merge -->|next| method_1uibcuk_program_top_level__action_444_program_top_level_await_444_122__await
    method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__true -->|next| method_1uibcuk_program_top_level__action_442_program_top_level_branch_442_120__merge
    method_1uibcuk_program_top_level__action_444_program_top_level_await_444_122__await -->|next| method_1uibcuk_program_top_level__action_444_program_top_level_repository_read_444_121__linear
    method_1uibcuk_program_top_level__action_444_program_top_level_repository_read_444_121__linear -->|next| method_1uibcuk_program_top_level__action_447_program_top_level_await_447_123__await
    method_1uibcuk_program_top_level__action_447_program_top_level_await_447_123__await -->|next| method_1uibcuk_program_top_level__action_451_program_top_level_mapping_451_124__linear
    method_1uibcuk_program_top_level__action_451_program_top_level_mapping_451_124__linear -->|next| method_1uibcuk_program_top_level__action_453_program_top_level_mapping_453_125__linear
    method_1uibcuk_program_top_level__action_453_program_top_level_mapping_453_125__linear -->|return| method_1uibcuk_program_top_level__action_460_program_top_level_return_460_126__return
    method_1uibcuk_program_top_level__action_460_program_top_level_return_460_126__return -->|next| method_1uibcuk_program_top_level__action_463_program_top_level_mapping_463_127__linear
    method_1uibcuk_program_top_level__action_463_program_top_level_mapping_463_127__linear -->|next| method_1uibcuk_program_top_level__action_469_program_top_level_await_469_128__await
    method_1uibcuk_program_top_level__action_469_program_top_level_await_469_128__await -->|next| method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__condition
    method_1uibcuk_program_top_level__action_47_service_registration_47__linear -->|next| method_1uibcuk_program_top_level__action_58_httpclient_config_58__linear
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__condition -->|false| method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__false
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__condition -->|true| method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__true
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__false -->|next| method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__merge
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__merge -->|next| method_1uibcuk_program_top_level__action_472_program_top_level_log_472_130__linear
    method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__true -->|next| method_1uibcuk_program_top_level__action_470_program_top_level_branch_470_129__merge
    method_1uibcuk_program_top_level__action_472_program_top_level_log_472_130__linear -->|return| method_1uibcuk_program_top_level__action_473_program_top_level_return_473_131__return
    method_1uibcuk_program_top_level__action_473_program_top_level_return_473_131__return -->|next| method_1uibcuk_program_top_level__action_476_program_top_level_await_476_132__await
    method_1uibcuk_program_top_level__action_476_program_top_level_await_476_132__await -->|next| method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__condition
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__condition -->|false| method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__false
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__condition -->|true| method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__true
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__false -->|next| method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__merge
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__merge -->|next| method_1uibcuk_program_top_level__action_479_program_top_level_repository_read_479_135__linear
    method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__true -->|next| method_1uibcuk_program_top_level__action_477_program_top_level_branch_477_133__merge
    method_1uibcuk_program_top_level__action_479_program_top_level_log_479_134__linear -->|return| method_1uibcuk_program_top_level__action_480_program_top_level_return_480_136__return
    method_1uibcuk_program_top_level__action_479_program_top_level_repository_read_479_135__linear -->|next| method_1uibcuk_program_top_level__action_479_program_top_level_log_479_134__linear
    method_1uibcuk_program_top_level__action_480_program_top_level_return_480_136__return -->|next| method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__condition
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__condition -->|false| method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__false
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__condition -->|true| method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__true
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__false -->|next| method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__merge
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__merge -->|next| method_1uibcuk_program_top_level__action_485_program_top_level_repository_read_485_139__linear
    method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__true -->|next| method_1uibcuk_program_top_level__action_483_program_top_level_branch_483_137__merge
    method_1uibcuk_program_top_level__action_485_program_top_level_log_485_138__linear -->|return| method_1uibcuk_program_top_level__action_486_program_top_level_return_486_140__return
    method_1uibcuk_program_top_level__action_485_program_top_level_repository_read_485_139__linear -->|next| method_1uibcuk_program_top_level__action_485_program_top_level_log_485_138__linear
    method_1uibcuk_program_top_level__action_486_program_top_level_return_486_140__return -->|next| method_1uibcuk_program_top_level__action_490_program_top_level_repository_read_490_141__linear
    method_1uibcuk_program_top_level__action_490_program_top_level_repository_read_490_141__linear -->|next| method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__condition
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__condition -->|false| method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__false
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__condition -->|true| method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__true
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__false -->|next| method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__merge
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__merge -->|next| method_1uibcuk_program_top_level__action_494_program_top_level_await_494_143__await
    method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__true -->|next| method_1uibcuk_program_top_level__action_491_program_top_level_branch_491_142__merge
    method_1uibcuk_program_top_level__action_494_program_top_level_await_494_143__await -->|next| method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__condition
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__condition -->|false| method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__false
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__condition -->|true| method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__true
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__false -->|next| method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__merge
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__merge -->|next| method_1uibcuk_program_top_level__action_498_program_top_level_await_498_145__await
    method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__true -->|next| method_1uibcuk_program_top_level__action_496_program_top_level_branch_496_144__merge
    method_1uibcuk_program_top_level__action_498_program_top_level_await_498_145__await -->|next| method_1uibcuk_program_top_level__action_499_program_top_level_await_499_146__await
    method_1uibcuk_program_top_level__action_499_program_top_level_await_499_146__await -->|next| method_1uibcuk_program_top_level__action_500_program_top_level_log_500_147__linear
    method_1uibcuk_program_top_level__action_500_program_top_level_log_500_147__linear -->|return| method_1uibcuk_program_top_level__action_501_program_top_level_return_501_148__return
    method_1uibcuk_program_top_level__action_501_program_top_level_return_501_148__return -->|next| method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_entry
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_body -->|continue| method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_entry
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_entry -->|var error in createResult.Errors| method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_body
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_entry -->|Leaves the loop when the condition no longer holds.| method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_exit
    method_1uibcuk_program_top_level__action_505_program_top_level_loop_505_149__loop_exit -->|next| method_1uibcuk_program_top_level__action_507_program_top_level_log_507_150__linear
    method_1uibcuk_program_top_level__action_507_program_top_level_log_507_150__linear -->|next| method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__condition
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__condition -->|false| method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__false
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__condition -->|true| method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__true
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__false -->|next| method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__merge
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__merge -->|return| method_1uibcuk_program_top_level__action_512_program_top_level_return_512_152__return
    method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__true -->|next| method_1uibcuk_program_top_level__action_510_program_top_level_branch_510_151__merge
    method_1uibcuk_program_top_level__action_512_program_top_level_return_512_152__return -->|next| method_1uibcuk_program_top_level__action_516_program_top_level_log_516_153__linear
    method_1uibcuk_program_top_level__action_516_program_top_level_log_516_153__linear -->|return| method_1uibcuk_program_top_level__action_517_program_top_level_return_517_154__return
    method_1uibcuk_program_top_level__action_517_program_top_level_return_517_154__return -->|next| method_1uibcuk_program_top_level__action_520_program_top_level_mapping_520_155__linear
    method_1uibcuk_program_top_level__action_520_program_top_level_mapping_520_155__linear -->|next| method_1uibcuk_program_top_level__action_528_program_top_level_await_528_156__await
    method_1uibcuk_program_top_level__action_528_program_top_level_await_528_156__await -->|next| method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__condition
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__condition -->|false| method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__false
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__condition -->|true| method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__true
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__false -->|next| method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__merge
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__merge -->|next| method_1uibcuk_program_top_level__action_531_program_top_level_log_531_158__linear
    method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__true -->|next| method_1uibcuk_program_top_level__action_529_program_top_level_branch_529_157__merge
    method_1uibcuk_program_top_level__action_531_program_top_level_log_531_158__linear -->|return| method_1uibcuk_program_top_level__action_532_program_top_level_return_532_159__return
    method_1uibcuk_program_top_level__action_532_program_top_level_return_532_159__return -->|return| method_1uibcuk_program_top_level__action_536_program_top_level_return_536_160__return
    method_1uibcuk_program_top_level__action_536_program_top_level_return_536_160__return -->|next| method_1uibcuk_program_top_level__action_539_program_top_level_mapping_539_161__linear
    method_1uibcuk_program_top_level__action_539_program_top_level_mapping_539_161__linear -->|next| method_1uibcuk_program_top_level__action_543_program_top_level_await_543_162__await
    method_1uibcuk_program_top_level__action_543_program_top_level_await_543_162__await -->|next| method_1uibcuk_program_top_level__action_544_program_top_level_log_544_163__linear
    method_1uibcuk_program_top_level__action_544_program_top_level_log_544_163__linear -->|return| method_1uibcuk_program_top_level__action_545_program_top_level_return_545_164__return
    method_1uibcuk_program_top_level__action_545_program_top_level_return_545_164__return -->|next| method_1uibcuk_program_top_level__action_548_program_top_level_mapping_548_165__linear
    method_1uibcuk_program_top_level__action_548_program_top_level_mapping_548_165__linear -->|next| method_1uibcuk_program_top_level__action_550_program_top_level_repository_read_550_166__linear
    method_1uibcuk_program_top_level__action_550_program_top_level_repository_read_550_166__linear -->|next| method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__condition
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__condition -->|continue| method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__false
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__condition -->|exit| method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__true
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__false -->|next| method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__merge
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__merge -->|next| method_1uibcuk_program_top_level__action_553_program_top_level_await_553_168__await
    method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__true -->|next| method_1uibcuk_program_top_level__action_551_program_top_level_guard_clause_551_167__merge
    method_1uibcuk_program_top_level__action_553_program_top_level_await_553_168__await -->|next| method_1uibcuk_program_top_level__action_554_program_top_level_repository_read_554_170__linear
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__condition -->|continue| method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__false
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__condition -->|exit| method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__true
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__false -->|next| method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__merge
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__merge -->|return| method_1uibcuk_program_top_level__action_556_program_top_level_return_556_171__return
    method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__true -->|next| method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__merge
    method_1uibcuk_program_top_level__action_554_program_top_level_repository_read_554_170__linear -->|next| method_1uibcuk_program_top_level__action_554_program_top_level_guard_clause_554_169__condition
    method_1uibcuk_program_top_level__action_556_program_top_level_return_556_171__return -->|next| method_1uibcuk_program_top_level__action_559_program_top_level_mapping_559_172__linear
    method_1uibcuk_program_top_level__action_559_program_top_level_mapping_559_172__linear -->|return| method_1uibcuk_program_top_level__implicit_return
    method_1uibcuk_program_top_level__action_58_httpclient_config_58__linear -->|next| method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__condition
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__condition -->|false| method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__false
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__condition -->|true| method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__true
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__false -->|next| method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__merge
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__merge -->|fallback| method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__condition
    method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__true -->|next| method_1uibcuk_program_top_level__action_62_program_top_level_branch_62_0__merge
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__condition -->|otherwise| method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__false
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__condition -->|fallback| method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__true
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__false -->|next| method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__merge
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__merge -->|none| method_1uibcuk_program_top_level__call_78_AddApplication
    method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__true -->|next| method_1uibcuk_program_top_level__action_66_program_top_level_fallback_66_1__merge
    method_1uibcuk_program_top_level__action_96_auth_registration_96__linear -->|next| method_1uibcuk_program_top_level__action_107_identity_registration_107__linear
    method_1uibcuk_program_top_level__call_196_DbInitializer_SeedAsync -->|next| method_1uibcuk_program_top_level__action_198_program_top_level_log_198_21__linear
    method_1uibcuk_program_top_level__call_389_HandleSubscriptionSuccess -->|next| method_1uibcuk_program_top_level__action_394_program_top_level_await_394_105__await
    method_1uibcuk_program_top_level__call_394_HandleSubscriptionSuccess -->|next| method_1uibcuk_program_top_level__action_399_program_top_level_await_399_106__await
    method_1uibcuk_program_top_level__call_399_HandleSubscriptionCancellation -->|return| method_1uibcuk_program_top_level__action_402_program_top_level_return_402_107__return
    method_1uibcuk_program_top_level__call_78_AddApplication -->|builder.Configuration| method_1uibcuk_program_top_level__call_79_AddInfrastructure
    method_1uibcuk_program_top_level__call_79_AddInfrastructure -->|next| method_1uibcuk_program_top_level__action_96_auth_registration_96__linear
    method_1uibcuk_program_top_level__entry -->|next| method_1uibcuk_program_top_level__action_34_service_registration_34__linear
```

### GetEpubContent (GET /api/epub/{ebookId}/{index})() Control Flow

_Warnings: diagram method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__fragment_diagram exceeds preferred complexity thresholds (19 nodes, 21 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__call_253_IEpubReader_GetEpubContentAsync[["IEpubReader.GetEpubContentAsync"]]
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_250_getepubcontent_get_api_epub_ebookid_index_mapping_250_0__linear("Maps data or transforms shape")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__condition{"user may be unauthenticated"}
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__false("otherwise")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__merge("merge")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__true("continue")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_getepubcontent_get_api_epub_ebookid_index_await_253_2__await[["Waits for async work"]]
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__condition{"Return OK or BadRequest based on result"}
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__false("false")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__merge("merge")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__true("true")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__false("continue")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__merge("merge")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__true("exit")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__entry(["GetEpubContent (GET /api/epub/{ebookId}/{index}) entry"])
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_getepubcontent_get_api_epub_ebookid_index_repository_read_252_1__linear[("Reads repository or persistence state")]
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_external_call_253__linear("Fetch content from epubService")
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_258_getepubcontent_get_api_epub_ebookid_index_return_258_4__return(["Returns result"])
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_250_getepubcontent_get_api_epub_ebookid_index_mapping_250_0__linear -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_getepubcontent_get_api_epub_ebookid_index_repository_read_252_1__linear
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_getepubcontent_get_api_epub_ebookid_index_repository_read_252_1__linear -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__condition
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__condition -->|otherwise| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__false
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__condition -->|continue| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__true
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__false -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__merge -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_getepubcontent_get_api_epub_ebookid_index_await_253_2__await
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__true -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_252_guard_clause_252__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_external_call_253__linear -->|ebookId, index, userId| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__call_253_IEpubReader_GetEpubContentAsync
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_getepubcontent_get_api_epub_ebookid_index_await_253_2__await -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_253_external_call_253__linear
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__condition -->|false| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__false
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__condition -->|true| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__true
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__false -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__merge -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__condition
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__true -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__condition -->|continue| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__false
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__condition -->|exit| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__true
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__false -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__merge -->|return| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_258_getepubcontent_get_api_epub_ebookid_index_return_258_4__return
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__true -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_getepubcontent_get_api_epub_ebookid_index_guard_clause_255_3__merge
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__call_253_IEpubReader_GetEpubContentAsync -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_255_branch_255__condition
    method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__entry -->|next| method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__action_250_getepubcontent_get_api_epub_ebookid_index_mapping_250_0__linear
```

### Knowledge API group mappings() Control Flow

_Warnings: diagram method_gc2kp9_knowledge_api_group_mappings__fragment_diagram exceeds preferred complexity thresholds (82 nodes, 91 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_gc2kp9_knowledge_api_group_mappings__call_268_IKnowledgeService_GetKnowledgeAsync[["IKnowledgeService.GetKnowledgeAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_276_IKnowledgeService_GetGraphDataAsync[["IKnowledgeService.GetGraphDataAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_284_IKnowledgeService_GetSummaryAndQuizAsync[["IKnowledgeService.GetSummaryAndQuizAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_292_IKnowledgeService_GetKnowledgeMapAsync[["IKnowledgeService.GetKnowledgeMapAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_300_IKnowledgeService_VerifyGroundednessAsync[["IKnowledgeService.VerifyGroundednessAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_308_IKnowledgeService_SearchLibrarySemanticallyAsync[["IKnowledgeService.SearchLibrarySemanticallyAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_316_IKnowledgeService_AskQuestionAsync[["IKnowledgeService.AskQuestionAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__call_323_IKnowledgeService_ClearCacheAsync[["IKnowledgeService.ClearCacheAsync"]]
    method_gc2kp9_knowledge_api_group_mappings__action_261_group_registration_261__linear("MapGroup '/api/knowledge' with policy 'HasAvailableTokens' and DisableAntiforgery")
    method_gc2kp9_knowledge_api_group_mappings__action_261_knowledge_api_group_mappings_mapping_261_0__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_265_knowledge_api_group_mappings_mapping_265_1__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__condition{"ClaimsPrincipal may not contain TenantId"}
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__false("fallback 'global'")
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__true("use claim")
    method_gc2kp9_knowledge_api_group_mappings__action_268_knowledge_api_group_mappings_await_268_3__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__condition{"Return OK or BadRequest on service result"}
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__false("false")
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__true("true")
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_273_knowledge_api_group_mappings_mapping_273_6__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_276_knowledge_api_group_mappings_await_276_8__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_281_knowledge_api_group_mappings_mapping_281_11__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_284_knowledge_api_group_mappings_await_284_13__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_289_knowledge_api_group_mappings_mapping_289_16__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_292_knowledge_api_group_mappings_await_292_18__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_297_knowledge_api_group_mappings_mapping_297_21__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_300_knowledge_api_group_mappings_await_300_23__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_305_knowledge_api_group_mappings_mapping_305_26__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_308_knowledge_api_group_mappings_await_308_28__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_313_knowledge_api_group_mappings_mapping_313_31__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_316_knowledge_api_group_mappings_await_316_33__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__action_321_knowledge_api_group_mappings_mapping_321_36__linear("Maps data or transforms shape")
    method_gc2kp9_knowledge_api_group_mappings__action_323_knowledge_api_group_mappings_await_323_37__await[["Waits for async work"]]
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__condition{"result.IsSuccess) return Results.Ok("}
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__false("continue")
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__merge("merge")
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__true("exit")
    method_gc2kp9_knowledge_api_group_mappings__entry(["Knowledge API group mappings entry"])
    method_gc2kp9_knowledge_api_group_mappings__action_267_knowledge_api_group_mappings_repository_read_267_2__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_275_knowledge_api_group_mappings_repository_read_275_7__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_283_knowledge_api_group_mappings_repository_read_283_12__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_291_knowledge_api_group_mappings_repository_read_291_17__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_299_knowledge_api_group_mappings_repository_read_299_22__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_307_knowledge_api_group_mappings_repository_read_307_27__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_315_knowledge_api_group_mappings_repository_read_315_32__linear[("Reads repository or persistence state")]
    method_gc2kp9_knowledge_api_group_mappings__action_270_knowledge_api_group_mappings_return_270_5__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_278_knowledge_api_group_mappings_return_278_10__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_286_knowledge_api_group_mappings_return_286_15__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_294_knowledge_api_group_mappings_return_294_20__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_302_knowledge_api_group_mappings_return_302_25__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_310_knowledge_api_group_mappings_return_310_30__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_318_knowledge_api_group_mappings_return_318_35__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_327_knowledge_api_group_mappings_return_327_39__return(["Returns result"])
    method_gc2kp9_knowledge_api_group_mappings__action_261_group_registration_261__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_265_knowledge_api_group_mappings_mapping_265_1__linear
    method_gc2kp9_knowledge_api_group_mappings__action_261_knowledge_api_group_mappings_mapping_261_0__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_261_group_registration_261__linear
    method_gc2kp9_knowledge_api_group_mappings__action_265_knowledge_api_group_mappings_mapping_265_1__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__condition
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__condition -->|transforms input| method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__false
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__condition -->|use claim| method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__true
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__merge
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__merge -->|next| method_gc2kp9_knowledge_api_group_mappings__action_267_knowledge_api_group_mappings_repository_read_267_2__linear
    method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_267_guard_clause_267__merge
    method_gc2kp9_knowledge_api_group_mappings__action_267_knowledge_api_group_mappings_repository_read_267_2__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_268_knowledge_api_group_mappings_await_268_3__await
    method_gc2kp9_knowledge_api_group_mappings__action_268_knowledge_api_group_mappings_await_268_3__await -->|request.Text, tenantId, request.EbookId| method_gc2kp9_knowledge_api_group_mappings__call_268_IKnowledgeService_GetKnowledgeAsync
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__condition -->|false| method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__false
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__condition -->|true| method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__true
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__merge
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__merge -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__condition
    method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__merge
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__false
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__true
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__merge
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_270_knowledge_api_group_mappings_return_270_5__return
    method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_knowledge_api_group_mappings_guard_clause_269_4__merge
    method_gc2kp9_knowledge_api_group_mappings__action_270_knowledge_api_group_mappings_return_270_5__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_273_knowledge_api_group_mappings_mapping_273_6__linear
    method_gc2kp9_knowledge_api_group_mappings__action_273_knowledge_api_group_mappings_mapping_273_6__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_275_knowledge_api_group_mappings_repository_read_275_7__linear
    method_gc2kp9_knowledge_api_group_mappings__action_275_knowledge_api_group_mappings_repository_read_275_7__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_276_knowledge_api_group_mappings_await_276_8__await
    method_gc2kp9_knowledge_api_group_mappings__action_276_knowledge_api_group_mappings_await_276_8__await -->|request.Text, tenantId, request.EbookId| method_gc2kp9_knowledge_api_group_mappings__call_276_IKnowledgeService_GetGraphDataAsync
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__false
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__true
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__merge
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_278_knowledge_api_group_mappings_return_278_10__return
    method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__merge
    method_gc2kp9_knowledge_api_group_mappings__action_278_knowledge_api_group_mappings_return_278_10__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_281_knowledge_api_group_mappings_mapping_281_11__linear
    method_gc2kp9_knowledge_api_group_mappings__action_281_knowledge_api_group_mappings_mapping_281_11__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_283_knowledge_api_group_mappings_repository_read_283_12__linear
    method_gc2kp9_knowledge_api_group_mappings__action_283_knowledge_api_group_mappings_repository_read_283_12__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_284_knowledge_api_group_mappings_await_284_13__await
    method_gc2kp9_knowledge_api_group_mappings__action_284_knowledge_api_group_mappings_await_284_13__await -->|request.Text, tenantId, request.EbookId| method_gc2kp9_knowledge_api_group_mappings__call_284_IKnowledgeService_GetSummaryAndQuizAsync
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__false
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__true
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__merge
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_286_knowledge_api_group_mappings_return_286_15__return
    method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__merge
    method_gc2kp9_knowledge_api_group_mappings__action_286_knowledge_api_group_mappings_return_286_15__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_289_knowledge_api_group_mappings_mapping_289_16__linear
    method_gc2kp9_knowledge_api_group_mappings__action_289_knowledge_api_group_mappings_mapping_289_16__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_291_knowledge_api_group_mappings_repository_read_291_17__linear
    method_gc2kp9_knowledge_api_group_mappings__action_291_knowledge_api_group_mappings_repository_read_291_17__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_292_knowledge_api_group_mappings_await_292_18__await
    method_gc2kp9_knowledge_api_group_mappings__action_292_knowledge_api_group_mappings_await_292_18__await -->|request.Text, tenantId, request.EbookId| method_gc2kp9_knowledge_api_group_mappings__call_292_IKnowledgeService_GetKnowledgeMapAsync
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__false
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__true
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__merge
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_294_knowledge_api_group_mappings_return_294_20__return
    method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__merge
    method_gc2kp9_knowledge_api_group_mappings__action_294_knowledge_api_group_mappings_return_294_20__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_297_knowledge_api_group_mappings_mapping_297_21__linear
    method_gc2kp9_knowledge_api_group_mappings__action_297_knowledge_api_group_mappings_mapping_297_21__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_299_knowledge_api_group_mappings_repository_read_299_22__linear
    method_gc2kp9_knowledge_api_group_mappings__action_299_knowledge_api_group_mappings_repository_read_299_22__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_300_knowledge_api_group_mappings_await_300_23__await
    method_gc2kp9_knowledge_api_group_mappings__action_300_knowledge_api_group_mappings_await_300_23__await -->|request.Answer, request.Context, tenantId| method_gc2kp9_knowledge_api_group_mappings__call_300_IKnowledgeService_VerifyGroundednessAsync
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__false
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__true
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__merge
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_302_knowledge_api_group_mappings_return_302_25__return
    method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__merge
    method_gc2kp9_knowledge_api_group_mappings__action_302_knowledge_api_group_mappings_return_302_25__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_305_knowledge_api_group_mappings_mapping_305_26__linear
    method_gc2kp9_knowledge_api_group_mappings__action_305_knowledge_api_group_mappings_mapping_305_26__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_307_knowledge_api_group_mappings_repository_read_307_27__linear
    method_gc2kp9_knowledge_api_group_mappings__action_307_knowledge_api_group_mappings_repository_read_307_27__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_308_knowledge_api_group_mappings_await_308_28__await
    method_gc2kp9_knowledge_api_group_mappings__action_308_knowledge_api_group_mappings_await_308_28__await -->|request.QueryText, tenantId, request.Limit| method_gc2kp9_knowledge_api_group_mappings__call_308_IKnowledgeService_SearchLibrarySemanticallyAsync
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__false
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__true
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__merge
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_310_knowledge_api_group_mappings_return_310_30__return
    method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__merge
    method_gc2kp9_knowledge_api_group_mappings__action_310_knowledge_api_group_mappings_return_310_30__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_313_knowledge_api_group_mappings_mapping_313_31__linear
    method_gc2kp9_knowledge_api_group_mappings__action_313_knowledge_api_group_mappings_mapping_313_31__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_315_knowledge_api_group_mappings_repository_read_315_32__linear
    method_gc2kp9_knowledge_api_group_mappings__action_315_knowledge_api_group_mappings_repository_read_315_32__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_316_knowledge_api_group_mappings_await_316_33__await
    method_gc2kp9_knowledge_api_group_mappings__action_316_knowledge_api_group_mappings_await_316_33__await -->|request.Question, tenantId, request.EbookId, request.Limit| method_gc2kp9_knowledge_api_group_mappings__call_316_IKnowledgeService_AskQuestionAsync
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__false
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__true
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__merge
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_318_knowledge_api_group_mappings_return_318_35__return
    method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__merge
    method_gc2kp9_knowledge_api_group_mappings__action_318_knowledge_api_group_mappings_return_318_35__return -->|next| method_gc2kp9_knowledge_api_group_mappings__action_321_knowledge_api_group_mappings_mapping_321_36__linear
    method_gc2kp9_knowledge_api_group_mappings__action_321_knowledge_api_group_mappings_mapping_321_36__linear -->|next| method_gc2kp9_knowledge_api_group_mappings__action_323_knowledge_api_group_mappings_await_323_37__await
    method_gc2kp9_knowledge_api_group_mappings__action_323_knowledge_api_group_mappings_await_323_37__await -->|none| method_gc2kp9_knowledge_api_group_mappings__call_323_IKnowledgeService_ClearCacheAsync
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__condition -->|continue| method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__false
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__condition -->|exit| method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__true
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__false -->|next| method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__merge
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__merge -->|return| method_gc2kp9_knowledge_api_group_mappings__action_327_knowledge_api_group_mappings_return_327_39__return
    method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__true -->|next| method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__merge
    method_gc2kp9_knowledge_api_group_mappings__call_268_IKnowledgeService_GetKnowledgeAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_269_branch_269__condition
    method_gc2kp9_knowledge_api_group_mappings__call_276_IKnowledgeService_GetGraphDataAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_277_knowledge_api_group_mappings_guard_clause_277_9__condition
    method_gc2kp9_knowledge_api_group_mappings__call_284_IKnowledgeService_GetSummaryAndQuizAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_285_knowledge_api_group_mappings_guard_clause_285_14__condition
    method_gc2kp9_knowledge_api_group_mappings__call_292_IKnowledgeService_GetKnowledgeMapAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_293_knowledge_api_group_mappings_guard_clause_293_19__condition
    method_gc2kp9_knowledge_api_group_mappings__call_300_IKnowledgeService_VerifyGroundednessAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_301_knowledge_api_group_mappings_guard_clause_301_24__condition
    method_gc2kp9_knowledge_api_group_mappings__call_308_IKnowledgeService_SearchLibrarySemanticallyAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_309_knowledge_api_group_mappings_guard_clause_309_29__condition
    method_gc2kp9_knowledge_api_group_mappings__call_316_IKnowledgeService_AskQuestionAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_317_knowledge_api_group_mappings_guard_clause_317_34__condition
    method_gc2kp9_knowledge_api_group_mappings__call_323_IKnowledgeService_ClearCacheAsync -->|next| method_gc2kp9_knowledge_api_group_mappings__action_324_knowledge_api_group_mappings_guard_clause_324_38__condition
    method_gc2kp9_knowledge_api_group_mappings__entry -->|next| method_gc2kp9_knowledge_api_group_mappings__action_261_knowledge_api_group_mappings_mapping_261_0__linear
```

### IngestEbook (POST /api/library/ingest)() Control Flow

_Warnings: diagram method_ggo2op_ingestebook_post_api_library_ingest__fragment_diagram exceeds preferred complexity thresholds (23 nodes, 25 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_ggo2op_ingestebook_post_api_library_ingest__call_340_IngestEbookCommand_ctor_[["IngestEbookCommand (ctor)"]]
    method_ggo2op_ingestebook_post_api_library_ingest__call_349_IMediator_Send[["IMediator.Send"]]
    method_ggo2op_ingestebook_post_api_library_ingest__action_330_ingestebook_post_api_library_ingest_mapping_330_0__linear("Maps data or transforms shape")
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__condition{"userId is null or empty"}
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__false("continue")
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__merge("merge")
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__true("Unauthorized")
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__condition{"string.IsNullOrEmpty(userId)) return Results.Unauthorized("}
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__false("continue")
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__merge("merge")
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__true("exit")
    method_ggo2op_ingestebook_post_api_library_ingest__action_335_data_transform_335__linear("Decode base64 payloads")
    method_ggo2op_ingestebook_post_api_library_ingest__action_349_ingestebook_post_api_library_ingest_await_349_3__await[["Waits for async work"]]
    method_ggo2op_ingestebook_post_api_library_ingest__action_349_orchestration_349__linear("Send command to mediator and handle result")
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__condition{"result.IsSuccess) return Results.Ok(new { Id = result.Value }"}
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__false("continue")
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__merge("merge")
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__true("exit")
    method_ggo2op_ingestebook_post_api_library_ingest__entry(["IngestEbook (POST /api/library/ingest) entry"])
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_ingestebook_post_api_library_ingest_repository_read_332_1__linear[("Reads repository or persistence state")]
    method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_repository_read_352_5__linear[("Reads repository or persistence state")]
    method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_return_352_6__return(["Returns result"])
    method_ggo2op_ingestebook_post_api_library_ingest__implicit_return(["return"])
    method_ggo2op_ingestebook_post_api_library_ingest__action_330_ingestebook_post_api_library_ingest_mapping_330_0__linear -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_332_ingestebook_post_api_library_ingest_repository_read_332_1__linear
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__condition -->|continue| method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__false
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__condition -->|Unauthorized| method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__true
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__false -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__merge -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__condition
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__true -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_332_ingestebook_post_api_library_ingest_repository_read_332_1__linear -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_332_guard_clause_332__condition
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__condition -->|continue| method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__false
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__condition -->|exit| method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__true
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__false -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__merge -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_335_data_transform_335__linear
    method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__true -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_333_ingestebook_post_api_library_ingest_guard_clause_333_2__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_335_data_transform_335__linear -->|title, author, coverData, epubData, description, userId| method_ggo2op_ingestebook_post_api_library_ingest__call_340_IngestEbookCommand_ctor_
    method_ggo2op_ingestebook_post_api_library_ingest__action_349_ingestebook_post_api_library_ingest_await_349_3__await -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_349_orchestration_349__linear
    method_ggo2op_ingestebook_post_api_library_ingest__action_349_orchestration_349__linear -->|command| method_ggo2op_ingestebook_post_api_library_ingest__call_349_IMediator_Send
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__condition -->|continue| method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__false
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__condition -->|exit| method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__true
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__false -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__merge -->|return| method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_return_352_6__return
    method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__true -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__merge
    method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_repository_read_352_5__linear -->|return| method_ggo2op_ingestebook_post_api_library_ingest__implicit_return
    method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_return_352_6__return -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_352_ingestebook_post_api_library_ingest_repository_read_352_5__linear
    method_ggo2op_ingestebook_post_api_library_ingest__call_340_IngestEbookCommand_ctor_ -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_349_ingestebook_post_api_library_ingest_await_349_3__await
    method_ggo2op_ingestebook_post_api_library_ingest__call_349_IMediator_Send -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_350_ingestebook_post_api_library_ingest_guard_clause_350_4__condition
    method_ggo2op_ingestebook_post_api_library_ingest__entry -->|next| method_ggo2op_ingestebook_post_api_library_ingest__action_330_ingestebook_post_api_library_ingest_mapping_330_0__linear
```

### GetMyEbooks (GET /api/library/books)() Control Flow

_Warnings: diagram method_veacg9_getmyebooks_get_api_library_books__fragment_diagram exceeds preferred complexity thresholds (23 nodes, 26 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_veacg9_getmyebooks_get_api_library_books__call_360_GetMyEbooksQuery_ctor_[["GetMyEbooksQuery (ctor)"]]
    method_veacg9_getmyebooks_get_api_library_books__call_360_IMediator_Send[["IMediator.Send"]]
    method_veacg9_getmyebooks_get_api_library_books__action_355_getmyebooks_get_api_library_books_mapping_355_0__linear("Maps data or transforms shape")
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__condition{"userId null/empty"}
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__false("continue")
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__merge("merge")
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__true("Unauthorized")
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__condition{"string.IsNullOrEmpty(userId)) return Results.Unauthorized("}
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__false("continue")
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__merge("merge")
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__true("exit")
    method_veacg9_getmyebooks_get_api_library_books__action_360_getmyebooks_get_api_library_books_await_360_3__await[["Waits for async work"]]
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__condition{"Return OK or BadRequest based on mediator result"}
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__false("false")
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__merge("merge")
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__true("true")
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__condition{"result.IsSuccess) return Results.Ok(result.Value"}
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__false("continue")
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__merge("merge")
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__true("exit")
    method_veacg9_getmyebooks_get_api_library_books__entry(["GetMyEbooks (GET /api/library/books) entry"])
    method_veacg9_getmyebooks_get_api_library_books__action_357_getmyebooks_get_api_library_books_repository_read_357_1__linear[("Reads repository or persistence state")]
    method_veacg9_getmyebooks_get_api_library_books__action_364_getmyebooks_get_api_library_books_return_364_5__return(["Returns result"])
    method_veacg9_getmyebooks_get_api_library_books__action_355_getmyebooks_get_api_library_books_mapping_355_0__linear -->|next| method_veacg9_getmyebooks_get_api_library_books__action_357_getmyebooks_get_api_library_books_repository_read_357_1__linear
    method_veacg9_getmyebooks_get_api_library_books__action_357_getmyebooks_get_api_library_books_repository_read_357_1__linear -->|next| method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__condition
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__condition -->|continue| method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__false
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__condition -->|Unauthorized| method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__true
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__false -->|next| method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__merge
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__merge -->|next| method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__condition
    method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__true -->|next| method_veacg9_getmyebooks_get_api_library_books__action_357_guard_clause_357__merge
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__condition -->|continue| method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__false
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__condition -->|exit| method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__true
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__false -->|next| method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__merge
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__merge -->|next| method_veacg9_getmyebooks_get_api_library_books__action_360_getmyebooks_get_api_library_books_await_360_3__await
    method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__true -->|next| method_veacg9_getmyebooks_get_api_library_books__action_358_getmyebooks_get_api_library_books_guard_clause_358_2__merge
    method_veacg9_getmyebooks_get_api_library_books__action_360_getmyebooks_get_api_library_books_await_360_3__await -->|userId| method_veacg9_getmyebooks_get_api_library_books__call_360_GetMyEbooksQuery_ctor_
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__condition -->|false| method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__false
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__condition -->|true| method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__true
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__false -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__merge
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__merge -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__condition
    method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__true -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__merge
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__condition -->|continue| method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__false
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__condition -->|exit| method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__true
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__false -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__merge
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__merge -->|return| method_veacg9_getmyebooks_get_api_library_books__action_364_getmyebooks_get_api_library_books_return_364_5__return
    method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__true -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_getmyebooks_get_api_library_books_guard_clause_361_4__merge
    method_veacg9_getmyebooks_get_api_library_books__call_360_GetMyEbooksQuery_ctor_ -->|GetMyEbooksQuery userId| method_veacg9_getmyebooks_get_api_library_books__call_360_IMediator_Send
    method_veacg9_getmyebooks_get_api_library_books__call_360_IMediator_Send -->|next| method_veacg9_getmyebooks_get_api_library_books__action_361_branch_361__condition
    method_veacg9_getmyebooks_get_api_library_books__entry -->|next| method_veacg9_getmyebooks_get_api_library_books__action_355_getmyebooks_get_api_library_books_mapping_355_0__linear
```

### StripeWebhook (POST /api/StripeWebhook)() Control Flow

_Warnings: diagram method_8lc46f_stripewebhook_post_api_stripewebhook__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 23 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_379_EventUtility_ConstructEvent[["EventUtility.ConstructEvent"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_389_HandleSubscriptionSuccess[["HandleSubscriptionSuccess"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_394_HandleSubscriptionSuccess[["HandleSubscriptionSuccess"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_399_HandleSubscriptionCancellation[["HandleSubscriptionCancellation"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_367_stripewebhook_post_api_stripewebhook_mapping_367_0__linear("Maps data or transforms shape")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_373_stripewebhook_post_api_stripewebhook_await_373_1__await[["Waits for async work"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_io_374__linear("Read raw request body")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_await_374_3__await[["Waits for async work"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_375_config_read_375__linear("Read webhook secret from configuration")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_377_stripewebhook_post_api_stripewebhook_try_377_4__try("Begins protected execution")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_branch_switch_385__linear("Switch on stripeEvent.Type")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__case_0("case")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch{"stripeEvent.Type"}
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch_merge("merge")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_389_stripewebhook_post_api_stripewebhook_await_389_7__await[["Waits for async work"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_394_stripewebhook_post_api_stripewebhook_await_394_8__await[["Waits for async work"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_399_stripewebhook_post_api_stripewebhook_await_399_9__await[["Waits for async work"]]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_error_handling_404__linear("Catch StripeException")
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_stripewebhook_post_api_stripewebhook_catch_404_11__catch("catch StripeException e")
    method_8lc46f_stripewebhook_post_api_stripewebhook__entry(["StripeWebhook (POST /api/StripeWebhook) entry"])
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_repository_read_374_2__linear[("Reads repository or persistence state")]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_381_stripewebhook_post_api_stripewebhook_repository_read_381_5__linear[("Reads repository or persistence state")]
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_402_stripewebhook_post_api_stripewebhook_return_402_10__return(["Returns result"])
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_406_stripewebhook_post_api_stripewebhook_return_406_12__return(["Returns result"])
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_367_stripewebhook_post_api_stripewebhook_mapping_367_0__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_373_stripewebhook_post_api_stripewebhook_await_373_1__await
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_373_stripewebhook_post_api_stripewebhook_await_373_1__await -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_await_374_3__await
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_io_374__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_375_config_read_375__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_await_374_3__await -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_repository_read_374_2__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_stripewebhook_post_api_stripewebhook_repository_read_374_2__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_374_io_374__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_375_config_read_375__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_377_stripewebhook_post_api_stripewebhook_try_377_4__try
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_377_stripewebhook_post_api_stripewebhook_try_377_4__try -->|calls| method_8lc46f_stripewebhook_post_api_stripewebhook__call_379_EventUtility_ConstructEvent
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_381_stripewebhook_post_api_stripewebhook_repository_read_381_5__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_branch_switch_385__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_branch_switch_385__linear -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__case_0 -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch_merge
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch -->|case| method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__case_0
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_385_stripewebhook_post_api_stripewebhook_switch_385_6__switch_merge -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_389_stripewebhook_post_api_stripewebhook_await_389_7__await
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_389_stripewebhook_post_api_stripewebhook_await_389_7__await -->|calls| method_8lc46f_stripewebhook_post_api_stripewebhook__call_389_HandleSubscriptionSuccess
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_394_stripewebhook_post_api_stripewebhook_await_394_8__await -->|calls| method_8lc46f_stripewebhook_post_api_stripewebhook__call_394_HandleSubscriptionSuccess
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_399_stripewebhook_post_api_stripewebhook_await_399_9__await -->|calls| method_8lc46f_stripewebhook_post_api_stripewebhook__call_399_HandleSubscriptionCancellation
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_402_stripewebhook_post_api_stripewebhook_return_402_10__return -->|exception| method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_stripewebhook_post_api_stripewebhook_catch_404_11__catch
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_error_handling_404__linear -->|return| method_8lc46f_stripewebhook_post_api_stripewebhook__action_406_stripewebhook_post_api_stripewebhook_return_406_12__return
    method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_stripewebhook_post_api_stripewebhook_catch_404_11__catch -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_404_error_handling_404__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_379_EventUtility_ConstructEvent -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_381_stripewebhook_post_api_stripewebhook_repository_read_381_5__linear
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_389_HandleSubscriptionSuccess -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_394_stripewebhook_post_api_stripewebhook_await_394_8__await
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_394_HandleSubscriptionSuccess -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_399_stripewebhook_post_api_stripewebhook_await_399_9__await
    method_8lc46f_stripewebhook_post_api_stripewebhook__call_399_HandleSubscriptionCancellation -->|return| method_8lc46f_stripewebhook_post_api_stripewebhook__action_402_stripewebhook_post_api_stripewebhook_return_402_10__return
    method_8lc46f_stripewebhook_post_api_stripewebhook__entry -->|next| method_8lc46f_stripewebhook_post_api_stripewebhook__action_367_stripewebhook_post_api_stripewebhook_mapping_367_0__linear
```

### HandleSubscriptionSuccess() Control Flow

_Warnings: diagram method_13xh0j3_handlesubscriptionsuccess__fragment_diagram exceeds preferred complexity thresholds (27 nodes, 30 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_13xh0j3_handlesubscriptionsuccess__call_418_UserManager_NexusUser_FindByEmailAsync[["UserManager<NexusUser>.FindByEmailAsync"]]
    method_13xh0j3_handlesubscriptionsuccess__call_422_AppDbContext_SubscriptionPlans_FirstOrDefaultAsync[["AppDbContext.SubscriptionPlans.FirstOrDefaultAsync"]]
    method_13xh0j3_handlesubscriptionsuccess__call_430_UserManager_NexusUser_UpdateAsync[["UserManager<NexusUser>.UpdateAsync"]]
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__condition{"string.IsNullOrEmpty(email)"}
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__false("continue")
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__merge("merge")
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__true("return")
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__condition{"string.IsNullOrEmpty(email)"}
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__false("continue")
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__merge("merge")
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__true("exit")
    method_13xh0j3_handlesubscriptionsuccess__action_418_data_read_418__linear("Lookup user and subscription plan")
    method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_await_418_2__await[["Waits for async work"]]
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__condition{"user != null"}
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__false("false")
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__merge("merge")
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__true("true")
    method_13xh0j3_handlesubscriptionsuccess__action_422_handlesubscriptionsuccess_await_422_4__await[["Waits for async work"]]
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__condition{"plan != null"}
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__false("false")
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__merge("merge")
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__true("true")
    method_13xh0j3_handlesubscriptionsuccess__action_426_persistence_write_426__linear("Update user subscription fields and persist")
    method_13xh0j3_handlesubscriptionsuccess__action_430_handlesubscriptionsuccess_await_430_6__await[["Waits for async work"]]
    method_13xh0j3_handlesubscriptionsuccess__entry(["HandleSubscriptionSuccess entry"])
    method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_repository_read_418_1__linear[("Reads repository or persistence state")]
    method_13xh0j3_handlesubscriptionsuccess__implicit_return(["return"])
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__condition -->|continue| method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__false
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__condition -->|return| method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__true
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__false -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__merge
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__merge -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__condition
    method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__true -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__merge
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__condition -->|continue| method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__false
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__condition -->|exit| method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__true
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__false -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__merge
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__merge -->|next| method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_await_418_2__await
    method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__true -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_handlesubscriptionsuccess_guard_clause_416_0__merge
    method_13xh0j3_handlesubscriptionsuccess__action_418_data_read_418__linear -->|email| method_13xh0j3_handlesubscriptionsuccess__call_418_UserManager_NexusUser_FindByEmailAsync
    method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_await_418_2__await -->|next| method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_repository_read_418_1__linear
    method_13xh0j3_handlesubscriptionsuccess__action_418_handlesubscriptionsuccess_repository_read_418_1__linear -->|next| method_13xh0j3_handlesubscriptionsuccess__action_418_data_read_418__linear
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__condition -->|false| method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__false
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__condition -->|true| method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__true
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__false -->|next| method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__merge
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__merge -->|next| method_13xh0j3_handlesubscriptionsuccess__action_422_handlesubscriptionsuccess_await_422_4__await
    method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__true -->|next| method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__merge
    method_13xh0j3_handlesubscriptionsuccess__action_422_handlesubscriptionsuccess_await_422_4__await -->|p => p.PlanName == planName| method_13xh0j3_handlesubscriptionsuccess__call_422_AppDbContext_SubscriptionPlans_FirstOrDefaultAsync
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__condition -->|false| method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__false
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__condition -->|true| method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__true
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__false -->|next| method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__merge
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__merge -->|next| method_13xh0j3_handlesubscriptionsuccess__action_426_persistence_write_426__linear
    method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__true -->|next| method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__merge
    method_13xh0j3_handlesubscriptionsuccess__action_426_persistence_write_426__linear -->|next| method_13xh0j3_handlesubscriptionsuccess__action_430_handlesubscriptionsuccess_await_430_6__await
    method_13xh0j3_handlesubscriptionsuccess__action_430_handlesubscriptionsuccess_await_430_6__await -->|user| method_13xh0j3_handlesubscriptionsuccess__call_430_UserManager_NexusUser_UpdateAsync
    method_13xh0j3_handlesubscriptionsuccess__call_418_UserManager_NexusUser_FindByEmailAsync -->|next| method_13xh0j3_handlesubscriptionsuccess__action_419_handlesubscriptionsuccess_branch_419_3__condition
    method_13xh0j3_handlesubscriptionsuccess__call_422_AppDbContext_SubscriptionPlans_FirstOrDefaultAsync -->|next| method_13xh0j3_handlesubscriptionsuccess__action_424_handlesubscriptionsuccess_branch_424_5__condition
    method_13xh0j3_handlesubscriptionsuccess__call_430_UserManager_NexusUser_UpdateAsync -->|return| method_13xh0j3_handlesubscriptionsuccess__implicit_return
    method_13xh0j3_handlesubscriptionsuccess__entry -->|next| method_13xh0j3_handlesubscriptionsuccess__action_416_guard_clause_416__condition
```

### HandleSubscriptionCancellation() Control Flow

_Warnings: diagram method_72bnlj_handlesubscriptioncancellation__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 26 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_72bnlj_handlesubscriptioncancellation__call_441_UserManager_NexusUser_FindByEmailAsync[["UserManager<NexusUser>.FindByEmailAsync"]]
    method_72bnlj_handlesubscriptioncancellation__call_444_AppDbContext_SubscriptionPlans_FindAsync[["AppDbContext.SubscriptionPlans.FindAsync"]]
    method_72bnlj_handlesubscriptioncancellation__call_447_UserManager_NexusUser_UpdateAsync[["UserManager<NexusUser>.UpdateAsync"]]
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__condition{"string.IsNullOrEmpty(email)"}
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__false("continue")
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__merge("merge")
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__true("return")
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__condition{"string.IsNullOrEmpty(email)"}
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__false("continue")
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__merge("merge")
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__true("exit")
    method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_await_441_2__await[["Waits for async work"]]
    method_72bnlj_handlesubscriptioncancellation__action_441_persistence_read_441__linear("Lookup user and free plan")
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__condition{"user != null"}
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__false("false")
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__merge("merge")
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__true("true")
    method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_await_444_5__await[["Waits for async work"]]
    method_72bnlj_handlesubscriptioncancellation__action_445_persistence_write_445__linear("Assign free plan and update user")
    method_72bnlj_handlesubscriptioncancellation__action_447_handlesubscriptioncancellation_await_447_6__await[["Waits for async work"]]
    method_72bnlj_handlesubscriptioncancellation__entry(["HandleSubscriptionCancellation entry"])
    method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_repository_read_441_1__linear[("Reads repository or persistence state")]
    method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_repository_read_444_4__linear[("Reads repository or persistence state")]
    method_72bnlj_handlesubscriptioncancellation__implicit_return(["return"])
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__condition -->|continue| method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__false
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__condition -->|return| method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__true
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__false -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__merge
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__merge -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__condition
    method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__true -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__merge
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__condition -->|continue| method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__false
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__condition -->|exit| method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__true
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__false -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__merge
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__merge -->|next| method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_await_441_2__await
    method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__true -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_handlesubscriptioncancellation_guard_clause_439_0__merge
    method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_await_441_2__await -->|next| method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_repository_read_441_1__linear
    method_72bnlj_handlesubscriptioncancellation__action_441_handlesubscriptioncancellation_repository_read_441_1__linear -->|next| method_72bnlj_handlesubscriptioncancellation__action_441_persistence_read_441__linear
    method_72bnlj_handlesubscriptioncancellation__action_441_persistence_read_441__linear -->|email| method_72bnlj_handlesubscriptioncancellation__call_441_UserManager_NexusUser_FindByEmailAsync
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__condition -->|false| method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__false
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__condition -->|true| method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__true
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__false -->|next| method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__merge
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__merge -->|next| method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_await_444_5__await
    method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__true -->|next| method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__merge
    method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_await_444_5__await -->|next| method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_repository_read_444_4__linear
    method_72bnlj_handlesubscriptioncancellation__action_444_handlesubscriptioncancellation_repository_read_444_4__linear -->|SubscriptionPlan.FreeId| method_72bnlj_handlesubscriptioncancellation__call_444_AppDbContext_SubscriptionPlans_FindAsync
    method_72bnlj_handlesubscriptioncancellation__action_445_persistence_write_445__linear -->|next| method_72bnlj_handlesubscriptioncancellation__action_447_handlesubscriptioncancellation_await_447_6__await
    method_72bnlj_handlesubscriptioncancellation__action_447_handlesubscriptioncancellation_await_447_6__await -->|user| method_72bnlj_handlesubscriptioncancellation__call_447_UserManager_NexusUser_UpdateAsync
    method_72bnlj_handlesubscriptioncancellation__call_441_UserManager_NexusUser_FindByEmailAsync -->|next| method_72bnlj_handlesubscriptioncancellation__action_442_handlesubscriptioncancellation_branch_442_3__condition
    method_72bnlj_handlesubscriptioncancellation__call_444_AppDbContext_SubscriptionPlans_FindAsync -->|next| method_72bnlj_handlesubscriptioncancellation__action_445_persistence_write_445__linear
    method_72bnlj_handlesubscriptioncancellation__call_447_UserManager_NexusUser_UpdateAsync -->|return| method_72bnlj_handlesubscriptioncancellation__implicit_return
    method_72bnlj_handlesubscriptioncancellation__entry -->|next| method_72bnlj_handlesubscriptioncancellation__action_439_guard_clause_439__condition
```

### Map Identity API (MapGroup /identity)() Control Flow

```mermaid
flowchart TD
    method_1rb8gnn_map_identity_api_mapgroup_identity__call_451_MapIdentityApi_NexusUser_[["MapIdentityApi<NexusUser>"]]
    method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_map_identity_api_mapgroup_identity_mapping_451_0__linear("Maps data or transforms shape")
    method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_route_registration_451__linear("Mount identity endpoints under /identity")
    method_1rb8gnn_map_identity_api_mapgroup_identity__entry(["Map Identity API (MapGroup /identity) entry"])
    method_1rb8gnn_map_identity_api_mapgroup_identity__implicit_return(["return"])
    method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_map_identity_api_mapgroup_identity_mapping_451_0__linear -->|none| method_1rb8gnn_map_identity_api_mapgroup_identity__call_451_MapIdentityApi_NexusUser_
    method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_route_registration_451__linear -->|next| method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_map_identity_api_mapgroup_identity_mapping_451_0__linear
    method_1rb8gnn_map_identity_api_mapgroup_identity__call_451_MapIdentityApi_NexusUser_ -->|return| method_1rb8gnn_map_identity_api_mapgroup_identity__implicit_return
    method_1rb8gnn_map_identity_api_mapgroup_identity__entry -->|next| method_1rb8gnn_map_identity_api_mapgroup_identity__action_451_route_registration_451__linear
```

### Identity Callback (GET /identity/callback/google)() Control Flow

_Warnings: diagram method_19xkg6k_identity_callback_get_identity_callback_google__fragment_diagram exceeds preferred complexity thresholds (64 nodes, 72 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_19xkg6k_identity_callback_get_identity_callback_google__call_469_SignInManager_NexusUser_GetExternalLoginInfoAsync[["SignInManager<NexusUser>.GetExternalLoginInfoAsync"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__call_476_SignInManager_NexusUser_ExternalLoginSignInAsync[["SignInManager<NexusUser>.ExternalLoginSignInAsync"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__call_494_UserManager_NexusUser_CreateAsync[["UserManager<NexusUser>.CreateAsync"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__call_498_UserManager_NexusUser_AddLoginAsync[["UserManager<NexusUser>.AddLoginAsync"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__call_499_SignInManager_NexusUser_SignInAsync[["SignInManager<NexusUser>.SignInAsync"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_463_identity_callback_get_identity_callback_google_mapping_463_0__linear("Maps data or transforms shape")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__condition{"info == null"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__false("otherwise")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__true("log warning & redirect Error")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_identity_callback_get_identity_callback_google_await_469_1__await[["Waits for async work"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__condition{"info == null"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_472_identity_callback_get_identity_callback_google_log_472_3__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__condition{"Handle existing external login sign-in"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_identity_callback_get_identity_callback_google_await_476_5__await[["Waits for async work"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__condition{"result.Succeeded"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_log_479_7__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_logging_479__linear("Log provisioning and error cases")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__condition{"result.IsLockedOut"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_log_485_11__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_490_provisioning_490__linear("Create local user for new external login")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__condition{"email != null"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_494_identity_callback_get_identity_callback_google_await_494_16__await[["Waits for async work"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__condition{"createResult.Succeeded"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_498_identity_callback_get_identity_callback_google_await_498_18__await[["Waits for async work"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_499_identity_callback_get_identity_callback_google_await_499_19__await[["Waits for async work"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_500_identity_callback_get_identity_callback_google_log_500_20__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_body[["foreach (var error in createResult.Errors)"]]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_entry("var error in createResult.Errors")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_exit("Leaves the loop when the condition no longer holds.")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_507_identity_callback_get_identity_callback_google_log_507_23__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__condition{"createResult.Errors.Any(e => e.Code == \\"DuplicateEmail\\" || e.Code == \\"DuplicateUserName\\")"}
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__false("false")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__merge("merge")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__true("true")
    method_19xkg6k_identity_callback_get_identity_callback_google__action_516_identity_callback_get_identity_callback_google_log_516_26__linear("Logs runtime state")
    method_19xkg6k_identity_callback_get_identity_callback_google__entry(["Identity Callback (GET /identity/callback/google) entry"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_repository_read_479_8__linear[("Reads repository or persistence state")]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_repository_read_485_12__linear[("Reads repository or persistence state")]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_490_identity_callback_get_identity_callback_google_repository_read_490_14__linear[("Reads repository or persistence state")]
    method_19xkg6k_identity_callback_get_identity_callback_google__action_473_identity_callback_get_identity_callback_google_return_473_4__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_480_identity_callback_get_identity_callback_google_return_480_9__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_486_identity_callback_get_identity_callback_google_return_486_13__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_501_identity_callback_get_identity_callback_google_return_501_21__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_512_identity_callback_get_identity_callback_google_return_512_25__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_517_identity_callback_get_identity_callback_google_return_517_27__return(["Returns result"])
    method_19xkg6k_identity_callback_get_identity_callback_google__action_463_identity_callback_get_identity_callback_google_mapping_463_0__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_identity_callback_get_identity_callback_google_await_469_1__await
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__condition -->|otherwise| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__condition -->|transforms input| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__merge -->|none| method_19xkg6k_identity_callback_get_identity_callback_google__call_469_SignInManager_NexusUser_GetExternalLoginInfoAsync
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_469_identity_callback_get_identity_callback_google_await_469_1__await -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_469_guard_clause_469__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__merge -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_472_identity_callback_get_identity_callback_google_log_472_3__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_472_identity_callback_get_identity_callback_google_log_472_3__linear -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_473_identity_callback_get_identity_callback_google_return_473_4__return
    method_19xkg6k_identity_callback_get_identity_callback_google__action_473_identity_callback_get_identity_callback_google_return_473_4__return -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_identity_callback_get_identity_callback_google_await_476_5__await
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__merge -->|info.LoginProvider, info.ProviderKey, isPersistent: false| method_19xkg6k_identity_callback_get_identity_callback_google__call_476_SignInManager_NexusUser_ExternalLoginSignInAsync
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_476_identity_callback_get_identity_callback_google_await_476_5__await -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_476_branch_476__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__merge -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_repository_read_479_8__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_log_479_7__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_479_logging_479__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_repository_read_479_8__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_479_identity_callback_get_identity_callback_google_log_479_7__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_479_logging_479__linear -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_480_identity_callback_get_identity_callback_google_return_480_9__return
    method_19xkg6k_identity_callback_get_identity_callback_google__action_480_identity_callback_get_identity_callback_google_return_480_9__return -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__merge -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_repository_read_485_12__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_483_identity_callback_get_identity_callback_google_branch_483_10__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_log_485_11__linear -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_486_identity_callback_get_identity_callback_google_return_486_13__return
    method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_repository_read_485_12__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_485_identity_callback_get_identity_callback_google_log_485_11__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_486_identity_callback_get_identity_callback_google_return_486_13__return -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_490_identity_callback_get_identity_callback_google_repository_read_490_14__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_490_identity_callback_get_identity_callback_google_repository_read_490_14__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_490_provisioning_490__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_490_provisioning_490__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__merge -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_494_identity_callback_get_identity_callback_google_await_494_16__await
    method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_491_identity_callback_get_identity_callback_google_branch_491_15__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_494_identity_callback_get_identity_callback_google_await_494_16__await -->|user| method_19xkg6k_identity_callback_get_identity_callback_google__call_494_UserManager_NexusUser_CreateAsync
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__merge -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_498_identity_callback_get_identity_callback_google_await_498_18__await
    method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_498_identity_callback_get_identity_callback_google_await_498_18__await -->|user, info| method_19xkg6k_identity_callback_get_identity_callback_google__call_498_UserManager_NexusUser_AddLoginAsync
    method_19xkg6k_identity_callback_get_identity_callback_google__action_499_identity_callback_get_identity_callback_google_await_499_19__await -->|user, isPersistent: false| method_19xkg6k_identity_callback_get_identity_callback_google__call_499_SignInManager_NexusUser_SignInAsync
    method_19xkg6k_identity_callback_get_identity_callback_google__action_500_identity_callback_get_identity_callback_google_log_500_20__linear -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_501_identity_callback_get_identity_callback_google_return_501_21__return
    method_19xkg6k_identity_callback_get_identity_callback_google__action_501_identity_callback_get_identity_callback_google_return_501_21__return -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_entry
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_body -->|continue| method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_entry
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_entry -->|var error in createResult.Errors| method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_body
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_entry -->|Leaves the loop when the condition no longer holds.| method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_exit
    method_19xkg6k_identity_callback_get_identity_callback_google__action_505_identity_callback_get_identity_callback_google_loop_505_22__loop_exit -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_507_identity_callback_get_identity_callback_google_log_507_23__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_507_identity_callback_get_identity_callback_google_log_507_23__linear -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__condition -->|false| method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__false
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__condition -->|true| method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__true
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__false -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__merge -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_512_identity_callback_get_identity_callback_google_return_512_25__return
    method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__true -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_510_identity_callback_get_identity_callback_google_branch_510_24__merge
    method_19xkg6k_identity_callback_get_identity_callback_google__action_512_identity_callback_get_identity_callback_google_return_512_25__return -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_516_identity_callback_get_identity_callback_google_log_516_26__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__action_516_identity_callback_get_identity_callback_google_log_516_26__linear -->|return| method_19xkg6k_identity_callback_get_identity_callback_google__action_517_identity_callback_get_identity_callback_google_return_517_27__return
    method_19xkg6k_identity_callback_get_identity_callback_google__call_469_SignInManager_NexusUser_GetExternalLoginInfoAsync -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_470_identity_callback_get_identity_callback_google_branch_470_2__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__call_476_SignInManager_NexusUser_ExternalLoginSignInAsync -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_477_identity_callback_get_identity_callback_google_branch_477_6__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__call_494_UserManager_NexusUser_CreateAsync -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_496_identity_callback_get_identity_callback_google_branch_496_17__condition
    method_19xkg6k_identity_callback_get_identity_callback_google__call_498_UserManager_NexusUser_AddLoginAsync -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_499_identity_callback_get_identity_callback_google_await_499_19__await
    method_19xkg6k_identity_callback_get_identity_callback_google__call_499_SignInManager_NexusUser_SignInAsync -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_500_identity_callback_get_identity_callback_google_log_500_20__linear
    method_19xkg6k_identity_callback_get_identity_callback_google__entry -->|next| method_19xkg6k_identity_callback_get_identity_callback_google__action_463_identity_callback_get_identity_callback_google_mapping_463_0__linear
```

### Account Login Form (POST /account/login-form)() Control Flow

```mermaid
flowchart TD
    method_8fzkrx_account_login_form_post_account_login_form__call_528_SignInManager_NexusUser_PasswordSignInAsync[["SignInManager<NexusUser>.PasswordSignInAsync"]]
    method_8fzkrx_account_login_form_post_account_login_form__action_520_account_login_form_post_account_login_form_mapping_520_0__linear("Maps data or transforms shape")
    method_8fzkrx_account_login_form_post_account_login_form__action_528_account_login_form_post_account_login_form_await_528_1__await[["Waits for async work"]]
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__condition{"result.Succeeded"}
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__false("false")
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__merge("merge")
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__true("true")
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__condition{"Redirect on success or failure"}
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__false("false")
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__merge("merge")
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__true("true")
    method_8fzkrx_account_login_form_post_account_login_form__action_531_account_login_form_post_account_login_form_log_531_3__linear("Logs runtime state")
    method_8fzkrx_account_login_form_post_account_login_form__entry(["Account Login Form (POST /account/login-form) entry"])
    method_8fzkrx_account_login_form_post_account_login_form__action_528_external_call_528__linear("Attempt password sign-in")
    method_8fzkrx_account_login_form_post_account_login_form__action_532_account_login_form_post_account_login_form_return_532_4__return(["Returns result"])
    method_8fzkrx_account_login_form_post_account_login_form__action_536_account_login_form_post_account_login_form_return_536_5__return(["Returns result"])
    method_8fzkrx_account_login_form_post_account_login_form__action_520_account_login_form_post_account_login_form_mapping_520_0__linear -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_528_account_login_form_post_account_login_form_await_528_1__await
    method_8fzkrx_account_login_form_post_account_login_form__action_528_account_login_form_post_account_login_form_await_528_1__await -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_528_external_call_528__linear
    method_8fzkrx_account_login_form_post_account_login_form__action_528_external_call_528__linear -->|email, password, rememberMe, lockoutOnFailure: true| method_8fzkrx_account_login_form_post_account_login_form__call_528_SignInManager_NexusUser_PasswordSignInAsync
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__condition -->|false| method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__false
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__condition -->|true| method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__true
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__false -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__merge
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__merge -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_531_account_login_form_post_account_login_form_log_531_3__linear
    method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__true -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__merge
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__condition -->|false| method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__false
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__condition -->|true| method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__true
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__false -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__merge
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__merge -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_account_login_form_post_account_login_form_branch_529_2__condition
    method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__true -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__merge
    method_8fzkrx_account_login_form_post_account_login_form__action_531_account_login_form_post_account_login_form_log_531_3__linear -->|return| method_8fzkrx_account_login_form_post_account_login_form__action_532_account_login_form_post_account_login_form_return_532_4__return
    method_8fzkrx_account_login_form_post_account_login_form__action_532_account_login_form_post_account_login_form_return_532_4__return -->|return| method_8fzkrx_account_login_form_post_account_login_form__action_536_account_login_form_post_account_login_form_return_536_5__return
    method_8fzkrx_account_login_form_post_account_login_form__call_528_SignInManager_NexusUser_PasswordSignInAsync -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_529_branch_529__condition
    method_8fzkrx_account_login_form_post_account_login_form__entry -->|next| method_8fzkrx_account_login_form_post_account_login_form__action_520_account_login_form_post_account_login_form_mapping_520_0__linear
```

### Account Logout Form (GET /account/logout-form)() Control Flow

```mermaid
flowchart TD
    method_19x6wwx_account_logout_form_get_account_logout_form__call_543_SignInManager_NexusUser_SignOutAsync[["SignInManager<NexusUser>.SignOutAsync"]]
    method_19x6wwx_account_logout_form_get_account_logout_form__action_539_account_logout_form_get_account_logout_form_mapping_539_0__linear("Maps data or transforms shape")
    method_19x6wwx_account_logout_form_get_account_logout_form__action_543_account_logout_form_get_account_logout_form_await_543_1__await[["Waits for async work"]]
    method_19x6wwx_account_logout_form_get_account_logout_form__action_543_persistence_action_543__linear("Sign out")
    method_19x6wwx_account_logout_form_get_account_logout_form__action_544_account_logout_form_get_account_logout_form_log_544_2__linear("Logs runtime state")
    method_19x6wwx_account_logout_form_get_account_logout_form__action_544_logging_544__linear("Log logout")
    method_19x6wwx_account_logout_form_get_account_logout_form__entry(["Account Logout Form (GET /account/logout-form) entry"])
    method_19x6wwx_account_logout_form_get_account_logout_form__action_545_account_logout_form_get_account_logout_form_return_545_3__return(["Returns result"])
    method_19x6wwx_account_logout_form_get_account_logout_form__action_539_account_logout_form_get_account_logout_form_mapping_539_0__linear -->|next| method_19x6wwx_account_logout_form_get_account_logout_form__action_543_account_logout_form_get_account_logout_form_await_543_1__await
    method_19x6wwx_account_logout_form_get_account_logout_form__action_543_account_logout_form_get_account_logout_form_await_543_1__await -->|next| method_19x6wwx_account_logout_form_get_account_logout_form__action_543_persistence_action_543__linear
    method_19x6wwx_account_logout_form_get_account_logout_form__action_543_persistence_action_543__linear -->|none| method_19x6wwx_account_logout_form_get_account_logout_form__call_543_SignInManager_NexusUser_SignOutAsync
    method_19x6wwx_account_logout_form_get_account_logout_form__action_544_account_logout_form_get_account_logout_form_log_544_2__linear -->|next| method_19x6wwx_account_logout_form_get_account_logout_form__action_544_logging_544__linear
    method_19x6wwx_account_logout_form_get_account_logout_form__action_544_logging_544__linear -->|return| method_19x6wwx_account_logout_form_get_account_logout_form__action_545_account_logout_form_get_account_logout_form_return_545_3__return
    method_19x6wwx_account_logout_form_get_account_logout_form__call_543_SignInManager_NexusUser_SignOutAsync -->|next| method_19x6wwx_account_logout_form_get_account_logout_form__action_544_account_logout_form_get_account_logout_form_log_544_2__linear
    method_19x6wwx_account_logout_form_get_account_logout_form__entry -->|next| method_19x6wwx_account_logout_form_get_account_logout_form__action_539_account_logout_form_get_account_logout_form_mapping_539_0__linear
```

### Get User Profile (GET /identity/profile)() Control Flow

_Warnings: diagram method_7u4uld_get_user_profile_get_identity_profile__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 27 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_7u4uld_get_user_profile_get_identity_profile__call_553_GetUserProfileQuery_ctor_[["GetUserProfileQuery (ctor)"]]
    method_7u4uld_get_user_profile_get_identity_profile__call_553_IMediator_Send[["IMediator.Send"]]
    method_7u4uld_get_user_profile_get_identity_profile__action_548_get_user_profile_get_identity_profile_mapping_548_0__linear("Maps data or transforms shape")
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__condition{"userId == null"}
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__false("continue")
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__merge("merge")
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__true("Unauthorized")
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__condition{"userId == null) return Results.Unauthorized("}
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__false("continue")
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__merge("merge")
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__true("exit")
    method_7u4uld_get_user_profile_get_identity_profile__action_553_get_user_profile_get_identity_profile_await_553_3__await[["Waits for async work"]]
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__condition{"Return NotFound or Ok based on mediator result"}
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__false("false")
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__merge("merge")
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__true("true")
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__condition{"result.IsFailed) return Results.NotFound(result.Errors.FirstOrDefault()?.Message"}
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__false("continue")
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__merge("merge")
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__true("exit")
    method_7u4uld_get_user_profile_get_identity_profile__entry(["Get User Profile (GET /identity/profile) entry"])
    method_7u4uld_get_user_profile_get_identity_profile__action_550_get_user_profile_get_identity_profile_repository_read_550_1__linear[("Reads repository or persistence state")]
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_repository_read_554_5__linear[("Reads repository or persistence state")]
    method_7u4uld_get_user_profile_get_identity_profile__action_556_get_user_profile_get_identity_profile_return_556_6__return(["Returns result"])
    method_7u4uld_get_user_profile_get_identity_profile__action_548_get_user_profile_get_identity_profile_mapping_548_0__linear -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_550_get_user_profile_get_identity_profile_repository_read_550_1__linear
    method_7u4uld_get_user_profile_get_identity_profile__action_550_get_user_profile_get_identity_profile_repository_read_550_1__linear -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__condition
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__condition -->|continue| method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__false
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__condition -->|Unauthorized| method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__true
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__false -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__merge -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__condition
    method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__true -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_550_guard_clause_550__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__condition -->|continue| method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__false
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__condition -->|exit| method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__true
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__false -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__merge -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_553_get_user_profile_get_identity_profile_await_553_3__await
    method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__true -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_551_get_user_profile_get_identity_profile_guard_clause_551_2__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_553_get_user_profile_get_identity_profile_await_553_3__await -->|userId| method_7u4uld_get_user_profile_get_identity_profile__call_553_GetUserProfileQuery_ctor_
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__condition -->|false| method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__false
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__condition -->|true| method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__true
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__false -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__merge -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_repository_read_554_5__linear
    method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__true -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__condition -->|continue| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__false
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__condition -->|exit| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__true
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__false -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__merge -->|return| method_7u4uld_get_user_profile_get_identity_profile__action_556_get_user_profile_get_identity_profile_return_556_6__return
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__true -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__merge
    method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_repository_read_554_5__linear -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_get_user_profile_get_identity_profile_guard_clause_554_4__condition
    method_7u4uld_get_user_profile_get_identity_profile__call_553_GetUserProfileQuery_ctor_ -->|GetUserProfileQuery userId| method_7u4uld_get_user_profile_get_identity_profile__call_553_IMediator_Send
    method_7u4uld_get_user_profile_get_identity_profile__call_553_IMediator_Send -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_554_branch_554__condition
    method_7u4uld_get_user_profile_get_identity_profile__entry -->|next| method_7u4uld_get_user_profile_get_identity_profile__action_548_get_user_profile_get_identity_profile_mapping_548_0__linear
```

## Diagram Validation

- Status: warn
- Warning: Control-flow extraction left 33 unresolved jumps.
- Warning: neighborhood-view: diagram file_12rhzck_program_cs_neighborhood_view exceeds preferred complexity thresholds (19 nodes, 0 edges).
- Warning: execution-overview: diagram file_12rhzck_program_cs_execution_view exceeds preferred complexity thresholds (61 nodes, 67 edges).
- Warning: control-flow: diagram method_1uibcuk_program_top_level__fragment_diagram exceeds preferred complexity thresholds (320 nodes, 362 edges).
- Warning: control-flow: diagram method_1luv0m2_getepubcontent_get_api_epub_ebookid_index__fragment_diagram exceeds preferred complexity thresholds (19 nodes, 21 edges).
- Warning: control-flow: diagram method_gc2kp9_knowledge_api_group_mappings__fragment_diagram exceeds preferred complexity thresholds (82 nodes, 91 edges).
- Warning: control-flow: diagram method_ggo2op_ingestebook_post_api_library_ingest__fragment_diagram exceeds preferred complexity thresholds (23 nodes, 25 edges).
- Warning: control-flow: diagram method_veacg9_getmyebooks_get_api_library_books__fragment_diagram exceeds preferred complexity thresholds (23 nodes, 26 edges).
- Warning: control-flow: diagram method_8lc46f_stripewebhook_post_api_stripewebhook__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 23 edges).
- Warning: control-flow: diagram method_13xh0j3_handlesubscriptionsuccess__fragment_diagram exceeds preferred complexity thresholds (27 nodes, 30 edges).
- Warning: control-flow: diagram method_72bnlj_handlesubscriptioncancellation__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 26 edges).
- Warning: control-flow: diagram method_19xkg6k_identity_callback_get_identity_callback_google__fragment_diagram exceeds preferred complexity thresholds (64 nodes, 72 edges).
- Warning: control-flow: diagram method_7u4uld_get_user_profile_get_identity_profile__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 27 edges).
